Решение дифференциальных уравнений на java

Метод Эйлера для решения дифференциального уравнения

Дано дифференциальное уравнение dy / dx = f (x, y) с начальным условием y (x0) = y0. Найти его приближенное решение, используя метод Эйлера .

Метод Эйлера:
В математике и вычислительной науке метод Эйлера (также называется вперед
Метод Эйлера) — числовая процедура первого порядка для решения обыкновенного дифференциала
уравнения (ОДУ) с заданным начальным значением.
Рассмотрим дифференциальное уравнение dy / dx = f (x, y) с начальным условием y (x0) = y0
тогда последовательная аппроксимация этого уравнения может быть задана как:

where h = (x(n) – x(0)) / n
h indicates step size. Choosing smaller
values of h leads to more accurate results
and more computation time.

Пример :

/ * Программа CPP, чтобы найти приближение

обыкновенного дифференциального уравнения

используя метод Эйлера. * /

using namespace std;

// Рассмотрим дифференциальное уравнение
// dy / dx = (x + y + xy)

float func( float x, float y)

return (x + y + x * y);

// Функция для формулы Эйлера

void euler( float x0, float y, float h, float x)

Видео:Java - урок 5.4 (Практика - решаем квадратное уравнение)Скачать

Java - урок 5.4 (Практика - решаем квадратное уравнение)

Решение дифференциальных уравнений на java

Variant 19 (Sukach Maxim, BS17-03)

Решение дифференциальных уравнений на java

Решение дифференциальных уравнений на java

Найдем Решение дифференциальных уравнений на java

Решение дифференциальных уравнений на java

В итоге, наше решение принимает вид:

Решение дифференциальных уравнений на java

Метод Эйлера дает возможность приближенно выразить функцию теоретически с любой наперед заданной точностью. Суть метода Эйлера в пошаговом вычислении значений решения y=y(x) дифференциального уравнения вида y’=f(x,y) с начальным условием (x0;y0). Метод Эйлера является методом 1-го порядка точности и называется методом ломаных.

Для вычисления используются следующие формулы:

Решение дифференциальных уравнений на java

Решение дифференциальных уравнений на java

Метод Эйлера и точное решение при x0 = 0, xf = 9, y0 = 1, h = 0.1

Решение дифференциальных уравнений на java

Метод Эйлера и точное решение при x0 = 0, xf = 3, y0 = 1, h = 0.1

Решение дифференциальных уравнений на java

Метод Эйлера и точное решение при x0 = 0, xf = 1, y0 = 1, h = 0.1

Усовершенствованный метод Эйлера

Суть усовершенствованного метода Эйлера в пошаговом вычислении значений решения y=y(x) дифференциального уравнения вида y’=f(x,y) с начальным условием (x0;y0). Усовершенствованный метод Эйлера является методом 2-го порядка точности и называется модифицированным методом Эйлера.

Разница между данным методом и методом Эйлера минимальна и заключается в использовании следующих формул:

Решение дифференциальных уравнений на java

Решение дифференциальных уравнений на java

Усовершенствованный Метод Эйлера и точное решение при
x0 = 0, xf = 9, y0 = 1, h = 0.1

Решение дифференциальных уравнений на java

Усовершенствованный Метод Эйлера и точное решение при
x0 = 0, xf = 3, y0 = 1, h = 0.1

Решение дифференциальных уравнений на java

Усовершенствованный Метод Эйлера и точное решение при
x0 = 0, xf = 1, y0 = 1, h = 0.1

Классический метод Рунге-Кутты

Суть метода Рунге-Кутты в пошаговом вычислении значений решения y=y(x) дифференциального уравнения вида y’=f(x,y) с начальным условием (x0;y0). Классический метод Рунге-Кутты является методом 4-го порядка точности и называется методом Рунге-Кутты 4-го порядка точности.

Ну и как обычно, формулы:

Решение дифференциальных уравнений на java

Решение дифференциальных уравнений на java

Классический метод Рунге-Кутты и точное решение при x0 = 0, xf = 9, y0 = 1, h = 0.1

Решение дифференциальных уравнений на java

Классический метод Рунге-Кутты и точное решение при x0 = 0, xf = 3, y0 = 1, h = 0.1

Решение дифференциальных уравнений на java

Классический метод Рунге-Кутты и точное решение при x0 = 0, xf = 1, y0 = 1, h = 0.1

Сравнение методов для заданной задачи

Решение дифференциальных уравнений на java

Размер ошибки всех методов на промежутке [0, 9] с шагом 0.1

Решение дифференциальных уравнений на java

Размер ошибки всех методов на промежутке [0, 3] с шагом 0.1

Решение дифференциальных уравнений на java

Размер ошибки всех методов на промежутке [0, 1] с шагом 0.1

Очевидно что, классический метод Рунге-Кутты справляется с задачей аппроксимации в случае данного уравнения намного лучше чем Метод Эйлера и Усовершенствованный метод Эйлера.

График глобальной средней ошибки

Решение дифференциальных уравнений на java

Глобальная ошибка в зависимости от размера шага H на промежутке от 0.01 до 0.91 для x0 = 1, xf = 9

Видео:Линейное дифференциальное уравнение Коши-ЭйлераСкачать

Линейное дифференциальное уравнение Коши-Эйлера

Дифференциальные уравнения в Java

Я пытаюсь создать простую программу моделирования модели SIR-epidemics на java.

в принципе, сэр определяется системой трех дифференциальных уравнений:
S'(t) = — l(t) * S (t)
I'(t) = l(t) * S(t) — g(t) * I (t)
R'(t) = g(t) * I (t)

s-восприимчивые люди, I — инфицированные люди, R-выздоровевшие люди.

l(t) = [c * x * I(t)] / N (T)

c-количество контактов, x-зараженность (вероятность заболеть после контакта с больным человеком), N (t) — общая численность населения (которая является постоянной).

Как я могу решать такие дифференциальные уравнения в Java? Я не думаю, что знаю какой-либо полезный способ сделать это, поэтому моя реализация производит мусор.

Я был бы очень признателен за любую помощь, большое спасибо заранее!

Видео:Задача Коши ➜ Частное решение линейного однородного дифференциального уравненияСкачать

Задача Коши ➜ Частное решение линейного однородного дифференциального уравнения

1 ответов

дифференциальные уравнения временных рядов можно смоделировать численно, взяв DT = небольшое число и используя одно из нескольких методы численного интегрирования например метод Эйлера или Рунге-Кутта. Метод Эйлера может быть примитивным, но он хорошо работает для некоторых уравнений, и он достаточно прост, чтобы вы могли попробовать. например:

I'(t) = l(t) * S(t) — g(t) * I (t)

трудная часть выясняет, сколько шагов использовать. Вы должны прочитать одну из статей, на которую я ссылался. Более сложные решатели дифференциальных уравнений используют переменные размеры шага, которые адаптируются к точности / стабильности для каждого шага.

Я бы рекомендовал использовать численное программное обеспечение, такое как R или Mathematica или MATLAB или Octave, поскольку они включают в себя решатели ODE, и вам не нужно будет идти на все проблемы самостоятельно. Но если вам нужно сделать это как часть большего приложения Java, по крайней мере, попробовать его сначала с математическим программным обеспечением, а затем понять, какие размеры шагов и какие решатели работают.

📸 Видео

Дифференциальные уравнения, 2 урок, Дифференциальные уравнения с разделяющимися переменнымиСкачать

Дифференциальные уравнения, 2 урок, Дифференциальные уравнения с разделяющимися переменными

13. Как решить дифференциальное уравнение первого порядка?Скачать

13. Как решить дифференциальное уравнение первого порядка?

Линейное неоднородное дифференциальное уравнение второго порядка с постоянными коэффициентамиСкачать

Линейное неоднородное дифференциальное уравнение второго порядка с постоянными коэффициентами

Частное решение дифференциального уравнения. 11 класс.Скачать

Частное решение дифференциального уравнения. 11 класс.

7. Линейные дифференциальные уравнения первого порядка. Метод Бернулли.Скачать

7. Линейные дифференциальные уравнения первого порядка. Метод Бернулли.

Java для начинающих. Урок 25: НаследованиеСкачать

Java для начинающих. Урок 25: Наследование

Линейное неоднородное дифференциальное уравнение с постоянными коэффициентами 4y''-y=x^3-24x #1Скачать

Линейное неоднородное дифференциальное уравнение с постоянными коэффициентами 4y''-y=x^3-24x #1

Решение дифференциальных уравнений. Практическая часть. 11 класс.Скачать

Решение дифференциальных уравнений. Практическая часть. 11 класс.

Откуда появляются дифференциальные уравнения и как их решатьСкачать

Откуда появляются дифференциальные уравнения и как их решать

14. Дифференциальные уравнения второго порядка, допускающие понижение порядкаСкачать

14. Дифференциальные уравнения второго порядка, допускающие понижение порядка

2. Дифференциальные уравнения с разделяющимися переменными. Часть 1.Скачать

2. Дифференциальные уравнения с разделяющимися переменными. Часть 1.

Java для начинающих. Урок 22: Ключевое слово final.Скачать

Java для начинающих. Урок 22: Ключевое слово final.

Дифференциальные уравнения, 1 урок, Дифференциальные уравнения. Основные понятияСкачать

Дифференциальные уравнения, 1 урок, Дифференциальные уравнения. Основные понятия

Однородное дифференциальное уравнениеСкачать

Однородное дифференциальное уравнение
Поделиться или сохранить к себе: