2016-11-24 121 views
0

我试图解决非线性方程的以下简单系统(Source(second example)):求解非线性方程组在Python(scipy.optimize.fsolve)的系统

(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) 

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

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

提前致谢!

回答

3

这工作完全正常:

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))

+0

是的,我迷茫了。一种典型的RTFM ... ;-)谢谢! –