Unicode ошибка при попытке построения массивов? - PullRequest
0 голосов
/ 25 апреля 2018

У меня очень простой код, и я пытаюсь построить полученный результирующий массив 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).Кто-нибудь знает, почему это происходит?

1 Ответ

0 голосов
/ 25 апреля 2018

python 2 не имеет utf-8 в качестве кодировки по умолчанию.определение вашей кодировки с помощью либо

# coding=utf-8
# -*- coding: utf-8 -*-

должно подойти.обратитесь к PEP-0263 .

, тогда вам необходимо добавить к ярлыку префикс 'u':

plt.plot(t, pos, label=u'Störmer-Verlet approximation')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...