我有一个非常简单的代码,我试图将我生成的numpy数组pos
绘制为t
的函数,但我得到一个随机的unicode错误。我以前从来没有出现过这个错误,我对它的含义或为什么会出现在这段代码中感到茫然:
import numpy as np
import matplotlib.pyplot as plt
h = 0.5
x_0 = 1
w = 1
t = np.arange(0, 20, h)
pos, v = np.zeros(len(t)), np.zeros(len(t))
pos[0], v[0] = x_0, 0
def a(pos):
return -w**2 * pos
for i in range(1, len(t)):
# Stormer-Verlet method
pos[i] = pos[i-1] + h*(v[i-1] + 0.5*h*a(pos[i-1]))
v[i] = v[i-1] + 0.5*h*a(pos[i-1]) + 0.5*h*a(pos[i])
# Plotting position as a function of time
plt.plot(t, pos, label='Störmer-Verlet approximation')
在plt.plot
行,我收到此错误:UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 2: ordinal not in range(128)
。我还打印了pos
并确认它是一个预期的数组,长度为100(与t
的长度相同)。有谁知道为什么会这样?