Главная » Статьи » Рефераты » Точные науки: Информатика

Исследование точности численного интегрирования


Задание исследования
   Провести исследование внутренней сходимости численного интегрирования методом Симпсона и трапеций различных функций, задаваемых с 
помощью языка С.
Подробное описание задачи и способы ее решения 
   Необходимо провести исследования так называемой внутренней сходимости численного интегрирования методами Симпсона и трапеций 
различных функций, задаваемых с помощью функций языка С. Предполагается, что отрезок интегрирования [a, b] разбит на n равных частей 
системой точек (сеткой).
   .
   Контроль внутренней сходимости заключается в циклическом вычислении приближенных значений интеграла для удваиваемого по сравнению со 
значением на предыдущем прохождении цикла числа n. Отношения абсолютной величины разности этих значений к абсолютной величине 
предыдущего приближенного значения принимается в качестве критерия достижения точности интеграла.
   Построить зависимости количеств итераций от различных величин критерия точности.
   Построить обратные зависимости критерия точности от количества итераций.
   Повторить все вышеуказанные исследования для случая, когда при вычислении критерия точности разность значений интеграла относится не к 
предыдущему значению, а к точному значению аналитически вычисленного интеграла.
   Исследовать влияние увеличения верхнего предела интегрирования на точность (при прочих неизменных условиях).
Метод трапеций 
   , где 
   .
Метод Симпсона 
   , где 
   .
Результаты исследований 
   Таблица и график зависимости количества итераций от различных значений критерия точности: 
   для :
                                                                                       Таблица 1
Критерий 
точности
Количество 
   итераций
-0,1676631
   14
-0,1518916
   16
-0,0046931
   12
-0,0026531
   11
-0,0002639
   10
-0,0001709
   2
-0,0001297
   9
-0,0000557
   3
-0,000025
   8
-0,0000198
   4
-0,0000096
   5
-0,0000038
   6
   0
   15
0,0000052
   7
0,071089
   13

   для :
                                                                                       Таблица 2
Критерий 
точности
Количество 
   итераций
-0,1127271
   16
-0,0750288
   15
-0,0540677
   14
-0,0021415
   12
-0,0005711
   11
-0,0000458
   9
-0,0000381
   2
-0,0000191
   3
-0,000008
   4
-0,000004
   5
-0,0000019
   7
-0,0000002
   6
0,000005
   8
0,0002983
   10
0,0164377
   13

   для :
                                                                                       Таблица 3
Критерий 
точности
Количество 
   итераций
-0,0066709
   13
-0,0042367
   14
-0,0003561
   10
-0,0000016
   5
-0,000001
   4
0,0000005
   3
0,0000006
   6
0,0000009
   2
0,0000009
   7
0,0000223
   8
0,000056
   9
0,0002782
   11
0,0003474
   12
0,005293
   16
0,0053267
   15
 

   для :
                                                                                       Таблица 4
Критерий 
точности
Критерий точности
-61,4469795
   12
-5,714047
   3
-1,0215755
   13
-0,7241433
   2
-0,5121117
   4
-0,3222643
   11
-0,2163614
   7
-0,1536629
   9
-0,0930261
   14
0,0353183
   16
0,057059
   15
0,1697371
   5
0,2025534
   10
0,2504728
   6
0,6202592
   8
 

   для :
                                                                                       таблица 5
Критерий точности
Количество 
   итераций
-0,0119308
   16
-0,0007834
   13
-0,0000079
   3
-0,0000041
   4
-0,0000037
   7
-0,0000027
   5
-0,0000027
   6
   -0,000002
   8
-0,0000016
   2
0,0000003
   10
0,0000062
   9
0,0000385
   11
0,0000802
   12
0,0005452
   15
0,0016689
   14
 

   для :
                                                                                       Таблица 6
Критерий 
точности
Количество 
   итераций
-0,0026286
   16
-0,0012416
   14
-0,0000118
   3
-0,0000107
   4
-0,0000046
   5
-0,0000046
   9
-0,0000028
   6
-0,0000021
   7
-0,0000005
   2
0,0000011
   10
0,0000018
   8
0,0000023
   11
0,000058
   12
0,0001049
   13
0,0027928
   15
 

    
   Таблицы и графики зависимости значений критерия точности от количества итераций.
   Для функции :
                                                                                       Таблица 7
По отношению к предыдущему 
         значению
По отношению к аналитическому 
         значению
Критерий 
точности
Количество 
   итераций
Критерий 
точности
   Количество 
   итераций
-0,0001709
   2
-0,0001932
      2
-0,0000557
   3
-0,0000629
      3
-0,0000198
   4
-0,0000224
      4
-0,0000096
   5
-0,0000108
      5
-0,0000038
   6
-0,0000043
      6
0,0000052
   7
0,0000058
      7
-0,000025
   8
-0,0000283
      8
-0,0001297
   9
-0,0001466
      9
-0,0002639
   10
-0,0002983
   10
-0,0026531
   11
-0,002998
   11
-0,0046931
   12
-0,0052891
   12
0,071089
   13
0,0797403
   13
-0,1676631
   14
-0,2014365
   14
   0
   15
   0
   15
-0,1518916
   16
-0,1518916
   16
 

   Для функции .
                                                                                       Таблица 8
По отношению к предыдущему значению
По отношению к аналитическому 
      значению
Критерий точности
Количество 
   итераций
Критерий точности
Количество 
итераций
-0,0000381
      2
   -0,0000666
   2
-0,0000191
      3
   -0,0000335
   3
   -0,000008
      4
   -0,0000141
   4
   -0,000004
      5
   -0,0000069
   5
-0,0000002
      6
   -0,0000004
   6
-0,0000019
      7
   -0,0000033
   7
   0,000005
      8
   0,0000088
   8
-0,0000458
      9
   -0,0000802
   9
0,0002983
   10
   0,000522
   10
-0,0005711
   11
   -0,0009997
   11
-0,0021415
   12
   -0,0037465
   12
0,0164377
   13
   0,0286955
   13
-0,0540677
   14
   -0,0959378
   14
-0,0750288
   15
   -0,1259331
   15
-0,1127271
   16
   -0,1750124
   16
 

 

 

Сравнение результатов 
                                                                                       Таблица 9
                                                                           Сравнительные результаты
Метод трапеции n = 
   1000000
Метод Симпсона
n = 1000000
Аналитический 
   результат
Функция
Пределы
   4,5051475
   4,5240183
   4,49980967
f(x) = 1/x
0,1 – 9
   1,7491462
   1,7500761
   1,791756469
f(x) = 1/x*x
0,3 – 5
   1,9991885
   1,9999505
      2
f(x) = sin(x)
0 – 
   -0,0000512
   0,000003
      0
f(x) = sin(2*x)
0 – 
   0,2857157
   0,2856935
   0,285714285
f(x) = sin(7*x)
0 – 
   0,2222053
   0,2222133
   0,222222222
f(x) = sin(9*x)
0 – 
    
                                                                                    Таблица 10
                                                   Влияние увеличения верхнего предела на точность интегрирования
Аналитическое 
   значение
Практическое 
   значение
Верхний 
предел
Погрешность
   4,49980967
   4,5217996
   9
-0,02198993
   4,605170186
   4,624969
   10
-0,019798814
   4,787491743
   4,8039412
   12
-0,016449457
   4,941642423
   4,9557843
   14
-0,014141877
   5,075173815
   5,0875444
   16
-0,012370585
   5,192956851
   5,2039275
   18
-0,010970649
   5,298317367
   5,3082042
   20
-0,009886833
    
   Следовательно, увеличение верхнего предела приводит к увеличению точности интегрирования.
Текст программы 
   /* Курсовая работа по информатике 
   "Исследование точности численного интегрирования" 
   "Research of Accuracy of Numerical Integration" 
   Преподаватель: 
   Студенты: Степанов А. Г. 
   Черепанов К. А 
   Группа: Р-207 
   */ 
   # include <stdio.h> 
   # include <io.h> 
   # include <stdlib.h> 
   # include <iostream.h> 
   # include <string.h> 
   # include <math.h> 
   int main () 
   { 
   FILE *fp; /*указатель на поток*/ 
   int n,i,t,j,N; 
   float a,b,h,Sum[100],x,y,coa; 
   printf("Research of Accuracy of Numerical Integration\n"); 
   /*Ввод точности вычисления*/ 
   printf("Enter accuracy of calculation n= "); 
   scanf("%d",&n); 
   /*Ввод начала интегрирования*/ 
   printf("Enter beginnings of integration= "); 
   scanf("%f",&a); 
   /*Ввод предела интегрирования*/ 
   printf("Enter limit of integration= "); 
   scanf("%f",&b); 
    
   /*Открытие файла-источника*/ 
   while((fp=fopen("data3.xls","w"))==NULL) 
   { 
   puts("Error!!! Can't open file \nInput name of file\n"); 
   } 
   /*Ввод количества итераций*/ 
   printf("Enter number of Itteration N= "); 
   scanf("%d",&N); 
   /*Вычисление шага интегрирования*/ 
   h=(a+b)/n; 
   printf("Step=%.3f\n",h); 
   /*******Вычисление интеграла методом трапеций*******/ 
   for(j=1;j<=N;j++) 
   { 
   h=(a+b)/(int(pow(2,j-1))*n); 
   Sum[j]=0; 
   for(i=0;i<=(int(pow(2,j-1))*n);i++) 
   { 
   x=a+i*h; 
   if(i==0) 
   t=1; 
   else 
   t=2; 
   y=t*(h/2)*(sin(2*x)); 
   Sum[j]=Sum[j]+y; 
   } 
   if (j>1) 
   { 
   coa=(Sum[j]-Sum[j-1])/Sum[j-1]; 
   printf("Criterion of accuracy=%.5f Number of iteration=%d\n",coa,j); 
   fprintf(fp,"%.7f\t",coa); 
   fprintf(fp,"%d\t\n",j); 
   } 
   } 
   printf("The sum by a method of trapezes=%.7f\n",Sum[1]); 
   fprintf(fp,"The sum by a method of trapezes=%.7f\n",Sum[1]); 
   /*******Вычисление интеграла методом Симпсона*******/ 
   for(j=1;j<=N;j++) 
   { 
   h=(a+b)/(int(pow(2,j-1))*n); 
   Sum[j]=0; 
   for(i=0;i<=(int(pow(2,j-1))*n);i++) 
   { 
   x=a+i*h; 
   if(i==0||i==n) 
   t=1; 
   else 
   { 
   if(i%2==0) 
   t=2; 
   else 
   t=4; 
   } 
   y=t*(h/3)*(sin(2*x)); 
   Sum[j]=Sum[j]+y; 
   } 
   if (j>1) 
   { 
   coa=(Sum[j]-Sum[j-1])/Sum[j-1]; 
   printf("Criterion of accuracy=%.5f Number of iteration=%d\n",coa,j); 
   fprintf(fp,"%.7f\t",coa); 
   fprintf(fp,"%d\t\n",j); 
   } 
   } 
   printf("The sum by a Simpson's method= %.7f\n",Sum[1]); 
   fprintf(fp,"The sum by a Simpson's method=%.7f\n",Sum[1]); 
   scanf("%d",&b); 
   } 

Категория: Точные науки: Информатика | Добавил: Alexandr5228 (06.07.2014)
Просмотров: 457 | Рейтинг: 0.0/0
Всего комментариев: 0
avatar