| Ім'я файлу: ІТ-11.2 лаб №5.docx Розширення: docxРозмір: 395кб.Дата: 05.01.2023скачати МІНІСТЕРСТВО ОСВІТИ ТА НАУКИ УКРАЇНИ
СУМСЬКИЙ ДЕРЖАВНИЙ УНІВЕРСИТЕТ
КАФЕДРА КОМП’ЮТЕРНИХ НАУК
ЗВІТ
з дисципліни Чисельні методи
за результатами виконання лабораторної роботи №5
на тему «Чисельна апроксимація функцій методом найменших квадратів (МНК)»
Виконав: студент гр. ІТ-11/2
варіант 1
Перевірив: викладач
Чибіряк Я.І.
СУМИ 2022
Постановка задачі
Методом найменших квадратів виконати апроксимацію функції, що задана таблицею значень X та Y
Математичне обґрунтування алгоритму
Метою виконання апроксимацiї отриманої у вигляді пар точок функції зміни температури по товщині стінки для останнього моменту часу є знаходження математичної залежності:
Т=f(x)= A(2)·X2+A(1)·X+A(0) (2.1)
Математичними моделями стохастичних процесів, тобто таких, які здійснюються під впливом випадкових факторів, в більшості випадків є емпіричні рівняння регресії, одержані в результаті обробки результатів досліджень. Такі рівняння, як правило, не відображають зв'язки і фізичну взаємодію між різними факторами, які обумовлюють процес, але дозволяють встановити залежність між вхідними та вихідними чинниками системи.
Якщо результати дослідів можна вважати в деякій мірі випадковими, то для побудови рівняння регресії застосовують апроксимацію табличних даних методом найменших відхилень. Суть методу полягає в побудові такого рівняння, яке б забезпечувало мінімальні відхилення експериментальних результатів від апроксимуючої кривої в усьому вивченому діапазоні. При цьому не ставиться завдання, щоб одержана крива точно проходила хоча б через одну точну множини [X,Y]. Такий підхід дозволяє в деякій мірі зменшити вплив похибок вимірювань та помилок, допущених в ході експерименту. З математичної точки зору ця умова може бути досягнута якщо для кожного вузла{xi,yi} величина Si (див. малюнок 2) буде мінімально можливою.
Рис. 2.1. Метод найменших відхилень. Геометрична інтерпретація
Відхилення S можуть бути як додатніми так і від'ємними (S10, S20), але оскільки знаки нас не цікавлять, будемо розглядати квадрати цих відхилень. Висунемо вимогу, щоб квадрати відхилень були мінімальними:
Si2 = (Yei - Yai)2 min (2.2)
Вираз називають критерієм найменших квадратів, а метод визначення параметрів апроксимуючої кривої з використанням цього критерію -- методом найменших квадратів.
Укрупнена блок-схема алгоритму має вигляд, показаний на малюнку 2.2.
В блоці вводу вхідних даних задаються: число вузлів N, порядок апроксимуючого поліному M, табличні значення змінних xi, yi, та крок зміни аргументу. Наступним короком є формування масиву [X,Y] та обчилення сум ?хmy. Далі формується матриця Грамма - розширена матриця системи рівнянь відносно невідомих коефіцієнтів cі. Розмір розширеної матриці системи (22) встановлюється в залежності порядку поліному: число рядків M=M+1, число стовпців M=M+2.
Наступним кроком алгоритм передбачає рішення системи (22) методом Гауса та вивід коефіцієнтів рівняння регресії.
Заключна циклічна процедура дозволяє вирахувати значення функції в вузлових та не вузлових точках відрізку [a,b] і визначити похибку апроксимації.
Рис. 2.2. Укрупнена блок-схема алгоритму методу найменших квадратів
За допомогою програми 2- APROKSIM.EXE ми знаходимо математичний вираз функції, що описує залежність температури від товщини стінки парами точок: X;T(x).
Вихідними даними для програми є: кількість вузлів інтерполяції, значення аргументу (Х) та функції (Т(х)) в цих вузлах, а також ступінь полінома.
За результатами роботи програми були отримані наступні значення коефіцієнтів полінома:
a(0) = 5.984; a(1) = -3.726;
Тоді функція, що описує залежність температури від товщини стінки буде мати вигляд:
, °К
(2.3)алгоритм апроксимація різничний Чисельне інтегрування функцій базується на геометричному тлумаченні визначеного інтегралу як площі фігури, обмеженої прямими х=а, х=b, віссю абсцис ОХ та кривої у=F(x).
Пакетна реалізація методу
Вибір виду регресійної залежності
Визначення коефіцієнтів регресії МНК
Побудова графіка функції регресії і графіка точок апроксимації і точкового графіка заданих точок апроксимації
4 Програмна реалізація методу 4.1 Текст програми з коментарями. #include
#include
#include
using namespace std;
int main()
{
setlocale(LC_ALL, "ukr");
int i, j, k, n;
float qX;
float wX;
cout << "Введiть кiлькiсть точок:\n";
cin >> n;
float da, db, a, b;
float* x = new float[n];
float* y = new float[n];
cout << "\nВведiть значення X:\n";
for (i = 0; i < n; i++) {
cin >> x[i];
}
cout << "\nВведiть значення Y:\n";
for (i = 0; i < n; i++) {
cin >> y[i];
}
float xsum = 0, x2sum = 0, ysum = 0, xysum = 0, qXsum = 0, wXsum = 0, YX = 0;
for (i = 0; i < n; i++)
{
xsum = xsum + x[i];
ysum = ysum + y[i];
wXsum = wXsum + (log(x[i]));
qXsum = qXsum + (pow(log(x[i]), 2));
YX = YX + (y[i] * log(x[i]));
}
float masxy[2][2], masXY[1][2];
masxy[0][0] = n;
masxy[0][1] = wXsum;
masxy[1][0] = wXsum;
masxy[1][1] = qXsum;
masXY[0][0] = ysum;
masXY[0][1] = YX;
float d;
d = ((masxy[0][0] * masxy[1][1]) - (masxy[0][1] * masxy[1][0]));
masxy[0][0] = masXY[0][0];
masxy[1][0] = masXY[0][1];
da = (pow(-1, 2) * masxy[0][0] * masxy[1][1]) + (pow(-1, 3) * masxy[1][0] * masxy[0][1]);
masxy[0][0] = n;
masxy[0][1] = ysum;
masxy[1][0] = wXsum;
masxy[1][1] = YX;
db = (pow(-1, 2) * masxy[0][0] * masxy[1][1]) + (pow(-1, 3) * masxy[1][0] * masxy[0][1]);
a = da / d;
b = db / d;
float* y_fit = new float[n];
for (i = 0; i < n; i++) {
y_fit[i] = a + b * (log(x[i]));
}
cout << "Номер" << setw(5) << "x" << setw(19) << "y" << setw(19) << "y" << endl;
cout << "-----------------------------------------------------------------\n";
for (i = 0; i < n; i++)
cout << i + 1 << "." << setw(8) << setprecision(6) << x[i] << setw(19) << setprecision(6) << y[i] << setw(21) << setprecision(6) << y_fit[i] << endl;
cout << "\nЛiнiя має вид:\n\n" << b << "x" << " + " << a << endl;
return 0;
} 4.2 Результати виконання програми.
Висновки
В ході виконання лабораторної роботи було апроксимовано функцію методом найменших квадратів проектно та програмно.
Побудовано графік початкових значень для визначення коректності результату скачати
|