由已知数学公式画出三维图像

X=[0:0.1:1];
Y=[0:0.1:1];
[X,Y]=meshgrid(X,Y);
Z=(3.9*exp((-0.25)*(9*X-2)^2-0.25*(9*Y-2)^2)+3.9*exp((-1)*(9*X+1)^2/49-(9*Y+1)/10.0)+2.6*exp((-0.25)*((9*X-7)^2+(9*Y-3)^2))-1.04*exp((-1)*(9*X-4)^2-(9*Y-7)^2));
%MATLAB的语句是以行为单位解释执行的,大多数语句不允许断为多行(少数情况下,例如输入数组,是允许分为多行输入的)。
%乘法的地方不能省略*
surf(X,Y,Z);
mesh(X,Y,Z);

经验总结:1.exp函数是e的指数函数,exp(2)相当于e的2次方
2.即便这个公式很长,也不可分行(错误提示:表达式或语句不正确–可能 (、{ 或 [ 不对称。)
3.乘法不能省略*(错误提示:圆括号或方括号不对称或异常。)

提问:为什么我的运行结果和老师的不一样呢,是变量的取值问题还是公式输入错了?
(图一是老师的运行结果)
在这里插入图片描述在这里插入图片描述
Ps:今天发现了一个MATLAB的官方教学站子 ww2.mathworks.cn/help/matlab/index.html

解决方法:
是公式写错了,乘法应该是.* 除法是./ 幂是.^
正确代码:

X1=[0:0.001:2];%可以通过更改第三个数据来改变凹凸程度
Y1=[0:0.001:1];
[X,Y]=meshgrid(X1,Y1);
% [X,Y]=meshgrid(0:0.001:1.5);
Z=(3.9*exp((-0.25)*(9*X-2).^2-0.25*(9*Y-2).^2)+3.9*exp(((-1)*(9*X+1).^2)./49-(9*Y+1)./10.0)+2.6*exp((-0.25)*((9*X-7).^2+(9*Y-3).^2))-1.04*exp((-1)*(9*X-4).^2-(9*Y-7).^2));
% %MATLAB的语句是以行为单位解释执行的,大多数语句不允许断为多行(少数情况下,例如输入数组,是允许分为多行输入的)
% %乘法的地方不能省略符号 * 
surf(X,Y,Z);
mesh(X,Y,Z);
xlabel('x维方向');
ylabel('y维方向');
zlabel('z维方向');

运行结果:
在这里插入图片描述

发布了9 篇原创文章 · 获赞 0 · 访问量 581

猜你喜欢

转载自blog.csdn.net/qq_43536231/article/details/104719482