forked from burakbayramli/books
-
Notifications
You must be signed in to change notification settings - Fork 0
/
4.3.3.5.py
35 lines (35 loc) · 1020 Bytes
/
4.3.3.5.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import sympy as sp
from sympy import *
sp.init_printing(use_latex="mathjax")
small_strain = Matrix([[-0.01, 0.002, -0.023],[0.002, 0.05, 0],[-0.023, 0, 0.02]])
print("\u03B5_small =",small_strain)
# part 1
print("part 1")
dX = Matrix([1,2,1])
print("dX =",dX)
print("norm of dX =",dX.norm())
ndX = dX/dX.norm()
print("small strain along dX =",ndX.dot(small_strain*ndX))
# part 2
print("part 2")
dX = Matrix([1,0,1])
dY = Matrix([1,1,1])
print("dX =",dX)
print("dY =",dY)
ndX = dX/dX.norm()
ndY = dY/dY.norm()
small_strain_along = ndX.dot(small_strain*ndY)
print("1/2 change of cos of angle between dX and dY =",small_strain_along.evalf())
phi = acos(ndX.dot(ndY)).evalf()
print("\u03A6 =",phi,"degrees", deg(phi).evalf())
theta = acos(small_strain_along*2 + cos(phi))
print("\u03B8 =",theta,"degrees", deg(theta).evalf())
# part 3
print("part 3")
dX = Matrix([-1,1,0])
dY = Matrix([1,1,0])
print("dX =",dX)
print("dY =",dY)
ndX = dX/dX.norm()
ndY = dY/dY.norm()
print("shear strain =",ndX.dot(small_strain*ndY).evalf())