Программно-прикладные системы

Содержание 
 

1 Практическая часть 3

1.1 Задание на выполнение курсовой работы по дисциплине «Программно-прикладные системы» 3

1.2 Текст программы с комментариями 4

    1.2.1. Текст основной программы 4

    1.2.2. Задание самой функции 5

1.3. Вывод результатов вычислений в графическом окне 6

2 Необходимые теоретические сведения 7

2.1. Задача Коши. Общие замечания. Постановка задачи. 7

2.2. Метод Эйлера. 9

2.3.Модифицированный метод Эйлера 11

2.4.Метод Рунге-Кутта 13

3. Вывод 16

 

1 Практическая  часть

1.1 Задание на выполнение  курсовой работы  по дисциплине  «Программно-прикладные  системы»

 

    1 Решить  систему дифференциальных уравнений  методом Рунге-Кутты(встроенная  функция MatLab ode23 (ode45))и методом Эйлера (запрограммировать).

    2 Результаты  представить графическим способом. Графическое окно разбить на  четыре. В первом вывести результат,  полученный методом Рунге-Кутты.  Во втором – методом Эйлера. В третьем – сравнение результатов. В четвертом – фазовый портрет (отношение х1 к х2).

    3 Дать  описание метода Эйлера

    4 Сделать  вывод по работе 

    Система дифференциальных уравнений:

                                 x1= x2

                                x2=-(a2+b cos x3) x1

                                x3 = 1 

 

1.2 Текст  программы с комментариями

1.2.1. Текст основной  программы

 

%-------------Ввод начальных значений и условий--------------------

clc; %очистка командного  окна

clear; %очистка  графического окна

t0=0;

tf=5;

x0=[1 0 0]; %ввод  начальных условий 

%-------------Метод  Рунге-Кутта-----------------------------------------

[t,X]=ode23('DiffUr',t0,tf,x0); %реализация встроенной функции

subplot(221); %определение  графика в 1 окне

plot(t,X); %вывод  графика

grid;  

%----------Метод  Эйлера-------------------------------------------------

n=length(X(:,1)); %находим  количество значений x

h=(tf-t0)/n %определение  шага

y0=x0'; %берем столбец  начальных условий транспонированием

for i=1:n %организуем  цикл для прибавления шага

    k1=feval('DiffUr',t0,y0); %нахождение решения в значениях  t0, y0

    k2=feval('DiffUr',t0+h/2,y0+k1*h/2)%нахождение решения в значениях с прибавлением шага

    y1(:,i)=y0+k2*h %заносим в y1

    y0=y1(:,i)

    t0=t0+h

end

y=y1';

%---------------Вывод  графика методом Эйлера во 2 окне--------------------

subplot(222);

plot(t,y),grid;

title('Метод Эйлера')

%-------Вывод графиков методом Эйлера и Рунге-кутты в 3 окне--------------

subplot(223);

plot(t,X)

plot(t,y),grid;

%-------Вывод фазового  портрета в 4 окне (отношение x1 k x2)--------------

subplot(224);

plot(X(:,1),X(:,2)),grid;

 

1.2.2. Задание  самой функции

 

function dx=DiffUr(t,x)

a=7

b=11

dx1=x(2);

dx2=-(a^2+b*cos(x(3)))*x(1);

dx3=1;

dx=[dx1; dx2; dx3] 

 

    

1.3. Вывод результатов  вычислений в графическом  окне

 

    

 

2 Необходимые  теоретические сведения

 

2.1. Задача Коши. Общие  замечания. Постановка  задачи.

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

                                                                                 (1)

задача  Коши заключается в отыскании  решения    уравнения (1), удовлетворяющего начальным условиям

                                           (2)

где   заданные числа.  Если функция ) непрерывна, а ее частные производные   ограничены в области, содержащей точку , то существует единственное решение задачи Коши (1), (2).

    Задача  Коши для нормальной системы дифференциальных уравнений 

                                           (3)

заключается в отыскании решения     системы (3), удовлетворяющего начальным условиям

                                               (4)

где - заданные числа. Если функции   

непрерывны  и имеют ограниченные частные производные    в некоторой области, содержащей точку , то существует единственное решение задачи Коши (3), (4).

    Известно, что систему дифференциальных уравнений, содержащую производные высших порядков и разрешенную относительно старших  производных искомых функций, можно привести к системе вида (3) путем введения новых неизвестных функций. В частности, дифференциальное уравнение  го порядка (1) приводится к системе вида (3) с помощью замены

    

,

которая приводит к следующей системе 

                                                                           (5)

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

    

,

а затем, как  правило,  без  труда  распространяют  на  нормальные системы дифференциальных уравнений вида (3). Так мы и поступим. 

      Итак, дано дифференциальное уравнение  первого порядка, разрешенное  относительно производной

                                                  ,                                                  (6)

и начальное  условие 

                                                      .                                                   (7)

Требуется численно решить задачу Коши (6), (7) на отрезке []. Это решение будет состоять в построении таблицы приближенных значений  искомого решения   в точках , где . Для этого отрезок [] делят на  равных частей длины , так что . Величина  называется шагом интегрирования.

     

 

2.2. Метод  Эйлера.

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

    

.

Иными словами, на этом участке интегрирования кривая   заменяется отрезком касательной к ней в точке .

    Для   получим 

    

.

        Аналогично для  получим  

    

.

    Продолжая строить дальнейшие значения приближенного  решения по тому же закону, получим 

    

 

    

.

    Используя известные обозначения, схему метода Эйлера можно представить формулами:        

     

                      .                      (8)

     

    Геометрический  смысл метода Эйлера заключается  в том, что искомая интегральная кривая   заменяется ломаной, соединяющей точки    (рис.1). Причем первое звено ломаной касается истинной интегральной    кривой    в    точке . Эта ломаная  называется ломаной Эйлера. При  последовательность ломаных  Эйлера  на  отрезке [x0,]мится к искомй интегральной кривой. 

    Оценку  точности метода Эйлера, если неизвестно точное решение , проводят с помощью двойного пересчета - с шагом и с шагом . Совпадение десятичных знаков в полученных двумя способами результатах дает основание считать их верными.

    Метод Эйлера легко распространяется на системы  дифференциальных уравнений (3) и на дифференциальные уравнения высших порядков (1), которые должны быть предварительно приведены к нормальной системе (переход от (1) к (5)).

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

                                                                                                (9)

с начальными условиями  . Приближенные значения   вычисляются последовательно по формулам:

                                (10)

       

     

 

2.3.Модифицированный  метод Эйлера

    является более точным методом по сравнению с предыдущим. Модификация метода направлена на то, чтобы более точно определить направление перехода из точки () в точку (). Для чего производятся дополнительные промежуточные вычисления, в результате которых определяются координаты промежуточной точки  

                                              

                                                             (11)

    

 

с помощью  которых и определяется следующее  приближенное значение  искомого решения  по формуле 

                             .                   (12)

Геометрический  смысл модифицированного метода Эйлера показан на рисунке 2. Исходя из точки , получаем по методу Эйлера для     точку . Для   метод Эйлера дал бы точку , находящуюся на касательной к   интегральной   кривой   в  точке . Модифицированный   метод состоит в том, что из точки  проводится отрезок , параллельный отрезку , направленному в соответствии со значением углового коэффициента в точке . Точка , которая получена по модифицированному методу Эйлера, находится ближе к истинной кривой, чем точка  . Следовательно, модифицированный метод Эйлера будет обеспечивать большую точность, чем метод Эйлера при одном и том же числе разбиения отрезка интегрирования.

    Модифицированный  метод Эйлера можно легко распространить на нормальную систему дифференциальных уравнений (3). Рассмотрим систему двух уравнений первого порядка:

     

    

 

с начальными условиями  . Приближенные значения     вычисляются последовательно по формулам:

                                                                       (13)

     

    где                       

                       

                                ,

    

 

     

 

2.4.Метод  Рунге-Кутта

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

    Согласно  метода Рунге-Кутта, приближенные значения   искомого решения    определяются по формулам:

                                                                        (14)

                                                        (15)

                                                                (16)

Значение  приближенного решения дифференциального уравнения (6) определяется в усредненном по формуле (15) направлении, составляющими которого  являются четыре направления, определяемые углами , для которых ,                        ( ),

        ( ),   ,

что значительно  повышает точность метода Рунге-Кутта. 

     Для сравнения: в методе Эйлера вычисляется в направлении, определяемом углом , для которого   (рис.1); в модифицированном методе Эйлера  вычисляется в уже подправленном с помощью средней точки текущего отрезка [] направлении, определяемом углом , для которого    (рис.2).

    Метод Рунге-Кутта имеет порядок точности   на всем отрезке []. Эффективная оценка погрешности метода очень затруднительна. Грубую оценку погрешности можно получить с помощью двойного просчета по формуле

    

  ,

где  - значение точного решения уравнения (1) в точке  , а   - приближенные значения, полученные с шагом   и .

    Для определения правильности выбора шага  на практике применяют двойной просчет  с шагом  и шагом . Если расхождение полученных значений не превышает допустимой погрешности, то шаг  для следующей точки удваивается, в противном случае берут половинный шаг.

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

    Распространим метод Рунге-Кутта на нормальную систему дифференциальных уравнений (3). Рассмотрим систему двух дифференциальных уравнений первого порядка:

    

 

с начальными условиями  . Приближенные значения  вычисляются последовательно по формулам:

                                                               (17)

     

где                              

                                 ),

     

                               

                              ,

                              

                              ,

                                

                                 ,

                               

                                  

     

     

 

 

3. Вывод

 

     Уравнение называется обыкновенным дифференциальным n-го порядка, если F определена и непрерывна в некоторой области и, во всяком случае, зависит от х Его решением является любая функция u(x), которая этому уравнению удовлетворяет при всех x в определённом конечном или бесконечном интервале. Дифференциальное уравнение, разрешенное относительно старшей производной имеет вид

     Решением  этого уравнения на интервале I=[a,b] называется функция u(x)  

     Решить  дифференциальное уравнение у/=f(x,y) численным методом – это значит для заданной последовательности аргументов х0, х1…, хn и числа у0, не определяя  функцию у=F(x), найти такие значения у1, у2,…, уn, что уi=F(xi)(i=1,2,…,    n)    и F(x0)=y0.

     Таким образом, численные методы позволяют  вместо нахождения функции y=F(x) (3) получить таблицу значений этой функции для  заданной последовательности аргументов. Величина h=xk-xk-1 называется шагом интегрирования.

     Метод Эйлера относиться к численным методам, дающим решение в виде таблицы  приближенных значений искомой функции  у(х). Он является сравнительно грубым и применяется в основном для  ориентировочных расчетов.

     Однако  идеи, положенные в основу метода Эйлера, являются исходными для ряда других методов.

     Метод Эйлера для обыкновенных дифференциальных уравнений используется для решений  многих задач естествознания в качестве математической модели. Например задачи электродинамики системы взаимодействующих  тел (в модели материальных точек), задачи химической кинетики, электрических цепей. Ряд важных уравнений в частных производных в случаях, допускающих разделение переменных, приводит к задачам для обыкновенных дифференциальных уравнений – это, как правило, краевые задачи (задачи о собственных колебаниях упругих балок и пластин, определение спектра собственных значений энергии частицы в сферически-симметричных полях и многое другое).

Программно-прикладные системы