1курс,2семестр лабы для зачета / лаба6
.docxГУО «БГУИР»
Факультет радиотехники и электроники
Кафедра микро и наноэлектроники
Отчет по
Лабораторной работе №6
Алгоритмы вычисления производных и интегралов
Подготовил:
Студент гр.943201
Королюк Н.В
Проверила:
Семижон Е.А.
Минск 2020
Цель: изучить численные алгоритмы нахождения значений производных и интегралоv
Вариант №11
Код: #include <cmath>
#include <fstream>
#include <iostream>
using namespace std;
double F(double x)
{
return pow(x, 3) + 6 * pow(x, 2) - 0.02 * exp(x);
}
double D1F(double x1, double h)
{
return (F(x1 + h) - F(x1 - h)) / 2 * h;
}
double D2F(double x2, double h2)
{
return (F(x2 + h2) - 2 * F(x2) + F(x2 - h2)) / pow(h2, 2);
}
double Gauss2(double a1, double b1, double m1)
{
double s = 0, sm = 0, h4 = 0, xi0, xi1, xi2;
int im;
h4 = (b1 - a1) / m1;
xi0 = a1 + h4 / 2;
xi1 = xi0 - (h4 / 2) * 0.5773502692;
xi2 = xi0 + (h4 / 2) * 0.5773502692;
for (im = 1; im <= m1; im++)
{
sm = sm + F(xi1) + F(xi2);
xi0 = xi0 + h4;
xi1 = xi0 - (h4 / 2) * 0.5773502692;
xi2 = xi0 + (h4 / 2) * 0.5773502692;
}
s = (h4 / 2) * sm;
return s;
}
int main()
{
int a = -5, b = 3,m=20;
double x, y, d1, d2, d1t, d2t, del1, del2, t,h=0.1,eps=0.001;
cout << "x\t" << "y\t" << "D1T\t" << "D1\t" << "D2T\t"
<< "D2\t" << "del1\t" << "del2\t" << endl;
for (int j = 1; j <= 21; j++)
{
x = a + (j - 1) * (b - a) / 20;
y = F(x);
d1 = D1F(x, h);
d2 = D2F(x, h);
d1t = 3 * pow(x, 2) + 12 * x - 0.02 * exp(x);
del1 = fabs(d1t - d1);
d2t = 6 * x - 0.02 * exp(x) + 12;
del2 = fabs(d2t - d2);
cout << x << "\t" << fixed << y << "\t" << d1t << "\t" <<
d1 << "\t" << d2t << "\t" << d2 << "\t" << del1 << "\t" << del2 << endl;
}
t = Gauss2(a, b, m);
eps = fabs(167.6 - t);
cout << "Integral: " << t << endl << "Error: " << eps << endl;
return 0;
}