Лабораторна робота
Тема: Обчислення визначеного інтеграла за допомогою підпрограми-функції
Мета
Навчитись обчислювати визначений інтеграл за допомогою підпрограми функції.
Теоретичні відомості
Постановка задачі обчислення означеного інтегралу функції має вигляд
.
Інтеграл функції чисельно дорівнює площі (на рисунку 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 – парне число).
Завдання №8
sqr(1-1/4*sin2(x)), n=20, a=0, b=1,6.
Програма
#include<stdio.h>
#include<math.h>
/*funczia*/
float func(float x)
{
float y;
y=pow((1-1.4*pow(sin(x),2)),1/2);
return y;
}
/*Program*/
main()
{
int n=20;
float a=0,b=1.6,h,
pr(float,float,float),
tr(float,float,float,int),
smp(float,float,float,int);
h=(b-a)/n;
clrscr();
printf("pr=%f\n",pr(a,b,h));
printf("tr=%f\n",tr(a,b,h,n));
printf("smp=%f",smp(a,b,h,n));
getch();
}
/*Pryamokutnukiv*/
float pr(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;
}
/*Trapeziy*/
float tr(float a,float b,float h,int n)
{
int i=0;
float x,y[20],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;
}
/*Simpsona*/
float smp(float a,float b,float h,int n)
{
int i=0;
float x,y[20],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;
}
Блок-схема
- прямокутниками:
- трапеціями:
- параболами:
Результат виконання програми
Pr=1,520000;
Tr=2,320000;
Smp=3.013333/
Висновок
На цій лабораторній роботі я навчився обчислювати визначений інтеграл за допомогою функцій.