99402

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

Курсовая

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

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

Русский

2016-09-12

45.88 KB

5 чел.

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

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

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

на тему:

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

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

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

Специальность: 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.  График изменения точности аппроксимации в зависимости от степени полинома


Заключение

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


 

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

5212. Загальні відомості про табличний процесор MS Excel 39.39 KB
  Загальні відомості про табличний процесор MSExcel 1. Основні можливості електронних таблиць Таблиці є одним із найпоширеніших різновидів документів, які використовуються у фінансово-економічній діяльності, в тому числі, у банківській справі, у...
5213. Робота з формулами в MS Excel 151.21 KB
  Робота з формулами Будова формули Будь-яка формула обов'язково починається зі знака Якщо про цей знак забути, то введене буде сприйнято як звичайний текст. Зрозуміло, що така формула працювати не буде. У загальному випадку ф...
5214. Побудова діаграм та графіків в MS Excel 33.33 KB
  Побудова діаграм та графіків 1. Робота з майстром діаграм Табличний процесор надає широкі можливості для подання даних в графічній формі.Серед них найбільш поширені діаграми. Діаграми використовуються для виявлення тенденцій зміни якогось пара...
5215. Розв’язування типових математичних задач засобами табличного процесора 55.23 KB
  Розв’язування типових математичних задачзасобами табличного процесора Задача підбору параметрів Означення.Задачею підбору параметра називається знаходження такого значення аргумента даної функції, при якому ця функція на...
5216. Робота з базами даних в MS Excel 152.64 KB
  Робота з базами даних в MSExcel Загальні положення Табличний процесор Excel забезпечує, поряд із власне обробленням електронних таблиць-аркушів, формування ділової графіки, створення, оброблення і підтримку нескладних, але великих баз та...
5217. Перетворення друкованих документів в електронну форму 31.47 KB
  Перетворення друкованих документів в електронну форму Способи подання інформації Основні різновиди природних даних, які здатний зберігати та обробляти комп'ютер, наступні: десяткові числа текст зображення звук. З м...
5218. Застосування мультимедійних технологій в процесі створення презентацій 31.83 KB
  Застосування мультимедійних технологій в процесі створення презентацій 1. Загальні відомості про презентації та пакет демонстраційної графіки PowerPoint Сучасний фахівець повинен вміти готувати і проводити публічні виступи як у межах своєї установи,...
5219. Комп’ютерні мережі та способи їх організації 33.82 KB
  Комп’ютерні мережі. Загальні відомості про комп’ютерні мережі В наш час велике значення має використання комп’ютерів для створення мереж, які формують єдиний інформаційний простір. Комп’ютерна мережа - сукупність взаємозв...