Урок 8. Аппроксимирующие модели

Текст урока с работающими фрагментами расчетов в файле uroki-approksimacii.xls

 

 

Обогатившись сведениями предыдущего урока, перейдем к чему-то более конкретному для нас. Одна из наиболее часто предлагаемых аппроксимирующих моделей - полиноминальная модель:

 

y=a+b1*x+b2*x^2+...bn*x^n

 

В определенном смысле это отвечает линейной модели, о которой идет речь в описании Линейн:

 

y=a+b1*x1+b2*x2+...bn*xn

 

где x1=x; x2=x^2;...;xn=x^n

 

О полиноминальной модели вполне конкретно говорится в программе Excel для построения линий трендов, в которой так же, как и в Линейн, обработка данных осуществляется посредством МНК (метода наименьших квадратов).

 

Особенности поведения ошибки аппроксимации проследим на конкретном и уже использовавшемся нами примере энтальпии насыщенного пара (i"nas, ккал/кг) в зависимости от давления (P, кгс/кг) - см. статью Урок 4. Виды аппроксимации в Excel.

 

Нижеследующий и дальнейшие примеры можно проследить по файлу Уроки аппроксимации.xls, Лист 2.

 

Начнем с простейшей полиноминальной модели:

 

i"nas=a+b*P

 

 

Первая строка функции - значения b и a;

 

вторая строка - погрешности для b и a;

 

третья строка - R2 и среднее квадратическое

 

отклонение y от аппроксимирующей линии.

 

Ошибка аппроксимации в данном случае получилась весьма большой: среднее квадратичное отклонение фактического значения y от расчетного dy=1.65 ккал/кг, максимальная ошибка аппроксимации dymax=2.5 ккал/кг. Почему так получилось - программа не дает какого-либо ответа на этот вопрос. Чтобы понять причину нашей неудачи, обратимся к графическому виду исходных данных и их аппроксимации:

 

 

Причина большой ошибки аппроксимации в данном случае вполне очевидна: несоответствие аппроксимирующей модели структуре аппроксимируемых данных.

 

Попробуем подключить более сложную полиноминальную модель

 

i"nas=a+b1*P+b2*P^2

 

Ошибка аппроксимации снова получилась значительно больше той, которая нас могла бы удовлетворить. Попробуем еще усложнить модель

 

i"nas=a+b1*P+b2*P^2+b3*P^3

 

На этот раз результат получился более удовлетворительным, но все же максимальная ошибка аппроксимации около 0.3 ккал/кг для справочных данных является слишком большой. Попробуем и далее усложнить модель

 

i"nas=a+b1*P+b2*P^2+b3*P^3+b4*P^4

 

На этот раз ошибка аппроксимации оказалась удовлетворительной - dYmax не более 0.08 ккал/кг. Однако у нас осталось всего три степени свободы (вторая колонка Линейн, последняя строка). Это говорит о том, что мы уже приближаемся к интерполяции, то есть, попросту воспроизводим точки нашей таблицы, а не аппроксимируем их. Посмотрим, как справится наш полином с более широким диапазоном:

 

 

 

На сей раз полином справился с задачей отвратительно: ошибка аппроксимации dymax превзошла 4 ккал/кг, а полином начал рисовать на графике волны - обычное безобразие, которое устраивает полином. Но попробуем еще раз применить более высокую степень полинома:

 

i"nas=a+b1*P+b2*P^2+b3*P^3+b4*P^4+b5*P^5

 

Ситуация улучшилась, но не существенно - максимальная ошибка аппроксимации на уровне 3 ккал/кг. Попробуем еще раз поэксплуатировать полином, доведя его на этот раз до безобразного размера

 

i"nas=a+b1*P+b2*P^2+b3*P^3+b4*P^4+b5*P^5+b6*P^6+b7*P^7+b8*P^8

 

Максимальная погрешность аппроксимации уменьшилась до 1 ккал/кг, несмотря на очень высокую степень полинома. Все это доказывает давно известную нам истину: полиномы - плохая вещь, если их использовать без всяких ухищрений.

 

Анонсы уроков

Copyright © 2009 - 2024 Алгоритмист | Правовая информация
Карта сайта
Яндекс.Метрика