[英]How to solve a nonlinear equation in sympy?
我想使用sympy在eq1中求解x。 當我嘗試使用sp.solve()求解方程式時,出現錯誤。 當我使用sp.solve_linear()時,它似乎可以工作,但是我無法估算解決方案的數值。 除x外,所有我的變量都已定義,我想求解x。 我可以使用另一個求解器嗎? 我的代碼如下:
import sympy as sp
from sympy import pi, log
R0, Hb, P_, y, m, xhi_ = sp.symbols("0.003 5e8, 1000 2500 4*pi*10e-7 1")
P = P_/2
x, y = sp.symbols('x y')
eq1 = x - sp.sqrt((P - (m*(y*y)/2*pi)*log(R0/x))/(pi*xhi_*Hb))
a = sp.solve_linear(eq1, x)
sp.pprint(a)
sp.pprint(sp.N(a))
我認為您實際上需要:
import sympy as sp
from sympy import pi, log, sqrt
R0, Hb, P_, y, m, xhi_, x = sp.symbols("R0 Hb P_ y m xhi_ x")
P = P_/2
eq1 = x - sp.sqrt((P - (m*(y*y)/2*pi)*log(R0/x))/(pi*xhi_*Hb))
a = sp.solve_linear(eq1, x)
sp.pprint(a)
⎛ ____________________ ⎞
⎜ ╱ 2 ⎛R₀⎞ ⎟
⎜ ╱ π⋅m⋅y ⋅log⎜──⎟ ⎟
⎜ ╱ P ⎝x ⎠ ⎟
⎜ ╱ ─ - ────────────── ⎟
⎜ ╱ 2 2 ⎟
⎜- ╱ ────────────────── , √π⎟
⎝ ╲╱ Hb⋅xhi ⎠
然后,您可以執行以下操作 :
import numpy as np
a[0].subs({R0:0.003, Hb:5e8, P_:1000, y:2500, m:4*np.pi*10e-7, xhi_:1, pi:np.pi})
-4.47213595499958e-5*sqrt(-123.370055013617*log(0.003/x) + 500)
但是,如果我理解正確的話,那本來不是你的初衷。 您實際上想要x
的值,所以solve
將是適當的:
a = sp.solve(eq1, x)
失敗與
NotImplementedError:多個生成器[x,sqrt(P _ /(2 * Hb xhi _ )-pi m * y ** 2 * log(R0 / x)/(2 * Hb * xhi_))]
未實現求解方程x-sqrt((P_ / 2-pi m y ** 2 * log(R0 / x)/ 2)/(Hb * xhi _))/ sqrt(pi)的算法
這似乎暗示着該方程無法解析地求解。
你可以嘗試在數字上解算器,如圖如這里 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.