擅长:python、mysql、java
<p>如果希望得到的向量是只包含<code>0</code>s的向量,可以使用<code>fsolve</code>来实现。为此,需要稍微修改一下目标函数,以使输入和输出的形状相同:</p>
<pre><code>import scipy.optimize as so
P = np.matrix([[0.3, 0.1, 0.2], [0.01, 0.4, 0.2], [0.0001, 0.3, 0.5]])
Ps = np.array([10,14,5])
def objective(x):
x = np.array([x])
res = np.square(Ps - np.dot(x, P))
return np.array(res).ravel()
Root = so.fsolve(objective, x0=np.array([10, 11, 15]))
objective(Root)
#[ 5.04870979e-29 1.13595970e-28 1.26217745e-29]
</code></pre>
<p>结果:溶液为<code>np.array([ 31.95419775, 41.56815698, -19.40894189])</code></p>