99402

Аппроксимация полиномиальными функциями по методу наименьших квадратов

Курсовая

Информатика, кибернетика и программирование

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

Русский

2016-09-12

45.88 KB

0 чел.

Федеральное агентство связи

Волго-Вятский филиал Московского технического университета связи и информатики

Курсовая работа

на тему:

«Аппроксимация полиномиальными функциями по методу наименьших квадратов»

Выполнил студент: Проверил преподаватель:

Рогов Сергей Алексеевич Саладаев Е.Н.

Специальность: 210700

Студ. билет: №7БИН2040

2014

Цель работы: Создать приложение для аппроксимации полиномиальными функциями по методу наименьших квадратов (реализации одномерная полиномиальная регрессия). При этом аппроксимирующая функция определяется в виде полиномиальной функции

,

 где  m – степень полинома FQ(X),

  - коэффициенты искомого полинома,

которая будет наиболее близкой к исходной функции заданной табличными значениями, т.е. необходимо определить вектор коэффициентов полинома , при котором полиномиальная функция FQ(X) будет наиболее близкой к заданным в таблице точкам.

В качестве критерия близости используем квадратичный функционал

,     (2)

где    - искомый вектор коэффициентов полинома.


Содержание

  1.  Получение данных от пользователя
  2.  Получение матрицы коэффициентов уравнения (матрица Грама)
  3.  Составление системы уравнений
  4.  Решение системы уравнений методом Гаусса
  5.  Вычисление значений аппроксимирующей функции при данных Х, сравнение со входными Y, вычисление точности функции.
  6.  Выходные данные


  1.  Получение данных от пользователя

Данные от пользователя вводятся в таблицу на первом листе проекта. Программа автоматически загружает данные из ячеек в память:

n = Лист1.Cells(2, 7)

ReDim Values(1, n - 1)

Dim i As Integer, j As Integer

For i = 0 To 1

   For j = 0 To n - 1

       Values(i, j) = Лист1.Cells(j + 3, i + 2).Value

   Next j

Next i

  1.  Получение матрицы коэффициентов (матрица Грама)

Для получения коэффициентов системы необходимо составить матрицу Грама:

Dim degree As Integer

degree = Лист1.Cells(3, 7).Value

ReDim x(degree * 2, n) As Double

ReDim y(degree, n) As Double

For i = 0 To n - 1

   For j = 0 To degree * 2

       x(j, i) = Values(0, i) ^ j

       x(j, n) = Math.Round(x(j, n) + x(j, i), 8)

   Next j

   For j = 0 To degree

       y(j, i) = Values(0, i) ^ j * Values(1, i)

       y(j, n) = y(j, n) + y(j, i)

   Next j

Next i

В переменной degree будет храниться степень полинома. Для удобства дальнейших действий с данными матрицу Грама разделим на два массива, в массив x(degree * 2, n) записываются данные, получаемые из возведения в степень входных значений X, а в массив y(degree,n) значения, получаемые от произведения X в степени j и Y.

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


  1.  Составление системы уравнений

Из полученной матрицы коэффициентов составляем систему уравнений. Коэффициенты системы будут храниться в отдельном массиве linearSystem:

ReDim linearSystem(degree, degree + 1) As Double

For i = 0 To degree

   For j = i To i + degree ' 2

       linearSystem(i, j - i) = x(j, n)

   Next j

   linearSystem(i, degree + 1) = y(i, n)

Next i

  1.  Решение системы уравнений методом Гаусса

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

Dim eqNum As Integer

Dim rate As Double

For eqNum = 0 To degree

   rate = linearSystem(eqNum, eqNum)

   

   For i = 0 To degree + 1

       linearSystem(eqNum, i) = linearSystem(eqNum, i) / rate

   Next i

   

   For i = eqNum + 1 To degree

       rate = linearSystem(i, eqNum)

       For j = 0 To degree + 1

           linearSystem(i, j) = linearSystem(i, j) - linearSystem(eqNum, j) * rate

       Next j

   Next i

Next eqNum

For eqNum = 0 To degree

   For i = 0 To degree

       If linearSystem(eqNum, i) <> 0 And linearSystem(eqNum, i) <> 1 Then

           rate = linearSystem(eqNum, i)

           For j = 0 To degree + 1

               linearSystem(eqNum, j) = linearSystem(eqNum, j) - linearSystem(i, j) * rate

           Next j

       End If

   Next i

Next eqNum

Алгоритм решения системы состоит из двух циклов. В первом цикле формируется треугольная матрица следующим образом:

  1.  Цикл движется по уравнениям системы
  2.  Берётся значение на пересечении текущей строки и главной диагонали (если представить систему как матрицу)
  3.  Первый вложенный цикл проходит по всем коэффициентам текущего уравнения и делит их на значение из п.2
  4.  Второй вложенный цикл вычитает из всех последующих уравнений преобразованное текущее
  5.  После цикл движется по всем следующим уравнениям, проделывая то же самое. Получается треугольная матрица (все элементы ниже главной диагонали равны нулю)
  6.  Второй цикл преобразовывает матрицу в единичную

Поскольку система преобразована, то последние элементы массива системы уже содержат корни. Они выводятся на первый лист и по ним заполняется таблица отчетных значений.


  1.  Вычисление значений аппроксимирующей функции при данных Х, сравнение со входными Y, вычисление точности функции.

Поскольку необходимо сравнить исходные данные с данными, возвращаемыми аппроксимирующей функцией, считаем для входных Х значения функции и выводим их на Лист1:

Dim yVal As Double

Dim accSum As Double

For i = 0 To n - 1

   yVal = 0

   For j = 0 To degree

       yVal = yVal + solutions(j) * Values(0, i) ^ j

   Next j

   Лист1.Cells(3 + i, 4).Value = yVal

   Лист1.Cells(3 + i, 5).Value = (yVal - Values(1, i)) ^ 2

   accSum = Лист1.Cells(3 + i, 5).Value

Next i

Лист1.Cells(n + degree + 2, 4).Value = Лист1.Cells(2, 5).Value & degree & "="

Лист1.Cells(n + degree + 2, 5).Value = accSum


  1.  Выходные данные

В ходе выполнения программы на первых двух листах выводятся данные, получаемые при преобразованиях и вычислениях. Выводятся они для отчета, а также использовались при отладке.

По порядку выполнения программы выводятся следующие данные:

  1.  Таблица коэффициентов

X0

X1

X2

X3

X4

X0Y

X1Y

X2Y

1

-1

1

-1

1

0,01

-0,01

0,01

1

-0,9

0,81

-0,729

0,6561

-0,09

0,081

-0,0729

1

-0,8

0,64

-0,512

0,4096

-0,16

0,128

-0,1024

1

-0,7

0,49

-0,343

0,2401

-0,21

0,147

-0,1029

1

-0,6

0,36

-0,216

0,1296

-0,24

0,144

-0,0864

1

-0,5

0,25

-0,125

0,0625

-0,25

0,125

-0,0625

1

-0,4

0,16

-0,064

0,0256

-0,24

0,096

-0,0384

1

-0,3

0,09

-0,027

0,0081

-0,21

0,063

-0,0189

1

-0,2

0,04

-0,008

0,0016

-0,15

0,03

-0,006

1

-0,1

0,01

-0,001

0,0001

-0,08

0,008

-0,0008

1

0

0

0

0

0,01

0

0

1

0,1

0,01

0,001

0,0001

0,12

0,012

0,0012

1

0,2

0,04

0,008

0,0016

0,25

0,05

0,01

1

0,3

0,09

0,027

0,0081

0,4

0,12

0,036

1

0,4

0,16

0,064

0,0256

0,57

0,228

0,0912

1

0,5

0,25

0,125

0,0625

0,76

0,38

0,19

1

0,6

0,36

0,216

0,1296

0,97

0,582

0,3492

1

0,7

0,49

0,343

0,2401

1,2

0,84

0,588

1

0,8

0,64

0,512

0,4096

1,45

1,16

0,928

1

0,9

0,81

0,729

0,6561

1,71

1,539

1,3851

1

1

1

1

1

2

2

2

21

0

7,7

0

5,0666

7,82

7,723

5,0975

  1.  Коэффициенты системы уравнений

21

0

7,7

7,82

0

7,7

0

7,723

7,7

0

5,0666

5,0975

  1.  Преобразованная система

1

0

0

0,007856

0

1

0

1,002987

0

0

1

0,99416

  1.  Корни системы

Корни

0,007856

1,002987

0,99416

  1.  Таблица входных данных, значений аппроксимирующей функции и квадратичного функционала

 

x

y

σ

1

-1,00

0,01

-0,00097

0,000120367

2

-0,90

-0,09

-0,08956

1,91005E-07

3

-0,80

-0,16

-0,15827

2,98768E-06

4

-0,70

-0,21

-0,2071

8,42826E-06

5

-0,60

-0,24

-0,23604

1,56896E-05

6

-0,50

-0,25

-0,2451

2,40304E-05

7

-0,40

-0,24

-0,23427

3,27911E-05

8

-0,30

-0,21

-0,20357

4,13942E-05

9

-0,20

-0,15

-0,15298

8,85349E-06

10

-0,10

-0,08

-0,0825

6,25795E-06

11

0,00

0,01

0,007856

4,59884E-06

12

0,10

0,12

0,118096

3,62593E-06

13

0,20

0,25

0,248219

3,17081E-06

14

0,30

0,40

0,398226

3,14694E-06

15

0,40

0,57

0,568116

3,5496E-06

16

0,50

0,76

0,757889

4,45594E-06

17

0,60

0,97

0,967545

6,02494E-06

18

0,70

1,20

1,197085

8,49743E-06

19

0,80

1,45

1,446508

1,21961E-05

20

0,90

1,71

1,715814

3,37987E-05

21

1,00

2,00

2,005003

2,50282E-05

  1.  Суммы квадратичных функционалов

σ2=

2,50282E-05

σ3=

2,99193E-06

σ4=

1,15802E-07

σ5=

1,20453E-06

По данным из этих таблиц формируются два графика:

  1.  График сравнения входных Y и возвращаемых полученной функцией

  1.  График изменения точности аппроксимации в зависимости от степени полинома


Заключение

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


 

А также другие работы, которые могут Вас заинтересовать

14440. Обробка спідниці після примірки 128 KB
  Тема: 2.3.6 Обробка спідниці після примірки. Мета: Навчити обробляти виточки складки бічні зрізи. Виховувати любов до праці уважність під час трудових завдань. Розвивати точність вміння працювати самостійно використовуючи роздатковий матеріал. Інструменти...
14441. Обробка нижнього зрізу спідниці 654 KB
  Тема: 2.3.7. Обробка нижнього зрізу спідниці. Мета: Навчити обробляти низ спідниці відповідно до виду тканини. Виховувати любов до праці бережливе ставлення до інструменту уважність під час трудових завдань. Розвивати точність вміння працювати самості
14442. Кінцева обробка спідниці 98 KB
  Тема:2.3.8 Кінцева обробка спідниці. Мета: Навчити виконувати кінцеву обробку виробу. Виховувати любов до праці бережливе ставлення до інструменту уважність під час трудових завдань. Розвивати естетичний смак вміння працювати самостійно використовуючи роздатковий ...
14443. Остаточна обробка виробу. Волого - теплова обробка. Контроль якості готового виробу 133 KB
  Тема. Остаточна обробка виробу. Волого теплова обробка. Контроль якості готового виробу. Мета. Навчити виконувати остаточну обробку виробу. Виховувати любов до праці бережливе ставлення до інструменту уважність під час трудових завдань. Розвивати вміння пра...
14444. В’язання спицями 279 KB
  Тема. В’язання спицями Мета. Ознайомити учнів з одним із видів декоративноужиткового мистецтва в’язанням інструментами і матеріалами для вязання спицями. Організацією робочого місця. Правилами безпечної праці та санітарногігієнічні вимоги. Прийомами роботи спиця...
14445. Добавляння й убавлення петель 416 KB
  Тема. Добавляння й убавлення петель Мета. Ознайомити учнів з способами добавлення і убавлення петель. Основні поняття: спиця пряжа трафарет петля. Очікувані результати навчальної діяльності: проводити добавлення і убавлення петель. Інструменти і матеріали: с...
14446. Технологія вишивання мережок 85.5 KB
  Тема. Технологія вишивання мережок. Мета: ознайомити учнів із технологією виконання мережок навчити виконувати мережки одинарний прутик подвійний прутик; виховувати акуратність і точність під час виконання вишивальних робіт. Обладнання: зразки швів виробів
14447. Технологія вишивання мережок. Розробка композиції виробу 74.5 KB
  Тема. Технологія вишивання мережок. Розробка композиції виробу. Мета: розширити знання учнів про технологію виконання мережок навчити виконувати мережку роздільний прутик; формуй ти художній смак почуття стилю й кольору під час розробку композиції вишивки підбору ...
14448. Кінцева обробка виробу. Догляд за вишитими виробами 45.5 KB
  Тема. Кінцева обробка виробу. Догляд за вишитими виробами. Мета: удосконалювати прийоми оздоблення виробів; навчити оформляти краї вишитих виробів доглядати за вишитими виробами; виховувати акуратність під час виконання вишивальних робіт; розвивати творчі здібності у...