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


Заключение

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


 

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

83734. What do we name the Motherland? Что мы называем Родиной? 87 KB
  Teacher: Ok, you are right. The title of our lesson is our motherland and its power. Are you ready to find out more interesting information concerned this topic? If yes, let’s get the ball rolling. После ответов учащихся, учитель подводит итог ответам и объявляет тему и цель урока.
83735. Россия в эпоху Великих реформ 941.15 KB
  Здесь вы найдете статистические данные исторические документы воспоминания современников задания по карте. Кроме того вам надо на плакате графически изобразить с помощью линий и надписей Положительные и отрицательные последствия для сельского хозяйства страны...
83736. Свободное падение. Урок – решение задач 28.25 KB
  Цель урока: рассмотреть частный случай свободного падения движение тела брошенного горизонтально с начальной скоростью. Задачи урока: систематизировать и обобщить знания по теме Свободное падение; дать представление о движении тела брошенного горизонтально с начальной скоростью...
83737. Индустриализация СССР 30-х гг. ХХ века 73.93 KB
  Цели урока: Личностный результат - осознавать необходимость индустриализации СССР в 30-е годы ХХ века осмысливать сложность и историческую значимость модернизации страны воспитывать объективный подход к историческим событиям чувство гордости за достижения нашей страны...
83738. СОЮЗЫ СОЧИНИТЕЛЬНЫЕ И ПОДЧИНИТЕЛЬНЫЕ 46.77 KB
  Обучающий аспект: знакомство с группами сочинительных союзов и их ролью в речи с группами подчинительных союзов и их значением формирование умения разграничивать сочинительные и подчинительные союзы сложносочинённые и сложноподчинённые предложения.
83739. Конституция Российской Федерации – основной закон страны 64.78 KB
  Образовательная - закрепление и расширение знаний по теме «Конституция Российской Федерации. Конституционное право», характеризовать конституцию как основной закон государства, знать её содержание, подготовка к ЕГЭ по обществознанию.
83740. Возрасты нашей жизни 84.5 KB
  Цели урока: Образовательная познакомиться с периодами жизни который проходит человек с основными особенностями возрастных ступеней человека. Планируемые результаты в соответствии с ФГОС: Предметные: обучающиеся смогут объяснять смысл изучаемых понятий раскрывать и характеризовать основные...
83741. Образование множественного числа имён существительных в английском языке 46.91 KB
  Цели урока: Ознакомление учащихся с образованием множественного числа существительных. Активизация лексики по теме House в диалогической речи. Формирование и развитие навыков чтения и аудирования. Развитие интереса к изучению английского языка.
83742. Россия и Германия в сравнении 120 KB
  Практические: активизировать лексику по теме; совершенствовать навыки чтения, говорения; развивать умения систематизировать, обобщать полученную информацию; Образовательные: расширять страноведческий кругозор; знания по профессии...