如何将Python数组转换为SymPy矩阵来计算行列式?

2024-10-01 02:29:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我成功地创建了一个这种python数组:

MainMatrix=[[0 for x in range(n)] for y in range(n)]

(我改变了矩阵中的一些值)

现在,我想知道是否可以把它转换成一个symmy矩阵,这样我就可以计算行列式(给定主矩阵中的所有值都不是整数,有些是symmy符号)。我想要这种东西:

^{pr2}$

(是的,我知道第一行行不通,但我只是想表明我的意图)

一个解决这个转换,或任何其他的选择,以找到主矩阵的行列式(记住,所有的项目不是整数,有些是共形符号)将不胜感激。在


Tags: 项目infor符号range矩阵整数数组
2条回答

您的MainMatrix已经是正确的格式。您只需要将它传递给sympy.Matrix。在

M = Matrix(MainMatrix)

根据文档示例,只需执行以下操作:

from sympy import *
import math

n=3

n_atoms=8

MainMatrix=Matrix([[0 for x in range(n)] for y in range(n)])

KappaMatrix=Matrix([0 for x in range(n-1)])

MassMatrix=Matrix([0 for x in range(n)])

Kappa=3

ka_by_pi=4

for i in range(1,n):

    KappaMatrix[i-1]=3

for i in range(1,n+1):

    MassMatrix[i-1]=3

for i in range(2,n):

    MainMatrix[i-1]= -KappaMatrix[i-2]/MassMatrix[i-1]

    MainMatrix[i-1]= (KappaMatrix[i-2] + KappaMatrix[i-1])/MassMatrix[i-1]

    MainMatrix[i-1]= -KappaMatrix[i-1]/MassMatrix[i-1]

    MainMatrix[0]=(KappaMatrix[0]+Kappa)/MassMatrix[0]

    MainMatrix[0]=-(KappaMatrix[0])/MassMatrix[0]

    i=symbols('i')

    MainMatrix[0]= -(Kappa/MassMatrix[0])*(math.cos(math.pi*ka_by_pi)+(i*math.sin(math.pi*ka_by_pi)))

    MainMatrix[n-1]= -(Kappa/MassMatrix[n-1])*(math.cos(math.pi*ka_by_pi)-(i*math.sin(math.pi*ka_by_pi)))

    MainMatrix[n-1]=-(KappaMatrix[n-2])/MassMatrix[n-1]

    MainMatrix[n-1]=(KappaMatrix[n-2]+Kappa)/MassMatrix[n-1]

    t=symbols('t')

for j in range(0,n_atoms):
    MainMatrix[j]=MainMatrix[j]-(t**2)

print(MainMatrix)

相关问题 更多 >