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

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

Описание

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

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

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

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

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

CLS

x1 = 3.8: y1 = 10.2: h = .1: x3 = 4.8: y = y1

FOR x = x1 TO x3 STEP h

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

x2 = x: y2 = y: GOSUB 1

k1 = h * f

x2 = x + h / 2

y2 = y + k1 / 2

GOSUB 1

k2 = h * f

y2 = y + k2 / 2

GOSUB 1

k3 = h * f

x2 = x + h

y2 = y + k3

GOSUB 1

k4 = h * f

y = y + (k1 + 2 * k2 + 2 * k3 + k4) / 6

NEXT x

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

END

1 f = COS(Y)/ SQR(X)

RETURN

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

x= 3.8         у= 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     
 
 
 
 
 
 
 

     Блок-схема метода Рунге-Кутта 

начало

x1=3.8:y1=10.2:h= .1:x3=4.8:y=y1

x=x1

печать  x,y

x2=x: y2=y: k1=h*f 

x2=x+h/2: y2=y+k1/2: k2=h*f

y2=y+k2/2: k3=h*f

x2=x+h: y2=y+k3: k4=h*f

y=y+(k1+2*k2+2*k3+k4)/6

x=x+h 

                                                                                                   да

x<x3                 

             нет

печать  x,y

конец 

Здесь f= cosy/√x 
 
 
 
 
 
 

 

2.4 Сравнение полученных  результатов. 
 

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

Таблица 1: сравнение полученных результатов

       х  Аналитический  метод Метод Эйлера Метод Рунге-Кутта
3,8 10,2 10,2 10,2
3,9 10,251 10,251 10,251
4,0 10,299 10,299 10,299
4,1 10,349 10,348 10,349
4,2 10,420 10,397 10,421
4,3 10,469 10,445 10,469
4,4 10,515 10,492 10,516
4,5 10,563 10,539 10,563
4,6 10,608 10,585 10,609
4,7 10,654 10,631 10,654
4,8 10,700 10,676 10,700
 

График 1:сравнение  полученных результатов

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

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

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

                                                                                                             y”+y+y’lnx=0, [1.4;2.4] ,y(1,4)=1,8 ; y’(1,4)=2,3

Попробуем решить данное уравнение с помощью замены:

y’= yz,

y”= y’z+yz΄=yz2+yz΄,

yz2+ y’z+y+ yzlnx=0,

1.y=0

2. z΄+z2+1+zlnx=0,

z΄+lnxz=-(z2+1).

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

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

      С помощью метода Эйлера найти на отрезке  [1.4;2.4] с шагом h=0,1 приближенно решение уравнения

                 y”+y+y’lnx=0,

с начальными условиями  y(1,4)=1,8 ; y’(1,4)=2,3

 Для решения представим уравнение  в виде :

      y’=z

     z’=-(y+zlnx)

Далее проведем ручной счет по методу Эйлера, используя  следующие расчетные формулы: 

                           

где  f1(x, y, z)=z ; f2(x, y, z)=12y+z  

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

         х     у      z      f1(x, y, z)    f2(x, y, z)
    1,4 1,8 2,3 2,3 2,3
    1,5 2,03 2,019611 2,019611 -2,709543
    1,6 2,231961 1,174527 1,174527 -2,927142
    1,7 2,403414 1,393602 1,393602 -3,058412
    1,8 2,542774 1,065376 1,065376 -3,108093
    1,9 2,649312 0,7378238 0,7378238 -3,082995
    2,0 2,723094 0,4181569 0,4181569 -2,99149
    2,1 2,76491 0,1126815 0,1126815 -2,843015
    2,2 2,776178 -0,173297 -0,173297 -2,647603
    2,3 2,758848 -0,435518 -0,435518 -2,415461
    2,4 2,715297 -0,670773 -0,670773 -2,156604
 
 
 
 

Составим программу  метода на языке Qbasic : 

CLS

x0 = 1.4: y0 = 1.8: z0 = 2.3: h = .1: xn = 2.4

y = y0

z = z0

x = x0

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

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

FOR x = x0 TO xn STEP h

y = y + h * z

z = z + h * (-(y+z*LOG(x)))

PRINT #1, USING "#.#"; x + h;

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

NEXT x

END

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

x= 1.4           y= 1.8

x= 1.5            y=2.03

x= 1.6            y= 2.231961

x= 1.7            y= 2.403414

x= 1.8            y= 2.542774

x= 1.9            y= 2.649312

x= 2.0            y= 2.723094

x= 2.1            y= 2.76491

x= 2.2            y= 2.776178

x= 2.3            y= 2.758848

x= 2.4            y= 2.715297 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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

                              

                               

 
 

  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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

Тоже уравнение  решить методом Рунге-Кутта.

      Координаты  точки  (x0, y0, z0), заданной в начальных условиях подставим в формулы для нахождения K11; K21; K12; K22; K13; K23; K14; K24 вместо xi-1; yi-1; zi-1 . Найденные коэффициенты подставляем в формулы для нахождения yi и zi , и находим значения y1 и z1 , соответствующие значению аргумента x1=x0+h. Чтобы получить следующие значения y2; z2 , используем x1; y1; z1 в качестве xi-1; yi-1; zi-1 и так далее. 

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

  X0 y0 z0 K11 K12 K13 K14 K21 K22 K23 K24
1,4 1,8 2,3 ___ ___ ___ ___ ___ ___ ___ ___
1,5 2,0167 2,0286 2,3 2,171306 2,1639 2,0287 -2,5739 -2,7218 -2,7126 -2,8380
1,6 2,204984 1,73497 2,02864 1,88668 1,881393 1,735088 -2,839195 -2,9449 -2,9355 -3,0203
1,7 2,363179 1,42726 1,734967 1,583946 1,58072 1,42739 -3,020425 -3,0849 -3,0758 -3,1205
1,8 2,490232 1,11330 1,427262 1,271236 1,269965 1,113518 -3,120524 -3,1459 -3,1374 -3,1447
1,9 2,585896 0,80063 1,113396 0,956162 0,956680 0,800738 -3,144671 -3,1341 -3,1265 -3,0999
2,0 2,650613 0,49547 0,800630 0,645641 0,647775 0,495552 -3,099784 -3,0571 -3,0508 -2,9942
2,1 2,685432 0,20354 0,495468 0,345766 0,349289 0,203605 -2,994045 -2,9236 -2,9186 -2,8366
2,2 2,691923 -0,0704 0,203540 6,172701

Е-02

6,640677

Е-02

-7,03854

Е-02

-2,836454 -2,7429 -2,7394 -2,6366
2,3 2,672077 -0,3226 -0,07041 -0,202228 -0,196628 -0,322644 -2,636409 -2,5244 -2,5224 -2,4035
2,4 2,628217 -0,55029 -0,322632 -0,442800 -0,436513 -0,550320 -2,403353 -2,2776 -2,2760 -2,1466

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