Текст урока с работающими фрагментами расчетов в файле 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 ккал/кг, несмотря на очень высокую степень полинома. Все это доказывает давно известную нам истину: полиномы - плохая вещь, если их использовать без всяких ухищрений.