基本上,我试图使用fplot
在数组[1,40]上绘制两个函数的错误。
错误功能显而易见:E = (V2-V1)/V2
因此,我将使用fplot(E,1,40)
然而,问题是该函数是根据P
而不是V
定义的,我无法用代数方式求解V
公式:
P1 =(R T)/(V-b) - x1 /(V (V + b))
P2 =(R T)/(V-b) - x2 /(V (V + b))
其中x1
和x2
特定于每个等式,所有其他常量都已定义。
我可以使用solve()
函数,或fzero
使用for循环,以便查找V
的值P
从1到40不等吗?
我也很困惑fplot
函数在一个主函数下定义多个subfunctions
时如何工作。
答案 0 :(得分:0)
正如你所说的,这两个方程隐含在V中。如果你想在改变P时绘制它们的误差,我建议你用多项式形式写出它们(这是Van der Waals状态方程,对吧?)。
例如,您可以这样做:
syms RT V b x1 x2 P1 P2
f = (RT)/(V-b) - x1/(V*(V+b))-P1
sol=solve(f,V)
它会给你
sol =
root(P1*z^3 - RT*z^2 - P1*b^2*z - RT*b*z + x1*z - b*x1, z, 1)
root(P1*z^3 - RT*z^2 - P1*b^2*z - RT*b*z + x1*z - b*x1, z, 2)
root(P1*z^3 - RT*z^2 - P1*b^2*z - RT*b*z + x1*z - b*x1, z, 3)
通过求解此多项式(例如,使用函数polysolve
)并选择正确的根,您可以为每个P获得V的值,然后您可以计算E并绘制数组的结果。