如何用SymPy/Numpy求解矩阵方程组ke*u=f?遇奇异矩阵等问题
求解SymPy矩阵方程组的问题
我的代码如下:
import sys import os sys.path.append(os.getcwd()) import sympy as sp import numpy as np from includes.Truss import Truss U = sp.Matrix([[0,0],[0,10]]) boundary_conditions=[] boundary_conditions.append([0]) boundary_conditions.append(['']) truss = Truss(U,boundary_conditions,30000000,2.0,10.0,2) ke = truss.ke(10.0) f = sp.Matrix([[0,-100.0]]) u = np.linalg.solve(ke,f) ux = u[0] uy = u[1] print(f'ux = {ux}, uy = {uy}')
我有一个2×2的SymPy矩阵ke,需要求解方程组ke*u=f(其中f为已知矩阵,u代表未知位移量ux、uy),尝试多种方法仍未得到解,遇到以下问题:
使用np.linalg.solve(ke,f)时触发错误:
Traceback (most recent call last): File "c:\Users\famatto\OneDrive\Documents\birnic\test\trussexample002.py", line 19, in <module> u = np.linalg.solve(ke,f) ^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\famatto\OneDrive\Documents\birnic\.venv\Lib\site-packages\numpy\linalg\linalg.py", line 409, in solve r = gufunc(a, b, signature=signature, extobj=extobj) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ numpy.core._exceptions._UFuncInputCastingError: Cannot cast ufunc 'solve' input 0 from dtype('O') to dtype('float64') with casting rule 'same_kind' PS C:\Users\famatto\OneDrive\Documents\birnic>
尝试使用u = ke.solve(f)时,又出现如下错误:
Traceback (most recent call last): File "c:\Users\famatto\OneDrive\Documents\birnic\test\trussexample003.py", line 26, in <module> u = ke.solve(f) ^^^^^^^^^^^ File "C:\Users\famatto\OneDrive\Documents\birnic\.venv\Lib\site-packages\sympy\matrices\matrices.py", line 2144, in solve return _solve(self, rhs, method=method) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\famatto\OneDrive\Documents\birnic\.venv\Lib\site-packages\sympy\matrices\solvers.py", line 758, in _solve raise NonInvertibleMatrixError("Matrix det == 0; not invertible.") sympy.matrices.common.NonInvertibleMatrixError: Matrix det == 0; not invertible. PS C:\Users\famatto\OneDrive\Documents\birnic>
ke的具体形式为:
Matrix([[5000000.00000000, -5000000.00000000], [-5000000.00000000, 5000000.00000000]])
希望能通过SymPy、NumPy或其他Python方法得到ux、uy的浮点数值解。
内容的提问来源于stack exchange,提问作者famatto
相关产品推荐
相关产品推荐

