我尝试使用如下代码打印出一个矩阵,但是,它显示了名称错误。我想知道我应该在哪里定义矩阵?python可以识别缩写为Qb到Q_bar吗?
import numpy as np
Q11 = 14.583
Q12 = 1.4583
Q23 = 0
Q22 = 3.646
Q33 = 4.2
theta = 60
def Q_bar(Q11, Q12, Q22, Q33, theta):
n = np.sin(theta*np.pi/180)
m = np.cos(theta*np.pi/180)
Qb_11 = Q11*m**4 + 2*(Q12 + 2*Q33)*n**2*m**2 + Q22*n**4
Qb_22 = Q11*n**4 + 2*(Q12 + 2*Q33)*n**2*m**2 + Q22*m**4
Qb_33 = (Q11 + Q22 - 2*Q12 - 2*Q33)*n**2*m**2 + Q33*(m**4 + n**4)
Qb_12 = (Q11 + Q22 - 4*Q33)*n**2*m**2 + Q12*(m**4 + n**4)
Qb_13 = (Q11 - Q12 - 2*Q33)*n*m**3 + (Q12 - Q22 + 2*Q33)*n**3*m
Qb_23 = (Q11 - Q12 - 2*Q33)*n**3*m + (Q12 - Q22 + 2*Q33)*n*m**3
Qb_matrix = np.array([[Qb_11, Qb_12, Qb_13],[Qb_12, Qb_22, Qb_23],[Qb_13, Qb_23, Qb_33]])
return(Qb_matrix)
print(Qb_matrix)
你永远不会调用你的函数,所以它里面的代码永远不会被执行。更进一步,即使您确实调用了该函数。您在函数中创建的变量 Qb_matrix 将仅存在于函数作用域内,当您返回它时,您需要存储该返回值。
import numpy as np
Q11 = 14.583
Q12 = 1.4583
Q23 = 0
Q22 = 3.646
Q33 = 4.2
theta = 60
def Q_bar(Q11, Q12, Q22, Q33, theta):
n = np.sin(theta*np.pi/180)
m = np.cos(theta*np.pi/180)
Qb_11 = Q11*m**4 + 2*(Q12 + 2*Q33)*n**2*m**2 + Q22*n**4
Qb_22 = Q11*n**4 + 2*(Q12 + 2*Q33)*n**2*m**2 + Q22*m**4
Qb_33 = (Q11 + Q22 - 2*Q12 - 2*Q33)*n**2*m**2 + Q33*(m**4 + n**4)
Qb_12 = (Q11 + Q22 - 4*Q33)*n**2*m**2 + Q12*(m**4 + n**4)
Qb_13 = (Q11 - Q12 - 2*Q33)*n*m**3 + (Q12 - Q22 + 2*Q33)*n**3*m
Qb_23 = (Q11 - Q12 - 2*Q33)*n**3*m + (Q12 - Q22 + 2*Q33)*n*m**3
Qb_matrix = np.array([[Qb_11, Qb_12, Qb_13],[Qb_12, Qb_22, Qb_23],[Qb_13, Qb_23, Qb_33]])
return(Qb_matrix)
my_qb_matrix = Q_bar(Q11, Q12, Q22, Q33, theta)
print(my_qb_matrix)
输出
[[ 6.659175 1.179375 2.52896738]
[ 1.179375 12.127675 2.20689254]
[ 2.52896738 2.20689254 3.921075 ]]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句