大家
是否可以解决以下问题:
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;
有没有方便的方法?
非常感谢! 肖恩
答案 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的优化值。