МIНIСТЕРСТВО ОСВIТИ І НАУКИ УКРАЇНИ
Лабораторна робота
Тема: “Обчислення визначеного інтегралу з використанням підпрограми-функції”
Мета роботи: оволодiти прийомами складання алгоритмiв i програм з використанням підпрограми-процедури, і підпрограми-функції для обчислення визначеного інтегралу.
Завдання: за варіантами завдань, наведених в таблиці, обчислити означений інтеграл f(x)dx із заданою похибкою, поділивши проміжок [a, b] на n частин користуючись методами прямокутника, трапеції і Сімпсона.
15 | tg2(x)+ctg2(x) | 54 | /6 | /3 | 0.001
Теоретичні відомості: Мова С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дображається за допомогою прямокутника з подвоєними бiчними сторонами.
Графічний алгоритм. (Головна програма)
Графічний алгоритм. (підпрограма-функція Pramokytnuk).
так
Графічний алгоритм. (підпрограма-функція Trapecia).
Графічний алгоритм. (підпрограма-функція simpsona).
Програма складена мовою Сі за допомогою підпрограми –функції:
#include <stdio.h>
#include <math.h>
float pramokytnuk (float a, float b, float n)
{
float h,s=0,y,x;
int i;
h=(b-a)/n;
for(i=0;i<=n;i++)
{
x=a+h*i;
y=fabs(pow(tan(x),2)+pow(1/tan(x),2));
s+=y;
}
s*=h;
return s;
}
float trapecia (float a, float b, float n)
{
float h,s=0,y,x;
int i;
h=(b-a)/n;
for(i=0;i<=n-1;i++)
{
x=a+h*i;
y=fabs(pow(tan(x),2)+pow(1/tan(x),2));
s+=y;
}
s+=fabs(pow(tan(a),2)+pow(1/tan(a),2))+fabs(pow(tan(b),2)+pow(1/tan(b),2))/2;
s*=h;
return s;
}
float simpsona (float a, float b, float n)
{
float x1,x2,y1,y2,s=0,h;
int i,k;
h=(b-a)/n;
k=n/2;
for(i=1;i<=k-1;i++)
{
x1=a+h*(2*i-1);
x2=a+h*2*i;
y1=4*(fabs(pow(tan(x1),2)+pow(1/tan(x1),2)));
y2=2*(fabs(pow(tan(x2),2)+pow(1/tan(x2),2)));
s+=y1+y2;
}
s+=fabs(fabs(pow(tan(a),2)+pow(1/tan(a),2))+fabs(pow(tan(b),2)+pow(1/tan(b),2))+fabs(pow(tan(b-h),2)+pow(1/tan(b-h),2)));
s*=h/3;
return s;
}
main()
{
float a1=3.14/6,b1=3.14/3,n1=54,x;
clrscr();
printf("s=%f\n",pramokytnuk(a1,b1,n1));
printf("s=%f\n",trapecia(a1,b1,n1));
printf("s=%f\n",simpsona(a1,b1,n1));
getch();
}
Результат виконання програми:
S1=1.293902
S2=1.310018
S3=1.230194
Висновок: Виконавши лабораторну роботу, я оволодів прийомами складання графічних алгоритмів та програм з використанням підпрограми-процедури та підпрограми функції на мові програмування СІ для обчислення визначеного інтегралу різними методами.