作业帮 > 综合 > 作业

Matlab 做三维图像,两个方程有四个未知数,想做一个三维图像,方程如下:

来源:学生作业帮 编辑:搜搜做题作业网作业帮 分类:综合作业 时间:2024/06/18 03:04:02
Matlab 做三维图像,两个方程有四个未知数,想做一个三维图像,方程如下:
z=power(10,14.3-2*y)*(1+power(10,y-10.03)+power(10,3*y-30.67)+power(10,3.6-y)+power(10,2*y-20.45)+x*power(10,2.8)+power(x,2)*power(10,4.04)+power(x,3)*power(10,5.77)+power(x,4)*power(10,6.96)+power(x,5)*power(10,2.71)+power(x,6)*power(10,2.74));
m=x*(1+power(10,9.27-y)+power(10,17.1-2*y)+power(10,15.21-2*y)+power(10,16.2-2*y))+2*power(x,2)*(power(10,18.34-2*y)+power(10,16.84-2*y)+power(10,16.74-2*y))+3*power(x,3)*(power(10,20.07-2*y)+power(10,17.89-2*y)+power(10,16.9-2*y))+4*power(x,4)*(power(10,21.26-2*y)+power(10,18.65-2*y)+power(10,16.5-2*y))+5*power(x,5)*(power(10,17.01-2*y)+power(10,18.83-2*y))+6*power(x,6)*(power(10,20.04-2*y)+power(10,18.21-2*y));
想做z关于m,y的三维图像,(新手就10个财富了,没办法,希望别嫌少,以后积累多了在重谢)
Matlab 做三维图像,两个方程有四个未知数,想做一个三维图像,方程如下:
Debug了一会儿,不过还是搞定了.为了方便你阅读,也为了方便debug,我写成了嵌套函数的形式.最外层的函数就是myfun,你只要输入特定的x数值,特定的初始值y0,ma,mb,ms(这些你都自己定,随便;ms是迭代步长,ma和mb是变量m的起点和终点,起点终点越远,步长越小,迭代越花时间,但图形越精确)
function output = myfun(x,y0,ma,mb,ms)
m=[ma:ms:mb];
for i=1:length(m)
y(i)=fsolve(@(y) myfun1(x,y)-m(i),y0,optimset('Display','off'));
z(i)=myfun2(x,y(i));
end
output.y=y;
output.z=z;
output.plot=plot3(m,y,z);
grid on;
xlabel('x')
ylabel('y')
zlabel('z')
这是第一个函数文件,保存为myfun.m到当前目录;
function m = myfun1(x,y)
m=x*(1+power(10,9.27-y)+power(10,17.1-2*y)+power(10,15.21-2*y)+...
power(10,16.2-2*y))+2*power(x,2)*(power(10,18.34-2*y)+power(10,16.84-2*y)...
+power(10,16.74-2*y))+3*power(x,3)*(power(10,20.07-2*y)+power(10,17.89-2*y)+...
power(10,16.9-2*y))+4*power(x,4)*(power(10,21.26-2*y)+power(10,18.65-2*y)+...
power(10,16.5-2*y))+5*power(x,5)*(power(10,17.01-2*y)+power(10,18.83-2*y))...
+6*power(x,6)*(power(10,20.04-2*y)+power(10,18.21-2*y));
这是第二个函数文件,命名myfun1.m保存当前目录下;
function z = myfun2(x,y)
z=power(10,14.3-2*y)*(1+power(10,y-10.03)+power(10,3*y-30.67)+...
power(10,3.6-y)+power(10,2*y-20.45)+x*power(10,2.8)+...
power(x,2)*power(10,4.04)+power(x,3)*power(10,5.77)+...
power(x,4)*power(10,6.96)+power(x,5)*power(10,2.71)+...
power(x,6)*power(10,2.74));
这是第三个函数文件,命名myfun2.m保存当前目录下.
运行的时候,命令窗口输入:
clear all
output = myfun(3,1,-1,0.1,1);
即可.我这儿是随便代的自变量数值,这些都可以随便输.变量m,y,z的数值都储存在output变量中,比如查看y,就:
output.y
三个函数必须在m文件编辑窗口分别输入,存为三个不同的文件,并置于同一目录下方可运行.
再问: 十分感谢您耐心的求解过程。我试着运行了一下,出来了图像,不过发现运行结果是在给定的特定的X值得条件下的解,但是我想得到的是以m,y构成平面,Z为空间轴的一个曲面,而不是特定某一个值时的一个三维曲线,因为我是第一次接触这个matlab软件,所以很多地方还不是很明白,希望您不吝赐教,再次谢谢您耐心的求解!
再答: 大哥,你不给x 怎么解出 z关于m,y的函数呢?你这里四个变量要化三维的图象,你掰手指头算算就知道不可能四个都是变数。现在画出来的图就是你想要的,只不过我上面写错了,你把第一个函数文件倒数第三行的 xlabel('x') 改成xlabel('m')就是了。画出来绝对是你要的东西。
再问: 谢谢您耐心的回答。我是这样想的,我是想把第二个方程x用m表示出来,然后将x带入第一个方程,这样z就是关于m,y的函数了,然后在理论上就可以做出一个曲面了,我不知道我想的是不是能实现,我觉是不是x也可以像m那样做一个迭代,这样是不是可以出来一个曲面呢?我不是很会用matlab,所以还望您赐教。谢谢您