Python3之弹性力学——应力张量1

题目

已知某点的应力张量为:

[left[ egin{array}{ccc} sigma_{x} & au_{xy} & au_{xz}\ au_{yx} &sigma_{y} & au_{yz}\ au_{zx} & au_{zy} &sigma_{z} end{array} ight] = left[ egin{array}{ccc} 0 &1 &2\ 1 & sigma_{y} & 1\ 2 &1 &0 end{array} ight] ]

并已知经过该点的某一平面上的应力矢量为零矢量,求 (sigma_y) 和主应力?

分析

由题意,存在某个微分面(单位法向量为 (oldsymbol{n})),其上的应力矢量 (oldsymbol{T}=oldsymbol{0}),即

[oldsymbol{T}=oldsymbol{sigma}cdotoldsymbol{n}= left[egin{array}{ccc} 0 & 1 & 2\ 1 & sigma_{y} & 1\ 2 & 1 & 0 end{array} ight] left[ egin{array}{c} n_1\ n_2\ n_3 end{array} ight] = left[ egin{array}{c} 0\ 0\ 0 end{array} ight] ]

行列式必须为零

线性方程组存在非零解,必然行列式为零,即

[left|egin{array}{ccc} 0 & 1 & 2\ 1 & sigma_{y} & 1\ 2 & 1 & 0 end{array} ight| = 0 + 2 + 2 -4sigma_y - 0 - 0 = 0 ]

求得 (sigma_y = 1)

应力张量

于是,应力张量为

[left[ egin{array}{ccc} sigma_{x} & au_{xy} & au_{xz}\ au_{yx} & sigma_{y} & au_{yz}\ au_{zx} & au_{zy} & sigma_{z} end{array} ight] = left[ egin{array}{ccc} 0 & 1 & 2\ 1 & 1 & 1\ 2 & 1 & 0 end{array} ight] ]

特征值问题

求主应力,即为求应力张量的特征值。

[left|\,oldsymbol{sigma}-sigmaoldsymbol{I} \, ight| = 0 ]

[left| egin{array}{ccc} -sigma & 1 & 2\ 1 & 1-sigma & 1\ 2 & 1 & -sigma end{array} ight| = (1-sigma)sigma^2 + 2 + 2 - 4(1-sigma) + sigma + sigma = 0 ]

整理得

[-sigma^3 + sigma^2 + 6sigma = -sigma(sigma-3)(sigma+2) = 0 ]

主应力

得到三个主应力分别为

[left{ egin{array}{rcr} sigma_1 & = & 3\ sigma_2 & = & 0\ sigma_3 & = & -2 end{array} ight. ]

Python3代码求解

符号运算求特征值

  • 调用 Python 下的 sympy 模块
from sympy import init_printing, Matrix
init_printing(use_unicode=True)

Matrix对象表示应力矩阵

# 生成矩阵对象
sigma = Matrix([[0, 1, 2], [1, 1, 1], [2, 1, 0]])
sigma

[left[egin{matrix}0 & 1 & 2\1 & 1 & 1\2 & 1 & 0end{matrix} ight] ]

求特征值

  • 前已求得三个主应力分别为

[left{ egin{array}{rcr} sigma_1 & = & 3\ sigma_2 & = & 0\ sigma_3 & = & -2 end{array} ight. ]

  • 调用 Matrix 对象的 eigenvals 方法
sigma.eigenvals() # 求特征值

[left { -2 : 1, quad 0 : 1, quad 3 : 1 ight } ]

  • 冒号后的数字表示一重特征值

求特征矢量

  • 调用 Matrix 对象的 eigenvects 方法
sigma.eigenvects()

[left [ left ( -2, quad 1, quad left [ left[egin{matrix}-1\0\1end{matrix} ight] ight ] ight ), quad left ( 0, quad 1, quad left [ left[egin{matrix}1\-2\1end{matrix} ight] ight ] ight ), quad left ( 3, quad 1, quad left [ left[egin{matrix}1\1\1end{matrix} ight] ight ] ight ) ight ] ]

参考

原文地址:https://www.cnblogs.com/brightyuxl/p/9992441.html