Я хочу решить ODE численно в python, например, y '= f (x) (с граничным условием y (0) = 0). Дело в том, что я не знаю, каково аналитическое выражение этой функции f (x), вместо этого у меня есть набор точек (данных) этой функции для области, где я хочу решить дифференциальное уравнение.
Я пробовал с (odeint) https://docs.scipy.org/doc/scipy/reference/generated/scipy.integrate.odeint.html. Но этот метод работает, когда вы знаете явное аналитическое выражение для f (x), что не является моим случаем. В частности, у меня есть следующий код с функцией f (x) в массиве (для простоты я считаю, что f (x), НО В МОЕЙ НАСТОЯЩЕЙ ЗАДАЧЕ, ЭТА МОДУЛЬ f (x) СЧИТАЕТСЯ ЧИСЛЕННЫМ МОДЕЛИРОВАНИЕМ, БЕЗ ЗНАКОМ АНАЛИТИЧЕСКИМ EXPRESION).
Я покажу вам код, который я сделал, но не работает, поскольку odeint считает, что у меня есть y '= x, а не мои значения f (x).
from scipy.integrate import odeint
import numpy as np
def dy_dx(y, f):
return f #it doesn't work!!
xs = np.linspace(0,10,100)
f = np.sin(xs)*np.exp(-0.1*xs) #data of the function f, but in my real problem I DON'T KNOW THE ANALITICAL SOLUTION! JUST ONLY the points
ys = odeint(dy_dx, 0.0, xs)
У кого-нибудь есть идеи, как решить эту проблему? Я думаю, что в python должно что-то существовать, чтобы решить эту проблему, потому что в основном вы решаете оду численно и уже знаете, каковы значения f (x) в области оды. Но я не вижу пути.
Спасибо заранее!