第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

SymPy solve(): UnboundLocalError: 局部變量

SymPy solve(): UnboundLocalError: 局部變量

喵喵時(shí)光機(jī) 2023-04-18 14:21:41
我正在使用 SymPy 來(lái)求解方程,代碼如下。我做了一個(gè)更簡(jiǎn)單的例子,但這個(gè)問(wèn)題可能與原始方程有關(guān),所以我會(huì)選擇在這里發(fā)布原始代碼而不是簡(jiǎn)化的代碼。from sympy import *dP, rho, nu, D, miu, L, Q, Re, eps, f = symbols('dP, rho, nu, D, miu, L, Q, Re, eps, f')solve([Eq(Re, rho * nu * D / mu),       Eq(L / D, 0.05 * Re),       Eq(L / D, 1.359 * Re ** (1/4)),       Eq(dP, 32 * miu * L * nu / D ** 2),       Eq(dP, 128 * miu * L * Q / pi / D ** 2),       Eq(dP, f * (L/D) * (rho * nu ** 2 / 2)),       Eq(f, 64 / Re),       Eq(1 / sqrt(f), -1.8 * log ((eps / D / 3.7) ** 1.11 + 6.9 / Re))],      [Re, D, f])帶有錯(cuò)誤消息:UnboundLocalError                         Traceback (most recent call last)<ipython-input-13-884b0835e135> in <module>      7        Eq(f, 64 / Re),      8        Eq(1 / sqrt(f), -1.8 * log ((eps / D / 3.7) ** 1.11 + 6.9 / Re))],----> 9       [Re, D, f])G:\Program-Files\anaconda3\lib\site-packages\sympy\solvers\solvers.py in solve(f, *symbols, **flags)   1094         solution = _solve(f[0], *symbols, **flags)   1095     else:-> 1096         solution = _solve_system(f, symbols, **flags)   1097    1098     #G:\Program-Files\anaconda3\lib\site-packages\sympy\solvers\solvers.py in _solve_system(exprs, symbols, **flags)   1834             return rv   1835 -> 1836         solved_syms = set(solved_syms)  # set of symbols we have solved for   1837         legal = set(symbols)  # what we are interested in   1838         # sort so equation with the fewest potential symbols is firstUnboundLocalError: local variable 'solved_syms' referenced before assignment
查看完整描述

1 回答

?
慕的地6264312

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)換,我們也可以看到Ref與 常量相關(guān)D,然而,D滿足:

solve(Eq(e**(1 / (u * D ** x)), d/(D**y) + u/D),
      D)

http://img1.sycdn.imooc.com//643e36f80001147404500080.jpg

除此以外的一切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)是尋找根的初始向量。它給出了:

http://img1.sycdn.imooc.com//643e37200001a54c05070093.jpg

虛部很小,都是10^(-20),所以我們可以認(rèn)為它們?yōu)榱?,這意味著根都是實(shí)數(shù)。Re ~ 13602.938,D ~ 0.047922 和 f~0.0057。



查看完整回答
反對(duì) 回復(fù) 2023-04-18
  • 1 回答
  • 0 關(guān)注
  • 166 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)