ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Метод Сімпсона на комп'ютері
         

     

    Інформатика, програмування

    Московського державного будівельного університету

    Курсова робота

    «Програма наближеного обчислення певного інтеграла за допомогою ф - ли Сімпсона на комп'ютері»

    Виконав: студент ф -- та ЕОУС - 1 - 12

    Валюгін А. С.

    Прийняв:

    Зоткін С. П.

    Москва 2001

    1. Введення

    Визначений інтеграл від функції, що має неелементарную первісних,можна обчислити за допомогою тієї чи іншої наближеної формули. Для вирішенняцього завдання на комп'ютері, серед інших, можна скористатися формуламипрямокутників, трапецій або формулою Сімпсона. У даній роботірозглядається саме остання.

    Розглянемо функцію y = f (x). Будемо вважати, що на відрізку [a, b] вонапозитивна і безперервна. Знайдемо площу криволінійної трапеції aABb (мал.
    1).

    рис. 1

    Для цього поділимо відрізок [a, b] точкою c = (a + b)/2 навпіл і в точці
    C (c, f (c)) проведемо дотичну до лінії y = f (x). Після цього розділимо [a,b] точками p і q на 3 рівні частини і проведемо через них прямі x = p і x
    = Q. Нехай P і Q - точки перетину цих прямих з дотичній. Поєднавши Aз P і B з Q, отримаємо 3 прямолінійні трапеції aAPp, pPQq, qQBb. Тодіплоща трапеції aABb можна приблизно порахувати за такою формулою

    I ((aA + pP)/2 * h + (pP + qQ)/2 * h + (qQ + bB)/2 * h, де h =

    (b - a)/3.

    Звідки отримуємо

    I ((b - a)/6 * (aA + 2 * (pP + qQ) + bB)

    зауважимо, що aA = f (a), bB = f (b), а pP + qQ = 2 * f (c), у результаті отримуємомалу фор - лу Сімпсона

    Мала формула Сімпсона дає інтеграл з хорошою точністю, коли графікпідінтегральною функції мало зігнутий, у випадках ж, коли дана більшескладна функція мала формула Сімпсона непридатна. Тоді, щоб порахуватиінтеграл заданої функції потрібно розбити відрізок [a, b] на n частин і докожному з відрізків застосувати формулу (1). Після наведених вище дійвийде "велика" формула Сімпсона, що має вигляд,

    де Yкр = y1 + yn, Yнеч = y3 + y5 + ... + yn - 1, Yчет = y2 + y4 + ... + yn -
    2, а h = (b - a)/n.

    Завдання. Нехай потрібно проінтегрувати функцію f (x) = XІ (x - 5) І навідрізку [0, 6] (рис. 2). На цьому відрізку функція неперервна і приймаєтільки невід'ємні значення, тобто знакопостоянна.

    рис. 2

    Для виконання поставленого завдання нижчеописаних складена програма,наближено обчислює певний інтеграл за допомогою формули Сімпсона.
    Програма складається з трьох функцій main, f і integral. Функція main викликаєфункцію integral для обчислення інтеграла і роздруковує на екранірезультат. Функція f приймає аргумент x типу float і повертає значенняінтегрувальне функції в цій точці. Integral - основна функція програми:вона виконує всі обчислення, пов'язані з перебуванням певногоінтеграла. Integral приймає чотири параметри: межі інтегрування типуfloat, допустиму відносну помилку типу float і покажчик наінтегруються функцію. Обчислення виконуються до тих пір, покивідносна помилка, яка обчислюється за формулою

    | (In/2 - In)/In |,

    де In інтеграл при числі n розбивка, не буде менше необхідної. Наприклад,допустима відносна помилка e = 0.02 це означає, що максимальнапохибка у обчисленнях буде не більше, ніж In * e = 0.02 * In. Функціяреалізована за економією обчислень, тобто враховується, що Yкр постійна,а Yнеч = Yнеч + Yчет, тому ці значення обчислюються один раз. Високаточність і швидкість обчислення роблять використання програми на основіформули Сімпсона більш бажаним при наближеному обчисленні інтегралів,ніж використання програм на основі формули трапеції або методупрямокутників.

    Нижче пропонується блок - схема, специфікації, лістинг і ручної рахунокпрограми на прикладі поставленої вище завдання. Блок - схема дозволяєвідстежити і зрозуміти особливості алгоритму програми, специфікації даютьподання про призначення кожної змінної в основної функції integral,лістинг - вихідний код працюючої програми з коментарями, а річний рахунокнадає можливість проаналізувати результати виконання програми.

    2. Блок - схема програми

    ТАК

    НІ

    3. Специфікації

    | Ім'я змінної | Тип | Призначення |
    | n | int | Число розбиття відрізка [a, b] |
    | i | int | Лічильник циклів |
    | a | float | Нижня межа інтегрування |
    | b | float | Верхня межа інтегрування |
    | h | float | Крок розбиття відрізка |
    | e | float | Допустима відносна помилка |
    | f | float | Покажчик на інтегруються фун - цію |
    | | (*) | |
    | s_ab | float | Сума значень фун - ції в точках a і |
    | | | B |
    | s_even | float | Сума значень фун - ції в непарних |
    | | | Точках |
    | s_odd | float | Сума значень фун - ції в парних |
    | | | Точках |
    | s_res | float | Поточний результат інтегрування |
    | s_pres | float | Попередній результат інтегрування |

    4. Лістинг програми

    # include

    # include

    /* Прототип фун - ції, яка обчислює інтеграл */float integral (float, float, float, float (* ) (float ));

    /* Прототип фун - ції, що задає інтегруються фун - цию */float f (float);

    main ()

    (float result;

    result = integral (0, 6, .1, f); printf ( "% f", result);

    return 0; < p>)

    /* Реалізація фун - ції, що задає інтегруються фун - цию

    */float f (float x)

    ( < p>/* Функція f (x) = XІ (x - 5) І */return pow (x, 3) * pow (x - 5, 2);

    )

    /* Реалізація фун - ції, яка обчислює інтеграл */float integral (float a, float b, float e, float

    (* f) (float))

    (int n = 4, i;/* Початкове число розбиття 4 */float s_ab = f (a) + f (b);/* Сума значень фун - ції в a і b */float h = (b - a)/n;/* Обчислюємо крок */float s_even = 0, s_odd; float s_res = 0, s_pres;

    /* Сума значень фун - ції в парних точках */for (i = 2; i

    ) do (s_odd = 0; s_pres = s_res;

    /* Сума значень фун - ції в парних точках */for (i = 1; i

    )

    /* Підрахунок результату */s_res = h/3 * (s_ab + 2 * s_even + 4 * s_odd);

    /* уникаємо ділення на нуль */if (s_res == 0) s_res = e; s_even + = s_odd; n *= 2; h/= 2;

    ) while (fabs ((s_pres - s_res)/s_res)> e );/*

    Виконувати до тих пір, поки результат не буде задовольняти допустимої помилку */

    return fabs (s_res);/* Повертаємо результат */

    )

    5. Ручний рахунок

    Таблиця константних значень для n = 8
    | Ім'я змінної | Значення |
    | a | 0 |
    | b | 6 |
    | e | .1 |
    | s_ab | 216 |
    | h | .75 |

    Підрахунок s_even
    | i | a + i * | f (a + i * | s_even |
    | | H | h) | |
    | 2 | 1.5 | 41.34375 | 41.34375 |
    | 4 | 3 | 108 | 149.34375 |
    | 6 | 4.5 | 22.78125 | 172.125 |

    Підрахунок s_odd
    | i | a + i * | f (a + i | s_odd |
    | | H | * h) | |
    | 1 | .75 | 7.62012 | 7.6201 |
    | | | | 2 |
    | 3 | 2.25 | 86.14158 | 93.761 |
    | | | | 7 |
    | 5 | 3.75 | 82.3973 | 176.15 |
    | | | | 9 |
    | 7 | 5.25 | 9.044 | 185.20 |
    | | | | 3 |

    Підрахунок s_res
    | (F (x) | s_res = h/3 * (s_ab + 2 * s_even + | Абсолютна помилка |
    | dx | 4 * s_odd) | |
    | 324 | 325.266 | 1.266 |

    -----------------------< br>Введення a, b, e, f (x)

    n = 4, h = (b - a)/n s_ab = f (a) + f (b) s_even = 0, s_res = 0

    s_even = s_even +f (a ??????????????????????????????????????????????? ???????"???'??????????????< br>?????????????????????????????????????????????????? ???? † †??? + I * h)

    i = 2, n - 1, 2

    s_odd = 0, s_pres = s_res

    i = 1, n - 1, 2

    s_odd = s_odd + f (a + i * h)

    s_res = h/3 * (s_ab + 2 * s_even + 4 * s_odd)s_even = s_even + s_odd, n = n/2, h = h/2

    | (s_pres - s_res)/s_res |> e

    I ((b - a)/6 * (f (a) + 4 * f (c) + f (b)) (1)

    Висновок s_res

    I (h/3 * (Yкр + 2 * Yнеч + 4 * Yчет) (2)

         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status