Python 辛,矩阵,特征值,天哪。。。特征值误差

Python 辛,矩阵,特征值,天哪。。。特征值误差,python,matrix,sympy,Python,Matrix,Sympy,我试着做一些应力计算,与我在教科书中发现的一个示例问题相匹配 辛矩阵的特征值法给了我一个我没有预料到的答案。它包括虚数。不知道我做错了什么。任何帮助都将不胜感激 我已经浏览了文档,尝试将其舍入,或者查看是否有其他我遗漏的关键字 来自sympy导入矩阵的 def应力矩阵(x=0,y=0,z=0,xy=0,xz=0,yz=0): sigma_x,sigma_y,sigma_z,tau_xy,tau_xz,tau_yz=sympy.var('sigma_x,sigma_y,sigma_z,tau_xy

我试着做一些应力计算,与我在教科书中发现的一个示例问题相匹配

辛矩阵的特征值法给了我一个我没有预料到的答案。它包括虚数。不知道我做错了什么。任何帮助都将不胜感激

我已经浏览了文档,尝试将其舍入,或者查看是否有其他我遗漏的关键字

来自sympy导入矩阵的

def应力矩阵(x=0,y=0,z=0,xy=0,xz=0,yz=0):
sigma_x,sigma_y,sigma_z,tau_xy,tau_xz,tau_yz=sympy.var('sigma_x,sigma_y,sigma_z,tau_xy,tau_xz,tau_yz'))
应力变量={sigma_x:x,sigma_y:y,sigma_z:z,tau_xy:xy,tau_xz:xz,tau_yz:yz}
应力张量=共矩阵([[sigma_x,tau_xy,tau_xz],[tau_xy,sigma_y,tau_yz],[tau_xz,tau_yz,sigma_z]]
返回stressTensor.subs(stressVars)
t=应力矩阵(x=-19,y=4.6,z=-8.3,xy=-4.7,xz=6.45,yz=11.8)
特征值=t.特征值()
我预计产量为11.618,-9.001,-25.316

但我得到了:

{-227/30 + 411091/(3600*(52767683/216000 + sqrt(7409803141670898)*I/72000)**(1/3)) + (52767683/216000 + sqrt(7409803141670898)*I/72000)**(1/3): 1, -227/30 + 411091/(3600*(-1/2 + sqrt(3)*I/2)*(52767683/216000 + sqrt(7409803141670898)*I/72000)**(1/3)) + (-1/2 + sqrt(3)*I/2)*(52767683/216000 + sqrt(7409803141670898)*I/72000)**(1/3): 1, -227/30 + (-1/2 - sqrt(3)*I/2)*(52767683/216000 + sqrt(7409803141670898)*I/72000)**(1/3) + 411091/(3600*(-1/2 - sqrt(3)*I/2)*(52767683/216000 + sqrt(7409803141670898)*I/72000)**(1/3)): 1}

这些特征值是实的。您可以看到,如果对它们进行数值计算:

In [25]: e1, e2, e3 = t.eigenvals()                                                                                               

In [26]: e1.evalf()                                                                                                               
Out[26]: -25.3162883162696 - 0.e-22⋅ⅈ

In [27]: e2.evalf()                                                                                                               
Out[27]: 11.6178013689878 - 0.e-19⋅ⅈ

In [28]: e3.evalf()                                                                                                               
Out[28]: -9.00151305271824 + 0.e-22⋅ⅈ
Symphy使用包含复数的表达式显示根:

In [29]: e1                                                                                                                       
Out[29]: 
                                                                                  ________________________________
  227                           411091                           ⎛  1   √3⋅ⅈ⎞    ╱ 52767683   √7409803141670898⋅ⅈ 
- ─── + ────────────────────────────────────────────────────── + ⎜- ─ + ────⎟⋅3 ╱  ──────── + ─────────────────── 
   30                         ________________________________   ⎝  2    2  ⎠ ╲╱    216000           72000        
             ⎛  1   √3⋅ⅈ⎞    ╱ 52767683   √7409803141670898⋅ⅈ                                                     
        3600⋅⎜- ─ + ────⎟⋅3 ╱  ──────── + ───────────────────                                                     
             ⎝  2    2  ⎠ ╲╱    216000           72000  
这是因为由于不可约原因,没有其他方法可以使用部首来表达这些根:
这些特征值是实的。您可以看到,如果对它们进行数值计算:

In [25]: e1, e2, e3 = t.eigenvals()                                                                                               

In [26]: e1.evalf()                                                                                                               
Out[26]: -25.3162883162696 - 0.e-22⋅ⅈ

In [27]: e2.evalf()                                                                                                               
Out[27]: 11.6178013689878 - 0.e-19⋅ⅈ

In [28]: e3.evalf()                                                                                                               
Out[28]: -9.00151305271824 + 0.e-22⋅ⅈ
Symphy使用包含复数的表达式显示根:

In [29]: e1                                                                                                                       
Out[29]: 
                                                                                  ________________________________
  227                           411091                           ⎛  1   √3⋅ⅈ⎞    ╱ 52767683   √7409803141670898⋅ⅈ 
- ─── + ────────────────────────────────────────────────────── + ⎜- ─ + ────⎟⋅3 ╱  ──────── + ─────────────────── 
   30                         ________________________________   ⎝  2    2  ⎠ ╲╱    216000           72000        
             ⎛  1   √3⋅ⅈ⎞    ╱ 52767683   √7409803141670898⋅ⅈ                                                     
        3600⋅⎜- ─ + ────⎟⋅3 ╱  ──────── + ───────────────────                                                     
             ⎝  2    2  ⎠ ╲╱    216000           72000  
这是因为由于不可约原因,没有其他方法可以使用部首来表达这些根:

e1.evalf(chop=True)
可用于。
e1.evalf(chop=True)
可用于。