在matlab里这个方程怎么求解,其中只有v是未知数,要求的就是v的值,其他参数已知,v的初始值也不知道
R=81.4881629e-3;
k=5.475;
b=0.3455467e-3;
A2=-0.1195051;
B2=0.1137590e-3;
C2=-3.531592;
A3=0.1447797e-3;
B3=-0.8942552e-7;
C3=0.6469248e-2;
A4=-1.049005e-7;
A5=-6.953904e-12
B5=1.269806e-13;
C5=-2.051369e-9;
Tr=T/374.2;
p=R*T/(v-b)+(A2+B2*T+C2*exp(-k*Tr))/(v-b)^2....
+(A3+B3*T+C3*exp(-k*Tr))/(v-b)^3+A4/(v-b)^4.....
+(A5+B5*T+C5*exp(-k*Tr))/(v-b)^5;
p=572.1 T=293.15 展开
2014-04-16
至于求解的具体方法,可以用fzero、fsolve或者优化工具箱的相关函数。
考虑到可能存在多个解,可以考虑用遗传算法进行多次求解。
以上就是基本思路,要想进一步解答,请楼主给出具体数据。
参考代码:
R=81.4881629e-3;
k=5.475;
b=0.3455467e-3;
A2=-0.1195051;
B2=0.1137590e-3;
C2=-3.531592;
A3=0.1447797e-3;
B3=-0.8942552e-7;
C3=0.6469248e-2;
A4=-1.049005e-7;
A5=-6.953904e-12;
B5=1.269806e-13;
C5=-2.051369e-9;
T=293.15;
Tr=T/374.2;
p=572.1;
syms v
eq1=-p+R*T/(v-b)+(A2+B2*T+C2*exp(-k*Tr))/(v-b)^2....
+(A3+B3*T+C3*exp(-k*Tr))/(v-b)^3+A4/(v-b)^4.....
+(A5+B5*T+C5*exp(-k*Tr))/(v-b)^5;
[num,den] = numden(eq1);
r = roots(sym2poly(num));
r = r(abs(imag(r))<eps)
y = subs(eq1,r)
clf
v = [0:1e-5:0.0003 0.00031:1e-6:0.0004 0.0005:1e-5:0.005 0.006:1e-4:0.04];
plot(v,subs(eq1))
hold on
plot(r,y,'ro')
ylim([-1 1]*1e3)
求出的实根为:
r =
0.035738703279219
0.004635322844890
0.000366751037287