调用solve_ivp求解运动方程时Pendulum类y属性触发TypeError求助
问题原因
- 运行solve方法后,
self._theta存储的是solve_ivp返回的numpy数组,包含所有时间步对应的角度值,属于多元素数组而非单个标量。 - 你当前
y属性中调用的cos是Python标准库math模块的接口,该接口仅支持传入单个标量值,无法直接处理数组类型的输入,因此触发类型错误。
修复方案
将y属性中使用的cos替换为numpy库的向量化cos接口即可,numpy的三角函数原生支持多元素数组运算,能直接返回对应所有时间点的垂直坐标数组。修改后的代码如下:
import numpy as np # 确保已导入numpy模块 @property def y(self): """ Translating angles into cartesian coordinates y is an array of vertical positions """ return - self.L * np.cos(self.theta)
内容的提问来源于stack exchange,提问作者N.A.
相关产品推荐
相关产品推荐

