Обыкновенное дифференциальное уравнение дает мне f, и я попытался решить эту проблему численно, используя кубическое разложение в ряд Тейлора (TS3). Начальные значения известны x = 2 и y = 1, и мы пытаемся найти значения функции при x = 2.5.
x= sp.symbols('x ')
y=sp.Function("y")(x)
f = sp.Function("f")(x,y) # f is actually y'(derived of y )
x0 = 2
y0 =1
f = -x*y**2 # ordinary differential equation and its derivatives line 33 to 35
df = sp.diff(f,x)
dff = sp.diff(f,x,2)
y_num = []
h = 0.1 # step size
k = 0
while x0<2.5:
f_num = f.subs([(y,y0),(x,x0)])
df_num = df.subs(y.diff(x),f_num).subs([(y,y0),(x,x0)])
dff_num = dff.subs(y.diff(x,2),df_num).subs(sp.Derivative(y,
x),f_num).subs([(y,y0),(x,x0)])
y_num.append(y0 + h*f_num + h**2/2*df_num+h**3/6*dff_num)
y0 = y_num[k]
x0 = x0+h
k=k+1
print(x0)
print(y_num)
Я не знаю, является ли это полезным постом, или я могу выразить себя правильно, носпасибо за интерес и ответы