高分求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的值都求出来后再画三维图。或者用循环什么的。
展开
 我来答
wacs5
2011-04-08 · TA获得超过1.6万个赞
知道大有可为答主
回答量:3724
采纳率:82%
帮助的人:2809万
展开全部
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')
xwangg
2011-04-03 · 超过12用户采纳过TA的回答
知道答主
回答量:69
采纳率:0%
帮助的人:37.1万
展开全部
首先,那个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);
追问
我自定义了一个函数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 定义一个符号变量)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ywwoyc
2011-04-01 · TA获得超过824个赞
知道小有建树答主
回答量:432
采纳率:0%
帮助的人:394万
展开全部
建议减少步长
否则用循环计算时间也长
若所有X,Y,Z的值已知
可用plot3绘图
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式