用Python求解非线性方程组(scipy.optimize.fsolve)

2024-04-19 13:08:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图解决以下简单的非线性方程组(Source(second example)):

(I) y - x^2 = 7 - 5x
(II) 4y - 8x = -21

只有一种溶液(x=3.5,y=1.75)。

我目前使用scipy堆栈的方法如下:

from scipy.optimize import fsolve

def equations(p):
    x, y = p
    return (y - x**2 -7 + 5*x, 4*y - 8*x + 21)

x, y =  fsolve(equations, (5, 5))

print(equations((x, y)))

并产生以下结果(这不是结果):

(0.0, 0.0)

我已经尝试过不同的初始估计,但它没有提供正确的解决方案。

我的方法怎么了?我遗漏了什么吗?

提前谢谢!


Tags: 方法fromimportsource堆栈examplescipyii
1条回答
网友
1楼 · 发布于 2024-04-19 13:08:28

这工作非常好:

In [1]: %paste
from scipy.optimize import fsolve

def equations(p):
    x, y = p
    return (y - x**2 -7 + 5*x, 4*y - 8*x + 21)

x, y =  fsolve(equations, (5, 5))

print(equations((x, y)))

## -- End pasted text --
(0.0, 0.0)

In [2]: x
Out[2]: 3.5000000414181831

In [3]: y
Out[3]: 1.7500000828363667

equations(x, y)(0, 0)意味着y - x**2 -7 + 5*x4*y - 8*x + 21都是0。

也许你搞糊涂了,打算用print(x, y)代替print(equations(x, y))

相关问题 更多 >