求助:如何通过数组函数传递计算基于theta的Q_bar系列项?
问题解决:基于多输入theta数组计算Q_bar项
问题根源
你代码里的核心问题是使用了math模块的函数处理numpy数组,math.cos、math.radians这类函数仅支持单个数值输入,无法直接作用于numpy数组,导致无法生成对应的m、n数组,后续的Q_bar计算自然也无法得到数组结果。
修正后的代码
把math模块的函数替换为numpy对应的向量化函数即可,numpy的函数支持直接对数组进行批量运算:
import numpy as np # 先定义Q系列参数(替换成你的实际参数) Q11 = 100 Q12 = 20 Q22 = 80 Q66 = 30 theta = np.array([0, 25, -80, 90, 20]) # 使用numpy的radians和cos/sin,支持数组运算 m = np.cos(np.radians(theta)) n = np.sin(np.radians(theta)) # 计算各Q_bar项,自动生成对应长度的数组 Q_bar11 = Q11*(m**4) + 2*(Q12 + 2*Q66)*(n**2)*(m**2) + Q22*(n**4) Q_bar12 = (Q11 + Q22 - 4*Q66)*(n**2)*(m**2) + Q12*(n**4 + m**4) Q_bar16 = (Q11 - Q12 - 2*Q66)*n*(m**3) + (Q12 - Q22 + 2*Q66)*(n**3)*m Q_bar22 = Q11*(n**4) + 2*(Q12 + 2*Q66)*(n**2)*(m**2) + Q22*(m**4) Q_bar26 = (Q11 - Q12 - 2*Q66)*(n**3)*m + (Q12 - Q22 + 2*Q66)*n*(m**3) Q_bar66 = (Q11 + Q22 - 2*Q12 - 2*Q66)*(n**2)*(m**2) + Q66*(n**4 + m**4) # 输出结果示例 print(Q_bar11)
说明
- 替换后,
m和n会生成与theta长度一致的numpy数组 - 所有Q_bar项的计算都会自动进行向量化运算,最终得到对应长度的数组结果
- 注意先定义好
Q11、Q12、Q22、Q66的实际数值,示例中用的是占位值
内容的提问来源于stack exchange,提问作者Josh Daniel
相关产品推荐
相关产品推荐

