У нас: 141825 рефератів
Щойно додані Реферати Тор 100
Скористайтеся пошуком, наприклад Реферат        Грубий пошук Точний пошук
Вхід в абонемент



Лабораторна робота - Числове інтегрування
3

Лабораторна робота

Тема:

 

Числове інтегрування

Мета роботи: Вивчення методів обчислення означеного інтегралу та засобiв мови Сi для програмування процедур, оволодiння прийомами складання алгоритмiв i програм з пiдпрограмами.

Завдання:

вар. | Підінтегральна

Функція | n | a | b

15 | tg2(x)+ctg2(x) | 54 | /6 | /3

Короткі теоретичні відомості:

Числове інтегрування функцій:

Постановка задачі обчислення означеного інтегралу функції має вигляд

.

Інтеграл функції чисельно дорівнює площі (на рисунку 1 заштрихована), обмеженій лініями: t=a, t=b, y=0 i y=f(t). Для її наближеного обчислення застосовуються методи: прямокутників, трапецій і парабол, які передбачають заміну кривої y=f(t) відповідно ступінчатою та ламаною лініями або параболою. Суть цих методів полягає в тому, що діапазон інтегрування [a, b] ділять на n елементарних відрізків довжиною h, після чого виконують обчислення за поданими нижче формулами, які називаються квадратурними. При цьому h=(b-a)/n, t0 = a, tn = b, ti+1 = ti+h, yi=f(ti).

Алгоритм числового інтегрування функцій представляє собою цикл з накопиченням суми.

Метод правих прямокутників s = h*(y1 + y2 + y3 + ... + yn) або .

Метод трапецій s=h*[(y0 + yn)/2 + y1 + y2 + ... + yn-1] або

Метод парабол (Сімпсона) s=(y0 + 4y1 + 2y2 + 4y3 + 2y4 + 4y5 + ... + 4yn-1 + yn) або , де k=n/2 (n – парне число).

Процедура-функція:

Мова Сi дозволяє використовувати лише один вид пiдпрограми:

процедуру-функцiю з параметрами. Характерною особливiстю процедури-функцiї є наявнiсть багатьох вхiдних параметрiв i одного вихiдного, який присвоюється iменi функцiї. Всi пiдпрограми повиннi

бути оголошенi в головнiй або пiдпорядкованих програмах. Оголошення процедури-функцiї має такий вигляд:

ТПЗ IПФ(СТП);,

де ТПЗ – тип значення, яке повертає процедура-функцiя;

IПФ – iм’я процедури-функцiї, iдентифiкатор;

СТП – список типiв дiйсних параметрiв.

Крiм оголошення, функцiя має бути визначена, тобто має бути вказано, що ця функцiя власне виконує. Визначення функцiї має вигляд:

ТПЗ IПФ(СФП){ОЗП;ТПФ;},

де:СФП - список формальних параметрiв i їх типiв;

ОЗП - оголошення внутрiшнiх (власних) змiнних функцiї;

ТПФ - тiло процедури, оператори та вирази.

Тiло процедури-функцiї може мiстити один або декiлька операторiв return(вираз); Його виконання приводить до завершення процедури i повернення в програму, з якої функцiя викликалася. Якщо цей оператор має вираз, то його значення присвоюється iменi процедури i є результатом її виконання. Формальнi параметри функцiї,

якщо вони є, локалiзованi в її тiлi, пам’ять пiд них дублюється.

Локалiзованими є також внутрiшнi змiннi функцiї, їх значення теж

втрачаються пiсля виходу з процедури, якщо вони не мають клас пам’ятi static. Звернення до процедури-функцiї в головнiй програмi

вiдбувається шляхом вказування її iменi, пiсля якого в круглих

дужках дається список дiйсних параметрiв.

Забороняється передавати масиви в якостi параметрiв функцiї.

Натомiсть можна використовувати вказівники на масиви. Масиви в

процедурi не дублюються.

Звернення до процедури графiчно вiдображається за допомогою

прямокутника з подвоєними бiчними сторонами.

Ідентифікація змінних:

Змінна | a |

b | Кількість інтервалів | Крок | yi | р |

 

Ідентифікатор | a | b | n | h | Y | S | y[i] | M_PI | func(x)

Програма:

#include<math.h>

/*********

* Функція*

*********/

float func(float x)

{

float y;

y=pow(tan(x),2)+pow(1/tan(x),2);

return y;

}

/******************

* Головна програма*

*******************/

main()

{

int n=54; float a=M_PI/6,b=M_PI/3,

prjam(float,float,float),

trap(float,float,float,int),

parab(float,float,float,int),h;

h=(b-a)/n;

clrscr();

printf(" Метод прямокутникiв:\n %.4f;\n",prjam(a,b,h));

printf(" Метод трапецiй:\n %.4f;\n",trap(a,b,h,n));

printf(" Метод парабол:\n %.4f.",parab(a,b,h,n));

getch();

}

/*********************

* Метод прямокутникiв *

**********************/

float prjam(float a,float b,float h)

{

float func(float),x,Y=0,S;

for(x=a+h;x<=b;x+=h)

{

Y+=func(x);

}

S=h*Y;

return S;

} |

/****************

* Метод трапецiй *

*****************/

float trap(float a,float b,float h,int n)

{

int i=0;

float x,y[55],Y=0,S;

for(x=a;x<=b;x+=h)

{

y[i]=func(x);

i++;

}

for(i=1;i<=(n-1);i++)

{

Y+=y[i];

}

S=h*((y[0]+y[n])/2+Y);

return S;

}

/***************

* Метод парабол *

****************/

float parab(float a,float b, float h,int n)

{

int i=0;

float x,y[55],Y=0,S;

for(x=a;x<=b;x+=h)

{

y[i]=func(x);

i++;

}

for(i=1;i<=(n/2-1);i++)

{

Y+=4*y[2*i-1]+2*y[2*i];

}

S=h/3*(y[0]+4*y[n-1]+y[n]+Y);

return S;

}

 

Результати:

Метод прямокутникiв:

1.2624;

Метод трапецiй:

1.2624;

Метод парабол:

1.2622.

Висновок: Я вивчив методи обчислення означеного інтегралу та засоби мови Сi для програмування процедур, оволодiв прийомами складання алгоритмiв i програм з пiдпрограмами.

Блок-схема

/******************

* Головна програма*

*******************/

|

/*********************

* Метод прямокутникiв *

**********************/ |

/****************

* Метод трапецiй *

*****************/ |

/***************

* Метод парабол *

****************/

/*********

* Функція*

*********/