ЛАБОРАТОРНАЯ РАБОТА
СРЕДНЕКВАДРАТИЧНОЕ ПРИБЛИЖЕНИЕ ТАБЛИЧНО ЗАДАННЫХ ФУНКЦИЙ МЕТОДОМ НАИМЕНЬШИХ КВАДРАТОВ
Цель : Ознакомление студентов с основными методами интерполяции и аппроксимации таблично заданных функций. Закрепление на практике полученных знаний в области аппроксимации таких функций.
Задача : Научить студентов практическому применению полученных теоретических знаний при решении задач сглаживания результатов эксперимента полиномами, как при алгоритмизации таких задач, так и при их программировании.
ТЕОРЕТИЧЕСКИЕ ПОЛОЖЕНИЯ
Интерполяция и аппроксимация
В практике часто встречается ситуация, когда некоторая функция f (x ) задана таблицей ее значений в отдельных точках х = x 0 , x 1 , … , x n [a , b ], например, дискретные показания прибора во времени, а следует вычислить функцию f (x ) в некоторых промежуточных точках. Эту задачу можно решить приближенно, заменяя функцию f (x ) более простой непрерывной функцией F (x ). Существуют два основных способа такой замены: интерполяция и аппроксимация .
Суть интерполирования – в построении такой легко вычисляемой функции F (x ), которая совпадает с функцией f (x ) в точках х = x 0 , x 1 , … , x n . Иными словами, график функции F (x ) в плоскости Оху должен проходить через точки х = x 0 , x 1 , … , x n , в которых задана функция f (x ). При этом, точки х = x 0 , x 1 , … , x n называют узлами интерполирования, а функцию F (x ) – интерполяционной. В качестве интерполяционной функции в большинстве случаев выбирают полиномы. Так, линейная интерполяция состоит в простом последовательном соединении точек (x 0 , f (x 0)), (x 1 , f (x 1)), … ,
(x n , f (x n )) отрезками прямых, т.е. в построении n полиномов первой степени. Значение функции f (x ) в точке х *, где х * (x i ,x i +1), i = 0, 1, … , n – 1, вычисляется в этом случае достаточно просто:
f (x *) = f (x i ) + · (х *–x i ).
Квадратичная интерполяция состоит в соединении последовательных троек узлов интерполяции параболами. Кубическая интерполяция – четверок – кубическими параболами и т.д. Интерполяционные полиномы степени (n – 1)есть гладкие функции, проходящие через все узлы интерполяции. При наложении дополнительных условий на соединение функции F (x )в точках (x 1 , f (x 1)), (x 2 , f (x 2)), … , (x n -1 , f (x n -1)) получим т.н. сплайн-интерполяцию. Для построения интерполяционных многочленов разработано множество методов: Ньютона, Стирлинга, Лагранжа и др.
Во многих случаях, имея значения функции в n + 1 узлах, удобно вместо интерполяционного многочлена находить полином степени m <n , который бы хорошо приближал (аппроксимировал) рассматриваемую функцию. При этом требование совпадения функций f (x ) иF (x ) в точках (x 0 , f (x 0)), (x 1 , f (x 1)), … , (x n , f (x n )) заменяется на требование минимизации суммарного отклонения между значениями функций f (x ) и F (x ) в точках х = x 0 , x 1 , … , x n .
Одним из основных методов построения аппроксимизационного полинома является метод наименьших квадратов, по которому требуется, чтобы сумма квадратов отклонений между значениями функции и значениями приближающей функции в узлах должна быть минимальной. Почему квадратов? Потому что сами отклонения между значениями функций может быть как положительными, так и отрицательными, и их сумма не дает истинного представления о различии между функциями за счет компенсации положительныхи отрицательных значений. Можно взять модули отклонений, однако положительные квадраты этих отклонений более удобны в работе.
Среднеквадратическое приближение таблично заданных функций
(метод наименьших квадратов)
Пусть в узлах x 0 , x 1 , … , x n имеем значения у 0 , у 1 , … , у n функции f (x ). Среди полиномов m -й степени (m <n )
P m (x ) = a 0 + a 1 x + a 2 x 2 + … + a m x m (1)
найти такой, который доставляет минимум выражению
S = .(2)
Неизвестными являются коэффициенты полинома (1). Сумма (2) представляет собой квадратичную форму от этих коэффициентов. Кроме того, формула (2) показывает, что функция S = S (a 0 , a 1 , … , a m ) не может принимать отрицательных значений. Следовательно, минимум функции S существует.
Применяя необходимые условия экстремума функции S = S (a 0 , a 1 , … , a m ), получаем систему линейных алгебраических уравнений для определения коэффициентов a 0 , a 1 , … , a m :
, (k = 0, 1, 2, … , m )(3)
Полагая с p = , d p = , запишем систему (3) в матричном виде
С a = d , (4)
С = – матрица системы, а = {a 0 , a 1 , … , a m } T – вектор неизвестных, d = {d 0 , d 1 , … , d m } T – вектор правых частей системы.
Если среди узлов x 0 , x 1 , … , x n нет совпадающих и m ≤ n , то система (4) имеет единственное решение a 0 = ,a 1 = , … , a m = . Тогда полином
= + x + x 2 + … + x m
является единственным полиномом степени m , обладающим минимальным квадратичным отклонением S * = S min.
Погрешность среднеквадратического приближения функции характеризуется величиной δ = .
Самый простой и наиболее часто используемый вид аппроксимации (среднеквадратического приближения) функции – линейная. Приближение данных (x i , y i ) осуществляется линейной функцией y (х )= ax + b . На координатной плоскости (x , y ) линейная функция, как известно, представляется прямой линией.
Пример . Сгладить систему точек прямойy = ax + b .
х | –1 | 0 | 1 | 2 | 3 | 4 |
у | 0 | 2 | 3 | 3,5 | 3 | 4,5 |
Строим рабочую таблицу .
Если точечный график похож на параболу, то эмпирическую формулу ищем в виде квадратного трехчлена. Предположим, что приближающаяся кривая похожа на параболу , симметричную относительно оси ординат. Тогда парабола примет более простой вид
(4.4) |
Возьмем полуквадратичную систему координат. Это такая система координат, у которой по оси абсцисс шкала квадратичная, т. е. значения делений откладываются согласно выражению , здесь m – масштаб в каких-либо единицах длины, например, в см.
По оси ординат откладывается линейная шкала в соответствии с выражением
Нанесем на эту систему координат опытные точки. Если точки этого графика располагаются приблизительно по прямой, то это подтверждает наше предположение, что зависимость y от x хорошо выражается функцией вида (4.4). Для отыскания коэффициентов a и b можно теперь применить один из рассмотренных выше способов: способ натянутой нити, способ выбранных точек или способ средней.
Способ натянутой нити применяется также, как и для линейной функции.
Способ выбранных точек можем применить так. На прямолинейном графике возьмем две точки (далекие друг от друга). Координаты этих точек обозначим и (x, y ). Тогда можем записать
Из приведенной системы двух уравнений найдем a и b и подставим их в формулу (4.4) и получим окончательный вид эмпирической формулы.
Можно и не строить прямолинейного графика, а взять числа , (x,y ) прямо из таблицы. Однако полученная при таком выборе точек формула будет менее точна.
Процесс преобразования криволинейного графика в прямолинейный называется выравниванием.
Способ средней . Он применяется аналогично как в случае с линейной зависимостью. Разбиваем опытные точки на две группы с одинаковым (или почти одинаковым) числом точек в каждой группе. Равенство (4.4) перепишем так
(4.5)
Находим сумму невязок для точек первой группы и приравниваем нулю. То же делаем для точек второй группы. Получим два уравнения с неизвестными a и b . Решая систему уравнений, найдем a и b .
Заметим, что при применении этого способа не требуется строить приближающую прямую. Точечный график в полуквадратичной системе координат нужен только для проверки того, что функция вида (4.4) подходит для эмпирической формулы.
Пример. При исследовании влияния температуры на ход хронометра получены следующие результаты:
z | -20 | -15,4 | -9,0 | -5,4 | -0,6 | +4,8 | +9,4 |
2,6 | 2,01 | 1,34 | 1,08 | 0,94 | 1,06 | 1,25 |
При этом нас интересует не сама температура, а ее отклонение от . Поэтому за аргумент примем , где t – температура в градусах Цельсия обычной шкалы.
Нанеся на декартову систему координат соответствующие точки, замечаем, что за приближающую кривую можно принять параболу с осью, параллельной оси ординат (рис.4). Возьмем полуквадратичную систему координат и нанесем на нее опытные точки. Видим, что эти точки достаточно хорошо укладываются на прямой. Значит, эмпирическую формулу
можно искать в виде (4.4).
Определим коэффициенты a и b по методу средней. Для этого разобьем опытные точки на две группы: в первой группе – первые три точки, во второй – остальные четыре точки. Используя равенство (4.5) находим сумму невязок по каждой группе и приравниваем каждую сумму нулю.
На днях нужно было написать программу, вычисляющую среднеквадратичное приближение функции, заданной таблично, по степенному базису - методом наименьших квадратов. Сразу оговорюсь, что тригонометрический базис я не рассматривал и в этой статье его брать не буду. В конце статьи можно найти исходник программы на C#.
Принципиальным отличием задачи среднеквадратичного приближения от задачи интерполяции является то, что число узлов превышает число параметров. В данном случае практически всегда не найдется такого вектора параметров, для которого значения аппроксимирующей функции совпадали бы со значениями аппроксимируемой функции во всех узлах.
В этом случае задача аппроксимации ставится как задача поиска такого вектора параметров c = (c 0 , ..., c n) T , при котором значения аппроксимирующей функции как можно меньше отклонялись бы от значений аппроксимируемой функции F(x, c) в совокупности всех узлов.
Графически задачу можно представить так
Запишем критерий среднеквадратичного приближения для метода наименьших квадратов:
J(c) = √ (Σ i=0 N 2) →min
Подкоренное выражение представляет собой квадратичную функцию относительно коэффициентов аппроксимирующего многочлена. Она непрерывна и дифференцируема по c 0 , ..., c n . Очевидно, что ее минимум находится в точке, где все частные производные равны нулю. Приравнивая к нулю частные производные, получим систему линейных алгебраических уравнений относительно неизвестных (искомых) коэффициентов многочлена наилучшего приближения.
Метод наименьших квадратов может быть применен для различных параметрических функций, но часто в инженерной практике в качестве аппроксимирующей функции используются многочлены по какому-либо линейно независимому базису {φ k
(x), k=0,...,n
}:
F(x, c)
= Σ k=0 n [c k φ k
(x)
]
.
В этом случае система линейных алгебраических уравнений для определения коэффициентов будет иметь вполне определенный вид:
…
Чтобы эта система имела единственное решение необходимо и достаточно, чтобы определитель матрицы А (определитель Грама) был отличен от нуля. Для того, чтобы система имела единственное решение необходимо и достаточно чтобы система базисных функций φ k (x), k=0,...,n была линейно независимой на множестве узлов аппроксимации.
В этой статье рассматривается среднеквадратичное приближение многочленами по степенному базису {φ k (x) = x k , k=0,...,n }.
x | 0,75 | 1,50 | 2,25 | 3,00 | 3,75 |
y | 2,50 | 1,20 | 1,12 | 2,25 | 4,28 |
Система уравнений для определения коэффициентов:
a 00 c 0 + a 01 c 1 +… + a 0n c n = b 0
a 10 c 0 + a 11 c 1 +… + a 1n c n = b 1
…
a n0 c 0 + a n1 c 1 +… + a nn c n = b n
a kj = Σ i=0 N [φ k (x i)φ j (x i) ], b j = Σ i=0 N
Коэффициенты вычисляются по формулам:
a 00 = N + 1 = 5, a 01 = Σ i=0 N x i = 11,25, a 02 = Σ i=0 N x i 2 = 30,94
a 10 = Σ i=0 N x i = 11,25, a 11 = Σ i=0 N x i 2 = 30,94, a 12 = Σ i=0 N x i 3 = 94,92
a 20 = Σ i=0 N x i 2 = 30,94, a 21 = Σ i=0 N x i 3 = 94,92, a 22 = Σ i=0 N x i 4 = 303,76
b 0 = Σ i=0 N y i = 11,25, b 1 = Σ i=0 N x i y i = 29, b 2 = Σ i=0 N x i 2 y i = 90,21
Решаем систему уравнений и получаем такие значения коэффициентов:
c 0 = 4,822, c 1 = -3,882, c 2 = 0,999
Таким образом
y = 4,8 - 3,9x + x 2
График получившейся функции
Сначала выделяется память под матрицу, в которую будут записаны коэффициенты для решения системы линейных уравнений. Затем, собственно, составляем матрицу - в sumA записываются значения коэффициентов aij, в sumB - bi, все по формуле, указанной выше в теоретической части.
Для решения составленной системы линейных алгебраических уравнений в моей программе используется метод Гаусса. Архив с проектом можно скачать