高分求Matlab画复杂函数的三维图问题?内详。
例如要画Z=F(X,Y)的三维图,函数F非常复杂而且相当长(什么加减乘除就不说了,e指数,积分等等,Z=F(X,Y)的表达式是通过许多中间变量迭代得到的)。我自己用ezm...
例如要画Z=F(X,Y)的三维图,函数F非常复杂而且相当长(什么加减乘除就不说了,e指数,积分等等,Z=F(X,Y)的表达式是通过许多中间变量迭代得到的)。
我自己用ezmesh(Z,[1e16,1e20,1e16,1e20],300)这个命令来画(300这个数字貌似是规定数据点个数的),MATLAB程序算了半天结果出现错误说什么内存不足之类的,估计是运算量太大了(我的电脑是2G内存)。而分别给定X,Y一个具体的数字例如X=1e17,Y=2e19,Z很快就能得出一个具体数值结果。
求教高手有什么简便的方法画图,X,Y的范围都为1e16到1e20,步长最好能小些(虽然步长小数据量会多,但是画出的图好看。而ezmesh(Z,[1e16,1e20,1e16,1e20],300)这个命令300个数据点画出的图在靠近1e16这个位置的图空白一大片一大片的(数据点少))。
思路:例如能不能每次先分别赋X,Y一个值,算出Z值,然后将Z,X,Y的值存入矩阵,然后所有X,Y,Z的值都求出来后再画三维图。或者用循环什么的。 展开
我自己用ezmesh(Z,[1e16,1e20,1e16,1e20],300)这个命令来画(300这个数字貌似是规定数据点个数的),MATLAB程序算了半天结果出现错误说什么内存不足之类的,估计是运算量太大了(我的电脑是2G内存)。而分别给定X,Y一个具体的数字例如X=1e17,Y=2e19,Z很快就能得出一个具体数值结果。
求教高手有什么简便的方法画图,X,Y的范围都为1e16到1e20,步长最好能小些(虽然步长小数据量会多,但是画出的图好看。而ezmesh(Z,[1e16,1e20,1e16,1e20],300)这个命令300个数据点画出的图在靠近1e16这个位置的图空白一大片一大片的(数据点少))。
思路:例如能不能每次先分别赋X,Y一个值,算出Z值,然后将Z,X,Y的值存入矩阵,然后所有X,Y,Z的值都求出来后再画三维图。或者用循环什么的。 展开
3个回答
展开全部
x=logspace(log10(1e16),log10(1e20),50);
y=logspace(log10(1e16),log10(1e20),50);
[X,Y]=meshgrid(x,y);
A=log10(X)+log10(Y);
B=log10(Y)-log10(X);
Z=sin(A)+cos(B);
surf(X,Y,Z);
set(gca,'XScale','log','YScale','log') %这一句使得x,y是对数坐标,成图可以看出各阶是比较均匀的。
xlabel('x')
ylabel('y')
zlabel('z')
y=logspace(log10(1e16),log10(1e20),50);
[X,Y]=meshgrid(x,y);
A=log10(X)+log10(Y);
B=log10(Y)-log10(X);
Z=sin(A)+cos(B);
surf(X,Y,Z);
set(gca,'XScale','log','YScale','log') %这一句使得x,y是对数坐标,成图可以看出各阶是比较均匀的。
xlabel('x')
ylabel('y')
zlabel('z')
展开全部
首先,那个300指的是数据点使用300*300个点
如果按照你的思路,先计算z的值然后画图的话,代码如下:
(现在使用的是500*500个点)
[m,n]=meshgrid(1e16:2e17:1e20,1e16:2e17:1e20);
z=arrayfun(@(x,y)F(x,y),m,n);
surf(m,n,z);
如果按照你的思路,先计算z的值然后画图的话,代码如下:
(现在使用的是500*500个点)
[m,n]=meshgrid(1e16:2e17:1e20,1e16:2e17:1e20);
z=arrayfun(@(x,y)F(x,y),m,n);
surf(m,n,z);
追问
我自定义了一个函数F(x,y)。
运行[m,n]=meshgrid(1e16:2e17:1e20,1e16:2e17:1e20);
z=arrayfun(@(x,y)F(x,y),m,n);
surf(m,n,z)
后提示 sym type is not currently implemented(定义函数F(x,y)时里面有用到syms 定义一个符号变量)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
建议减少步长
否则用循环计算时间也长
若所有X,Y,Z的值已知
可用plot3绘图
否则用循环计算时间也长
若所有X,Y,Z的值已知
可用plot3绘图
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询