Skip to main content
 首页 » 编程设计

python之在 Python 中求解非线性方程组 (scipy.optimize.fsolve)

2025年05月04日14arxive

我正在尝试求解以下简单的非线性方程组 ( 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) 

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

我的方法有什么问题?我错过了什么吗?

提前致谢!

请您参考如下方法:

这工作得很好:

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*x 和 4*y - 8*x + 21 为 0。

也许您感到困惑并打算使用 print(x, y) 而不是 print(equations(x, y)) ?