线性方程组的辛解法

2024-10-02 12:26:57 发布

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

为了评估弹性的某个特性,我想用Symphy来可视化方程组。我使用以下代码:

import numpy as np
import sympy as sym
b1=sym.Array([[Rational(-1/2),sqrt(3)/2,0],[-sqrt(3)/2,Rational(-1/2),0],[0,0,1]])
Sigma=[]
for i in range(0,3):
    for j in range(0,3):
        for k in range(0,3):
            for l in range(0,3):
                x= symbols(('\sigma_{%d%d}')%(k+1,l+1),commutative=False)
                M=sym.Array([x])
                Sigmatotal_tmp=tensorproduct(b1[i][k],b1[j][l],M)
                Sigma.append(Sigma11)

我想将这九个等式的集合形象化如下:

screenshot result

手动使用类似以下内容:

Sigma11 = Sigma[0][0] + Sigma[1][0] + Sigma[2][0] + Sigma[3][0] + Sigma[4][0] + Sigma[5][0] + Sigma[6][0]

显示

\frac{\sigma_{11}}{4} - \frac{\sqrt{3} \sigma_{12}}{4} - \frac{\sqrt{3} \sigma_{21}}{4} + \frac{3 \sigma_{22}}{4}+

我怎样才能把它转换成一组方程,然后求解它,找到自变量呢

我是手工做的,看起来是这样的:

enter image description here


Tags: inimportforasrangesqrt特性array
1条回答
网友
1楼 · 发布于 2024-10-02 12:26:57

方程组似乎是内部循环中生成的9个项的总和:

from sympy import *
import sympy as sym
b1=sym.Array([[Rational(-1/2),sqrt(3)/2,0],[-sqrt(3)/2,Rational(-1/2),0],[0,0,1]])
Sigma=[]
for i in range(0,3):
  for j in range(0,3):
    y = symbols(('\sigma_{%d%d}')%(i+1,j+1), commutative=True)
    args = []
    for k in range(0,3):
        for l in range(0,3):
            x= symbols(('\sigma_{%d%d}')%(k+1,l+1), commutative=True)
            M=sym.Array([x])
            Sigmatotal_tmp=tensorproduct(b1[i][k],b1[j][l],M)
            args.append(Sigmatotal_tmp[0])
    Sigma.append(y - Add(*args))
    pprint(Sigma[-1])

鉴于此,您只需使用solve(Sigma)即可获得解决方案:

>>> solve(Sigma)
{\sigma_{32}: 0, \sigma_{31}: 0, \sigma_{23}: 0, \sigma_{13}: 0, 
 \sigma_{12}: -\sigma_{21}, \sigma_{11}: \sigma_{22}}

也请注意,交换性设置为True,是否有必要设置为False

相关问题 更多 >

    热门问题