Дано дифференциальное уравнение 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
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? Я не думаю, что знаю какой-либо полезный способ сделать это, поэтому моя реализация производит мусор.
Я был бы очень признателен за любую помощь, большое спасибо заранее!
Видео:Java - урок 5.4 (Практика - решаем квадратное уравнение)Скачать
1 ответов
дифференциальные уравнения временных рядов можно смоделировать численно, взяв DT = небольшое число и используя одно из нескольких методы численного интегрирования например метод Эйлера или Рунге-Кутта. Метод Эйлера может быть примитивным, но он хорошо работает для некоторых уравнений, и он достаточно прост, чтобы вы могли попробовать. например:
I'(t) = l(t) * S(t) — g(t) * I (t)
трудная часть выясняет, сколько шагов использовать. Вы должны прочитать одну из статей, на которую я ссылался. Более сложные решатели дифференциальных уравнений используют переменные размеры шага, которые адаптируются к точности / стабильности для каждого шага.
Я бы рекомендовал использовать численное программное обеспечение, такое как R или Mathematica или MATLAB или Octave, поскольку они включают в себя решатели ODE, и вам не нужно будет идти на все проблемы самостоятельно. Но если вам нужно сделать это как часть большего приложения Java, по крайней мере, попробовать его сначала с математическим программным обеспечением, а затем понять, какие размеры шагов и какие решатели работают.
🎬 Видео
Линейное неоднородное дифференциальное уравнение второго порядка с постоянными коэффициентамиСкачать
7. Линейные дифференциальные уравнения первого порядка. Метод Бернулли.Скачать
Дифференциальные уравнения, 2 урок, Дифференциальные уравнения с разделяющимися переменнымиСкачать
13. Как решить дифференциальное уравнение первого порядка?Скачать
Частное решение дифференциального уравнения. 11 класс.Скачать
14. Дифференциальные уравнения второго порядка, допускающие понижение порядкаСкачать
Решение дифференциальных уравнений. Практическая часть. 11 класс.Скачать
Откуда появляются дифференциальные уравнения и как их решатьСкачать
Линейное неоднородное дифференциальное уравнение с постоянными коэффициентами 4y''-y=x^3-24x #1Скачать
Java для начинающих. Урок 25: НаследованиеСкачать
2. Дифференциальные уравнения с разделяющимися переменными. Часть 1.Скачать
Дифференциальные уравнения, 1 урок, Дифференциальные уравнения. Основные понятияСкачать
Java для начинающих. Урок 22: Ключевое слово final.Скачать
Однородное дифференциальное уравнениеСкачать