同学你好:
一共有两个地方错误,一个小警告(无伤大雅)
(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