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

时间:2018-10-23 14:09:54

标签: python python-3.x 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))

1 个答案:

答案 0 :(得分:0)

我认为您实际上需要:

    import plotly.graph_objs as go
    from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot

    data_t = []

    for mac, dico_data in dict_info.items():
        data_t.append(go.Scatter( x= dico_data['asn'], y= dico_data["time"], name=mac ))
        print (data_t)
    data = data_t
    iplot(data_t)

然后您could do

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

那失败了

  

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)

不能seems to imply表示无法解析地求解该方程式。

您可以尝试如下所示的数值求解器here