Численные решения обыкновенных дифференциальных уравнений

Автор работы: Пользователь скрыл имя, 19 Февраля 2012 в 10:43, контрольная работа

Описание

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

Работа состоит из  1 файл

Численные решения оду.doc

— 337.00 Кб (Скачать документ)

 Тогда расчетную формулу Эйлера можно рассматривать как разложение в ряд Тейлора, учитывающее два члена.

      Если  учесть четыре члена ряда, то получим  формулу Рунге-Кутта:

      yi=yi-1+1/6 . (K1(i-1)+2 . K2(i-1)+2 . K3(i-1)+K4(i-1)),

где Kj(i-1) определяется из формул :    

      K1(i-1)=h . f(xi-1;yi-1);

     K2(i-1)=h . f(xi-1+h/2;yi-1+K1(i-1)/2);

     K3(i-1)=h . f(xi-1+h/2;yi-1+K2(i-1)/2) ;

      K4(i-1)=h . f(xi-1+h;yi-1+K3(i-1)).

      Для решения обыкновенного дифференциального  уравнения n-го порядка необходимо сначала свести это уравнение к системе уравнений 1-го порядка. Начальными условиями такой системы будут : 

      y(x0)=y0;

     y1(x0)=y10;

    y2(x0)=y20;

     . . . . . . . .

     yn-1(x0)=y0n-1. 

      Решение находится с помощью простого обобщения метода Рунге-Кутта для уравнения 1-го порядка. Но теперь на каждом шаге находится значение не одной y функции , а n функций y;y1;y2;...;yn-1.

      Пусть дано дифференциальное уравнение второго  порядка y”=f(x, y, y’) с начальными условиями y(x0)=y0 ; y;(x0)=z0.

      Представим  сначала его в виде системы уравнений

  y’=z

            z’=f(x, y,z).

с начальными условиями  y(x0)=y0 ; z(x0)=z0

      Так как получилось два уравнения, то теперь будут и две правые части:

f1(x, y, z) ;f2(x, y, z). На каждом шаге теперь будем пользоваться формулами :

      yi=yi-1+1/6 . (K11(i-1)+2 . K12(i-1)+2 . K13(i-1)+K14(i-1));

      zi=zi-1+1/6 . (K21(i-1)+2 . K22(i-1)+2 . K23(i-1)+K24(i-1)),

где коэффициенты K1j соответствуют функции y, а коэффициенты K2j – функции z. Они вычисляются по следующим формулам :

      K11(i-1)=h . f1(xi-1;yi-1;zi-1);

      K12(i-1)=h . f1(xi-1+h/2;yi-1+1/2 . K11(i-1);zi-1+1/2 . K21(i-1));

      K21(i-1)=h . f2(xi-1;yi-1;zi-1);

      K22(i-1)=h . f2(xi-1+h/2;yi-1+1/2 . K11(i-1);zi-1+1/2 . K21(i-1));

и так далее  для K13; K14; K23; K24. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

2 Решение обыкновенного дифференциального уравнения первого порядка.

      2.1 Аналитическое решение. 

cosy-y’√x=0,         [3.8;4.8],       y0(3.8)=10.2

Данное уравнение  представляет собой уравнение с разделяющимися переменными.

cosy-y’√x=0,

cosy-(dy∕dx)√x=0,/×(dx∕cosy)

dx∕√x-dy∕cosy=0,

dx/√x=dy/cosy,

∫dx/√x=∫dy/cosy.

Вычислим отдельно левую часть:

∫dx/√x=2√x

Вычислим  левую часть:

∫dy/cosy=ln│tg(y∕2+π/4)│

В итоге у  нас получилось:

ln│tg(y∕2+π/4)│= 2√x+ ln│c│

tg(y∕2+π/4)=ce2√x

y∕2+π/4=arctg (ce2√x)+πn,n€z.

y= -π/2 + arctg (ce2√x)+2 πn, n€z.

-π/2 + arctg (ce2√3,8)+2 πn=10,2,

arctg (ce2√3,8)=1/2(10,2+π/2-2π),при n=2,

ce2√3,8= tg(-0,76),

c=tg(-0,76)/e2√3,8.

Далее на отрезке[3.8;4.8] вычислим приближенное значение y(x). Результаты, сделанные в ручную, поместим в таблицу 1. 

2.2 Решение методом  Эйлера.

      С помощью метода Эйлера найти приближенно  решение уравнения  на cosy-y’√x=0, отрезке [3,8;4,8] с шагом h=0,1 при начальных условиях y0(3.8)=10.2

      Начиная с начальной точки (x0;y0) и применяя расчетную формулу метода  yi = yi-1 +h . f(xi-1;yi-1) , будем последовательно получать значения приближенного решения :

            y1=y0+h . f(x0;y0)

            y2=y1+h . f(x1;y1) и так далее.

Покажем на примере как применять данные формулы:

f(x0;y0)=f(3.8;10.2)=cos10.2∕√3.8=0.5048

y1= y0+h . f(x0;y0)

y1=10.2+0.1×0.5048=10.251 

f(x1;y1)=f(3.9;10.251)=cos10.251∕√3.9=0.4983

y2=y1+h . f(x1;y1)

y2=10.251+0.1×0.4983=10.299 и так далее.

Расчетная таблица 

        xi            f(x;y)          yi
      3,8          ____ 10,2
      3,9 0,4983 10,251
      4,0 0,4919 10,299
      4,1 0,4858 10,348
      4,2 0,4799 10,397
      4,3 0,4742 10,445
      4,4 0,4688 10,492
      4,5 0,4634 10,539
      4,6 0,4582 10,585
      4,7 0,4536 10,631
      4,8 0,4498 10,676
 

      Программа метода на языке Qbasic :

CLS

h = .1: y= 10.2: x = 3.8

PRINT #1, USING "x=#.#   y=#.#####"; x; y

FOR x =3.8 TO 4.8 STEP .1

F=COS(y)/SQR(x)

Y= Y + H * F

PRINT #1, USING "x=#.#    y=#.#####"; x; y

NEXT x

END 

Результаты счета программы:

x=3.8    y=10.16336

x=3.9   y=10.25048

x=4.0    y=10.29865

x=4.1   y=10.34765

x=4.2    y=10.39658

x=4.3    y=10.44457

x=4.4    y=10.49199

x=4.5    y=10.53872

x=4.6    y=10.58542

x=4.7    y=10.63091

x=4.8    y=10.67583

   

Как видно результаты ручного счета почти полностью совпали с ответами, полученными в программе.

                                                                   
 

                    
 
 

Блок-схема  метода Эйлера 

начало

x0=3.8:h= .1:y0=10.2:x=x0:y=y0:х=х0

печать x, у

                F=f(x,y)

 

                                                             y=y+F*h

 

 печать x,y

x=x+h

                                                                          x<x2                  да                                                                                                                                                                                                                 

                                                                   

                                                                                  нет

                                                                        конец                        

                                                                                                               

Здесь  f(x,y) = cosy/√x 

2.3 Решение методом  Рунге-Кутта.

      Решить  дифференциальное уравнение cosy-y’√x=0, на отрезке [3.8;4.8], с начальными условиями y0(3.8)=10.2.

      Начиная от точки (x0;y0), взятой из начального условия, подставляя координаты x0 и y0 вместо xi-1, yi-1 соответственно в формулы для получения коэффициентов Kj(i-1) , получаем их значения. Затем, подставляя найденные коэффициенты в формулу Рунге-Кутта для нахождения yi , найдем новое значение y1 , соответствующее значению аргумента x1=x0+h и так далее.

                  Расчетная таблица.

    X0    Y0   K1   K2   K3   K4    Yi
3,8 10,2 0,0505 0,0502 0,0501 0,0498 10,251
3,9 10,251 0,0498 0,0495 0,0495 0,0492 10,299
4,0 10,299 0,04919 0,0489 0,0488 0,0485 10,349
4,1 10,349 0,0485 0,0483 0,0482 0,0479 10,421
4,2 10,421 0,0479 0,0477 0,0477 0,0474 10,469
4,3 10,469 0,0474 0,0472 0,0471 0,0469 10,516
4,4 10,516 0,0469 0,0466 0,0466 0,0463 10,563
4,5 10,563 0,0464 0,0461 0,0460 0,0458 10,609
4,6 10,609 0,0458 0,0456 0,0455 0,0453 10,654
4,7 10,654 0,0453 0,0451 0,0450 0,0449 10,700
4,8 10,700 0,0448 0,0446 0,0445 0,0443 10,745

Информация о работе Численные решения обыкновенных дифференциальных уравнений