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

2024年11月15日 14:22
有1个网友回答
网友(1):

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文件编辑窗口分别输入,存为三个不同的文件,并置于同一目录下方可运行。