嘿,我试着从几个方程中用同解算器. 你知道吗
这里没有给出的一些值是从excel表中导入的
R = 0.287
cp = 1
cv = 0.714
kappa = cp/cv
v_r1 = 438.15
p_r1 = 2.264
b = Symbol('b')
for k in range(4):
T1[k] = T1_c[k] + 273.15
P2[k] = P1[k]*(epsilon**(kappa))
T2[k] = T1[k]*(epsilon**(kappa-1))
a[k] = P3[k]/P2[k]
P4[k] = P3[k]
T3[k] = a[k]*T2[k]
W_i[k] = P_mi[k]*V_s[k]
wi[k] = W_i[k]/((P1[k]*V1[k])/(R*T1[k]))
w12 = -cv*(T2[0]-T1[0])
w34 = cv*T1[0]*(kappa-1)*(epsilon**(kappa-1))*a[0]*(b-1)
w45 = cv*T1[0]*(((epsilon**(kappa-1))*a[0]*b)-(a[0]*(b**(kappa-1))))
expr1 = w34 + w45 - np.abs(w12) - wi[0]
b1 = solve((w34 + w45 - np.abs(w12) - wi[0]), b, quick=True, warn=True)
这是运行代码后收到的错误:
h.append(f.get((k,), K.zero))
MemoryError
有没有人知道使用这个解算器是否可以驱动b?任何信息将不胜感激!!你知道吗
由于这个问题有很多未声明的变量,我只是添加了必要的声明和一些随机值来获得更多的见解。你知道吗
我的随机参数给出了
expr1
的表达式,如下所示:辛比的解决方案因此陷入记忆障碍。你知道吗
当sympy试图找到精确的符号解,而我们正在处理不精确的浮点时,一个更好的策略似乎是尝试用数值方法来解决这个问题。Sympy有一个函数
lambdify
,用于将其表达式转换为可以用数字表示的函数。你知道吗fb = lambdify(b, expr1, 'numpy')
将expr1转换为函数fb(x)
,现在可以作为任何普通python函数调用。例如,你可以用它来绘图,看它是否有意义,以及它在哪里达到零。你知道吗我试着给scipy的非线性解算器打电话,但他也不喜欢这个方程。
RuntimeWarning: The iteration is not making good progress, as measured by the improvement from the last ten iterations.
但也许这是因为我的随机数没有意义。我建议您尝试使用scipy的solve和它的nonlinear solvers。你知道吗正如@Oscar Benjamin在评论中提到的,sympy还有一个数值解算器,它能给出一个解,尽管它是一个复数。(如果需要复数解,文档建议给
nsolve
一个复数作为初始值。)Sympy的solve
和scipy的fsolve
只搜索实值解。你知道吗目前还不清楚复杂的值对于您试图解决的问题是否有用,也不清楚我对参数的模拟是否有任何意义。你知道吗
相关问题 更多 >
编程相关推荐