try to print out a matrix NameError: name 'Qb_matrix' is not defined

try to print out a matrix NameError: name 'Qb_matrix' is not defined

我尝试使用如下代码打印出一个矩阵,但是,它显示了名称错误。 我想知道我应该在哪里具体定义矩阵? 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 将仅存在于函数范围内,当您 return 它时,您需要存储该 returned 值。

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  ]]