2017-04-03 45 views
0

大家Python的解决给定的条件

是否有可能解决如下所示:

x = np.matrix([[8.3,-20.6],[-20.6,65.8]]) 

y是P的函数:

y = lambda P: np.matrix([[0.02P,-0.02P], [-0.02P,0.04P]]) 

我想找到给出P值条件:

P>0, det(x-y)==0; 

有没有方便的方法呢?

非常感谢! Shawn

回答

1

如果您不介意使用额外的软件包,scipy.optimize有许多完美的方法。否则,你可以implement your own zero finding function

如果你想要去的SciPy的路线:

1)定义你的问题,因为这需要你的未知参数(P)作为第一个参数,并返回要最小化值的函数:

def zerofn(P, x, y): 
    return np.linalg.det(x - y(P)) 

2)使用scipy优化这个函数。这里的例子使用一个简单的Newton-Raphson零点搜索器,但有many other options,你可能想用它来指定参数边界(例如P> 0)。

import scipy.optimize as opt 

opt.newton(zerofn, x0=1, args=(x, y)) 

>> 160.25865914054651 

这个零点查找的结果是你的最佳P.

+0

的价值太感谢你了奥斯卡! –

+0

不用担心 - 乐意帮忙! – oscarbranson