99402

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

Курсовая

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

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

Русский

2016-09-12

45.88 KB

7 чел.

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

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

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

на тему:

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

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

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

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


Заключение

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


 

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

69440. Код Хэмминга 271 KB
  Формирование r проверочных элементов в комбинации этого кода осуществляется по k информационным элементам. Таким образом длина кодовой комбинации n = r k. Проверочные элементы представляют собой линейные комбинации информационных элементов т.
69441. Количество информации и энтропия 145 KB
  Краткие теоретические сведения Количество информации Количество информации является апостериорной характеристикой и определяет количество информации которое получают после приема сообщений. Если p Xi вероятность iого сообщения то индивидуальное количество информации...
69442. Перестройка и национальный вопрос 25 KB
  Гласность была целиком использована на расшатывание национального вопроса в СССР на Украине началась кампания пропаганды украинской культуры начали говорить о том что русская культура задавила украинскую.
69443. Перестройка и национальные отношения в СССР. Распад СССР 37.5 KB
  Основным убеждением которое отстаивал Горбачев было то что потенциальные возможности социализма использовались недостаточно. Однако реформа Горбачева не могла не затрагивать национальную структуру Союза.
69444. РАЗРАБОТКА МЕРОПРИЯТИЙ ПО УЛУЧШЕНИЮ ИСПОЛЬЗОВАНИЯ ТРУДОВЫХ РЕСУРСОВ НА ПРЕДПРИЯТИИ ОАО ШокоЛайф 282 KB
  Трудовые ресурсы представляют собой трудоспособную часть населения страны, которая в силу психофизических и интеллектуальных качеств способна производить материальные блага или услуги. К трудовым ресурсам относятся люди как занятые в экономике, так и не занятые, но способные трудиться
69445. Уголовно-правовые средства борьбы с незаконным оборотом наркотиков в Российской Федерации 233 KB
  Статистические данные по России свидетельствуют о катастрофической наркотической угрозе в стране, это означает, что необходимо повышать эффективность борьбы с преступностью в сфере незаконного оборота наркотиков уже имеющимися средствами, а также разрабатывать качественно новые средства борьбы с наркотизмом...
69447. Социально-философская проблематика и стилевое своеобразие прозы А. Платонова (1899-1951) 38.02 KB
  Платонова 1899-1951. Гурвич Андрей Платонов статья 37г творчество Платонова оценивает как пример религиозного монашеского большевизма большевистского великомученичества как апофеоз одиночества и обреченности совершенно несовместимых с социалистическим оптимизмом.
69448. Подготовка преподавателя к преподаванию права и научная организация труда преподавателя 158 KB
  Этому в значительной степени способствует включение проблемы прав человека прав ребёнка в содержание учебно-воспитательного процесса педагогического вуза а также педагогического колледжа и училища. Выпускник получивший квалификацию учитель права должен знать структуру системы...