Текст урока с работающими фрагментами расчетов в файле uroki-approksimacii.xls
Погрешности обеспечивают головную боль при обработке данных. Пусть у нас есть известная (или предполагаемая) зависимость
Y=a+b1*X1+b2*X2+...bn*Xn,
где требуется определить свободный член a и коэффициенты b1, b2,...bn при переменных X1, X2,...Xn. Если бы не было погрешностей, то достаточно было бы сделать n+1 замеров Y при разных значениях указанных переменных и, решив систему уравнений, найти значения свободного члена и коэффициентов. Hо каждое значение переменной содержит погрешность и замеров приходится делать намного больше, чем n+1. А при наличии такого большого количества замеров возникает проблема как сгруппировать данные таким образом, чтобы ошибки в них взаимно уничтожались. Первое, что мы можем сделать - это сложить все значения по группам переменных и перейти к средним величинам, которые в целях различия с исходными переменными обозначим и выделим курсивом.
Y=a+b1*X1+b2*X2+...bn*Xn
Далее мы можем перемножить левую и правую части исходного уравнения
Y=a+b1*X1+b2*X2+...bn*Xn
на каждую переменную поочередно и результаты снова сложить и перейти к средним значениям произведений. Получим систему уравнений со средними значениями в левой части, а также при искомых свободном члене и коэффициентах:
Y=a+b1*X1+b2*X2+...bn*Xn
Y*X1=a*X1+b1*X1*X1+b2*X2*X1+...bn*Xn*X1
Y*X2=a*X2+b1*X1*X2+b2*X2*X2+...bn*Xn*X2
Y*X3=a*X3+b1*X1*X3+b2*X2*X3+...bn*Xn*X3
............................
Y*Xn=a*Xn+b1*X1*Xn+b2*X2*Xn+...bn*Xn*Xn
После решения этой системы уравнений мы получим значения свободного члена и коэффициентов уравнения по так называемому методу наименьших квадратов или сокращенно МHК. При этом предполагается (и даже доказывается), что сумма квадратов отклонений исходных значений Y от рассчитанных по формуле, полученной с помощью МHК, будет минимальной.
Внимательный читатель заметит, что приведенная выше группировка данных и их усреднение не являются единственно возможными. Можно создать и много других вариантов, например перемножать члены исходного уравнения не на каждую переменную, а на ее корень или квадрат и т.д. Hо не будем углубляться в этот вопрос. Программы на основе МHК есть во многих электронных таблицах, включая Excel, и мы можем удовлетвориться тем, что можем эффективно использовать их.
Что мы можем понимать под переменными X1, X2,...Xn? Они могут быть и функционально различными переменными как, например, температура, давление и паровая нагрузка котла, и варианты одной переменной: X2=X1*X1; X3=X2*X1... и т.д. В последнем случае мы будем иметь так называемый полином:
Y=a+b1*X1+b2*X1^2+b3*X1^3+...bn*X1^n.
Кроме того, переменные Y и Xi могут быть и самыми разными комбинациями других переменных. Чтобы мы ни задали программе МHК, она в большинстве случаев справляется со своей задачей. Главное, чтобы мы сами знали смысл того, что задаем программе, и чего мы от нее хотим.
Hо сложное начинается с понимания простого. С этого и мы начнем. Пусть мы имеем простое уравнение вида Y=a+b*X, скажем Y=3+2*X, и соответствующую ему таблицу данных: X; Y
X 1 2 3 5 6 7 8 9 Y 3 9 21 45 93 189 381 765
Заложим это в программу с МHК и посмотрим, как она справится с этой задачей.
Чтобы не быть слишком абстрактным в апелляции к программе с МНК, постараемся несколько конкретизировать этот момент. Практически на каждом компьютере есть оффисное приложение Excel и в этом приложении есть несколько программ, использующих МНК.
Hа листе Excel (см. Уроки аппроксимации.xls, Лист Stat) это можно сделать примерно так. Создаем колонки независимых переменных или X-ов и колонку зависимых переменных или колонку Y-ов. В данном случае у нас будет одна колонка X и также одна колонка Y.
Hа листе Excel проделываем следующие операции:
- набираем символы "=Линейн(" - кавычки набирать не нужно;
- курсором выделяем колонку Y (без символа "Y"), затем, после нажатия и удерживания в утопленном положении клавиши Ctrl, выделяем колонку X (выделение осуществляется мышкой при утопленном положении левой кнопки);
- набираем символы ";1;1)" и нажимаем Enter. После этого в ячейке, где мы ввели функцию Линейн, появится только одно число - в данном случае цифра 2.
Далее нам надо выделить достаточное количество ячеек для многозначной функции Линейн. Делается это так:
- курсор помещается в ячейку с функцией Линейн;
- выделяется нужное количество ячеек справа и снизу (в данном случае достаточно выделить два столбца и три строки);
- нажимаем клавишу F2, затем, удерживая комбинацию клавиш Ctrl и Shift в утопленном положении нажимаем Enter.
Весь этот текст и примеры вам гораздо удобнее будет смотреть непосредственно на листе (Уроки аппроксимации.xls, Лист Stat), который рекомендуется вам загрузить.
Программа выдала a=3, b=2, стандартная погрешность dY=0. Для удобства мы скопировали эти значения под символами a, b и dY. Другие детали вы можете узнать из описания функции Линейн, имеющегося в Excel. Однако вернемся к нашей теме.
В нашем примере мы использовали точные значения переменных. Hо в реальности мы во многих случаях не знаем точных значений X и Y. Попробуем смоделировать ситуацию, хотя бы в части неточности значений X, и посмотреть какой получится результат. Для этого "размоем" значения X простейшим из доступных нам способов:
X: 1,1 1,9 3,1 4,9 6,1 6,9 8,1 8,9 - для Y сохраним прежние значения. Программа выдала a=2.926, b=2.0145, dY=0.227. Размоем еще на столько же: X 1,2 1,8 3,2 4,8 6,2 6,8 8,2 8,8 Программа выдала a=2.878, b=2.024, dY=0.456. И еще на столько же: X 1,3 1,7 3,3 4,7 6,3 6,7 8,3 8,7 Программа выдала a=2.859, b=2.028, dY=0.688.
Из этого небольшого эксперимента следует, что даже если мы проведем бесконечное количество замеров, мы все равно не определим по МHК истинные значения a и b. Hо зная погрешности замеров, мы можем смоделировать ситуацию, вычислить смещение и определить несмещенные и более вероятные оценки значений a и b. Соответствующую иллюстрацию смотри в Excel.
Hо это лишь общий принцип. В более строгом подходе к анализу ситуаций надо задаваться определенным законом распределения ошибок и проводить многократный вычислительный эксперимент. Есть разные способы, теории, разработки относительно получения несмещенных значений, однако наиболее правильный результат можно получить только моделированием конкретных ситуаций. Это сложно, и далеко не всегда в этом есть насущная необходимость. Hо когда такая необходимость все же есть, то приходится исследовать ситуацию на компьютерных моделях и прибегая к вычислительному эксперименту.