Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将Python数组转换为Symphy矩阵来计算行列式?_Python_Arrays_Python 2.7_Matrix_Sympy - Fatal编程技术网

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

如何将Python数组转换为Symphy矩阵来计算行列式?,python,arrays,python-2.7,matrix,sympy,Python,Arrays,Python 2.7,Matrix,Sympy,我成功地创建了这种python数组: MainMatrix=[[0 for x in range(n)] for y in range(n)] M=Matrix([MainMatrix]) #Conversion of Array to SymPy Matrix M.det() #Computation of Determinant of the Matrix (我更改了矩阵中的一些值) 现在,我想知道是否有可能将其转换为辛矩

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

MainMatrix=[[0 for x in range(n)] for y in range(n)]
M=Matrix([MainMatrix])          #Conversion of Array to SymPy Matrix
M.det()                         #Computation of Determinant of the Matrix
(我更改了矩阵中的一些值)

现在,我想知道是否有可能将其转换为辛矩阵,以便计算行列式(假设主矩阵中的所有值都不是整数,有些是辛符号)。我想要这种东西:

MainMatrix=[[0 for x in range(n)] for y in range(n)]
M=Matrix([MainMatrix])          #Conversion of Array to SymPy Matrix
M.det()                         #Computation of Determinant of the Matrix
(是的,我知道第一行不起作用,但我只是想表达我的意图)


对于这种转换的解决方案,或者寻找主矩阵行列式的任何其他替代方案(请记住,所有条目都不是整数,有些是符号),我们将不胜感激。

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

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)

您的
main矩阵
格式已正确。您只需将其传递给
sympy.Matrix

M = Matrix(MainMatrix)

如果我这样做,然后尝试使用MainMatrix[I-1][I]=2来分配/更改MainMatrix中的一个值#仅举一个例子,那么它给了我一个错误:TypeError:“Zero”对象不支持项目分配我如何完成这个任务?@Raj你能在问题中添加一个示例,并提供所有细节吗?因为它对我有用,但也许我失踪了something@Raj我的意思是,你想要构造的矩阵这里是关于矩阵构造的代码(没有共享,因为它太长):@Raj,这是我能提供的最接近的方法,考虑到我拥有的数据,所以我希望它能帮助你,我更新了答案,看你只能调用一列,所以你可以只做:MainMatrix[1],而不是MainMatrix[1][0]