簡體   English   中英

如何在sympy中求解非線性方程?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM