Как я могу построить дифференциальное уравнение в Python? - PullRequest
0 голосов
/ 13 мая 2018

Я хочу построить решение моего дифференциального уравнения, но я получил это:

' ValueError: x и y должны иметь одинаковое первое измерение, но иметь формы (360,) и (1,) '

Когда я пишу _plt.plot(t,final[:1])_ Я получил

' Объект равенства не может быть подписан '

заявление.

Вот мой код:

import numpy as np
import matplotlib.pyplot as plt

from sympy.abc import * 
import sympy as sy

L= float(input('L:'))
R= float(input('R:'))

v=220*sy.sqrt(2)
i=sy.Function('i')

q=sy.dsolve(sy.Eq(sy.Derivative(i(t)*L,t)+i(t)*R,v*sy.sin(t)),i(t)).evalf()
constant=sy.solve(q.subs(i(t),0),dict=True)

t=np.linspace(0,360,360)
final=q.subs(constant[0]).evalf()

plt.plot(t,final)
plt.show()

Что мне делать?

1 Ответ

0 голосов
/ 13 мая 2018

Из кода видно, что t имеет 360 элементов

t=np.linspace(0,360,360)

Ошибка сообщает, что final имеет начальное измерение 1, где, как и должно быть 360, как t. Хотя возможно, что final имеет форму (1,) (1 элемент, содержащий другой массив или список), более вероятно, что это (1, n).

Когда вы получаете shape ошибок, вам нужно посмотреть на форму соответствующих массивов,

print(final.shape, final.dtype)

и выберите из этого правильный способ корректировки форм.

plot может обрабатывать второй аргумент (360, m), где m - количество линий, которые он должен построить.

...