Задача Коши для обыкновенных дифференциальных уравнений. Метод Рунге-Кутты. Краевая задача для обыкновенных дифференциальных уравнений. Решение путем сведения к задаче Коши
Решение дифференциального уравнения первого порядка методом Рунге-Кутты. Численные методы решения задачи Коши. Практическая оценка погрешности. Однотипные дифференциальные уравнения системы. Коэффициенты при постоянной. Применение правила Рунге.
Рубрика | Математика |
Вид | лабораторная работа |
Язык | русский |
Дата добавления | 16.06.2014 |
Размер файла | 125,4 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Санкт-Петербургский государственный политехнический университет ИПММ
Кафедра Телематики
Лабораторная работа
Задача Коши для обыкновенных дифференциальных уравнений. Метод Рунге-Кутты. Краевая задача для обыкновенных дифференциальных уравнений. Решение путем сведения к задаче Коши
Работу выполнил:
Подорова А.Я.
группа 23607/1
Работу проверил:
Кадырова Н.О.
Цель работы
Решить дифференицальное уравнение первого порядка методом Рунге-Кутты
Данное уравнение:
Результатом решения данного уравнения получено следующее точное значение: .
Решить краевую задачу для дифференциального уравнения второго порядка путем сведения краевой задачи к задаче Коши
Данное уравнение:
Результатом решения данного уравнения получено следующее точное значение:
Метод Эйлера-Коши (Рунге-Кутты второго порядка) для ДУ первого порядка.
Численные методы решения задачи Коши
,
на равномерной сетке отрезка с шагом являются методами Рунге-Кутта, если, начиная с данных решение ведётся по следующим рекуррентным формулам:
(8.6)
Метод называют методом Рунге-Кутта порядка если он имеет -й порядок точности по шагу на сетке. Порядок точности достигается с помощью формул (8.6) при определённых значениях коэффициентов и коэффициент всегда полагают равным нулю. Эти коэффициенты вычисляют по следующей схеме:
1) точное решение и его приближение представляют в виде разложения по формуле Тейлора с центром вплоть до слагаемого порядка
2) из равенств подобных членов при одинаковых степенях в двух разложениях получают уравнения, решая которые находят коэффициенты и .
Метод Рунге-Кутта второго порядка называют методом Эйлера-Коши, если Алгоритм метода Эйлера-Коши следует из формул (8.6):
(8.7)
Для практической оценки погрешности решения можно применять правило Рунге, полагая в формуле (8.5)
Решение краевой задачи для ДУ второго порядка.
Дано линейное дифференциальное уравнение второго порядка:
(1.1)
с краевыми условиями:
(1.2)
где функции P(x), Q(x), F(x) непрерывны, и - заданные постоянные, причем: и .
Требуется найти решение y(x), удовлетворяющее краевым условиям (1.2).
Описание метода
Решение дифференциального уравнения (1.1) с краевыми условиями (1.2) будем искать в виде линейной комбинации:
(2.1)
где c=const
Подставим y(x) в виде (2.1) в исходное дифференциальное уравнение (1.1) и получим выражение:
(2.2)
Необходимо, чтобы коэффициенты при постоянной с обращались в ноль, получим систему уравнений:
(2.3)
Из (2.3) видно, что функция u=u(x) - ненулевое решение соответствующего однородного уравнения, а v=v(x) - некоторое решение данного неоднородного уравнения (1.1).
Чтобы свести краевую задачу к задачам Коши для функций u=u(x) и v=v(x), подставим в первое краевое условие (1.2) выражение для функции y(x) и получим:
(2.4)
Для того чтобы равенство (2.4) было справедливо при любом с, необходимо и достаточно, чтобы коэффициенты при постоянной с обращались в ноль, т. е. должны быть выполнены равенства:
(2.5)
Получили систему (2.5) из двух уравнений с четырьмя неизвестными. Решений системы будет бесконечное множество. Найдем хотя бы одно.
Для обеспечения первого равенства системы, например, можно подобрать:
(2.6),
где постоянная k - отлична от нуля, так как тривиальное решение u(a)=0 можно отбросить.
Для выполнения второго равенства системы (2.5) можно положить
(2.7)
Подберем теперь постоянную c так, чтобы функция y(x) удовлетворяла краевому условию (1.2) на конце x=b. Это дает:
откуда:
,
при этом предполагается, что знаменатель
Для решения полученных уравнений из системы (2.3) будем использовать метод Рунге-Кутта, который имеет достаточно высокую точность на всем интервале порядка
Рассмотрим второе дифференциальное уравнение из системы (2.3) с начальным условием (2.7). Дифференциальные уравнения системы (2.3) являются однотипными, поэтому решение первого уравнения системы (2.3) с начальным условием (2.6) осуществляется аналогичным способом, при условии .
Для того чтобы решить указанное дифференциальное уравнение методом Рунге-Кутта, сделаем замену:
и подставим ее во второе дифференциальное уравнение из системы (2.3), получим:
,
Расчет производим следующим образом: выберем шаг h, приращение x в зависимости от шага будет:
где n=0,1…k-1
Соответствующие значения и искомых функций v и z определяются формулами:
Метод Рунге-Кутты для ДУ первого порядка
Результат работы программы для заданных 10 разбиений.
x |
RK2 |
ansDY |
eps |
|
2 |
4 |
4 |
0 |
|
2,4 |
5,7611 |
5,76 |
0,0011 |
|
2,8 |
7,8387 |
7,84 |
0,0013 |
|
3,2 |
10,2342 |
10,24 |
0,0058 |
|
3,6 |
12,9484 |
12,96 |
0,0116 |
|
4 |
15,9816 |
16 |
0,0184 |
|
4,4 |
19,3338 |
19,36 |
0,0262 |
|
4,8 |
23,0053 |
23,04 |
0,0347 |
|
5,2 |
26,996 |
27,04 |
0,044 |
|
5,6 |
31,3061 |
31,36 |
0,0539 |
|
6 |
35,9354 |
36 |
0,0646 |
Получены следующие результаты:
В первом столбце приведено разбиение отрезка [2;6] с шагом h=(b-a)/n , что для n=10 есть 0.4;
Во стором столбце значение функции, вычисленное по методу Эйлера-Коши.
В третьем столбце приведено точное значение, соответствующее формуле y=x2, что является решением дифференциального уравнения.
В четвертом столбце приведена погрешность проведенных вычисленний.(eps=|yi-y(x)|).
Опытным путем было установлено, что при увеличении числа разбиений n погрешность метода Эйлера-Коши минимизируется.
Можно подтвердить, привидя пример для n=20, и проанализировать:
x |
RK2 |
ansDY |
eps |
|
2 |
4 |
4 |
0 |
|
2,2 |
4.840495867768595 |
4.840 |
4.958677685946711e-004 |
|
2,4 |
5.760626930461642 |
5.760 |
6.269304616406402e-004 |
|
2,6 |
6.760508252367625 |
6.760 |
5.082523676227524e-004 |
|
2,8 |
7.840207546326258 |
7.840 |
2.075463262540822e-004 |
|
3 |
8.999767031613843 |
9.00 |
2.329683861628240e-004 |
|
3,2 |
10.239214312181240 |
10.240 |
7.856878187677552e-004 |
|
3,4 |
11.558568164571458 |
11.560 |
0.001431835428550 |
|
3,6 |
12.957841794432600 |
12.960 |
0.002158205567410 |
|
3,8 |
14.437044757653958 |
14.44 |
0.002955242346054 |
|
4 |
15.996184140722654 |
16.00 |
0.003815859277360 |
|
4,2 |
17.635265311934894 |
17.64 |
0.004734688065120 |
|
4,4 |
19.354292414432642 |
19.36 |
0.005707585567375 |
|
4,6 |
21.153268698687814 |
21.16 |
0.006731301312207 |
|
4,8 |
23.032196752172062 |
23.040 |
0.007803247827962 |
|
5 |
24.991078661444632 |
25.00 |
0.008921338555396 |
|
5,2 |
27.029916128766249 |
27.040 |
0.010083871233782 |
|
5,4 |
29.148710557463726 |
29.16 |
0.011289442536306 |
|
5,6 |
31.347463115407390 |
31.36 |
0.012536884592645 |
|
5,8 |
33.626174782891027 |
33.64 |
0.013825217109009 |
|
6 |
35.984846389219804 |
36.00 |
0.015153610780239 |
Сравнивая привиденные таблицы, делаем вывод, что при увеличении n погрешность метода уменьшается.
Решение краевой задачи для ДУ второго порядка
Результат работы программы для 10 и 20 разбиений:
В первом столбце нумерация узла.
Во втором столбце приведено разбиение отрезка [0; pi/2] с шагом h = 0.16, в случае 10 разбиений и с шагом h = 0.08 в случае 20 разбиений.
В третьем столбце значение функции y(xn), полученное запрограммированным методом.
В четвертом столбце значение функции sin(xn), которое является решением данного ДУ.
В последнем столбце значения найденных абсолютных погрешностей.
Аналогично методу Эйлера-Коши, при увеличении числа разбиений n, погрешность уменьшается.
Вывод:
При проведении данной работы подтвердилось, что точность решения и в случае решения краевой задачи для ДУ второго порядка, и при применении метода Рунге-Кутты для ДУ первого порядка зависит от количества разбиений. Чем больше количество разбиений, тем точность выше.
Код программ
Решения краевой задачи для ДУ второго порядка
#include "iostream"
#include "math.h"
#include <locale.h>
#include <conio.h>
using namespace std;
const int Nmax = 100;
# define M_PI_2 1.57079632679489661923 /* pi/2 */
const double a = 0, b = M_PI_2, A = 0, B = 1, epsel = 0.00001;
double F(double x){ return sin(x);}
double Q(double x){ return (3.);}
double P(double x){ return -tan(x);}
void RK4(double h, int n, double U[], double V[], double z[], double t[], double a)
{
double k1z, k2z, k3z, k4z,
k1v, k2v, k3v, k4v,
k1t, k2t, k3t, k4t,
k1u, k2u, k3u, k4u;
double x = a;
z[0] = 0;
V[0] = A;
t[0] = 1;
U[0] = 0;
for (int i = 0; i <= n; i++)
{
x = a + i*h;
k1v = z[i];
k1z = F(x) - P(x)*z[i] - Q(x)*V[i];
k2v = z[i] + h/2 * k1z;
k2z = F(x + h/2) - P(x + h/2)*(z[i] + h/2 * k1z) - Q(x + h/2)*(V[i] + h/ 2 * k1v);
k3v = z[i] + h / 2 * k2z;
k3z = F(x + h / 2) - P(x + h / 2)*(z[i] + h / 2 * k2z) - Q(x + h / 2)*(V[i] + h / 2 * k2v);
k4v = z[i] + h*k3z;
k4z = F(x + h) - P(x + h)*(z[i] + h*k3z) - Q(x + h)*(V[i] + h*k3v);
k1u = t[i];
k1t = -P(x)*t[i] - Q(x)*U[i];
k2u = t[i] + h / 2 * k1t;
k2t = -P(x + h / 2)*(t[i] + h / 2 * k1t) - Q(x + h / 2)*(U[i] + h / 2 * k1u);
k3u = t[i] + h / 2 * k2t;
k3t = -P(x + h / 2)*(t[i] + h / 2 * k2t) - Q(x + h / 2)*(U[i] + h / 2 * k2u);
k4u = t[i] + h*k3t;
k4t = -P(x + h)*(t[i] + h*k3t) - Q(x + h)*(U[i] + h*k3u);
V[i + 1] = V[i] + h / 6 * (k1v + 2 * k2v + 2 * k3v + k4v);
z[i + 1] = z[i] + h / 6 * (k1z + 2 * k2z + 2 * k3z + k4z);
U[i + 1] = U[i] + h / 6 * (k1u + 2 * k2u + 2 * k3u + k4u);
t[i + 1] = t[i] + h / 6 * (k1t + 2 * k2t + 2 * k3t + k4t);
}
}
int main()
{
while (true)
{
setlocale(LC_ALL, "Rus");
int i = 0, j = 0, n = 0, N;
cout << "\nВведите количество разбиений N: ";
cin>>N;
double U[Nmax], V[Nmax], z[Nmax], y[Nmax], yt[Nmax], yv[Nmax];
double h = 0, x = 0, delta = 0, t[Nmax], eps[Nmax], C = 0;
n = N;
do
{
if (n >= Nmax)
{
cout <<"Выход за пределы массива";
return 0;
}
h = (b-a)/n;
RK4(h, n, U, V, z, t, a);
C = (B-V[n])/U[n];
//Нахождение у
for (i = 0; i <= n; i++)
y[i] = C*U[i] + V[i];
//Проверка точности
delta = 0;
for (i = 0; i <= n / 2; i++)
{
eps[i] = fabs(y[2 * i] - yt[i]);
if (eps[i]>delta)
delta = eps[i];
}
for (i = 0; i <= n; i++)
{
yv[i] = yt[i];
yt[i] = y[i];
}
n = 2 * n;
}
while (delta>epsel);
j = 0;
x = a;
n=n/4;
int k = n / N;
h = (b - a)/ n;
printf("\tx\ty\t\tsin(x)\t\tAbsEps\n");
for (i = 0; i <= n; i += k)
{
printf("%d\t%1.2f\t%f\t%f\t%1.2e\n", j++, x, yv[i], F(x), eps[i]);
x = x + k*h;
}
cout <<"Для выхода нажмите клавишу 'Esc', для продолжения любую другую клавишу\n";
char yes=_getch();
if(yes==27) return 0;
Метод Рунге-Кутты для ДУ первого порядка
function f1=df(x,y)
f1=5 + (2*x - 5)/x^2*y;
end
function ft=dft(x)
ft=x^2;
end
a=2; b=6; yo=4; n=20;
fu=@df;
fut=@dft;
h=(b-a)/n;
x=a; y=yo;
emax=0; %макс. отклонение
for i=1:n
z=y+h*fu(x,y);
y=y+0.5*h*(fu(x,y)+fu(x+h,z))
x=x+h
eps=abs(y-fut(x))
fut(x)
if eps>emax
emax=eps;
end
дифференциальный уравнение рунге коши
Размещено на Allbest.ru
...Подобные документы
Задачи Коши и методы их решения. Общие понятия, сходимость явных способов типа Рунге-Кутты, практическая оценка погрешности приближенного решения. Автоматический выбор шага интегрирования, анализ брюсселятора и метод Зонневельда для его расчета.
курсовая работа [1,7 M], добавлен 03.11.2011Решение задачи Коши для дифференциального уравнения. Погрешность приближенных решений. Функция, реализующая явный метод Эйлера. Вычисление погрешности по правилу Рунге. Решение дифференциальных уравнений второго порядка. Условие устойчивости для матрицы.
контрольная работа [177,1 K], добавлен 13.06.2012Теоретическое обоснование расчетных формул. Задача Коши для дифференциального уравнения первого порядка. Метод Рунге-Кутта. Ломаная Эйлера. Построение схем различного порядка точности. Выбор шага. Апостериорная оценка погрешности. Правило Рунге.
курсовая работа [111,1 K], добавлен 13.11.2011Практическое решение дифференциальных уравнений в системе MathCAD методами Рунге—Кутты четвертого порядка для решения уравнения первого порядка, Булирша — Штера - системы обыкновенных дифференциальных уравнений первого порядка и Odesolve и их графики.
лабораторная работа [380,9 K], добавлен 23.07.2012Изучение методов Рунге-Кутты четвертого порядка с автоматическим выбором длины шага интегрирования для решения дифференциальных уравнений. Оценка погрешности и сходимость методов, оптимальный выбор шага. Листинг программы для ЭВМ, результаты, иллюстрации.
курсовая работа [2,9 M], добавлен 14.09.2010Описание метода сведения краевой задачи к задаче Коши. Решение системы из двух уравнений с четырьмя неизвестными. Метод Рунге-Кутта. Расчет максимальной погрешности и выполнение проверки точности. Метод конечных разностей. Описание полученных результатов.
курсовая работа [245,2 K], добавлен 10.07.2012Численное решение уравнения методом Эйлера и Рунге-Кутта в Excel. Программа на языке Turbo Pascal. Блок-схема алгоритма. Метод Рунге-Кутта для дифференциального уравнения второго порядка. Модель типа "хищник-жертва" с учетом внутривидового взаимодействия.
курсовая работа [391,5 K], добавлен 01.03.2012Дифференциальное уравнение первого порядка, разрешенное относительно производной. Применение рекуррентного соотношения. Техника применения метода Эйлера для численного решения уравнения первого порядка. Численные методы, пригодные для решения задачи Коши.
реферат [183,1 K], добавлен 24.08.2015Понятие о голоморфном решении задачи Коши. Теорема Коши о существовании и единственности голоморфного решения задачи Коши. Решение задачи Коши для линейного уравнения второго порядка при помощи степенных рядов. Интегрирование дифференциальных уравнений.
курсовая работа [810,5 K], добавлен 24.11.2013Сущность методов сведения краевой задачи к задаче Коши и алгоритмы их реализации на ПЭВМ. Применение метода стрельбы (пристрелки) для линейной краевой задачи, определение погрешности вычислений. Решение уравнения сшивания для нелинейной краевой задачи.
методичка [335,0 K], добавлен 02.03.2010Анализ методов решения систем дифференциальных уравнений, которыми можно описать поведение материальных точек в силовом поле, законы химической кинетики, уравнения электрических цепей. Этапы решения задачи Коши для системы дифференциальных уравнений.
курсовая работа [791,0 K], добавлен 12.06.2010Задачи, приводящие к дифференциальным уравнениям. Теорема существования, единственности решения задачи Коши. Общее решение дифференциального уравнения, изображаемое семейством интегральных кривых на плоскости. Способ нахождения огибающей семейства кривых.
реферат [165,4 K], добавлен 24.08.2015Понятие, закономерности формирования и решения дифференциальных уравнений. Теорема о существовании и единственности решения задачи Коши. Существующие подходы и методы решения данной задачи, оценка погрешности полученных значений. Листинг программы.
курсовая работа [120,8 K], добавлен 27.01.2014Получение точного решения дифференциального уравнения вручную, операторным методом, приближенное решение с помощью рядов (до 5 элемента ряда) на заданном интервале, графическое решение. Относительная и абсолютная погрешность методов Эйлера и Рунге-Кутты.
курсовая работа [990,8 K], добавлен 17.07.2014Задачи Коши для дифференциальных уравнений. График решения дифференциального уравнения I порядка. Уравнения с разделяющимися переменными и приводящиеся к однородному. Однородные и неоднородные линейные уравнения первого порядка. Уравнение Бернулли.
лекция [520,6 K], добавлен 18.08.2012Составление диагональной системы способом прогонки, нахождение решения задачи Коши для дифференциального уравнения на сетке методом Эйлера и классическим методом Рунге-Кутта. Построение кубического сплайна интерполирующей функции равномерного разбиения.
практическая работа [46,1 K], добавлен 06.06.2011Основные методы Рунге-Кутта: построение класса расчетных формул. Расчетная формула метода Эйлера. Получение различных методов Рунге-Кутта с погрешностью второго порядка малости при произвольном задавании параметров. Особенности повышения порядка точности.
реферат [78,4 K], добавлен 18.04.2015Порядок и процедура поиска решения дифференциального уравнения. Теорема существования и единственности решения задачи Коши. Задачи, приводящие к дифференциальным уравнениям. Дифференциальные уравнения первого порядка, с разделяющими переменными.
лекция [744,1 K], добавлен 24.11.2010Общая постановка задачи решения обыкновенных дифференциальных уравнений, особенности использования метода Адамса в данном процессе. Решение системы обыкновенных дифференциальных уравнений методом Адамса и точным методом, сравнение полученных результатов.
курсовая работа [673,6 K], добавлен 27.04.2011Методы оценки погрешности интерполирования. Интерполирование алгебраическими многочленами. Построение алгебраических многочленов наилучшего среднеквадратичного приближения. Численные методы решения задачи Коши для обыкновенных дифференциальных уравнений.
лабораторная работа [265,6 K], добавлен 14.08.2010