如何在sympy矩阵上得到行的总和?

时间:2017-05-20 08:40:22

标签: matrix sum sympy equation equation-solving

我想为此获得至少一个解决方案:

row_sum(Y)= x.t + row_sum(B)

Y和B是矩阵(n,m),x是矢量(n)。 我知道B,我知道row_sum(Y)但不知道x。 我想得到Y​​和x一些t值。 Y随t线性变化,但x是常数向量。

如何创建一个方程式,在Y和B上用行的总和得到x和Y的相同时间?

1 个答案:

答案 0 :(得分:3)

要获取矩阵中每行的总和,请将其乘以所有1的列向量。通常,如果Z是矩阵,那么

Z * ones(Z.shape[1], 1)

返回这样的金额。

以下是使用您示例的符号进行此类操作的完整示例。

from sympy import *
t = symbols('t')
Y = Matrix([[1+4*t, 2-t], [3-5*t, 4+t]])
x = symarray('x', (2,))
B = Matrix([[5, 4], [3, 2]])
solve(Y*ones(2, 1) - x*t - B*ones(2, 1))

输出为[{x_0: -3*x_1 - 9, t: 2/(x_1 + 4)}]。答案并不是唯一的,因为只有2个方程有三个未知数t,x_0,x_1。