求解线性递归矩阵

时间:2017-06-18 18:13:36

标签: python-2.7 math linear-algebra

我有等式:

S = C.(BSQ)+(1-C)I其中S,B,Q是nXn dim的平方矩阵,C是常数,I是单位矩阵.S初始化为单位矩阵 我想解决方程式以找到S.Can我这样做而不对两边都进行任何反转然后简化等等?(我正在使用反向的大型数据集可能非常慢)通过使用上面的等式我得到了一些结果,但我不确定它是否正确,因为你不能同时进行三次矩阵乘法。我可以做什么来解决S?

the answer I am getting after plugging in all the matrices with values

2 个答案:

答案 0 :(得分:0)

根据您的矩阵,您可能只需迭代该公式并希望它收敛。即从int开始,重新计算S=I,直到它不再变化为止。当然,这不能保证收敛,但你可能想尝试。

如果您想直接解决这个问题,可以派生出一个线性系统。只需将RHS考虑在内(使得得到结果矩阵中每个条目的表达式)并为每个条目设置方程式。例如。对于第一个条目,这将是这样的:

S

解决s11 = 1 - c + c * (q11 * (b11 * s11 + b12 * s21 + b13 * s31 + ...) + q21 * (b11 * s12 + b12 * s22 + b13 * s32 + ...) + q31 * (b11 * s13 + b12 * s23 + b13 * s33 + ...) + ...) 并完成您的工作。当然,如果系统允许解决方案。否则,您可能想要求解最小二乘解。

答案 1 :(得分:0)

for t in range(100):

        s=c*(sc.dot(sc.dot(Qin.T,s),Qin))+ (1-c)*I

这递归地求解方程100次。你可以做一个收敛测试,即Si-Si-1 =一些小值来检查收敛。