2016-01-09 3 views
0

Я новичок в python spyder и работаю над проектом, где я решаю для некоторых неизвестных.Интеграция для поиска неизвестных ODE в python

информация, которую я дал есть,

y1 (0) = 0

у2 (0) = 1

dy1/дх = у2

йу2/дх = - y1

Я хочу найти y1 и y2, которые являются

y1 = грех

y2 = cos решена математически.

Если у вас есть ответы, пожалуйста, опишите, почему вы выбрали метод, который вы сделали ... Я действительно пытаюсь понять программирование в целом.

+0

Не было бы 'dy1 (т)/дт = у2 (т),' йу2 (т)/дт = -y1', 'у1 = sin' и' у2 = cos'? Я предложил изменить этот вопрос, но если это не так, не стесняйтесь возвращать редактирование. – Artyer

+1

Программирование - это инструмент для достижения чего-то, чего вы хотите. Вы должны сначала понять, что это такое. Кажется, вам сказали использовать оду, которая предназначена для численной интеграции. * Решение математически * дифференциальное уравнение бессмысленно и * решение для некоторых неизвестных *, похоже, здесь не имеет смысла. Чего именно вы хотите достичь? И вы заглянули в документацию для оды? – Reti43

ответ

2

Что вы подразумеваете под математикой? Решение численно очень просто.

import numpy as np 
import matplotlib.pyplot as plt 



dt = 0.001 
y1 = [0] 
y2 =[1] 
tlist=[0] 
for t in range(10000): 
    nexty1 = y2[t]*dt + y1[t] 
    nexty2 = -y1[t] * dt + y2[t] 
    y1.append(nexty1) 
    y2.append(nexty2) 
    tlist.append((t+1)*dt) 
tlist=np.array(tlist) 
y1 = np.array(y1) 
y2 = np.array(y2) 
fig = plt.figure() 
ax1 = fig.add_subplot(211) 
ax1.plot(tlist,y1) 
ax2 = fig.add_subplot(212) 
ax2.plot(tlist,y2) 
ax1.set_title('y1') 
ax2.set_title('y2') 

Y1 and Y2 plot

+0

В основном, мой профессор продолжает давать мне проекты и рассказывать мне «учиться и понимать понимание питона», но я понятия не имею, что я делаю ... Я не понимаю логики любой программы на самом деле, m пытается ... Проблема, которую он дал, была написана выше, он хотел, чтобы я использовал python для печати начальных функций y1 и y2, как вы это делали ... Есть ли способ объяснить, как вы знали, что делать, что вы делали , без предоставления какой-либо информации? – Jazmin

+0

Ну, первая часть для написания любой программы - это знать, что именно вы хотите сделать. Я знаю, как в принципе решить ОДУ в принципе (например, https://en.wikipedia.org/wiki/Numerical_methods_for_ordinary_differential_equations#Euler_method). Это, безусловно, самый важный (и первый) шаг. Когда у меня возникают более сложные проблемы, я часто пишу список шагов, которые мне нужно сделать, на бумаге, прежде чем я закодирую одно слово. Если вы не можете написать упрощенный шаг за шагом своего метода решения, вам сначала нужно понять это. Если вы не знаете python или ODE, почему вы устанавливаете это? – Chris

+0

Потому что это то, что мой профессор хотел бы, чтобы я получил простое понимание, и математически понимаю дифференциальные уравнения. Я знаю, как их решать таким образом ... но решая их с помощью кода или, тем не менее, вы называете то, в состоянии сделать ... не обязательно моя экспертиза ... – Jazmin