早教吧作业答案频道 -->其他-->
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
题目详情
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个财富了,没办法,希望别嫌少,以后积累多了在重谢)
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个财富了,没办法,希望别嫌少,以后积累多了在重谢)
▼优质解答
答案和解析
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文件编辑窗口分别输入,存为三个不同的文件,并置于同一目录下方可运行.
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文件编辑窗口分别输入,存为三个不同的文件,并置于同一目录下方可运行.
看了 Matlab 做三维图像,两...的网友还看了以下:
高中数学关于函数图象变换的.由y=sin(x+π/6)演变为y=sin(2x+π/6)需缩短横坐标 2020-04-05 …
【MATLAB】如何用最小二乘法拟合直线?已知x和y之间是线性关系,且y=kx+b,某次实验测得数 2020-05-16 …
Matlab 做三维图像,两个方程有四个未知数,想做一个三维图像,方程如下:z=power(10, 2020-05-16 …
函数的图象变换用文字说明函数图象间的关系即右边的函数如何通过左边的函数图象变换得到(1)y=f(x 2020-06-03 …
XY坐标系1.创建两个数组X[]和Y[],这里将每一项都是对应的.例句.(X[3],Y[3]),( 2020-06-14 …
画出函数y=3x+12的图像,并回答下列问题.(1)当x为什么值时,y>0;(2)如果这个函数y的 2020-07-12 …
已知:|x|=4,|y|=3,且x,y同号,求1/(x+5)(y+5)+1/(x+6)(y+6)+ 2020-07-19 …
下列各等式的变形是否正确?如不正确,请说明理由:1.若x=y,则x-3=y-3;2.若x+8=y+5 2020-10-31 …
已知x/(x+6)+y/(y+6)+z/(z+6)=16/(x+6)+6/(y+6)+6/(z+6) 2020-11-07 …
已知变量y与x成比例且当x=4时,y=2如果-2小于X大于等于6,画出函数图像,求y取值范围各已知变 2020-12-29 …