如何使用Numpy求解具有某些边界条件的线性方程组?
Ax = B
其中 x 是列向量,假设 x1 = 0 。
对于不同的迭代,BC将会不同,因此向量x的不同变量将为零。
[A] 和 [B] 是已知的。
这是我的FEM课程中的一个示例:
{F}是已知值的列向量
[k]是具有已知值的刚度矩阵
{U}是位移列向量,其中U1和U3已知为零,但需要找到U2和U4。
这将产生以下值:
自然,这将简化为2X2矩阵方程,但是我因为对于不同的元素,BC会有所不同,所以我正在寻找一些numpy矩阵方程求解器,我可以让它知道一些未知数必须是这个确定值,别无其他。
是否有类似于 np.linalg.solve()的条件?
谢谢。
答案 0 :(得分:0)
示例中的矩阵k
是可逆的。这意味着只有一种解决方案;您不能选择任何U
个。这是解决方案:
import numpy as np
k = np.array(((1000, 0, -1000, 0),
(0, 3000, 0, -3000),
(-100, 0, 3000, -2000),
(0, -3000, -2000, 5000)))
F = np.array((0, 0, 0, 5000))
U = np.linalg.solve(k, F)
print(U)
# # or:
# k_inv = np.linalg.inv(k)
# U = k_inv.dot(F)
# [ 5.55555556 8.05555556 5.55555556 8.05555556]
圣人一样:
k = matrix(((1000, 0, -1000, 0),
(0, 3000, 0, -3000),
(-100, 0, 3000, -2000),
(0, -3000, -2000, 5000)))
F = vector((0, 0, 0, 5000))
U = k.inverse() * F
# (50/9, 145/18, 50/9, 145/18)