【问题标题】:How to solve systems of matrix equations in Python?如何在 Python 中求解矩阵方程组?
【发布时间】:2019-09-25 13:56:19
【问题描述】:

我必须求解矩阵方程组 比如: 变量(矩阵):X1,X2,X3,X4,X5 常量(矩阵):其他

X1 = R*(A+BX2+DX3+DX4+EX5)

X2 = R_2*(A+BX1+CX3+DX4+EX5)

X3 = R_3*(A+BX1+CX2+DX4+EX5)

X4 = R_4*(A+BX1+CX3+DX2+EX5)

X5 = R_5*(A+BX1+CX2+DX3+EX4)

我可以使用任何可用的函数或库来求解这个方程吗? (我尝试安装pullp,但我没有安装pull;它不起作用)

对于matlab,我猜它太慢了。

【问题讨论】:

    标签: python matrix system equation


    【解决方案1】:

    您的系统不是以方便的方式编写的。您应该隔离一侧的常量和另一侧的变量。 我做到了:

    +      X1 - R1*B*X2 - R1*D*X3 - R1*D*X4 - R1*E*X5 = R1*A
    - R2*B*X1 +      X2 - R2*C*X3 - R2*D*X4 - R2*E*X5 = R2*A
    - R3*B*X1 - R3*C*X2 +      X3 - R3*D*X4 - R3*E*X5 = R3*A
    - R4*B*X1 - R4*D*X2 - R4*C*X3 +      X4 - R4*E*X5 = R4*A
    - R5*B*X1 - R5*C*X2 - R5*D*X3 - R5*E*X4 +      X5 = R5*A
    

    我建议你再做一次检查...

    完成后,您可以使用 numpy 解决它,如下所示:

    # Import numpy
    import numpy as np 
    
    # Define each constant ...
    R1 = R2 = R3 = R4 = R5 = 1
    A = B = C = D = E = 1
    
    # Define each row of the system :
    # Here, because of the 'R' factor and the symetry, I found
    # quite faster doing like this :
    row1 = R1*np.array([1, -B, -D, -D, -E])
    row2 = R2*np.array([-B,  1, -C, -D, -E])
    row3 = R3*np.array([-B, -C,  1, -D, -E])
    row4 = R4*np.array([-B, -D, -C,  1, -E])
    row5 = R5*np.array([-B, -C, -D, -E,  1])
    
    # Create the matrix
    mat = np.array([row1, row2, row3, row4, row5])
    
    # The diagonal is equal to 1
    for i in range(len(mat)):
        mat[i,i] = 1
    
    # Define the constant side
    constant = A*np.array([R1, R2, R3, R4, R5])
    
    # Resolve it !
    res = np.linalg.solve(mat, constant)
    print(res)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多