Matlab解非线性方程组

f1=cos(x(1))-cos(x(2))+cos(x(3))-m;
f2=cos (5*x(1))-cos (5*x(2))+cos (5*x(3));
f3=cos (7*x(1))-cos (7*x(2))+cos (7*x(3));
要让m从0以0.01步进到1,把每次的解保存下来。也就是要画图,横轴是m值,纵轴是x的解。怎么弄?涉及循环不会了,本来是三个未知量,给个三维初值就行了。有了m无从下手了。

对于带变量的非线性方程组,可以用Matlab的for循环语句和vpasolve函数联合求解。实现方法:

m=0:0.01:1;

for i=1:length(m)

syms x y z

f1=cos(x)-cos(y)+cos(z)-m(i);

f2=cos(5*x)-cos(5*y)+cos(5*z);

f3=cos(7*x)-cos(7*y)+cos(7*z);

[x1(i),y1(i),z1(i)]=vpasolve(f1,f2,f3);

end

x=double(x1);y=double(y1);z=double(z1);

plot(m,x,m,y,m,z)

温馨提示:内容为网友见解,仅供参考
第1个回答  2018-11-25
  第一零五回:锦衣军查抄宁国府,骢马使弹劾平安州
相似回答