我正在开发一个范德瓦尔斯状态方程计算器,它从电子表格中导入关键属性数据,并使用这些属性计算用户指定物质的体积和压缩因子。到目前为止,代码可以读取工作表、检索值并使用它们执行基本计算。我在求解压缩因子的三次方程和用这个解来求解体积时遇到了麻烦。需要注意的是,我使用了一系列的压力和温度回路,这样我就有了一系列的可压缩性值,以及各种条件下的体积范围
问题:立方方程解算器将返回一列假想根,而我很难将体积方程设置为等于要为体积解算的压缩性值列表
我是python新手,非常感谢您的帮助
from sympy import var,solve,Eq
import sympy
y = var('y', real=True)
x = var('x', real=True)
VANDERWALS
#Finds critical values based on substance
value = df[df[0] == name][1].values[0]
value2 = df[df[0] == name][2].values[0]
value3 = df[df[0] == name][3].values[0]
value4 = df[df[0] == name][4].values[0]
#Solves for compressability factor
pc = value3*10 #conversion to bar
R = 8.314e-5
a = (27*(pow(R,2))*(pow(value2,2)))/(64*pc)
b = (R*value2)/(8*pc)
print(a)
print(b)
#Solves of volume across require temp and pressure range
for tloop in range(7):
tempval = (tloop-2)*10
temp = tempval+273
for ploop in range(30):
presval = (ploop+1)
R = 8.314E-5
A = (a*presval)/pow(R*temp,2)
B = (b*presval)/(R*temp)
eq1 = Eq((pow(y,3))-(pow(y,2)*(1+B))+(A*y)-(A*B),0)
sol = solve(eq1)
print(sol[0])
eq2= Eq(((presval*x)/(R*temp)),sol)
sol2 = solve(eq2)
real_roots(eq)
将给出一个实根列表;如果所有数字都是有理数或nsolve(eq, guess-for-solution)
,则效果最好。在您的例子中,在一个循环中,您将得到最后一个已知的解决方案,因此您可以使用它作为下一组参数的初始猜测相关问题 更多 >
编程相关推荐