В. И. Чередник регрессионный анализ

  • От :
  • Категории : Без рубрики

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮНижегородский государственный университет им. Н.И. Лобачевского
В. И. Чередник
РЕГРЕССИОННЫЙ АНАЛИЗПрактикумРекомендовано методической комиссией химического факультета для студентов ННГУ, обучающихся по направлению подготовки 020100 – «химия» и специальностям 020101 – «химия», 020801 – «экология», 240306 – «химическая технология монокристаллов, материалов и изделий электронной техники».Нижний Новгород2009УДК 54: 519.876.5ББК Г:В19Ч-46Ч-46 ЧЕРЕДНИК В. И. Регрессионный анализ: Практикум. – Нижний Новгород: Нижегородский госуниверситет. 2009. – 17 с.
Рецензент: кандидат хим. наук, старший научный сотрудник А.Н. Туманова
В пособии рассматривается задача аппроксимации экспериментальных точек полиномиальной функцией методом наименьших квадратов. Приводятся основные расчётные формулы, изложен алгоритм решения задачи с помощью компьютера, представлена блок-схема алгоритма и сформулировано задание для студентов. Рекомендовано методической комиссией химического факультета для студентов ННГУ, обучающихся по направлению подготовки 020100 – «химия» и специальностям 020101 – «химия», 020801 – «экология», 240306 – «химическая технология монокристаллов, материалов и изделий электронной техники» при проведении практикума по курсу «Численные методы и программирование».Ответственный за выпуск:зам. председателя методической комиссии
химического факультета ННГУ, к.х.н., доцент ^
УДК 54: 519.876.5ББК Г:В19
 Нижегородский государственный университет им. Н.И. Лобачевского, 2009
СОДЕРЖАНИЕ
Введение
4
1.
Полиномиальная аппроксимация
4
2.
Линейный регрессионный анализ
6
3.
Квадратичная аппроксимация
7
4.
Некоторые особенности алгоритма и программы
9
5.
Задание
13
Литература
16
ВведениеРегрессионный анализ – это аппроксимация зависимости, представленной в виде набора чисел, аналитической функцией. Численные значения получаются обычно либо в результате экспериментальных измерений, либо с помощью компьютерного моделирования.
Полиномиальная аппроксимация
Наиболее часто используется аппроксимация с помощью полинома степени n:
y = f(x) = a0 + a1x + a2x2 + a3x3 + ….+ anxn (1)
Коэффициенты полинома a0, a1, a2, … an подбираются таким образом, чтобы кривая, описываемая полиномом, проходила максимально близко ко всем точкам, аппроксимируемым этим полиномом. Максимальная близость аппроксимирующего полинома к аппроксимируемым точкам количественно формулируется в виде минимальности суммы квадратов отклонений значений полинома от ординат всех точек:
(2)
Аппроксимация с применением условия (2) широко известна как метод наименьших квадратов. В выражении (2) yk – ординаты аппроксимируемых точек, xk – значения аргумента этих точек, m – количество аппроксимируемых точек. Для применения (1) при условии (2) должно выполняться условие:n < m - 1 (3)Например, через три точки (m = 3) методом наименьших квадратов можно провести только прямую – полином 1-й степени (n = 1), через 4 точки – полином 1-й или 2-й степени, через 5 точек – полином 1-й, 2-й или 3-й степени и т.д. Если n = m – 1, то соответствующий полином проходит точно через аппроксимируемые точки и условие (2) выполняется автоматически (точно через две точки проходит прямая, через три точки – парабола и т.д.). Если n > m – 1, задача становится неопределенной (например, через две точки можно точно провести бесчисленное множество парабол).
При условии (3) выполнение условия (2) означает, что все частные производные от S по коэффициентам a0, a1, a2, … an должны быть равны нулю:
(4)Подставляя (1) в (2) и выполняя дифференцирование (4), получим систему линейных алгебраических уравнений порядка n + 1 для определения n + 1 коэффициентов полинома (1):
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Это можно переписать таким образом:
(5)
Коэффициенты (i, j = 0, 1, 2, … n) системы уравнений (5) определяются следующим образом:
(6)Правые части системы уравнений (5) рассчитываются по формуле:
(7)
Линейный регрессионный анализ
Самый простой вариант – линейный регрессионный анализ. В этом случае табличные значения аппроксимируются полиномом первой степени – прямой линией (n = 1):
y = f(x) = a0 + a1 x, (8)
а система уравнений (5) представляет собой систему двух уравнений с двумя неизвестными:
(9)
Коэффициент a0 во всех случаях представляет собой значение аппроксимирующей функции при x = 0, а величина a1 в (8) есть тангенс угла наклона аппроксимирующей прямой к оси x. Коэффициенты системы (9) в соответствии с (6) и (7):
(10)
Решение системы (9) в соответствии с правилом Крамера имеет следующий вид:
(11)
где  – определитель системы (9), составленный из коэффициентов при неизвестных:
(12)
Определители 0 и 1 получаются из определителя  путем замены столбца коэффициентов при соответствующих переменных столбцом правых частей системы:
(13)Во многих случаях линейная аппроксимация с помощью выражений (8) – (13) дает вполне удовлетворительные результаты и аппроксимация полиномом более высокого порядка не требуется. Для оценки степени адекватности аппроксимирующего полинома и аппроксимируемых значений используются следующие критерии:
(14)
Здесь S определяется выражением (2).
(15)
Чем ближе аппроксимирующий полином к аппроксимируемым точкам, тем ближе к нулю дисперсия адекватности (полное совпадение соответствует ) и тем ближе к единице коэффициент корреляции (полное совпадение соответствует R = 1).Более подробно линейный регрессионный анализ описан в [1].
Квадратичная аппроксимация
Если табличные точки явно не располагаются вдоль прямой линии, то линейная зависимость (8) не может адекватно аппроксимировать эти точки. В этом случае можно попытаться применить полином второй степени (n = 2):
y = f(x) = a0 + a1 x + a2 x2 (16)
Система уравнений (5) в этом случае представляет собой систему трех уравнений с тремя неизвестными:
(17)
Коэффициенты этой системы в соответствии с (6) и (7):
(18)
Решение системы (17) также может быть найдено с помощью правила Крамера:
(19)
где – определитель системы (17), составленный из коэффициентов при неизвестных:
(20)
Определители 0, 1 и 2 получаются из определителя путем замены столбца коэффициентов при соответствующих переменных столбцом правых частей системы:
(21)
(22)
(23)Дисперсия адекватности и в этом случае может быть рассчитана с помощью выражения (14).В некоторых случаях приходится применять полиномы 3-й и даже более высокой степени. Соответствующая система уравнений (5) решается в этом случае с помощью численных методов, например, с помощью метода исключения Гаусса или с помощью итерационного метода Гаусса-Зейделя. Описание этих методов, соответствующих алгоритмов и даже готовых вариантов программ, реализующих такие вычисления, можно найти, например, в [2, 3].
Некоторые особенности алгоритма и программы
В данной работе применяется аппроксимация только полиномами первой и второй степени (n = 1 или n = 2). Рекомендуемое соответствие идентификаторов компьютерной программы величинам, используемым в формулах, приведено в таблице 1.
Для переменных xk и yk необходимо зарезервировать массивы x(k) и y(k) с помощью оператора:
Dim x(100), y(100)Этот оператор следует поставить в самом начале программы перед служебным оператором Sub. Все остальные величины обозначаются простыми переменными, которые в языке бейсик необязательно декларировать с помощью оператора Dim.
Табличные значения yk могут быть смоделированы с помощью формулы (16), в которой неизвестные коэффициенты a0, a1 и a2 следует заменить известными величинами at0, at1 и at2, которые будут задаваться (вводиться) в начале программы, а значения xk можно для упрощения задавать равноотстоящими (в общем случае это необязательно). Имитация случайного разброса значений функции yk, обусловленного обычно погрешностью
Таблица 1Соответствие величин, используемых в формулах, идентификаторам программы
Величина
Идентификатор
Пояснение
xk
x(k)
Аргумент
yk
y(k)
Функция
m
m
Число точек
n
n
Степень полинома
at0
at0
Коэффициенты полиномазадаваемой функции
at1
at1
at2
at2
dy
dy
Максимальный случайный разброс
a0
a0
Коэффициенты полиномааппроксимирующей функции
a1
a1
a2
a2
g00
g00
Коэффициенты уравнений для определения коэффициентов ai
g01
g01


g22
g22
h0
h0
Правые части системы уравнений
h1
h1
h2
h2

d
Определитель
0
d0
Определитель a0
1
d1
Определитель a1
2
d2
Определитель a2
y = f(x)
fx
Расчётные значения y(xk)
S
s
Минимизируемая сумма
s2
Дисперсия адекватности
R
r
Коэффициент корреляции
sx
Суммы для вычисления коэффициента корреляции
sy
sxy
sy2
эксперимента, может быть выполнена с помощью генератора случайных чисел (в языке бейсик это оператор Rnd(1)), генерирующего при каждом обращении к нему случайное число с равномерным распределением в диапазоне от 0 до 1.
Если задать величину dy – максимальное случайное отклонение от некоторого среднего значения, то имитация случайного разброса значений yk в диапазоне отклонений ±dy от среднего значения может быть выполнена с помощью такого оператора:
y(k) = y(k) +2*dy*(Rnd(1) – 0.5) (24)Чтобы при каждом новом запуске программы генератор Rnd(1) выдавал различные последовательности случайных чисел, необходимо в самом начале программы (после служебного оператора Sub) поставить операторRandomizeБлок-схема алгоритма, реализующего аппроксимацию табличных значений полиномом 1-й или 2-й степени, приведена на рис. 1.Программа в соответствии с блок-схемой на рис. 1 должна быть составлена на языке бейсик в виде макроса в рабочем листе Excel. Имя макроса и рабочего листа – “polynom”. Программа должна вводить задаваемые величины из ячеек рабочего листа Excel, и выводить результаты расчетов в ячейки этого же рабочего листа.Пример оператора ввода числа из ячейки рабочего листа Excel (имя рабочего листа “polynom”):m = Worksheets("polynom").Cells(3, 1).ValueЭтот оператор вводит число из ячейки A3 (третья строка, первый столбец – см. рис. 2) рабочего листа с именем “polynom” и присваивает это число переменной m.Аналогичным образом выполняется вывод числа в ячейку рабочего листа Excel:Worksheets("polynom").Cells(7, 5).Value = a0Этот оператор выводит числовое значение переменной a0 в ячейку E7 (седьмая строка, пятый столбец – см. рис. 2) рабочего листа Excel.Для вывода в ячейку текста (для оформления заголовков и пояснений) соответствующий текст в операторе вывода должен быть заключен в кавычки. Например, операторWorksheets("polynom").Cells(6, 5).Value = “a0”выводит тест “a0” в ячейку E6. Для вывода столбца численных значений необходимо использовать буквенное обозначение номера строки, которое должно меняться в соответствующем цикле. Например, оператор
Рис. 1. Блок-схема алгоритма аппроксимации полиномом 1-й и 2-й степениWorksheets("polynom").Cells(k + 6, 3).Value = fxбудет выводить значения аппроксимирующей функции fx в третий столбец (столбец C), с 7-й строки по 17-ю, если переменная k будет меняться от 1 до 11 в соответствующем цикле. Аналогичным образом можно применять буквенные обозначения и для номера столбца для вывода значений в строку, если это необходимо.
Составить программу на языке Бейсик, реализующую линейный регрессионный анализ (аппроксимацию полиномом 1-й степени) в соответствии с формулами (8) – (15), и аппроксимацию полиномом второй степени в соответствии с (16) – (23), руководствуясь блок-схемой, представленной на рис. 1. Программа должна включать в себя оба варианта и выбирать один из них в соответствии с величиной порядка полинома n, которая должна вводиться в начале программы в качестве одной из задаваемых величин. Другими задаваемыми величинами должны быть количество точек m, в которых заданы табличные значения аппроксимируемой зависимости, минимальное и максимальное значения аргумента x1 и xm, а также коэффициенты at0, at1, at2 и максимальное значение случайного разброса dy.
Программа должна вводить задаваемые величины из ячеек рабочего листа Excel, рассчитывать и выводить в ячейки этого же листа коэффициенты ai (i = 0, 1 для линейной зависимости или i = 0, 1, 2 для квадратичной аппроксимации) и соответствующую дисперсию адекватности (для линейной аппроксимации также и коэффициент корреляции). Кроме того, программа должна выводить табличные значения xk (в первом столбце таблицы), yk (во втором столбце) и рассчитанные с помощью (8) или (16) (в зависимости от заданного значения n) значения аппроксимирующей функции fx (в третьем столбце). Для n = 1 в ячейки рабочего листа, в которые должны выводиться заголовок и величина коэффициента a2, необходимо выводить пробел между двумя кавычками в операторе вывода.Аналогично для n = 2 в ячейки рабочего листа, в которые должны выводиться заголовок и величина коэффициента корреляции r, необходимо выводить пробел. По выведенным в три столбца значениям x(k), y(k) и fx необходимо построить графики зависимости y(k) и fx от x(k) (тип диаграммы – точечная). Первый график должен изображаться только маркерами без соединительной линии, второй – наоборот, соединительной линией без маркеров. Для запуска программы на исполнение необходимо оформить соответствующую кнопку “Пуск” (назначить ей макрос “polynom”). Перед запуском программы кнопкой “Пуск” необходимо выйти из ячейки со значением, задаваемым последним, нажав “Enter” на клавиатуре, либо нажав любую клавишу управлением курсором (клавиши со стрелками), либо щелчком мыши за пределами этой ячейки.Для отладки программы задать величину максимального случайного разброса dy = 0. В этом случае рассчитанные значения коэффициентов аппроксимирующих полиномов a0, a1 (и a2 для n = 2) должны совпадать с задаваемыми коэффициентами at0, at1 (и at2 для n = 2), дисперсия адекватности должна быть равна нулю, а коэффициент корреляции (для n = 1) – единице.
Выполнить расчеты для n = 1 и at2 = 0 (например, at0 = 0.5, at1 = 2) для нескольких различных значений величины dy (например, 0.1, 0.2, 0.3). Убедиться, что при увеличении dy увеличивается дисперсия адекватности s2 и уменьшается коэффициент корреляции r. Пример оформления рабочего листа Excel для ввода данных и вывода результатов для этого варианта показан на рис. 2.
Рис. 2. Пример оформления рабочего листа Excel для ввода данных и вывода результатовВвиду случайности формируемых табличных данных полностью повторить результаты, показанные на рис. 2, невозможно. При каждом повторном запуске программы результаты будут отличаться тем сильнее, чем больше задаваемая величина максимального разброса dy. Лишь при dy = 0 расчетные значения a0, a1, a2 должны совпадать (если в программе нет ошибок) с задаваемыми значениями at0, at1, at2, значения fx будут совпадать с y(k), дисперсия адекватности будет равна нулю, а коэффициент корреляции (для n = 1) будет равен единице.
Выполнить расчеты для n = 2 (например, at0 = 0.5, at1 = -3, at2 = 4) также для нескольких различных значений величины dy (например, 0.1, 0.2, 0.3). Убедиться, что и в этом случае увеличение разброса точек приводит к снижению адекватности аппроксимации.
Выполнить расчеты для n = 1 и at2 ≠ 0 (например, at0 = 0.5, at1 = -3, at2 = 4). Это будет означать аппроксимацию квадратичной зависимости полиномом первой степени (прямой линией). Убедиться, что в этом случае адекватность аппроксимации явно неудовлетворительна (в том числе и при dy = 0).
Выполнить расчеты для n = 2 и at2 = 0 (например, at0 = 0.5, at1 = 2) для нескольких различных значений величины dy (например, 0.1, 0.2, 0.3). Это означает аппроксимацию линейной зависимости полиномом второй степени. Убедиться, что такая аппроксимация дает вполне удовлетворительные результаты. Величина коэффициента a2 должна получаться близкой к нулю, что означает, что данный набор точек вполне можно аппроксимировать прямой линией и применять полином более высокой степени в данном случае нет необходимости.
Самостоятельно выполнить небольшую модификацию программы, позволяющую использовать ее для аппроксимации реальных экспериментальных табличных зависимостей. Для этого значения x(k) и y(k) должны не моделироваться программой с применением формул (16) и (24), а вводиться операторами ввода из соответствующих столбцов таблицы – тех же самых, в которые они выводились программой при моделировании, а в эти столбцы таблицы их необходимо вводить вручную перед запуском программы. При этом значения x(k) необязательно должны быть равноотстоящими. В качестве признака, по которому программа будет различать — работать ей с вариантом моделирования исходных данных или с вариантом их ручного ввода, необходимо ввести дополнительную переменную, например, v. Эту переменную программа должна считывать из ячейки Excel, следующей за ячейкой последней вводимой переменной предыдущего варианта программы. В качестве заголовка этой переменной ввести в соответствующую ячейку текст “Вариант” (см. рис. 3).
Рис. 3. Входные данные модифицированного варианта программы.Если v = 1 (в программе проверять условие v < 2), то табличные значения моделируются, если же v = 2 (в программе проверять условие v > 1), то данные считываются из таблицы при запуске программы. В этом случае перед запуском программы данные должны быть введены в таблицу вручную. В тексте выводимого заголовка таблицы результатов должно быть краткое пояснение, указывающее – с какими исходными данными работает программа, моделируемыми или вводимыми вручную. Программа сама, автоматически, должна менять текст заголовка таблицы результатов при смене режима ее работы. Выполнить аппроксимацию данных, приведенных в таблице 2 (варианты a, b, c, d).Таблица 2.Наборы точек для аппроксимации в режиме ручного ввода
x(k)
y(k)
x(k)
y(k)
x(k)
y(k)
x(k)
y(k)
1.21
0.82
2.05
5.92
0
0.53
1.02
37.06
1.3
1.12
2.27
3.73
0.15
0.02
1.27
40.18
1.38
1.23
2.5
2.13
0.27
-0.4
1.55
42.43
1.47
1.45
2.88
1.2
0.44
-0.81
1.82
43.46
1.52
1.73
3.15
0.73
0.58
-1.12
2.15
44.12
1.6
1.93
3.4
1.13
0.7
-1.67
2.41
44.05
1.68
2.08
3.73
2.2
0.83
-1.98
2.72
42.72
1.79
2.27
3.98
4.01
0.98
-2.52
2.95
41.09
a
b
c
d
Оформить отчет, включающий описание метода наименьших квадратов, основные формулы, таблицу идентификаторов, блок-схему, составленную программу и полученные результаты.
Литература
К. Джонсон. Численные методы в химии, пер. с англ. – М.: Мир, 1983, 354 с.
Д. Мак-Кракен, У. Дорн. Численные методы и программирование на Фортране, пер. с англ. – М.: Мир, 1977, 584 с.
В.П. Дьяконов. Справочник по алгоритмам и программам на языке бейсик для персональных ЭВМ. – М.: Наука, 1987, 240 с.
^
Автор:
Валентин Иванович Чередник
ПрактикумГосударственное образовательное учреждение высшего профессионального образования «Нижегородский государственный университет им. Н.И. Лобачевского»603950, Нижний Новгород, пр. Гагарина, 23.Подписано в печать 2009. Формат 6084 1/16.Бумага офсетная. Печать офсетная. Гарнитура Таймс.Усл.-печ.л. . Уч.-изд. л. .Заказ № Тираж 300 экз.Отпечатано в типографии Нижегородского госуниверситета им. Н.И. Лобачевского».603600, г. Нижний Новгород, ул. Большая Покровская, 37
Лицензия ПД№ 18-0099 от 14.05.01

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮНижегородский государственный университет им. Н.И. Лобачевского

В. И. Чередник

РЕГРЕССИОННЫЙ АНАЛИЗПрактикумРекомендовано методической комиссией химического факультета для студентов ННГУ, обучающихся по направлению подготовки 020100 – «химия» и специальностям 020101 – «химия», 020801 – «экология», 240306 – «химическая технология монокристаллов, материалов и изделий электронной техники».Нижний Новгород2009УДК 54: 519.876.5ББК Г:В19Ч-46Ч-46 ЧЕРЕДНИК В. И. Регрессионный анализ: Практикум. – Нижний Новгород: Нижегородский госуниверситет. 2009. – 17 с.

Рецензент: кандидат хим. наук, старший научный сотрудник А.Н. Туманова

В пособии рассматривается задача аппроксимации экспериментальных точек полиномиальной функцией методом наименьших квадратов. Приводятся основные расчётные формулы, изложен алгоритм решения задачи с помощью компьютера, представлена блок-схема алгоритма и сформулировано задание для студентов. Рекомендовано методической комиссией химического факультета для студентов ННГУ, обучающихся по направлению подготовки 020100 – «химия» и специальностям 020101 – «химия», 020801 – «экология», 240306 – «химическая технология монокристаллов, материалов и изделий электронной техники» при проведении практикума по курсу «Численные методы и программирование».Ответственный за выпуск:зам. председателя методической комиссии

химического факультета ННГУ, к.х.н., доцент ^

УДК 54: 519.876.5ББК Г:В19

Нижегородский государственный университет им. Н.И. Лобачевского, 2009

СОДЕРЖАНИЕ

Введение 4
1. Полиномиальная аппроксимация 4
2. Линейный регрессионный анализ 6
3. Квадратичная аппроксимация 7
4. Некоторые особенности алгоритма и программы 9
5. Задание 13
Литература 16

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

  1. Полиномиальная аппроксимация

Наиболее часто используется аппроксимация с помощью полинома степени n:

y = f(x) = a0 + a1x + a2x2 + a3x3 + ….+ anxn (1)

Коэффициенты полинома a0, a1, a2, … an подбираются таким образом, чтобы кривая, описываемая полиномом, проходила максимально близко ко всем точкам, аппроксимируемым этим полиномом. Максимальная близость аппроксимирующего полинома к аппроксимируемым точкам количественно формулируется в виде минимальности суммы квадратов отклонений значений полинома от ординат всех точек:
(2)
Аппроксимация с применением условия (2) широко известна как метод наименьших квадратов. В выражении (2) yk – ординаты аппроксимируемых точек, xk – значения аргумента этих точек, m – количество аппроксимируемых точек. Для применения (1) при условии (2) должно выполняться условие:n < m — 1 (3)Например, через три точки (m = 3) методом наименьших квадратов можно провести только прямую – полином 1-й степени (n = 1), через 4 точки – полином 1-й или 2-й степени, через 5 точек – полином 1-й, 2-й или 3-й степени и т.д. Если n = m – 1, то соответствующий полином проходит точно через аппроксимируемые точки и условие (2) выполняется автоматически (точно через две точки проходит прямая, через три точки – парабола и т.д.). Если n > m – 1, задача становится неопределенной (например, через две точки можно точно провести бесчисленное множество парабол).

При условии (3) выполнение условия (2) означает, что все частные производные от S по коэффициентам a0, a1, a2, … an должны быть равны нулю:

(4)Подставляя (1) в (2) и выполняя дифференцирование (4), получим систему линейных алгебраических уравнений порядка n + 1 для определения n + 1 коэффициентов полинома (1):

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Это можно переписать таким образом:

(5)

Коэффициенты (i, j = 0, 1, 2, … n) системы уравнений (5) определяются следующим образом:
(6)Правые части системы уравнений (5) рассчитываются по формуле:

(7)

  1. Линейный регрессионный анализ

Самый простой вариант – линейный регрессионный анализ. В этом случае табличные значения аппроксимируются полиномом первой степени – прямой линией (n = 1):

y = f(x) = a0 + a1 x, (8)

а система уравнений (5) представляет собой систему двух уравнений с двумя неизвестными:

(9)

Коэффициент a0 во всех случаях представляет собой значение аппроксимирующей функции при x = 0, а величина a1 в (8) есть тангенс угла наклона аппроксимирующей прямой к оси x. Коэффициенты системы (9) в соответствии с (6) и (7):

(10)

Решение системы (9) в соответствии с правилом Крамера имеет следующий вид:

(11)

где  – определитель системы (9), составленный из коэффициентов при неизвестных:

(12)

Определители 0 и 1 получаются из определителя  путем замены столбца коэффициентов при соответствующих переменных столбцом правых частей системы:
(13)Во многих случаях линейная аппроксимация с помощью выражений (8) – (13) дает вполне удовлетворительные результаты и аппроксимация полиномом более высокого порядка не требуется. Для оценки степени адекватности аппроксимирующего полинома и аппроксимируемых значений используются следующие критерии:

(14)

Здесь S определяется выражением (2).

(15)

Чем ближе аппроксимирующий полином к аппроксимируемым точкам, тем ближе к нулю дисперсия адекватности (полное совпадение соответствует ) и тем ближе к единице коэффициент корреляции (полное совпадение соответствует R = 1).Более подробно линейный регрессионный анализ описан в [1].

  1. Квадратичная аппроксимация

Если табличные точки явно не располагаются вдоль прямой линии, то линейная зависимость (8) не может адекватно аппроксимировать эти точки. В этом случае можно попытаться применить полином второй степени (n = 2):

y = f(x) = a0 + a1 x + a2 x2 (16)

Система уравнений (5) в этом случае представляет собой систему трех уравнений с тремя неизвестными:

(17)

Коэффициенты этой системы в соответствии с (6) и (7):

(18)

Решение системы (17) также может быть найдено с помощью правила Крамера:

(19)

где – определитель системы (17), составленный из коэффициентов при неизвестных:
(20)

Определители 0, 1 и 2 получаются из определителя путем замены столбца коэффициентов при соответствующих переменных столбцом правых частей системы:

(21)

(22)

(23)Дисперсия адекватности и в этом случае может быть рассчитана с помощью выражения (14).В некоторых случаях приходится применять полиномы 3-й и даже более высокой степени. Соответствующая система уравнений (5) решается в этом случае с помощью численных методов, например, с помощью метода исключения Гаусса или с помощью итерационного метода Гаусса-Зейделя. Описание этих методов, соответствующих алгоритмов и даже готовых вариантов программ, реализующих такие вычисления, можно найти, например, в [2, 3].

  1. Некоторые особенности алгоритма и программы

В данной работе применяется аппроксимация только полиномами первой и второй степени (n = 1 или n = 2). Рекомендуемое соответствие идентификаторов компьютерной программы величинам, используемым в формулах, приведено в таблице 1.

Для переменных xk и yk необходимо зарезервировать массивы x(k) и y(k) с помощью оператора:

Dim x(100), y(100)Этот оператор следует поставить в самом начале программы перед служебным оператором Sub. Все остальные величины обозначаются простыми переменными, которые в языке бейсик необязательно декларировать с помощью оператора Dim.

Табличные значения yk могут быть смоделированы с помощью формулы (16), в которой неизвестные коэффициенты a0, a1 и a2 следует заменить известными величинами at0, at1 и at2, которые будут задаваться (вводиться) в начале программы, а значения xk можно для упрощения задавать равноотстоящими (в общем случае это необязательно). Имитация случайного разброса значений функции yk, обусловленного обычно погрешностью

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

Величина Идентификатор Пояснение
xk x(k) Аргумент
yk y(k) Функция
m m Число точек
n n Степень полинома
at0 at0 Коэффициенты полиномазадаваемой функции
at1 at1
at2 at2
dy dy Максимальный случайный разброс
a0 a0 Коэффициенты полиномааппроксимирующей функции
a1 a1
a2 a2
g00 g00 Коэффициенты уравнений для определения коэффициентов ai
g01 g01
g22 g22
h0 h0 Правые части системы уравнений
h1 h1
h2 h2
d Определитель
0 d0 Определитель a0
1 d1 Определитель a1
2 d2 Определитель a2
y = f(x) fx Расчётные значения y(xk)
S s Минимизируемая сумма
s2 Дисперсия адекватности
R r Коэффициент корреляции
sx Суммы для вычисления коэффициента корреляции
sy
sxy
sy2


эксперимента, может быть выполнена с помощью генератора случайных чисел (в языке бейсик это оператор Rnd(1)), генерирующего при каждом обращении к нему случайное число с равномерным распределением в диапазоне от 0 до 1.

Если задать величину dy – максимальное случайное отклонение от некоторого среднего значения, то имитация случайного разброса значений yk в диапазоне отклонений ±dy от среднего значения может быть выполнена с помощью такого оператора:

y(k) = y(k) +2*dy*(Rnd(1) – 0.5) (24)Чтобы при каждом новом запуске программы генератор Rnd(1) выдавал различные последовательности случайных чисел, необходимо в самом начале программы (после служебного оператора Sub) поставить операторRandomizeБлок-схема алгоритма, реализующего аппроксимацию табличных значений полиномом 1-й или 2-й степени, приведена на рис. 1.Программа в соответствии с блок-схемой на рис. 1 должна быть составлена на языке бейсик в виде макроса в рабочем листе Excel. Имя макроса и рабочего листа – “polynom”. Программа должна вводить задаваемые величины из ячеек рабочего листа Excel, и выводить результаты расчетов в ячейки этого же рабочего листа.Пример оператора ввода числа из ячейки рабочего листа Excel (имя рабочего листа “polynom”):m = Worksheets("polynom").Cells(3, 1).ValueЭтот оператор вводит число из ячейки A3 (третья строка, первый столбец – см. рис. 2) рабочего листа с именем “polynom” и присваивает это число переменной m.Аналогичным образом выполняется вывод числа в ячейку рабочего листа Excel:Worksheets("polynom").Cells(7, 5).Value = a0Этот оператор выводит числовое значение переменной a0 в ячейку E7 (седьмая строка, пятый столбец – см. рис. 2) рабочего листа Excel.Для вывода в ячейку текста (для оформления заголовков и пояснений) соответствующий текст в операторе вывода должен быть заключен в кавычки. Например, операторWorksheets("polynom").Cells(6, 5).Value = “a0”выводит тест “a0” в ячейку E6. Для вывода столбца численных значений необходимо использовать буквенное обозначение номера строки, которое должно меняться в соответствующем цикле. Например, оператор

Рис. 1. Блок-схема алгоритма аппроксимации полиномом 1-й и 2-й степениWorksheets("polynom").Cells(k + 6, 3).Value = fxбудет выводить значения аппроксимирующей функции fx в третий столбец (столбец C), с 7-й строки по 17-ю, если переменная k будет меняться от 1 до 11 в соответствующем цикле. Аналогичным образом можно применять буквенные обозначения и для номера столбца для вывода значений в строку, если это необходимо.

    1. Составить программу на языке Бейсик, реализующую линейный регрессионный анализ (аппроксимацию полиномом 1-й степени) в соответствии с формулами (8) – (15), и аппроксимацию полиномом второй степени в соответствии с (16) – (23), руководствуясь блок-схемой, представленной на рис. 1. Программа должна включать в себя оба варианта и выбирать один из них в соответствии с величиной порядка полинома n, которая должна вводиться в начале программы в качестве одной из задаваемых величин. Другими задаваемыми величинами должны быть количество точек m, в которых заданы табличные значения аппроксимируемой зависимости, минимальное и максимальное значения аргумента x1 и xm, а также коэффициенты at0, at1, at2 и максимальное значение случайного разброса dy.

Программа должна вводить задаваемые величины из ячеек рабочего листа Excel, рассчитывать и выводить в ячейки этого же листа коэффициенты ai (i = 0, 1 для линейной зависимости или i = 0, 1, 2 для квадратичной аппроксимации) и соответствующую дисперсию адекватности (для линейной аппроксимации также и коэффициент корреляции). Кроме того, программа должна выводить табличные значения xk (в первом столбце таблицы), yk (во втором столбце) и рассчитанные с помощью (8) или (16) (в зависимости от заданного значения n) значения аппроксимирующей функции fx (в третьем столбце). Для n = 1 в ячейки рабочего листа, в которые должны выводиться заголовок и величина коэффициента a2, необходимо выводить пробел между двумя кавычками в операторе вывода.Аналогично для n = 2 в ячейки рабочего листа, в которые должны выводиться заголовок и величина коэффициента корреляции r, необходимо выводить пробел. По выведенным в три столбца значениям x(k), y(k) и fx необходимо построить графики зависимости y(k) и fx от x(k) (тип диаграммы – точечная). Первый график должен изображаться только маркерами без соединительной линии, второй – наоборот, соединительной линией без маркеров. Для запуска программы на исполнение необходимо оформить соответствующую кнопку “Пуск” (назначить ей макрос “polynom”). Перед запуском программы кнопкой “Пуск” необходимо выйти из ячейки со значением, задаваемым последним, нажав “Enter” на клавиатуре, либо нажав любую клавишу управлением курсором (клавиши со стрелками), либо щелчком мыши за пределами этой ячейки.Для отладки программы задать величину максимального случайного разброса dy = 0. В этом случае рассчитанные значения коэффициентов аппроксимирующих полиномов a0, a1 (и a2 для n = 2) должны совпадать с задаваемыми коэффициентами at0, at1 (и at2 для n = 2), дисперсия адекватности должна быть равна нулю, а коэффициент корреляции (для n = 1) – единице.

    1. Выполнить расчеты для n = 1 и at2 = 0 (например, at0 = 0.5, at1 = 2) для нескольких различных значений величины dy (например, 0.1, 0.2, 0.3). Убедиться, что при увеличении dy увеличивается дисперсия адекватности s2 и уменьшается коэффициент корреляции r. Пример оформления рабочего листа Excel для ввода данных и вывода результатов для этого варианта показан на рис. 2.

Рис. 2. Пример оформления рабочего листа Excel для ввода данных и вывода результатовВвиду случайности формируемых табличных данных полностью повторить результаты, показанные на рис. 2, невозможно. При каждом повторном запуске программы результаты будут отличаться тем сильнее, чем больше задаваемая величина максимального разброса dy. Лишь при dy = 0 расчетные значения a0, a1, a2 должны совпадать (если в программе нет ошибок) с задаваемыми значениями at0, at1, at2, значения fx будут совпадать с y(k), дисперсия адекватности будет равна нулю, а коэффициент корреляции (для n = 1) будет равен единице.

    1. Выполнить расчеты для n = 2 (например, at0 = 0.5, at1 = -3, at2 = 4) также для нескольких различных значений величины dy (например, 0.1, 0.2, 0.3). Убедиться, что и в этом случае увеличение разброса точек приводит к снижению адекватности аппроксимации.
    2. Выполнить расчеты для n = 1 и at2 ≠ 0 (например, at0 = 0.5, at1 = -3, at2 = 4). Это будет означать аппроксимацию квадратичной зависимости полиномом первой степени (прямой линией). Убедиться, что в этом случае адекватность аппроксимации явно неудовлетворительна (в том числе и при dy = 0).
    3. Выполнить расчеты для n = 2 и at2 = 0 (например, at0 = 0.5, at1 = 2) для нескольких различных значений величины dy (например, 0.1, 0.2, 0.3). Это означает аппроксимацию линейной зависимости полиномом второй степени. Убедиться, что такая аппроксимация дает вполне удовлетворительные результаты. Величина коэффициента a2 должна получаться близкой к нулю, что означает, что данный набор точек вполне можно аппроксимировать прямой линией и применять полином более высокой степени в данном случае нет необходимости.
    4. Самостоятельно выполнить небольшую модификацию программы, позволяющую использовать ее для аппроксимации реальных экспериментальных табличных зависимостей. Для этого значения x(k) и y(k) должны не моделироваться программой с применением формул (16) и (24), а вводиться операторами ввода из соответствующих столбцов таблицы – тех же самых, в которые они выводились программой при моделировании, а в эти столбцы таблицы их необходимо вводить вручную перед запуском программы. При этом значения x(k) необязательно должны быть равноотстоящими. В качестве признака, по которому программа будет различать — работать ей с вариантом моделирования исходных данных или с вариантом их ручного ввода, необходимо ввести дополнительную переменную, например, v. Эту переменную программа должна считывать из ячейки Excel, следующей за ячейкой последней вводимой переменной предыдущего варианта программы. В качестве заголовка этой переменной ввести в соответствующую ячейку текст “Вариант” (см. рис. 3).

Рис. 3. Входные данные модифицированного варианта программы.Если v = 1 (в программе проверять условие v < 2), то табличные значения моделируются, если же v = 2 (в программе проверять условие v > 1), то данные считываются из таблицы при запуске программы. В этом случае перед запуском программы данные должны быть введены в таблицу вручную. В тексте выводимого заголовка таблицы результатов должно быть краткое пояснение, указывающее – с какими исходными данными работает программа, моделируемыми или вводимыми вручную. Программа сама, автоматически, должна менять текст заголовка таблицы результатов при смене режима ее работы. Выполнить аппроксимацию данных, приведенных в таблице 2 (варианты a, b, c, d).Таблица 2.Наборы точек для аппроксимации в режиме ручного ввода

x(k) y(k) x(k) y(k) x(k) y(k) x(k) y(k)
1.21 0.82 2.05 5.92 0 0.53 1.02 37.06
1.3 1.12 2.27 3.73 0.15 0.02 1.27 40.18
1.38 1.23 2.5 2.13 0.27 -0.4 1.55 42.43
1.47 1.45 2.88 1.2 0.44 -0.81 1.82 43.46
1.52 1.73 3.15 0.73 0.58 -1.12 2.15 44.12
1.6 1.93 3.4 1.13 0.7 -1.67 2.41 44.05
1.68 2.08 3.73 2.2 0.83 -1.98 2.72 42.72
1.79 2.27 3.98 4.01 0.98 -2.52 2.95 41.09
a b c d
    1. Оформить отчет, включающий описание метода наименьших квадратов, основные формулы, таблицу идентификаторов, блок-схему, составленную программу и полученные результаты.

Литература

  1. К. Джонсон. Численные методы в химии, пер. с англ. – М.: Мир, 1983, 354 с.
  2. Д. Мак-Кракен, У. Дорн. Численные методы и программирование на Фортране, пер. с англ. – М.: Мир, 1977, 584 с.
  3. В.П. Дьяконов. Справочник по алгоритмам и программам на языке бейсик для персональных ЭВМ. – М.: Наука, 1987, 240 с.

^

Автор:

Валентин Иванович Чередник

ПрактикумГосударственное образовательное учреждение высшего профессионального образования «Нижегородский государственный университет им. Н.И. Лобачевского»603950, Нижний Новгород, пр. Гагарина, 23.Подписано в печать 2009. Формат 6084 1/16.Бумага офсетная. Печать офсетная. Гарнитура Таймс.Усл.-печ.л. . Уч.-изд. л. .Заказ № Тираж 300 экз.Отпечатано в типографии Нижегородского госуниверситета им. Н.И. Лобачевского».603600, г. Нижний Новгород, ул. Большая Покровская, 37

Лицензия ПД№ 18-0099 от 14.05.01

правые части системы уравнений,определения n коэффициентов полинома,значения аппроксимирующей функции fx,помощью итерационного метода гаусса-зейделя,значение аппроксимирующей функции,величина коэффициента корреляции r,листа коэффициенты ai,блок-схема алгоритма аппроксимации полиномом,m количество аппроксимируемых точек,уменьшается коэффициент корреляции r

Комментариев нет

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Планы мероприятий
Игра викторина по ЭКОЛОГИИ-10 класс

  Цель игры «Викторина по экологии» : углубить экологические знания Весь класс разбит на четыре команды по 6 человек. Время обдумывания ответа -1 минута. Ведущий читает высказывания великих людей с паузами , там , где пропущены слова. Команды должны вставить эти слова «Оценивать … только по стоимости её материальных богатств- …

Задания
Хирургия и Реаниматология. Тесты. Методическое пособие

Тестовые задания. Хирургия и Реаниматология.   Профилактика хирургической инфекции. Инфекционная безопасность в работе фельдшера   Обезболивание   Кровотечение и гемостаз   Переливание крови и кровозаменителей, инфузионная терапия   Десмургия   Ведение больных в полеоперационном периоде   Синдром повреждения. Открытые повреждения мягких тканей. Механические повреждения костей, суставов и внутренних органов   …

Планы занятий
Профориентационный тест Л.А. Йовайши на определение склонности человека к тому или иному роду деятельности

ПРОФЕССИЯ – это вид трудовой деятельности человека, который требует определенного уровня знаний, специальных умений, подготовки человека и при этом служит источником дохода. Профессиональная принадлежность – одна из важнейших социальных ролей человека так как, выбирая профессию, человек выбирает себе не только работу, но и определенные нормы, жизненные ценности и образ жизни, …