Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ "ЛЬВІВСЬКА ПОЛІТЕХНІКА"
Кафедра ЗІ
ЗВІТ
до лабораторної роботи №4
з курсу: «Комп’ютерні методи дослідження інформаційних процесів та систем»
на тему: «ЧИСЛОВЕ ІНТЕГРУВАННЯ ФУНКЦІЇ ОДНІЄЇ ЗМІННОЇ»
Варіант 23
Мета роботи – ознайомлення з методами наближеного обчислення означених інтегралів.
ТЕОРЕТИЧНІ ВІДОМОСТІ
Метод Сімпсона
Цей метод значно точніший у порівнянні з методами прямокутників або трапецій.. Для досягнення тої ж точності в ньому можна брати менше число n ділянок розбиття та відповідно більший крок h, а при одному й тому ж кроці h він дає менші абсолютну та відносну похибки.
Розіб’ємо відрізок на парне число 2n частин довжиною
(9)
Нехай точкам розбиття ,, відповідають значення підінтегральної функції (тобто ,, i=)
Рис. 4
На відрізку проведемо через три точки параболу, якою замінимо підінтегральну функцію .
Рівняння параболи
(10)
(причому значення коефіцієнтів А, В, С невідомі). Якщо замінити площу криволінійної трапеції на відрізку площею криволінійної трапеції, обмеженої параболою (10), то можна записати
(11)
Винесемо спільний множник
(12)
Невідомі коефіцієнти А, В, С в рівняннях (10), (11) шукаються з умови, що при
Враховуючи, що
(13)
Перемножуючи другу рівність (13) на 4 та додаючи всі три рівності, знайдемо
(14)
що співпадає з квадратною дужкою рівняння (12). Отже,
(15)
Очевидно, що для кожної наступної пари ділянок одержимо таку ж формулу:
(16)
Додаючи рівності вигляду (15) та (16) по всіх відрізках, одержимо :
(17)
Це і є формула Сімпсона. Похибка методу (формули парабол) визначається за формулою :
, (18)
При написанні програм доцільно формулу Сімпсона зобразити у вигляді
, (19)
де , тобто i=
ЗАВДАННЯ ДО ЛАБОРАТОРНОЇ РОБОТИ
№ вар.
Підінтегральна функція
Інтервал інтегрування
Метод
Абсолютна похибка
23
[0; 1,5]
Сімпсона
0,001
БЛОК-СХЕМА АЛГОРИТМУ ПРОГРАМИ
Схема до методу Сімпсона
ТЕКСТ ПРОГРАМИ
using System;
namespace Pavlo
{
class Program
{
static double func(double x)
{
double r;
r = Math.E * (1 + Math.Sin(x)) / (1 + Math.Cos(x));
return r;
}
static void Main()
{
double I;
double a, b, h;
double I2 = 0, I4 = 0;
Console.Write("a=");
a = Convert.ToDouble(Console.ReadLine());
Console.Write("b=");
b = Convert.ToDouble(Console.ReadLine());
Console.Write("h=");
h = Convert.ToDouble(Console.ReadLine());
I4 = func(a + h);
for (int k = 2; k <= b; k += 2)
{
I4 += func(a + (k + 1) * h);
I2 += func(a + k * h);
}
I = func(a) + func(b) + 4 * I4 + 2 * I2;
I *= h / 3;
Console.WriteLine("I=" + I);
Console.ReadKey();
}
}
}
РЕЗУЛЬТАТ ВИКОНАННЯ ПРОГРАМИ
/
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!