Дано дифференциальное уравнение 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
Variant 19 (Sukach Maxim, BS17-03)
Найдем
В итоге, наше решение принимает вид:
Метод Эйлера дает возможность приближенно выразить функцию теоретически с любой наперед заданной точностью. Суть метода Эйлера в пошаговом вычислении значений решения y=y(x) дифференциального уравнения вида y’=f(x,y) с начальным условием (x0;y0). Метод Эйлера является методом 1-го порядка точности и называется методом ломаных.
Для вычисления используются следующие формулы:
Метод Эйлера и точное решение при x0 = 0, xf = 9, y0 = 1, h = 0.1
Метод Эйлера и точное решение при x0 = 0, xf = 3, y0 = 1, h = 0.1
Метод Эйлера и точное решение при x0 = 0, xf = 1, y0 = 1, h = 0.1
Усовершенствованный метод Эйлера
Суть усовершенствованного метода Эйлера в пошаговом вычислении значений решения y=y(x) дифференциального уравнения вида y’=f(x,y) с начальным условием (x0;y0). Усовершенствованный метод Эйлера является методом 2-го порядка точности и называется модифицированным методом Эйлера.
Разница между данным методом и методом Эйлера минимальна и заключается в использовании следующих формул:
Усовершенствованный Метод Эйлера и точное решение при
x0 = 0, xf = 9, y0 = 1, h = 0.1
Усовершенствованный Метод Эйлера и точное решение при
x0 = 0, xf = 3, y0 = 1, h = 0.1
Усовершенствованный Метод Эйлера и точное решение при
x0 = 0, xf = 1, y0 = 1, h = 0.1
Классический метод Рунге-Кутты
Суть метода Рунге-Кутты в пошаговом вычислении значений решения y=y(x) дифференциального уравнения вида y’=f(x,y) с начальным условием (x0;y0). Классический метод Рунге-Кутты является методом 4-го порядка точности и называется методом Рунге-Кутты 4-го порядка точности.
Ну и как обычно, формулы:
Классический метод Рунге-Кутты и точное решение при x0 = 0, xf = 9, y0 = 1, h = 0.1
Классический метод Рунге-Кутты и точное решение при x0 = 0, xf = 3, y0 = 1, h = 0.1
Классический метод Рунге-Кутты и точное решение при x0 = 0, xf = 1, y0 = 1, h = 0.1
Сравнение методов для заданной задачи
Размер ошибки всех методов на промежутке [0, 9] с шагом 0.1
Размер ошибки всех методов на промежутке [0, 3] с шагом 0.1
Размер ошибки всех методов на промежутке [0, 1] с шагом 0.1
Очевидно что, классический метод Рунге-Кутты справляется с задачей аппроксимации в случае данного уравнения намного лучше чем Метод Эйлера и Усовершенствованный метод Эйлера.
График глобальной средней ошибки
Глобальная ошибка в зависимости от размера шага 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 урок, Дифференциальные уравнения с разделяющимися переменнымиСкачать
13. Как решить дифференциальное уравнение первого порядка?Скачать
Линейное неоднородное дифференциальное уравнение второго порядка с постоянными коэффициентамиСкачать
Частное решение дифференциального уравнения. 11 класс.Скачать
7. Линейные дифференциальные уравнения первого порядка. Метод Бернулли.Скачать
Java для начинающих. Урок 25: НаследованиеСкачать
Линейное неоднородное дифференциальное уравнение с постоянными коэффициентами 4y''-y=x^3-24x #1Скачать
Решение дифференциальных уравнений. Практическая часть. 11 класс.Скачать
Откуда появляются дифференциальные уравнения и как их решатьСкачать
14. Дифференциальные уравнения второго порядка, допускающие понижение порядкаСкачать
2. Дифференциальные уравнения с разделяющимися переменными. Часть 1.Скачать
Java для начинающих. Урок 22: Ключевое слово final.Скачать
Дифференциальные уравнения, 1 урок, Дифференциальные уравнения. Основные понятияСкачать
Однородное дифференциальное уравнениеСкачать