3 回答
TA贡献1866条经验 获得超5个赞
如果您喜欢sympy,则可以使用nsolve。
>>> nsolve([x+y**2-4, exp(x)+x*y-3], [x, y], [1, 1])
[0.620344523485226]
[1.83838393066159]
第一个参数是方程式列表,第二个参数是变量列表,第三个参数是初始猜测。
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的功能<-确实很方便,但是就速度而言,它相当慢。你会看见
添加回答
举报