2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


Посмотреть правила форума



Начать новую тему Ответить на тему
 
 Решение диффура методом Рунге-Кутты на питоне
Сообщение27.12.2023, 09:30 
Аватара пользователя


03/01/23
73
Есть простое дифференциальное уравнение в полных дифференциалах $2xydx + (x^2-y^2)dy = 0$

Его решение $F = 3x^2 y - y^3 = C $

Я решил его руками, но мне захотелось еще решить задачу Коши методом Рунге-Кутты. Я написал такой скрипт для реализации РК-метода:

Код:
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)



Точку $(1, 2)$ я взял с потолка и решил задачу Коши в этой точке. Получился ответ $1.9999999999998899, 3.544606815316078$. Что это за точка? Что она означает? Ведь у нас уже есть условия, значение функции в точке $x_0 = 1, y_0 = 2, F(1) = 2$. Что еще у нас получилось в методе Рунге-Кутты? Насколько я понимаю, задача Коши про отыскание интегральной кривой, а не отдельной точки.

Здесь $func=-\frac{2xy}{x^2-y^2}$ я выразил из уравнения $\frac{dy}{dx} = -\frac{2xy}{x^2-y^2}$

 Профиль  
                  
 
 Re: Решение диффура методом Рунге-Кутты на питоне
Сообщение27.12.2023, 11:37 
Заслуженный участник
Аватара пользователя


01/09/13
4656
Without Name в сообщении #1624006 писал(а):
Насколько я понимаю, задача Коши про отыскание интегральной кривой, а не отдельной точки.
Скажите, Вы знакомы с программированием вообще и с питоном в частности?
Without Name в сообщении #1624006 писал(а):
Что это за точка? Что она означает?
Некая точка... которая удовлетворяет тому же $F(x,y)$, что и (1,2).

 Профиль  
                  
 
 Re: Решение диффура методом Рунге-Кутты на питоне
Сообщение27.12.2023, 11:55 
Аватара пользователя


03/01/23
73
Цитата:
Скажите, Вы знакомы с программированием вообще и с питоном в частности?


Да, но с вычислительными методами плохо знаком

Цитата:
Некая точка... которая удовлетворяет тому же $F(x,y)$, что и (1,2).

Для чего она нужна, если уже есть точка, лежащая на интегральной кривой?

-- 27.12.2023, 12:18 --

Я пытаюсь быть "человек-оркестром", берусь за все подряд, что мне интересно, но на понимание всего мне катастрофически не хватает времени. Поэтому у меня в решениях и коде могут быть неточности и проблемы.

 Профиль  
                  
 
 Re: Решение диффура методом Рунге-Кутты на питоне
Сообщение27.12.2023, 14:11 
Заслуженный участник
Аватара пользователя


01/09/13
4656
А что значит
Without Name в сообщении #1624006 писал(а):
решить задачу Коши методом Рунге-Кутты.
?

 Профиль  
                  
 
 Re: Решение диффура методом Рунге-Кутты на питоне
Сообщение27.12.2023, 14:25 
Аватара пользователя


03/01/23
73
Geen в сообщении #1624046 писал(а):
А что значит
Without Name в сообщении #1624006 писал(а):
решить задачу Коши методом Рунге-Кутты.
?

Решить задачу Коши значит найти решение дифференциального уравнения, удовлетворяющее начальному условию.

Численным приближенным решением задачи Коши (например, методом Рунге-Кутты) называется функция, заданная таблицей чисел. Решение ищется на заданном интервале $(x_0, x_n)$

Получается, что в этом коде решение находится в таблице точек path?

 Профиль  
                  
 
 Re: Решение диффура методом Рунге-Кутты на питоне
Сообщение27.12.2023, 14:38 
Заслуженный участник
Аватара пользователя


01/09/13
4656
Without Name в сообщении #1624053 писал(а):
в этом коде решение находится в таблице точек path?

Вы сами код писали или взяли где?

 Профиль  
                  
 
 Re: Решение диффура методом Рунге-Кутты на питоне
Сообщение27.12.2023, 14:52 
Аватара пользователя


03/01/23
73
Geen в сообщении #1624055 писал(а):
Without Name в сообщении #1624053 писал(а):
в этом коде решение находится в таблице точек path?

Вы сами код писали или взяли где?

По статье на хабре писал
Дословный перевод формул в код

 Профиль  
                  
 
 Re: Решение диффура методом Рунге-Кутты на питоне
Сообщение27.12.2023, 15:27 
Заслуженный участник
Аватара пользователя


01/09/13
4656
Without Name в сообщении #1624060 писал(а):
По статье на хабре писал

Просто я не совсем понимаю - если Вы ввели переменную path, то значит понимали зачем она нужна?....
А так да, её и надо возвращать.

 Профиль  
                  
 
 Re: Решение диффура методом Рунге-Кутты на питоне
Сообщение27.12.2023, 19:25 
Заслуженный участник
Аватара пользователя


23/07/08
10909
Crna Gora
Without Name в сообщении #1624053 писал(а):
Численным приближенным решением задачи Коши (например, методом Рунге-Кутты) называется функция, заданная таблицей чисел. Решение ищется на заданном интервале $(x_0, x_n)$
Функция runge возвращает только пару $(x_n, y_n)$, хотя "ценным" является весь path. Потому что проверка последней точки — лёгкий способ проверить, что алгоритм, похоже, работает правильно (ведь вычисление каждой точки опирается на предыдущую, и ошибка в любом месте даст неправильную последнюю точку).

Проверяем. Определяем функцию $F = 3x^2 y - y^3$ и проверяем, что это константа сравниваем $F(x_0,y_0)$ и $F(x_n,y_n)$:
Используется синтаксис Matlab M
F=@(x,y) 3*x^2*y-y^3;
x0=1;
y0=2;
xn=1.9999999999998899;
yn=3.544606815316078;
[F(x0,y0); F(xn,yn)]
Результат:
-2.000000000000000
-2.000000000002849

Значения совпадают с большой точностью, и это хорошо.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group