1 回答

TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超6個(gè)贊
那是因?yàn)槟爿斎肓隋e(cuò)誤的方程式。嘗試:
solve([Eq(Re, rho * nu * D / mu), Eq(dP, f * (L/D) * (rho * nu ** 2 / 2)), Eq(1 / sqrt(f), -1.8 * log ((eps / D / 3.7) ** 1.11 + 6.9 / Re))], [Re, D, f])
并且錯(cuò)誤將消失。您輸入正確的方程式。
但是你會(huì)發(fā)現(xiàn) SymPy 似乎無(wú)法解決這個(gè)問(wèn)題。
NotImplementedError: could not solve 9*sqrt(f)*log(58510807926309*2**(11/100)*(dP*eps/(L*f*nu**2*rho))**(111/100)/125000000000000 + 69*dP*mu/(5*L*f*nu**3*rho**2)) + 5
即使經(jīng)過(guò)適當(dāng)?shù)霓D(zhuǎn)換,我們也可以看到Re
和f
與 常量相關(guān)D
,然而,D
滿足:
solve(Eq(e**(1 / (u * D ** x)), d/(D**y) + u/D), D)
除此以外的一切D都是不變的。
它也無(wú)法通過(guò) SymPy 解決:
NotImplementedError: multiple generators [D, D**y, e**(D**(-x)/u)]
No algorithms are implemented to solve equation e**(D**(-x)/u) - D**(-y)*d - u/D
封閉形式的解決方案可能不存在。這個(gè)方程需要用數(shù)值求解。請(qǐng)參閱:https://math.stackexchange.com/questions/3774718/how-to-solve-this-ln-fracax-fracbxc-frac1u-xv-where ?noredirect=1#comment7769877_3774718
所以你可以使用nsolve的sympy,意思是numerical solver?;蛘遞solve的scipy也可以。
from sympy import *
L = 4.11 * 10 ** 5
nu = 1
rho = 0.8175
mu = 2.88 * 10 ** -6
dP = 20000
eps = 4.6 * 10 ** -5
Re, D, f = symbols('Re, D, f')
nsolve((Eq(Re, rho * nu * D / mu),
Eq(dP, f * L / D * rho * nu ** 2 / 2),
Eq(1 / sqrt(f), -1.8 * log ( (eps / D / 3.) ** 1.11 + 6.9 / Re))),
(Re, D, f), (1123, -1231, -1000))
哪里(1123, -1231, -1000)是尋找根的初始向量。它給出了:
虛部很小,都是10^(-20),所以我們可以認(rèn)為它們?yōu)榱?,這意味著根都是實(shí)數(shù)。Re ~ 13602.938,D ~ 0.047922 和 f~0.0057。
添加回答
舉報(bào)