尝试打印矩阵NameError:未定义名称'Qb_matrix'

问题描述 投票:0回答:1

我尝试使用以下代码打印出矩阵,但是它显示了nameerror。我想知道应该在哪里定义矩阵?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)
arrays python-3.x matrix nameerror
1个回答
0
投票

您永远不会调用函数,因此永远不会执行其中的代码。即使您确实调用了该函数,也可以进行更多操作。您在函数中创建的变量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  ]]
© www.soinside.com 2019 - 2024. All rights reserved.