matlab解决多元含参数方程组

img


格式有问题,请问哪里错了呀,我改了很多次,没有发现问题,大家帮我看看哪里出问题了

同学你好:
一共有两个地方错误,一个小警告(无伤大雅)
(1)第三行的c(w+1)应该改成c*(w+1)
(2)第三行的c*(m2-m1w)应该改成c*(m2-m1*w)
(3)小警告:中括号可以用圆括号代替
最后修改好的代码变成:

a=1; t=3; Vmin=5 ;Vmax=25;m2=28;m1=20 ; Pmax=0.8;Pmin=0.1;t1=5;t2=100;
syms w c
eq1=(t2-t1)*(Vmin-Vmax)/(t2-t1)+Vmax-(-c*(w+1)/(c*(m2-m1*w)+(a+1)^3)*(6*w^2-6));
eq2=2*(t-t1)*(Pmax-Pmin)/(t2-t1-2*t1)+Pmin-(2+2*w-a-c)/(2+2*w);
sol=solve(eq1, eq2,w, c);
sol.w
sol.c

由于有四次根,matlab只能用root表示符号解

ans =
 
 (425*root(z^4 - (311*z^3)/425 - (270889*z^2)/4335 + (9169822543*z)/46059375 + 1994709028/46059375, z, 1))/793 - 368/793
 (425*root(z^4 - (311*z^3)/425 - (270889*z^2)/4335 + (9169822543*z)/46059375 + 1994709028/46059375, z, 2))/793 - 368/793
 (425*root(z^4 - (311*z^3)/425 - (270889*z^2)/4335 + (9169822543*z)/46059375 + 1994709028/46059375, z, 3))/793 - 368/793
 (425*root(z^4 - (311*z^3)/425 - (270889*z^2)/4335 + (9169822543*z)/46059375 + 1994709028/46059375, z, 4))/793 - 368/793
 
 
ans =
 
 root(z^4 - (311*z^3)/425 - (270889*z^2)/4335 + (9169822543*z)/46059375 + 1994709028/46059375, z, 1)
 root(z^4 - (311*z^3)/425 - (270889*z^2)/4335 + (9169822543*z)/46059375 + 1994709028/46059375, z, 2)
 root(z^4 - (311*z^3)/425 - (270889*z^2)/4335 + (9169822543*z)/46059375 + 1994709028/46059375, z, 3)
 root(z^4 - (311*z^3)/425 - (270889*z^2)/4335 + (9169822543*z)/46059375 + 1994709028/46059375, z, 4)

建议用vpasolve函数,直接得到数值解:

a=1; t=3; Vmin=5 ;Vmax=25;m2=28;m1=20 ; Pmax=0.8;Pmin=0.1;t1=5;t2=100;
syms w c
eq1=(t2-t1)*(Vmin-Vmax)/(t2-t1)+Vmax-(-c*(w+1)/(c*(m2-m1*w)+(a+1)^3)*(6*w^2-6));
eq2=2*(t-t1)*(Pmax-Pmin)/(t2-t1-2*t1)+Pmin-(2+2*w-a-c)/(2+2*w);
sol=vpasolve([eq1, eq2],[w, c]); %这里用了vpasolve
sol.w
sol.c

也就是四个数值解:

ans =
 
 2.1536283488207751371918290187532 + 0.19041772179082837071157333615278i
 2.1536283488207751371918290187532 - 0.19041772179082837071157333615278i
                                      -5.1976839084203284787056846541577
                                     -0.57363331885552192178137817527815
 

ans =
 
 4.8842994837997051383367539102854 + 0.35529706677676917170418271898624i
 4.8842994837997051383367539102854 - 0.35529706677676917170418271898624i
                                      -8.8323843279466364320320186605813
                                      -0.2044499337704209034650185717543

通过解答可以知道,有两对复数解,两对实数解,就是说,你要实数解的话,在syms定义的符号后面加real就行:

a=1; t=3; Vmin=5 ;Vmax=25;m2=28;m1=20 ; Pmax=0.8;Pmin=0.1;t1=5;t2=100;
syms w c real %加了real
eq1=(t2-t1)*(Vmin-Vmax)/(t2-t1)+Vmax-(-c*(w+1)/(c*(m2-m1*w)+(a+1)^3)*(6*w^2-6));
eq2=2*(t-t1)*(Pmax-Pmin)/(t2-t1-2*t1)+Pmin-(2+2*w-a-c)/(2+2*w);
sol=vpasolve([eq1, eq2],[w, c]);
sol.w
sol.c

最后的实数解答:

ans =
 
  -5.1976839084203284787056846541577
 -0.57363331885552192178137817527815
 
 
ans =
 
 -8.8323843279466364320320186605813
 -0.2044499337704209034650185717543

img


不是特别会matlab,但是这里使用中括号和后面这个连写从直觉好像不是很对的样子