Есть простое дифференциальное уравнение в полных дифференциалах
Его решение
Я решил его руками, но мне захотелось еще решить задачу Коши методом Рунге-Кутты. Я написал такой скрипт для реализации РК-метода:
Код:
def runge(func, x0, y0, delta, n):
x, y = x0, y0
path = [(x0, y0)]
for i in range(n):
k1 = func(x, y)
k2 = func(x + delta/2, y + delta/2 * k1)
k3 = func(x + delta/2, y + delta/2 * k2)
k4 = func(x + delta, y + delta*k3)
y += delta/6 * (k1 + 2*k2 + 2*k3 + k4)
x += delta
path.append((x, y))
return (x, y)
def func(x, y):
return -2*x*y / (x*x - y*y)
if __name__ == '__main__':
x, y = runge(func, 1, 2, 0.001, 1000)
print(x, y)
Точку
я взял с потолка и решил задачу Коши в этой точке. Получился ответ
. Что это за точка? Что она означает? Ведь у нас уже есть условия, значение функции в точке
. Что еще у нас получилось в методе Рунге-Кутты? Насколько я понимаю, задача Коши про отыскание интегральной кривой, а не отдельной точки.
Здесь
я выразил из уравнения