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
10910
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 ] 

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



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

Сейчас этот форум просматривают: Gg322


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

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