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