В
ТАК
В
НІ
В В
i = 1
S1 = S1 + f (a + (2 * i +1) * h)
<В
i = n/2
В
В В
3. Лістинг:
# include
# include
# include
main ()
{
double a, b, er, eps, f (double), s, trap (double, double, double, double (*) (double));
clrscr ();
printf (" n Задайте межі інтегрування і точність: ");
scanf ("% Lf% lf% lf", & a, & b, & eps);
s = trap (a, b, eps, f);
printf (" n Інтеграл від a =% 3.2lf до b =% 3.2lf дорівнює% lf ", a, b, s);
getch ();
}
double f (double x)
{
return x * x * x +2 * (x * x) -3 * x-8;
}
double trap (double a, double b, double eps, double (* f) (double))
{
double h, s, s0, s1, sn;
int i, n;
s = 1; sn = 101;
n = 4;
s0 = (f (a) + f (b))/2;
s1 = f ((a + b)/2);
while (fabs (s-sn)> eps) {
sn = s;
h = (b-a)/n;
for (i = 0; i
s1 + = f (a + (2 * i +1) * h);
s = h * (s0 + s1);
n * = 2;
}
return s;
}
4. Технічні вимоги:
Ім'я змінної
Тип
Призначення
n
int
число розбиття відрізка [a, b]
i
int
лічильник циклів
a
double
Нижня межа інтегрування
b
double
Верхня межа інтегрування
h
double
крок розбиття відрізка
eps
double
допустима відносна помилка
f
double (*)
покажчик на...