2017-04-03 30 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