Решение и построение графика нелинейного ODE первого порядка - PullRequest
0 голосов
/ 08 октября 2018

До сих пор я был полу-успешным в решении и построении графика нелинейной оды dn / dt = n ^ 2-2n-3 для двух начальных условий, n (0) = - 5 и n (0) = 1,но когда я добавляю одну последнюю строку в график с начальным условием n (0) = 10, все становится странным, и график не выглядит так, как предполагается, или ведет себя как две другие строки.

код:

import numpy as np
import matplotlib.pyplot as plt
import scipy.integrate
#import warnings
#warnings.simplefilter('ignore')

def func(N, t):
    return(N**2 - 2*N - 3)

tvec = np.arange(0,11)

s_1 = scipy.integrate.odeint(func, y0=-5,t = tvec)
s_2 = scipy.integrate.odeint(func,y0=1, t=tvec)
s_3 = scipy.integrate.odeint(func, y0 = 10, t=tvec)

%matplotlib inline
plt.plot(tvec,s_1, label="N0=-5")
plt.plot(tvec,s_2, label="N0=1")
plt.plot(tvec, s_3, label="N0=10")
plt.ylim(-5,10)
plt.legend();

виновник здесь s_3.

enter image description here

Есть идеи, как это исправить?

1 Ответ

0 голосов
/ 08 октября 2018

Ваше дифференциальное уравнение имеет неустойчивую точку равновесия при N = 3. Любое начальное условие, большее 3, приводит к решению, которое взрывается за конечное время.Это математическое утверждение;Численно значения станут чрезвычайно большими, и решатель ODE в конечном итоге начнет генерировать глупости.Если какое-либо из «бессмысленных» значений окажется меньше 3, тогда «решение» сойдется к устойчивому равновесию при N = -1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...