Міністерство освіти і науки України
Сумський державний університет
Кафедра інформатики
Лабораторна робота №5
з дисципліни
«Чисельні методи»
на тему:
«Метод найменших квадратів»
Варіант 10
Підготував
студент ІН-91
Приходько М. С.
Перевірила
Назаренко Л.Д.
Суми 2011
1. Умова задачі:
Аналітичний опис результатів 9експериментів, у кожному з яких на вхід системи подається значення параметра Х, а на виході реєструється реакція У.
1 Вибрати вид функції.
2 Методом найменших квадратів знайти коефіцієнти.
| 2 | X | 0,75 0,78 0,83 0,88 0,93 0,98 1,03 1,21 1,45 | 
| Y | 10 32,5 47,7 46,1 90 91 95,6 98,2 102 | 
2. Математичне обґрунтування та вибір алгоритму розв’язання задачі
За результатами n
експериментів необхідно одержати залежність , що
може показати,як у середньому y залежить від x. Таке рівняння
називають рівнянням регресії.
 , що
може показати,як у середньому y залежить від x. Таке рівняння
називають рівнянням регресії.
Потрібно
підібрати таку аналітичну залежність у= ,яка якнайкраще в
умовах якогось заданого критерію описувала б отримані результати.
 ,яка якнайкраще в
умовах якогось заданого критерію описувала б отримані результати.
При розв'язанні даної задачі
найбільшого поширення набув метод найменших квадратів (МНК). Цим методом
підбирається таке рівняння y= , при якому сума
квадратів відхилень експериментальных значень від розрахункових , отриманих
після підстановки x=x
 , при якому сума
квадратів відхилень експериментальных значень від розрахункових , отриманих
після підстановки x=x у це рівняння,
набувала б мінімального значення. Аналітично ця вимога має вигляд
 у це рівняння,
набувала б мінімального значення. Аналітично ця вимога має вигляд 

Припустимо
відомо ,що між x і y існує
лінійна залежність y= Невідомі коефіцієнти
 Невідомі коефіцієнти  знайдемо з необхідної умови екстремуму
функції
 знайдемо з необхідної умови екстремуму
функції
 .
.
У результаті одержимо два рівняння:

Розв’язуючи систему ,знаходимо a і b , що при заданому вигляді рівняння регресії забезпечують мінімум S :
 a=
a= ,
 ,
b=
Вибір вигляду регресійної залежності можна здійснити за таблицею. Для цього за вихідними даними обчислюють середні значення хср та уср :
 ,
,   ,
,   ,
,
 
   
   .
. 
 Величина обчислюється так:
 обчислюється так:
1) якщо  збігається з одним із вихідних
 збігається з одним із вихідних  , то
, то  ;
;
2) якщо  знаходиться між
 знаходиться між  і
 і
 ,
,  знаходимо
як ординату відповідної точки на відрізку прямої, що з'єднує вузли
 знаходимо
як ординату відповідної точки на відрізку прямої, що з'єднує вузли  і
 і  , за
формулою
, за
формулою
 .
.
Вибір рівняння регресії здійснюється шляхом пошуку мінімального
значення виразу  і відповідної йому функції, використовуючи
таблицю:
 і відповідної йому функції, використовуючи
таблицю:
| N | 
 | 
 | 
 | 
 | Вигляд функції | 
| 1 | X(ар) | Y(ар) | у=а0+a1x | ||
| 2 | X(га) | Y(ар) | y=a0+a1lnx | ||
| 3 | X(ге) | Y(ар) | у=а0+а1/x | ||
| 4 | X(ар) | Y(ге) | y=a0a1x | ||
| 5 | X(ге) | Y(ге) | y=a0xa1 | ||
| 6 | X(га) | Y(ге) | y=exp(a0+a1/x) | ||
| 7 | X(ар) | Y(га) | y=1/(a0+a1x) | ||
| 8 | X(ге) | Y(га) | y=1/(a0+a1lnx) | ||
| 9 | X(га) | Y(га) | y=x/(a0+a1x) | 
Обчислимо середні значення хср та уср за наведеними вище формулами:
| x(ар) | х(гарм) | х(геом) | y(ар) | y(гарм) | y(геом) | 
| 0,98 | 0,943473 | 0,9617147 | 68,122222 | 39,827739 | 56,21336 | 
Визначимо рівень регресії, як показано в таблиці 1:
| Номер п/п | 
 | 
 | 
 | 
 | Вигляд функції | ||||
| 1 | 0,982222 | 68,12222 | 91,20444 | 0,253082208 | у=а0+a1x | ||||
| 2 | 0,961715 | 68,12222 | 90,63429 | 0,248383594 | y=a0+a1lnx | ||||
| 3 | 0,943473 | 68,12222 | 90,26947 | 0,24534592 | у=а0+а1/x | ||||
| 4 | 0,982222 | 56,21336 | 91,20444 | 0,383655441 | y=a0a1x | ||||
| 5 | 0,961715 | 56,21336 | 90,63429 | 0,379778219 | y=a0xa1 | ||||
| 6 | 0,943473 | 56,21336 | 90,26947 | 0,37727158 | y=exp(a0+a1/x) | ||||
| 7 | 0,982222 | 39,82774 | 91,20444 | 0,563313617 | y=1/(a0+a1x) | ||||
| 8 | 0,961715 | 39,82774 | 90,63429 | 0,560566566 | y=1/(a0+a1lnx) | ||||
| 9 | 0,943473 | 39,82774 | 90,26947 | 0,558790587 | y=x/(a0+a1x) | 
Очевидно, що рівняння регресії матиме вигляд y=a0+a1lnx.Оскільки функція нелінійна, потрібно її лінеаризувати. Запишемо її у вигляді y=a0+a1k., k=lnx. Знайдемо коефіцієнти а0, a1 апроксимуючої функції за формулами:
a1= ,
a1=-144,855
 ,
a1=-144,855
94
a0  = ,  a0  =221,656
 ,  a0  =221,656
Отже апроксимуюча функція матиме вигляд у=221,656-144,855/x
Апроксимуюча та базова функції :

2. Програмна реалізація:
#include<stdio.h>
#include<conio.h>
#include<math.h>
#define N 9
float A1 (float x[N],float y[N])
{
float sumxy=0, sumx=0,sumy=0,sumx2=0,a1;
int i;
for (i=0;i<N;i++)
{
sumxy+=(x[i]*y[i]);
sumx+=x[i];
sumy+=y[i];
sumx2+=(x[i]*x[i]);
}
a1=(sumxy-(1.0/N)*sumx*sumy)/(sumx2-(1.0/N)*sumx*sumx);
return a1;
}
float A0(float x[N],float y[N],float a1)
{
float sumx=0,sumy=0,a0;
int i;
for (i=0;i<N;i++)
{
sumx+=x[i];
sumy+=y[i];
}
a0=(1.0/N)*(sumy-a1*sumx);
return a0;
}
void main()
{
float x[N], y[N],my[N], lx[N], ly[N], x1[N], y1[N];
float min, a0, a1,xar=0,xga=0,xge=1,yar=0,yga=0,yge=1,yy;
int i,k=0;
FILE *p2, *p3;
clrscr();
p2=fopen("znx.txt","r");
p3=fopen("zny.txt","r");
for(i=0;i<N;i++)
{
fscanf(p2,"%f", &x[i]);
fscanf(p3,"%f ",&y[i]);
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.