Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторна по ЧМ 3

.docx
Скачиваний:
0
Добавлен:
26.03.2021
Размер:
671.4 Кб
Скачать

Лабораторна робота №3

виконав студент групи АК-3-2ск

Козловський Євгеній

Варіант 14

Мета роботи: Опанувати методи побудови емпіричних функцій

Використовуючи метод найменших квадратів (МНК), необхідно побудувати аналітичну функцію (емпіричну функцію, математичну модель), яка найкраще описує експериментальні дані, тобто графік такої функції повинен як найближче проходити біля точок (xi,yi) .

Для заданого варіанта табличних даних треба:

1. побудувати лінійну емпіричну функцію виду y=ax+b ;

2. побудувати квадратичну емпіричну функцію виду y=ax2+bx+c;

3. побудувати емпіричну функцію виду y=f(x,a,b) (або y=f(x,a,b,c), де функція f(x,a,b)(f(x,a,b,c)) вибирається самостійно f(x,a,b)=axb.

З адаються масиви експериментальних даних, де: y - деякий параметр, залежний від x, тобто y є деякою функцією від x: y=f(x), аналітичний вид якої невідомий; yi - результат i-го виміру при x=xi, i=0,1,2,...,n.

Шукана аналітична функція f(x) і є математичною моделлю, яка описує залежність y від x, n - номер останнього експерименту (або виміру) (нумерація починається від 0).

Рисунок 1.1 – Розташування експериментальних точок на декартовій площині XOY

Метод найменших квадратів полягає в наступному:

  1. н а основі аналіза розташування точок (xi,yi) на декартовій площині XOY, вибирається клас емпіричних функцій y=f(x,a,b,c,...), графіки яких проходять облизу точок (xi,yi); a,b,c,... - невідомі шукані параметри;

  2. будується функція нев'язки виду

(функція нев'язки пропорційна середньоквадратичній похибці);

  1. знаходяться невідомі параметри a,b,c,... з умови мінімізації функції нев'язки   по параметрам a,b,c,...;

  2. при одержаних параметрах a,b,c,... обчислюється відносна похибка знайденої емпіричної функції   за формулою

або

  1. якщо  , де ε - задана точність математичної моделі, то побудовану емпіричну функцію можна взяти за основу для подальшого математичного моделювання, для розв'язання задач оптимізації або автоматизації тих чи інших процесів; якщо ж  , то побудована емпірична функція незадовільно описує експериментальні дані, тобто є неадекватною процесу, що досліджується і отже, треба вибрати інший клас емпіричних функцій і повторити послідовність дій метода МНК.

Побудова лінійної емпіричної функції

Будемо шукати аналітичну залежність y=f(x) в класі лінійних функцій виду

Будуємо функцію нев'язки

Для мінімізації функції нев'язки   по параметрах   використаємо необхідну умову екстремума функції багатьох змінних.

Нагадаємо, що необхідною умовою екстремума функції   по параметрах   є рівність нулю перших частинних похідних функції   по   та по 

Рисунок 1.2 – Графік лінійної емпіричної функції за допомогою програмного забезпечення MathCad

Рисунок 1.3 – Обчислення для побудови графіка за допомогою програмного забезпечення MathCad

Побудова параболічної (квадратичної) емпіричної функції

Тепер будемо шукати аналітичну залежність y=f(x) в класі квадратичних функцій виду

Будуємо функцію нев'язки

Для мінімізації функції нев'язки   по параметрах   використаємо необхідну умову екстремума функції багатьох змінних, у відповідності до якої

Знайдемо розв'язок останньої системи відносно 

Рисунок 1.4 – Обчислення для побудови графіка за допомогою програмного забезпечення MathCad

Рисунок 1.5 – Графік лінійної та квадратичної емпіричної функції за допомогою програмного забезпечення MathCad

Побудова емпіричної функції у вигляді лінійної комбінації базисних функцій

Загальна кількість базисних функцій - (m+1)

- заданий вектор базисних функцій

- емпірична функція, в якій αj - невідомі шукані параметри

У відповідності до методу найменших квадратів невідомі параметри   знаходяться як розв'язок наступної системи лінійних алгебраїчних рівнянь 

Матриця   та вектор вільних членів   формуються таким чином

Рисунок 1.6 – Обчислення для побудова емпіричної функції за допомогою програмного забезпечення MathCad

Рисунок 1.7 – Графік емпіричної функції, лінійної відносно невідомих параметрів за допомогою програмного забезпечення MathCad

Остання побудована емпірична функція є найточнішою з розглянутих емпіричних функцій. Шляхом підбору   та базисних функцій   можна побудувати ще більш точну емпіричну функцію (математичну модель).

Програма

Метод найменших квадратів

#include <stdio.h>

#include <stdlib.h>

#include <iostream>

#include <math.h>

using namespace std;

double arr[2][10]={

{2, 2.33, 2.67, 3, 3.33, 3.67, 4, 4.33, 4.67, 5},

{1.89,2.15,2.25,2.15,1.83,1.82,1.71,1.82,2.23, 1.71}};

double f1(double x,double *a,double *b)

{ return (*a*x+*b);

double ** getData(int n) {

double **f;

f = new double*[2];

f[0] = new double[n];

f[1] = new double[n];

for (int i = 0; i<n; i++) {

f[0][i]=arr[0][i];

f[1][i]=arr[1][i]; }

return f;

void getApprox(double **x, double *a, double *b, int n) {

double sumx = 0;

double sumy = 0;

double sumx2 = 0;

double sumxy = 0;

for (int i = 0; i<n; i++) {

sumx += x[0][i];

sumy += x[1][i];

sumx2 += x[0][i] * x[0][i];

sumxy += x[0][i] * x[1][i];}

*a = (n*sumxy - (sumx*sumy)) / (n*sumx2 - sumx*sumx);

*b = (sumy - *a*sumx) / n;

double q,q1;

for (int i = 0; i<n; i++) {

q += pow(x[1][i]-f1(x[0][i],a,b),2);

q1 += pow((x[1][i]),2); }

printf("\nПохибка 1: %0.3lf\n",sqrt(q/q1));

q=0;

for (int i = 0; i<n; i++) {

q += pow((x[1][i]-f1(x[0][i],a,b))/(x[1][i]),2); }

printf("Похибка 2: %0.3lf\n",sqrt(pow(n,-1)*q));

int main() {

double **x, a, b;

int n;

system("chcp 1251");

system("cls");

printf("Введіть кількість точок(n=10): ");

scanf("%d", &n);

x = getData(n);

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

printf("x=%1.2f y=%1.2lf\n", x[0][i], x[1][i]);

getApprox(x, &a, &b, n);

printf("\na = %0.3lf\nb = %0.3lf", a, b);

return 0;

Рисунок 1.8 – Результат виконання програми

Висновок: на даній лабораторній роботі була розглянута побудова математичних моделей методом найменших квадратів (МНК) за допомогою лінійної, параболічної, показникової, степеневої та дробово-раціональної апроксимації.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]