Python solve equation for one variable

后端 未结 5 1936
逝去的感伤
逝去的感伤 2021-02-06 11:08

I\'m trying to solve an equation in python using SymPy. I have a generated equation (something like function = y(8.0-(y**3.0)) which I use with SymPy to create a ne

相关标签:
5条回答
  • 2021-02-06 11:43

    Yours is a non linear equation ... So you can use optimize.fsolve for it. For further details look for the function in this tutorial scipy

    0 讨论(0)
  • 2021-02-06 11:43

    For nonlinear equations, you should use sympy.solvers.nsolve to solve it numerically, except for some special cases where a more specific and appropriate solver may exist (e.g. tsolve).

    For example, the following script should output 1.2667664310254.

    from sympy import Symbol
    from sympy.solvers import nsolve
    from sympy import sin, tan
    
    theta = Symbol('theta')
    print nsolve(tan(theta)/(1+1*sin(theta)) - 4.0**2/9.81, theta, (1.2,))
    
    0 讨论(0)
  • 2021-02-06 11:45

    This is a non-linear equation. What you need to look for is a root finding algorithm in SciPy.

    0 讨论(0)
  • 2021-02-06 11:46

    (I don't know why you mention scipy in your question when you use sympy in your code. I'll assume you are using sympy.)

    Sympy can solve this equation if you specify an integer power for y (ie y**3.0 changed to y**3).

    The following works for me using Sympy 0.6.7.

    from sympy import Eq, Symbol, solve
    
    y = Symbol('y')
    eqn = Eq(y*(8.0 - y**3), 8.0)
    
    print solve(eqn)
    
    0 讨论(0)
  • 2021-02-06 11:56

    Assuming you mean you were trying to use sympy, as opposed to scipy, then you can get Sympy (works with v0.7.2+) to solve it by making a small adjustment to way you defined your equation - you just need to put a multiplication operator (*) in between the first 'y' and the '('. It doesn't appear to matter whether you specify the power as a float or not (but it's possible it was required in 0.6.7).

    from sympy import Eq, var, solve
    var('y')    
    eq = Eq(y*(8.0-(y**3.0)), 8)
    solve(eq)
    
    0 讨论(0)
提交回复
热议问题