猿问

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

使用Python解决一对非线性方程式的(最佳)方法是什么?(Numpy,Scipy或Sympy)


例如:


x + y ^ 2 = 4

e ^ x + xy = 3

解决以上问题的代码片段会很棒


holdtom
浏览 592回答 3
3回答

心有法竹

如果您喜欢sympy,则可以使用nsolve。>>> nsolve([x+y**2-4, exp(x)+x*y-3], [x, y], [1, 1])[0.620344523485226][1.83838393066159]第一个参数是方程式列表,第二个参数是变量列表,第三个参数是初始猜测。

慕容3067478

试试这个,我向您保证它会完美运行。&nbsp; &nbsp; import scipy.optimize as opt&nbsp; &nbsp; from numpy import exp&nbsp; &nbsp; import timeit&nbsp; &nbsp; st1 = timeit.default_timer()&nbsp; &nbsp; def f(variables) :&nbsp; &nbsp; &nbsp; &nbsp; (x,y) = variables&nbsp; &nbsp; &nbsp; &nbsp; first_eq = x + y**2 -4&nbsp; &nbsp; &nbsp; &nbsp; second_eq = exp(x) + x*y - 3&nbsp; &nbsp; &nbsp; &nbsp; return [first_eq, second_eq]&nbsp; &nbsp; solution = opt.fsolve(f, (0.1,1) )&nbsp; &nbsp; print(solution)&nbsp; &nbsp; st2 = timeit.default_timer()&nbsp; &nbsp; print("RUN TIME : {0}".format(st2-st1))->[ 0.62034452&nbsp; 1.83838393]RUN TIME : 0.0009331008900937708仅供参考。如上所述,您也可以通过将“ fsolve”替换为“ broyden1”来使用“ Broyden近似”。有用。我做的。我不确切知道Broyden的近似值是如何工作的,但是花了0.02 s。而且我建议您不要使用Sympy的功能<-确实很方便,但是就速度而言,它相当慢。你会看见
随时随地看视频慕课网APP

相关分类

Python
我要回答