ТЕКСТ ПРОГРАММЫ ЛАБ1:
#include "stdafx.h"
#include <iostream>
#include <math.h>
using namespace std;
double f(double x)
{
double Y;
Y = 2 * pow(x, 2) - 4 * x;
return Y;
}
void main()
{
setlocale(LC_ALL, "Russian");
double h, a, b, x[10], y[10], S, ILP, IPP, ITR, C1, C2, IPR, xzr[10], yzr[10], IZR, IT, D, O;
int i, n;
cout << "Введи n, a, b\n";
cin >> n >> a >> b;
cout << "Введи точное значение интеграла\n";
cin >> IT;
h = (b - a) / n;
cout << "шаг" << h << endl;
cout << "Таблица значений подынтегральной функции\n";
cout << "\tx\tf(x)\n";
for (i = 0; i <= n; i++)
{
x[i] = a + i*h;
y[i] = f(x[i]);
printf("%9.3f\t%6.3f\n", x[i], y[i]);
}
cout << "Метод левых прямоугольников\n";
S = 0;
for (i = 0; i<n; i++)
S = S + f(x[i]);
ILP = h*S;
printf("ILP = %6.3f\n", ILP);
cout << "Абсолютная и относительная погрешность метода левых прямоугольников\n";
D = fabs(ILP - IT);
O = D / fabs(IT) * 100;
printf("D = %6.3f\tO = %6.3f\n", D, O);
cout << "Метод правых прямоугольников\n";
S = 0;
for (i = 1; i <= n; i++)
S = S + f(x[i]);
IPP = h*S;
printf("IPP = %6.3f\n", IPP);
cout << "Абсолютная и относительная погрешность метода правых прямоугольников\n";
D = fabs(IPP - IT);
O = D / fabs(IT) * 100;
printf("D = %6.3f\tO = %6.3f\n", D, O);
cout << "Метод трапеций\n";
S = 0;
for (i = 1; i<n; i++)
S = S + f(x[i]);
ITR = h*((f(x[0]) + f(x[n])) / 2 + S);
printf("ITR = %6.3f\n", ITR);
cout << "Абсолютная и относительная погрешность метода трапеций \n";
D = fabs(ITR - IT);
O = D / fabs(IT) * 100;
printf("D = %6.3f\tO = %6.3f\n", D, O);
cout << "Метод парабол\n";
C1 = 0;
for (i = 1; i<n; i = i + 2)
C1 = C1 + f(x[i]);
C2 = 0;
for (i = 2; i<n; i = i + 2)
C2 = C2 + f(x[i]);
IPR = h / 3 * (f(x[0]) + 4 * C1 + 2 * C2 + f(x[n]));
printf("IPR = %6.3f\n", IPR);
cout << "Абсолютная и относительная погрешность метода парабол\n";
D = fabs(IPR - IT);
O = D / fabs(IT) * 100;
printf("D = %6.3f\tO = %6.3f\n", D, O);
cout << "Таблица значений подынтегральной функции для метода центральных прямоугольников\n";
cout << "\txzr\tf(xzr)\n";
for (i = 0; i<n; i++)
{
xzr[i] = a + (i + 0.5)*h;
yzr[i] = f(xzr[i]);
printf("%9.3f\t%6.3f\n", xzr[i], yzr[i]);
}
cout << "Метод центральных прямоугольников\n";
S = 0;
for (i = 0; i<n; i++)
S = S + f(xzr[i]);
IZR = h*S;
printf("IZR = %6.3f\n", IZR);
cout << "Абсолютная и относительная погрешность метода центральных прямоугольников\n";
D = fabs(IZR - IT);
O = D / fabs(IT) * 100;
printf("D = %6.3f\tO = %6.3f\n", D, O);
}
РЕЗУЛЬТАТ ПРОГРАММЫ: