Рефераты - Афоризмы - Словари
Русские, белорусские и английские сочинения
Русские и белорусские изложения

Сглаживание экспериментальных данных методом скользящего среднего

Работа из раздела: «Экономико-математическое моделирование»

/

Сглаживание экспериментальных данных методом скользящего среднего

1. Математическая модель решения

Сначала генерируется выборка из К элементов. После получения выборки генерируется сглаженный ряд методом скользящего среднего исходя из введенной маски. Затем генерируется сглаженный ряд методом взвешенного среднего исходя из маски 5. После этого вычисляются минимальное и максимальное значение выборки. Затем определяются масштабные коэффициенты для вывода графика, и выводится график.

Таблица имен

Y

Выборка

Y2

Сглаженный ряд методом скользящего среднего

Y3

Сглаженный ряд методом взвешенного среднего

K

Объем выборки

N

Маска

J

Половина маски

M

Математическое ожидание выборки

S

Среднеквадратичное отклонение выборки

SX

Масштаб графика по оси X

SY

Масштаб графика по оси Y

i

Временная переменная

2. Блок-схема алгоритма

/

/

3. Код программы

public partial class Form1: Form

{

public Form1 ()

{

InitializeComponent();

}

private Random R = new Random();

private float NormRasp (float m, float sg)

{

float sum = 0;

for (int i = 0; i < 12; i++)

sum += (float) R. NextDouble();

return (m + sg * (sum - 6));

}

private void button1_Click (object sender, EventArgs e)

{

int K = Convert. ToInt32 (textBox1. Text);

int N = Convert. ToInt32 (textBox2. Text);

float M = Convert. ToInt32 (textBox4. Text);

float S = Convert. ToInt32 (textBox3. Text);

List<float> Y = new List<float>(K);

for (int i = 0; i < K; i++)

Y. Add (NormRasp(M, S));

int j = (N - 1) / 2;

List<float> Y2 = new List<float>(K);

for (int i = 0; i < K; i++)

{

if ((i < j) || (i >= K - j)) Y2. Add(0);

else

{

float mid = 0;

for (int ii = i - j; ii < i + j; ii++)

mid += Y[ii];

Y2. Add (mid / N);

}

}

List<float> Y3 = new List<float>(K);

for (int i = 0; i < K; i++)

{

if ((i < 2) || (i >= K - 2)) Y3. Add(0);

else

Y3. Add((-3*Y [i-2]+12*Y [i-1]+17*Y[i]+12*Y [i+1] - 3*Y [i+2])/35);

}

float min = Y[0], max = Y[0];

for (int i = 0; i < K; i++)

{

if (Y[i] < min) min = Y[i];

if (Y[i] > max) max = Y[i];

}

float SX = (float) pictureBox1. Width / K;

float SY = (float) pictureBox1. Height / (max - min);

Bitmap bmp = new Bitmap (pictureBox1. Width, pictureBox1. Height);

Graphics gr = Graphics. FromImage(bmp);

gr. Clear (Color. White);

for (int i = 0; i < K-1; i++)

{

gr. DrawLine (Pens. Black, i * SX, (Y[i] - min) * SY, (i + 1) * SX, (Y [i + 1] - min) * SY);

if ((i >= j) && (i < K - j-1))

gr. DrawLine (Pens. Red, i * SX, (Y2 [i] - min) * SY, (i + 1) * SX, (Y2 [i + 1] - min) * SY);

if ((i >= 2) && (i < K - 3))

gr. DrawLine (Pens. Blue, i * SX, (Y3 [i] - min) * SY, (i + 1) * SX, (Y3 [i + 1] - min) * SY);

}

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

{

gr. DrawLine (Pens. LightGray, i * SX * K / 10, 0, i * SX * K / 10, pictureBox1. Height);

gr. DrawString (Convert. ToString (i * K / 10), Font, Brushes. Black, i * SX * K / 10, 0);

}

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

{

gr. DrawLine (Pens. LightGray, 0, i * SY * (max - min) / 4, pictureBox1. Width, i * SY * (max - min) / 4);

gr. DrawString (Convert. ToString (i * (max - min) / 4 + min), Font, Brushes. Black, 0, i * SY * (max - min) / 4);

}

pictureBox1. Image = bmp;

}

}

4. Шаблон ввода входных данных

5. Результаты работы программы

программа алгоритм скользящий средний

Вывод

Был разработан алгоритм и написана программа на языке С#, генерирующая значения случайных величин, имеющих нормальный закон распределения. С помощью ее удалось осуществить сглаживание экспериментальных данных, с помощью маски простого скользящего среднего и маски взвешенного скользящего среднего.

ref.by 2006—2025
contextus@mail.ru