Самостоятельная работа тема: «Ряды Фурье» Студента группы: Ташкент 2023 Задание №11


Находим параметры уравнения методом наименьших квадратов



бет2/2
Дата22.08.2023
өлшемі230.36 Kb.
#476172
түріСамостоятельная работа
1   2
Furye

1. Находим параметры уравнения методом наименьших квадратов.
Система уравнений МНК:
an + b∑t = ∑y
a∑t + b∑t2 = ∑y*t

t

y

t2

y2

t y

4.7

43.136

22.09

1860.723

202.74

4.8

55.234

23.04

3050.751

265.121

4.9

68.824

24.01

4736.757

337.238

5

84.037

25

7062.217

420.185

5.1

100.856

26.01

10171.953

514.366

5.2

119.49

27.04

14277.788

621.346

5.3

140

28.09

19600.028

742.001

5.4

162.49

29.16

26402.87

877.444

0

0

0

0

0

0

0

0

0

0

40.4

774.066

204.44

87163.087

3980.441

Ср.знач.

77.407

20.444

8716.309

398.044

Для наших данных система уравнений имеет вид:
10a + 40.4b = 774.07
40.4a + 204.44b = 3980.44
Из первого уравнения выражаем a и подставим во второе уравнение
Получаем a = -6.209, b = 20.697
Уравнение тренда:


y=20.697·t-6.209

Эмпирические коэффициенты тренда a и b являются лишь оценками теоретических коэффициентов βi, а само уравнение отражает лишь общую тенденцию в поведении рассматриваемых переменных.
Коэффициент тренда b = 20.697 показывает среднее изменение результативного показателя (в единицах измерения у) с изменением периода времени t на единицу его измерения. В данном примере с увеличением t на 1 единицу, y изменится в среднем на 20.697.
Выводы.
Изучена временная зависимость Y от времени t. На этапе спецификации был выбран линейный тренд. Оценены её параметры методом наименьших квадратов. Возможна экономическая интерпретация параметров модели - с каждым периодом времени t значение Y в среднем увеличивается на 20.697 ед.изм.

#include "stdafx.h"


#include
#include
#include
#include
using namespace std;
int _tmain()
{
setlocale(LC_ALL, "rus");
double *a = NULL, *b = NULL, **sum = NULL;
const int N = 8;
double x[N] = { 4.7, 4.8, 4.9, 5, 5.1, 5.2, 5.3, 5.4 },
y[N] = { 43.1361, 55.2336, 68.8241, 84.0370, 100.8561, 119.4897, 140.001, 162.4896 };
int K, i, j, k, m;
double z, c;
cout << "Порядок k= ";
cin >> K;
cin.get();
b = new double[K + 1];
a = new double[K + 1];
sum = new double *[K + 1];
for (int i = 0; isum[i] = new double[K + 1];
for (i = 0; i{
for (j = 0; j{
sum[i][j] = 0;
for (k = 0; k{
sum[i][j] += pow(x[k], i + j);
}
}
}
for (i = 0; i{
b[i] = 0;
for (k = 0; k{
b[i] += pow(x[k], i) * y[k];
}
}
for (int i = 0; i{
for (int j = 0; jcout << sum[i][j] << "\t";
cout << endl;
}
for (int i = 0; icout << b[i] << "\t";
cout << endl;
for (int i = 0; i{
m = i;
for (int j = i + 1; j{
if (fabs(sum[m][i])m = j;
}
for (int k = i; k{
z = sum[m][k];
sum[m][k] = sum[i][k];
sum[i][k] = z;
}
z = b[m]; b[m] = b[i]; b[i] = z;
for (int i = 0; i{
for (int j = 0; j{
cout << sum[i][j] << setw(15);
}
cout << "b" << i << "= ";
cout << b[i] << endl;
}
cin.get();
for (int j = i + 1; j{
c = -sum[j][i] / sum[i][i];
cout<<"\n\n ! "<for (int k = i; k{
sum[j][k] = sum[j][k] + c*sum[i][k];
}
b[j] = b[j] + c*b[i];
}
}
for (int i = 0; i{
for (int j = 0; j{
cout << sum[i][j] << setw(15);
}
cout << "b" << i << "=";
cout << b[i] << endl;
}
cin.get();
a[K] = b[K] / sum[K][K];
for (int i = K + 1 - 2; i >= 0; i--)
{
for (int k = i + 1; k{
b[i] = b[i] - a[k] * sum[i][k];
}
a[i] = b[i] / sum[i][i];
}
for (int i = 0; icout << "X" << i << "=" << a[i] << endl;
cin.get();
system("Pause");


}


Достарыңызбен бөлісу:
1   2




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет