Научная Петербургская Академия

Точность численного интегрирования - (реферат)

Точность численного интегрирования - (реферат)

Дата добавления: март 2006г.

    Исследование точности численного интегрирования
    Research of Accuracy of Numerical Integration
    Задание исследования

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

Необходимо провести исследования так называемой внутренней сходимости численного интегрирования методами Симсона и трапеций различных функций, задаваемых с помощью функций языка С. Предполагается, что отрезок интегрирования [a, b] разбит на n равных частей системой точек (сеткой).

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

Построить обратные зависимости критерия точности от количества итераций. Повторить все вышеуказанные исследования для случая, когда при вычислении критерия точности разность значений интеграла относится не к предыдущему значению, а к точному значению аналитически вычисленного интеграла. Исследовать влияние увеличения верхнего предела интегрирования на точность (при прочих неизменных условиях)

    Метод трапеций
    , где
    Метод Симпсона
    , где
    Результаты исследований

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

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

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

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

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

    Текст программы
    /* Курсовая работа по информатике
    "Исследование точности численного интегрирования"
    "Research of Accuracy of Numerical Integration"
    Преподаватель:
    Студенты: Степанов А. Г.
    Черепанов К. А.
    Группа: Р-207
    */
    # include
    # include
    # include
    # include
    # include
    # include
    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    {
    h=(a+b)/(int(pow(2, j-1))*n);
    Sum[j]=0;
    for(i=0; 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    {
    h=(a+b)/(int(pow(2, j-1))*n);
    Sum[j]=0;
    for(i=0; 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);
    }



(C) 2009