作业帮 > 数学 > 作业

在matlab里这个方程怎么求解,其中只有v是未知数,要求的就是v的值,其他参数已知,v的初始值也不知道

来源:学生作业帮 编辑:搜搜考试网作业帮 分类:数学作业 时间:2024/04/29 19:21:21
在matlab里这个方程怎么求解,其中只有v是未知数,要求的就是v的值,其他参数已知,v的初始值也不知道
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;
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
在matlab里这个方程怎么求解,其中只有v是未知数,要求的就是v的值,其他参数已知,v的初始值也不知道
这个方程基本不可能求出解析解,求数值解需要有那些参数的具体数值才行.
至于求解的具体方法,可以用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