为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用Python解决一对非线性方程式?

如何使用Python解决一对非线性方程式?

holdtom 2019-11-13 13:07:48
使用Python解决一对非线性方程式的(最佳)方法是什么?(Numpy,Scipy或Sympy)例如:x + y ^ 2 = 4e ^ x + xy = 3解决以上问题的代码片段会很棒
查看完整描述

3 回答

?
心有法竹

TA贡献1866条经验 获得超5个赞

如果您喜欢sympy,则可以使用nsolve。


>>> nsolve([x+y**2-4, exp(x)+x*y-3], [x, y], [1, 1])

[0.620344523485226]

[1.83838393066159]

第一个参数是方程式列表,第二个参数是变量列表,第三个参数是初始猜测。


查看完整回答
反对 回复 2019-11-13
?
慕容3067478

TA贡献1773条经验 获得超3个赞

试试这个,我向您保证它会完美运行。


    import scipy.optimize as opt

    from numpy import exp

    import timeit


    st1 = timeit.default_timer()


    def f(variables) :

        (x,y) = variables


        first_eq = x + y**2 -4

        second_eq = exp(x) + x*y - 3

        return [first_eq, second_eq]


    solution = opt.fsolve(f, (0.1,1) )

    print(solution)



    st2 = timeit.default_timer()

    print("RUN TIME : {0}".format(st2-st1))


->


[ 0.62034452  1.83838393]

RUN TIME : 0.0009331008900937708

仅供参考。如上所述,您也可以通过将“ fsolve”替换为“ broyden1”来使用“ Broyden近似”。有用。我做的。


我不确切知道Broyden的近似值是如何工作的,但是花了0.02 s。


而且我建议您不要使用Sympy的功能<-确实很方便,但是就速度而言,它相当慢。你会看见


查看完整回答
反对 回复 2019-11-13
  • 3 回答
  • 0 关注
  • 591 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信