我是Python新手,正在尝试使用以下代码绘制方程式。
import math
import matplotlib.pyplot as plt
import numpy as np
# Data for plotting
L = 0.0001
b = 0.0079
h = 0.405
t = np.arange(0, 1, 0.01)
y = 1/(b+(h*L))*[(h*L)+b*math.exp((-h+(b/L)*t))]
plt.plot(t,y)
plt.grid()
plt.show()
它返回 TypeError: 运行时只有长度为 1 的数组可以转换为 Python 标量。任何帮助将不胜感激。
这是因为您尝试在 NumPy 数组 (
math.exp()
) 上使用 t
。 math
模块函数(如 math.exp()
)旨在处理单个标量值,而不是数组。
相反,您应该使用 NumPy (
np.exp()
) 中的等效函数,它可以处理数组。
此外,你的方程有一些与括号相关的问题,你不能将数组乘以列表。
这是修改后的代码。
import numpy as np
import matplotlib.pyplot as plt
# Data for plotting
L = 0.0001
b = 0.0079
h = 0.405
t = np.arange(0, 1, 0.01)
# Corrected equation (using np.exp instead of math.exp)
y = 1 / (b + (h * L)) * ((h * L) + b * np.exp((-h + (b / L)) * t))
plt.plot(t, y)
plt.grid()
plt.show()
希望这对你有一点帮助。