скачать рефераты
  RSS    

Меню

Быстрый поиск

скачать рефераты

скачать рефератыЛабораторная работа: Исследование точности численного интегрирования

Таблица и график зависимости значений критерия точности от количества итераций

Для функции

По отношению к предыдущему значению По отношению к аналитическому значению
Критерий точности Количество итераций Критерий точности Количество итераций
-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


Для функции

 

По отношению к предыдущему значению По отношению к аналитическому значению

 

Критерий точности Количество итераций Критерий точности Количество итераций
-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

 



 




Сравнение результатов

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

Метод трапеции 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…....π

Таблица влияния увеличения верхнего предела на точность интегрирования

Аналитическое значение Практическое значение Верхний предел Погрешность
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

Следовательно, увеличение верхнего предела приводит к увеличению точности интегрирования

Список библиографических источников

1.     Справочник по математике/Бронштейн И.Н., Семендяев К.А.-М.:Физико-математическая литература, 1998.

Текст программы

/* Курсовая работа по информатике

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

 "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);

}


Страницы: 1, 2


Новости

Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

  скачать рефераты              скачать рефераты

Новости

скачать рефераты

Обратная связь

Поиск
Обратная связь
Реклама и размещение статей на сайте
© 2010.