Python解决了给定的条件

时间:2017-04-03 03:24:12

标签: python matrix solver determinants

大家

是否可以解决以下问题:

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;

有没有方便的方法?

非常感谢! 肖恩

1 个答案:

答案 0 :(得分: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的优化值。