Численные методы решения дифференциального уравнения первого порядка
Поиск решения обыкновенного дифференциального уравнения модифицированным методом Эйлера-Коши (Хьюна) и системы обыкновенных уравнений методом Рунге-Кутта. Теоретическое описание используемых методов. Текст программы с соответствующими комментариями.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 02.12.2014 |
Размер файла | 389,7 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Министерство образования науки и культуры Украины
Одесский национальный политехнический университет
Курсовая робота
Дисциплина «Численные методы»
Тема «Численные методы решения дифференциального уравнения первого порядка»
Руководитель курсовой работы:
Гришина В.А.
Выполнила ст. гр. ВС-121
Мостовая С.
Одесса 2014
План
1. Постановка Задачи
2. Теоретическое описание используемых методов
3. Текст программы с соответствующими комментариями
Литература
1. Постановка Задачи
Постановка задачи: Найти решение обыкновенного дифференциального уравнения модифицированным методом Эйлера-Коши (Хьюна) и систему обыкновенных дифференциальных уравнений (указание: как частный случай - система может состоять из одного уравнения) методом Рунге-Кутта 4-ого порядка.
Задамча Кошим -- одна из основных задач теории дифференциальных уравнений (обыкновенных и с частными производными); состоит в нахождении решения (интеграла) дифференциального уравнения, удовлетворяющего так называемым начальным условиям (начальным данным). дифференциальный коши уравнение программа
Задача Коши обычно возникает при анализе процессов, определяемых дифференциальным законом эволюции и начальным состоянием (математическим выражением которых и являются уравнение и начальное условие). Этим мотивируется терминология и выбор обозначений: начальные данные задаются при t = 0, а решение отыскивается при t > 0.
От краевых задач задача Коши отличается тем, что область, в которой должно быть определено искомое решение, здесь заранее не указывается. Тем не менее, задачу Коши можно рассматривать как одну из краевых задач.
Основные вопросы, которые связаны с задачей Коши, таковы:
1. Существует ли (хотя бы локально) решение задачи Коши?
2. Если решение существует, то какова область его существования?
3. Является ли решение единственным?
4. Если решение единственно, то будет ли оно корректным, то есть непрерывным (в каком-либо смысле) относительно начальных данных?
Говорят, что задача Коши имеет единственное решение, если она имеет решение y = f(x) и никакое другое решение не отвечает интегральной кривой, которая в сколь угодно малой выколотой окрестности точки (x0,y0) имеет поле направлений, совпадающее с полем направлений y = f(x). Точка (x0,y0)задаёт начальные условия.
Различные постановки задачи Коши
· ОДУ первого порядка, разрешённое относительно производной
· Система n ОДУ первого порядка, разрешённая относительно старших производных
· ОДУ n-го порядка, разрешённое относительно старшей производной
Теоремы о разрешимости задачи Коши для ОДУ
Пусть в области рассматривается задача Коши:
y(x0) = y0,
где . Пусть правая часть является непрерывной функцией в . В этих предположениях имеет место теорема Пеано, устанавливающая локальную разрешимость задачи Коши: Пусть a>0 и b>0 таковы, что замкнутый прямоугольник
принадлежит области D, тогда на отрезке [x0 ? б,x0 + б], где б = min{a,b / M}, , существует решение задачи Коши.
Указанный отрезок называется отрезком Пеано. Заметим, что, локальный характер теоремы Пеано не зависит от гладкости правой части. Например, дляf(x,y) = y2 + 1 и для x0 = 0,y0 = 0 решение y(x) = tan(x) существует лишь на интервале ( ? р,р). Также отметим, что без дополнительных предположений относительно гладкости правой части, нельзя гарантировать единственность решения задачи Коши. Например, для возможно более одного решения.
Чтобы сформулировать теорему о единственности решения задачи Коши, необходимо наложить дополнительные ограничения на правую часть. Будем говорить, что функция f(x,y) удоволетворяет условию Липшица на D относительно y, если существует постоянная L такая, что
для всех , i=1,2.
Пусть правая часть f(x,y) дополнительно удовлетворяет условию Липшица на D относительно y, тогда задача Коши не может иметь в D более одного решения.
Также отметим, что хотя эта теорема имеет глобальный характер, тем не менее она не устанавливает существование глобального решения.
Для существования глобального решения необходимо наложить условия на рост правой части по y: пусть функция f удовлетворяет условию
где A>0 - константа не зависящая ни от x, ни от y, тогда задача Коши имеет решение в D. В частности, из этой теоремы следует, что задача Коши для линейных уравнений (с непрерывными по x коэффициентами) имеет глобальное решение.
Рассмотрим дифференциальное уравнение с начальным условием . Будем предполагать, что f(x,y) непрерывная и непрерывно дифференцируемая по функция в окрестности замкнутой области
,
содержащей внутри себя точку .
Требуется решить задачу Коши: найти непрерывно дифференцируемую функцию y=y(x), такую что при всех и .
Разобьем отрезок [a, b] с помощью точек разбиения с шагом . Тогда узлы разбиения имеют вид .
Пусть ? значения функции в точках разбиения…
2. Теоритическое описание методов к численному решению
1. Метод Рунге-Кутта второго порядка (или метод типа «предиктор-корректор»).
Метод состоит из двух этапов. Сначала находят по методу Эйлера грубое решение:
.
На следующем шаге это грубое решение сглаживается:
.
Выясним точность метода. Преобразуя , получаем:
С другой стороны, разложим точное решение y(x) по формуле Тейлора. Получим
Полагая , получаем погрешность на отдельном шаге равную . Тогда на всем отрезке погрешность составит
Достоинство метода: его точность превосходит точность метод Эйлера.
2. Метод Рунге-Кутта четвертого порядка.
На каждом шаге производится вычисление коэффициентов :
;
;
;
.
Затем вычисляем
.
Данный метод имеет точность на [a,b].
Рассмотрим пример, который мы использовали для иллюстрации точности метода Эйлера.
Пример. Требуется решить задачу Коши:
на отрезке [0, 1].
Выберем шаг . Результат вычислений поместим в таблицу.
0 |
1 |
2 |
3 |
4 |
5 |
||
|
0 |
0.2 |
0.4 |
0.6 |
0.8 |
1 |
|
|
1 |
0.8187 |
0.6703 |
0.5487 |
0.4493 |
0.3678 |
|
|
1 |
0.8187 |
0.6703 |
0.5488 |
0.4493 |
0.3679 |
Таким образом, метод Рунге-Кутта 4-го порядка отличается очень высокой точностью. К определенным его недостаткам относится большая сложность и трудоемкость (на каждом шаге необходимо четырежды вычислять значения функции f вместо одного раза в методе Эйлера).
Отметим, что на практике выбирают начальную длину шага h таким образом, чтобы , где е ? заданная точность вычисления решения. Затем шаг выбирают вдвое меньшим и останавливают вычисления, если разность полученных значений yk со значениями, полученными при начальном выборе шага меньше е. В противном случае шаг еще раз уменьшают вдвое и т.д.
3.Метод Эйлера
Пусть искомое решение задачи Коши. В точке (x0,y0) построим касательную (см. рис. 9.1) к графику .
Запишем уравнение касательной:
.
и найдем точку пересечения этой касательной с прямой :
.
Запишем уравнение прямой
и найдем точку ее пересечения с прямой с :
.
Продолжая процесс, получим рекуррентную последовательность:
(1)
,
которую называют последовательностью Эйлера. Соединяя ломаными все точки , полученные из рекуррентной последовательности Эйлера, получим ломаную линию, приближающую график решения . Функция, график которой совпадает с ломаной Эйлера, принимается за приближенное решение задачи Коши.
Выясним точность метода Эйлера. Сравним значения точного решения y(x) задачи Коши в узловых точках со значениями, полученными методом Эйлера:
,
.
Поскольку
,
то при условии, что . То есть, точность метода на отдельном отрезке совпадает с . Тогда, очевидно, точность метода Эйлера на всем отрезке [a, b] будет O(h).
Для повышения точности вычислений иногда используется модифицированный метод Эйлера, в котором рекуррентная последовательность Эйлера вычисляется по формулам
. (2)
Модифицированный метод Эйлера обычно дает более точное приближение решения.
Пример. Пусть требуется решить задачу Коши:
Полагая и используя метод Эйлера, получим, как легко убедиться, из формулы Эйлера (1)
.
С другой стороны, используя модифицированный метод Эйлера, получим в силу формулы (2) рекуррентную последовательность
.
Поскольку точным решением задачи Коши, как легко проверить, является функция , можно сравнить точность обоих методов.
0 |
1 |
2 |
3 |
4 |
5 |
||
|
0 |
0.2 |
0.4 |
0.6 |
0.8 |
1 |
|
|
1 |
0.8 |
0.64 |
0.572 |
0.4086 |
0.3277 |
|
|
1 |
0.82 |
0.6724 |
0.5514 |
0.4521 |
0.3708 |
|
|
1 |
0.8187 |
0.6703 |
0.5488 |
0.4493 |
0.3679 |
Общепризнанным недостатком метода Эйлера является его не достаточно высокая точность. Несомненным достоинством метода Эйлера является его простота.
4.Метод Хьюна :
Пусть требуется найти приближенное решение дифференциального уравнения
y' = f(x,y),
удовлетворяющее начальному условию
y(x0) = y0.
При решении задачи методом Эйлера-Коши, который иногда называют методом Хьюна, приближенное значение y1 решения y(x)
в точке x1 = x0+h,
вычисляется по формуле
y1=y0+ (f(x0,y0)+ f(x1,y0+hf(x0,y0)))h/2.
Приближенные значения yi решения уравнения y(x) в точках
xi = x0 +ih, i= 1, 2,..., n вычисляются по формулам
yi+1 = yi+ (f(xi,yi)+f(xi+1,yi+ hf(xi,yi)))h/2.
Метод Эйлера-Коши является одношаговым методом второго порядка. Метод Эйлера-Коши относится к классу методов прогноза и коррекции. Локальная погрешность метода на одном шаге равна O(h3).
3. Текст программы с соответствующими комментариями
public partial class Form1 : Form
{
private double x0;
private double y0;
public Form1()
{
InitializeComponent();
}
double rezf(double x)
{
//точное значение производной
}
private double F(double x, double y)
{
//уравнение
}
private void bMake_Click(object sender, EventArgs e)
{
x0 = Convert.ToDouble(tbX.Text);
y0 = Convert.ToDouble(tbY.Text);
int n = Convert.ToInt32(tbN.Text);
double rungeKutt4 = Runge_Kutt_4(n);
}
public double Runge_Kutt_4(int n)
{
double x, yi, y_prev = y0, k1, k2, k3, k4, error, max_error = 0;
double h = (double) 1/n;
tbLog.Text += "При n=" + n + ", шаг h= " + h + "\n";
for (int i = 0; i <= n; i++)
{
x = x0 + i*h;
if (i == 0)
{
yi = y0;
}
else
{
/*xi__ = x + h/2; k1 = h * F(x, y_prev);
*k2 = F(xi__, y_prev + (h * 0.5) * k1);
*k3 = F(x + h, y_prev - (h * k1) + (2 * h * k2));
*yi = y_prev + (h / 6) * (k1 + (4 * k2) + k3);*/
k1 = h*F(x, y_prev);
k2 = h*F(x + (h/2), y_prev + (k1/2));
k3 = h*F(x + (h/2), y_prev + (k2/2));
k4 = h*F(x + h, y_prev + k3);
yi = y_prev + ((k1 + (2*k2) + (2*k3) + k4)/6);
}
error = Math.Abs(yi - rezf(x));
listBox1.Items.Add(i + ":\tx= " + x + "; \t y(Р-К)= " + Convert.ToString(yi) + "; \t y(точ)= " + rezf(x) +
// "; \t погрешность= " + error + ";");
if (error > max_error) max_error = error;
y_prev = yi;
}
listBox1.Items.Add("максимальная ошибка = " + max_error);
return max_error;
}
public double Euler_Koshi(int n)
{
double x,
yi,// y[i]
yi__,// x[i-1/2]
y_prev = y0,// y[i-1]
error,max_error = 0;
double h = (double) 1/n;
listBox1.Items.Add("При n=" + n + ", шаг h= " + h);
for (int i = 0; i <= n; i++)
{
x = x0 + i*h;
if (i == 0)
{
yi = y0;
}
else
{
yi__ = y_prev + h/2*F(x, y_prev);
yi = y_prev + h*F(x - h/2, yi__);
}
error = Math.Abs(yi - rezf(x));
listBox1.Items.Add(i + ":\tx= " + x + "; \t y(Э-К)= " + Convert.ToString(yi) + "; \t y(точ)= " + rezf(x) +
// "; \t погрешность= " + error + ";");
//if (error > max_error) max_error = error;
y_prev = yi;
}
listBox1.Items.Add("максимальная ошибка = " + max_error);
return max_error;
}
}
Литература
1.Д.П. Костомаров, А.П Фаворский «Вводные лекции по численным методам» М., «Логос»,2006
2. Демидович Б.П., Марон И.А., Шувалова Э.З, М., «Наука»,1967
3.Wikipedia.org
4. Амосов А.А., Дубинский Ю.А., Копченова Н.В. Вычислительные методы для инженеров Учебное пособие. - М.: Высшая школа, 1994. - 544 с.
Размещено на Allbest.ru
...Подобные документы
Математическое описание задачи решения обыкновенного дифференциального уравнения численным явным методом Рунге-Кутта, разработка схемы алгоритма и написание программы в среде программирования Microsoft Visual Studio 2010. Тестирование работы программы.
курсовая работа [1,1 M], добавлен 22.01.2014Численный метод для решения однородного дифференциального уравнения первого порядка методом Эйлера. Решение систем дифференциальных уравнений методом Рунге–Кутта. Решение краевой задачи. Уравнения параболического типа, а также Лапласа и Пуассона.
курсовая работа [163,5 K], добавлен 27.05.2013Анализ предметной области объектно-ориентированного программирования. Языки Delphi, Object Pascal - объектно-ориентированная среда программирования. Основные алгоритмические решения. Решение дифференциального уравнения методом Рунге-Кутта в среде Excel.
курсовая работа [1,5 M], добавлен 02.04.2011Программа вычисления интеграла методом прямоугольников. Решение задачи Коши для дифференциальных уравнений. Модифицированный метод Эйлера. Методы решения краевой задачи для обыкновенного дифференциального уравнения. Задачи линейного программирования.
методичка [85,2 K], добавлен 18.12.2014Обыкновенное дифференциальное уравнение первого порядка. Задача Коши, суть метода Рунге-Кутта. Выбор среды разработки. Программная реализация метода Рунге-Кутта 4-го порядка. Определение порядка точности метода. Применение языка программирования C++.
курсовая работа [163,4 K], добавлен 16.05.2016Численные методы решения задачи Коши для обыкновенных дифференциальных уравнений: Эйлера, Рунге-Кутта, Адамса и Рунге. Техники приближенного решения данных уравнений: метод конечных разностей, разностной прогонки, коллокаций; анализ результатов.
курсовая работа [532,9 K], добавлен 14.01.2014Решение дифференциального уравнения N-го порядка методом интегрирования при помощи характеристического уравнения, методом интегрирования и операторным методом для значений аргументов при заданных начальных условиях и нулевых уравнения 4–го порядка.
практическая работа [806,9 K], добавлен 05.12.2009Численное решение задачи Коши для обыкновенного дифференциального уравнения первого и второго порядка методом Эйлера и Рунге-Кутты и краевой задачи для ОДУ второго порядка с применением пакета MathCad, электронной таблицы Excel и программы Visual Basic.
курсовая работа [476,2 K], добавлен 14.02.2016Решение задачи Коши для дифференциального уравнения методом Рунге-Кутта и Адамса с автоматическим выбором шага и заданным шагом. Интерполирование табличной функции. Численное решение системы линейных алгебраических уравнений методами простой итерации.
методичка [35,8 K], добавлен 15.03.2009Численные решения задач методом Коши, Эйлера, Эйлера (модифицированный метод), Рунге Кутта. Алгоритм, форма подпрограммы и листинг программы. Решение задачи в MathCad. Подпрограмма общего решения, поиск максимальных значений. Геометрический смысл задачи.
курсовая работа [691,4 K], добавлен 17.05.2011Рассмотрение двух методов нахождения приближенного корня дифференциального уравнения, применение их на практике. Графическая интерпретация метода Эйлера. Решение задачи усовершенствованным методом Эйлера. Программная реализация, блок-схемы и алгоритм.
курсовая работа [246,8 K], добавлен 17.06.2013Обзор методов решения в Excel. Рекурентные формулы метода Эйлера. Метод Рунге-Кутта четвертого порядка для решения уравнения первого порядка. Метод Эйлера с шагом h/2. Решение дифференциальных уравнений с помощью Mathcad. Модифицированный метод Эйлера.
курсовая работа [580,1 K], добавлен 18.01.2011Разработка прикладного программного обеспечения для решения расчетных задач для компьютера. Численное интегрирование - вычисление значения определённого интеграла. Проектирование алгоритма численного метода. Тестирование работоспособности программы.
курсовая работа [1,1 M], добавлен 03.08.2011Изучение численных методов решения нелинейных уравнений, используемых в прикладных задачах. Нахождение корня уравнения методом простой итерации и методом касательных (на примере уравнения). Отделение корней графически. Программная реализация, алгоритм.
курсовая работа [1,7 M], добавлен 15.06.2013Обзор существующих методов по решению нелинейных уравнений. Решение нелинейных уравнений комбинированным методом и методом хорд на конкретных примерах. Разработка программы для решения нелинейных уравнений, блок-схемы алгоритма и листинг программы.
курсовая работа [435,8 K], добавлен 15.06.2013Решение дифференциального уравнения с помощью численных методов (Рунге-Кутта и Эйлера модифицированного). Особенности построения графиков в программе Microsoft Visual Basic 10 с использованием ответа задачи, который имеет незначительную погрешность.
курсовая работа [1017,3 K], добавлен 27.05.2013Решение дифференциальных уравнений первого порядка. Варианты методов Рунге-Кутта различных порядков. Основные методы численного решения задачи Коши. Повышение точности вычислений и итерационный метод уточнения. Дискретная числовая последовательность.
лабораторная работа [33,3 K], добавлен 14.05.2012Особенности точных и итерационных методов решения нелинейных уравнений. Последовательность процесса нахождения корня уравнения. Разработка программы для проверки решения нелинейных функций с помощью метода дихотомии (половинного деления) и метода хорд.
курсовая работа [539,2 K], добавлен 15.06.2013Ручной расчет поставленной задачи методов Эйлера и Эйлера-Коши. Алгоритмы решения обоих методов, их программная реализация, решение тестовых примеров на заданную задачу. Расчеты заданного интеграла на языке программирования Turbo Pascal, их результаты.
курсовая работа [404,7 K], добавлен 15.06.2013Математическая модель, описание теории, применяемой к задаче. Обсчет точек методом Рунге-Кутта, модифицированным методом Эйлера, схема и листинг программы. Решение дифференциальных уравнений и построение графиков, решение уравнений в среде Turbo Pascal.
курсовая работа [76,7 K], добавлен 18.11.2009