Скачиваний:
16
Добавлен:
01.06.2020
Размер:
361.18 Кб
Скачать

ГУО «БГУИР»

Факультет радиотехники и электроники

Кафедра микро и наноэлектроники

Отчет по

Лабораторной работе №4

Аппроксимация функций

Подготовил:

Студент гр.943201

Королюк Н.В.

Проверила:

Семижон Е.А

Минск 2020

Цель: изучить алгоритмы аппроксимации функций; освоить методику построения и использования алгебраических интерполяционных много-членов Лагранжа и Ньютона

Вариант №11

Код: #include "stdafx.h"

#include <iostream>

#include <math.h>

#include <iomanip>

using namespace std;

double countF(double x)

{

return pow(x,3) + 6*pow(x,2) - 0.02*exp(x);

}

int main()

{

int n = 5;

int m = 5;

double a = -5;

double b = 3;

double X[21];

double Y[21];

double L[21];

double D[21];

double c[21];

double a1[21][21];

double d;

for (int t = 1; t <= 21; t++)

{

X[t] = 0; Y[t] = 0; L[t] = 0; D[t] = 0;

}

cout << "Thnachenia x,y:" << endl;

for (int i = 1; i <= 4; i++)

{

X[i] = a + (i - 1) * (b - a) / (m - 1);

Y[i] = countF(X[i]);

cout << "x[" << i << "]=" << X[i] << "\t\t";

cout << "y[" << i << "]=" << Y[i] << endl;

}

for (int k = 1; k <= n; k++)

{

a1[k][1] = 1;

int i = 0;

for (int s = 2; s <= n; s++)

{

i = i + 1;

if (i == k)

{

i = i + 1;

}

d = X[k] - X[i];

a1[k][s] = a1[k][s - 1] / d;

for (int j = s - 1; j >= 2; j--)

{

a1[k][j] = (a1[k][j - 1] - a1[k][j] * X[i]) / d;

}

a1[k][1] = -a1[k][1] * X[i] / d;

}

}

for (int i = 1; i <= n; i++)

{

c[i] = 0;

for (int k = 1; k <= n; k++)

{

c[i] = c[i] + a1[k][i] * Y[k];

}

}

for (int j = 1; j <= 21; j++)

{

X[j] = a + (j - 1) * (b - a) / 20;

Y[j] = countF(X[j]);

L[j] = c[1] + X[j] * (c[2] + X[j] * (c[3] + X[j] * c[4]));

D[j] = fabs(Y[j] - L[j]);

}

cout << endl;

for (int i = 1; i <= 21; i++)

{

cout << fixed << "X[" << i << "]=" << X[i] << "\t";

cout << "Y[" << i << "]=" << Y[i] << "\t";

cout << "L[" << i << "]" << "=" << L[i] << "\t";

cout << "D[" << i << "]" << "=" << D[i] << endl;

}

return 0;

}

Соседние файлы в папке 1курс,2семестр лабы для зачета