在 sympy 中添加 Matrix 从 2x2 到 3x3

Adding Matrix in sympy from a 2x2 to a 3x3

所以我试图在 sympy 中将两个矩阵从 2x2 矩阵加到 3x3 矩阵,但我不太确定该怎么做!我想要实现的是:Wanted Result

将:K1 和 K2 相加。因为它们在总矩阵中的位置不同。我做了什么:

    import sympy as sy
E,t = sy.symbols("E,t")
K1 = sy.Matrix([[17.5*E*t,-17.5*E*t],[-17.5*E*t,17.5*E*t]])
K2 = sy.Matrix([[12.5*E*t,-12.5*E*t],[-12.5*E*t,12.5*E*t]])

K_Total_Rad_1 = []
K_Total_Rad_2_1 = []
K_Total_Rad_2_2 = []
K_Total_Rad_3 = []
for i in range(len(K1)-2):
    K_Total_Rad_1.append(K1[i])

for i in range(len(K2)-2):
    K_Total_Rad_2_1.append(K1[i+2])    
    
for i in range(len(K2)-2):
    K_Total_Rad_2_2.append(K2[i])

for i in range(len(K2)-2):
    K_Total_Rad_3.append(K2[i-2])

K_Total = sy.Matrix([K_Total_Rad_1, K_Total_Rad_2_2, K_Total_Rad_3])

K_Total

我显然知道这里的错误在于定义矩阵维度,但我不知道如何在 python 中执行此操作。希望有人能帮忙

如果我没记错的话,这是 FEM-like 刚度矩阵的“标准”表示法。

我会这样做:

import sympy as sy
E, t = sy.symbols("E, t")
K1 = sy.Matrix([[17.5*E*t,-17.5*E*t],[-17.5*E*t,17.5*E*t]])
K2 = sy.Matrix([[12.5*E*t,-12.5*E*t],[-12.5*E*t,12.5*E*t]])
K = sy.zeros(3)
K[:2, :2] = K1
K[1:, 1:] += K2
K

可能少了一些 pythonic 但更数学化:

import sympy as sy

E, t = sy.symbols( "E, t" )

K1 = sy.Matrix(
    [
        [ +17.5 * E * t, -17.5 * E * t ],
        [ -17.5 * E * t, +17.5 * E * t ]
    ]
)

K2 = sy.Matrix(
    [
        [ +12.5 * E * t, -12.5 * E * t ],
        [ -12.5 * E * t, +12.5 * E * t ]
    ]
)

A = sy.diag( 1, sy.Matrix( [ 1, 0 ] ) )
B = sy.diag( sy.Matrix( [ 0, 1 ] ), 1 )

K = A * K1 * A.T + B * K2 * B.T