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