【问题标题】:How to solve a nonlinear equation in sympy?如何在 sympy 中求解非线性方程?
【发布时间】:2018-10-23 14:09:54
【问题描述】:

我想使用 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))

【问题讨论】:

    标签: python python-3.x sympy


    【解决方案1】:

    我认为你实际上需要:

    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           ⎠
    

    那你could do:

    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*Hbxhi_) - pim*y**2*log(R0/x)/(2*Hb*xhi_))]

    没有算法实现 求解方程 x - sqrt((P_/2 - pimy**2*log(R0/x)/2)/(Hb*xhi_))/sqrt(pi)

    哪个seems to imply这个方程不能解析解是同情。

    您可以尝试如图所示的数值求解器,例如here.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-11
      • 2017-05-29
      • 2022-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-02
      相关资源
      最近更新 更多