Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабы / ЧМ.Лабы.Лисовец / ЧМ.labs.by mice / lab04 / docs / from alglib.manual.ru (10.04.2005) / Аппроксимация обобщенным методом наименьших квадратов / Аппроксимация обобщенным методом наименьших квадратов (МНК) - Библиотека алгоритмов

.htm
Скачиваний:
36
Добавлен:
17.04.2013
Размер:
19.09 Кб
Скачать

Аппроксимация обобщенным методом наименьших квадратов (МНК) - Библиотека алгоритмов H2 { FONT-SIZE: larger; FONT-FAMILY: Tahoma,sans-serif } H3 { FONT-SIZE: 12pt; FONT-FAMILY: Arial,sans-serif } INPUT { FONT-SIZE: 9pt; FONT-FAMILY: Courier New,monospace } UL { TEXT-ALIGN: justify } OL { TEXT-ALIGN: justify } A.leftmenu { FONT-SIZE: 8pt; COLOR: #cc0000; FONT-FAMILY: Tahoma,sans-serif; TEXT-DECORATION: none } A.leftmenu:hover { TEXT-DECORATION: underline } A.artlist { COLOR: #111177; TEXT-DECORATION: none } A.artlist:visited { COLOR: #111177; TEXT-DECORATION: none } A.artlist:hover { COLOR: #111177; TEXT-DECORATION: underline } A.special { FONT-SIZE: 10pt; COLOR: #000066 } A.special:visited { FONT-SIZE: 10pt; COLOR: #000066 } A.specialatt { FONT-WEIGHT: bold; FONT-SIZE: 10pt; COLOR: #aa0000 } A.specialatt:visited { FONT-WEIGHT: bold; FONT-SIZE: 10pt; COLOR: #aa0000 } .compact { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .code { FONT-SIZE: 9pt; COLOR: #006699; FONT-FAMILY: Courier New, monospace } .smalltext { FONT-SIZE: 10pt } .halfsmalltext { FONT-SIZE: 11pt } .attention { FONT-WEIGHT: bold; COLOR: #aa0000 }

Главная Ссылки FAQ Статьи Новости Форум Контакты О сайте Terms of use Содержание - Интерполяция, аппроксимация и численное дифференцирование - Аппроксимация обобщенным методом наименьших квадратов (МНК)   Аппроксимация обобщенным методом наименьших квадратов (МНК) При аппроксимации функции обобщенным МНК у нас задан набор точек, значений функции в них, и весов, соответствующих этим значениям. Также задан набор M базисных функций Xk (x). Мы предполагаем, что наша функция линейно выражается через базисные функции, а все отклонения обусловлены случайными погрешностями в ход измерений. При этом число точек может быть произвольным, намного больше M, так что подобрать такую линейную комбинацию базисных функций, которая бы проходила через все точки, невозможно.

Как восстановить исходную функцию? Из всех линейных комбинаций базисных функций мы выбираем такую f, для которой взвешенная сумма квадратов отклонений измеренных значений функции от f минимальна. Т.е. мы минимизируем функцию

Как видно, некоторым значениям yi  оказывается большее доверие, и они вносят больший вклад в итоговую погрешность, чем другие. Такой выбор функции оценки качества решения не случаен. Известно, что если ошибки измерения распределяются по Гауссу и независимо, причем i-ое значение со среднеквадратичным отклонением , то такой выбор функции оценки приведет нас к наиболее правдоподобному результату.

Поиск коэффициентов Для поиска минимума мы приравниваем к нолю производные . Данный случай хорош тем, что это, во-первых, не только необходимое, но и достаточное условие минимума, а во-вторых, это условие записывается в виде системы линейных уравнений относительно ci .

Система имеет следующий вид. Пусть матрица A состоит из элементов aij  = Xj (xi )σi , где индекс i принимает значения от 0 до N-1, а индекс j принимает значения от 0 до M-1. Пусть вектор b имеет вид: bi  = yi σi . Пусть искомые коэффициенты собраны в M-компонентный вектор c. Тогда получаем следующую систему уравнений:

(A TA)c = A Tb

Для решения используется алгоритм решения системы линейных уравнений на основе SVD-разложения. Связано это с тем, что полученная система уравнений бывает плохо обусловленной, и традиционные методы могут давать слишком большую погрешность.

Описание программы Входные параметры:

X - массив вещественных чисел с нумерацией элементов от 0 до N-1. Содержит набор абсцисс, в которых известны значения функции. Y - массив вещественных чисел с нумерацией элементов от 0 до N-1. Содержит набор значений функции. W - массив вещественных чисел с нумерацией элементов от 0 до N-1. Содержит набор весов, сопоставленных значениям функции. FMatrix - таблица значений базисных функций. Нумерация элементов: [0..N-1, 0..M-1]. FMatrix[I,J] - значение базисной функции XJ (xi ). N - число точек. N >= 1 M - число базисных функций. M >= 1

Выходные параметры:

C - коэффициенты разложения. Массив вещественных исел с нумерацией элементов от 0 до M-1. C[I] - коэффициент при I-ой базисной функции.

Если нашли ошибку в алгоритме - сообщите!

Реализация алгоритма Исходный код данного алгоритма доступен в версиях на C++, Visual Basic 6 и Delphi. Все версии идентичны по своей функциональности.

Для каждого из языков программирования выводится список файлов, содержащий ссылку на код алгоритма (в начале списка) и вспомогательные алгоритмы, если такие есть (выделены курсивом).

Если вы в первый раз посетили этот сайт, то: Скачайте и подключите библиотеку AP (12 КБ) - библиотеку классов и функций, которая необходима для работы программ с сайта. Архив содержит версии библиотеки для каждого из языков, представленных на сайте. Обязательно прочитайте FAQ. Обратите внимание на раздел, посвященный выбранному вами языку. И ещё - читайте комментарии. Сэкономите много времени, поскольку НУМЕРАЦИЯ ЭЛЕМЕНТОВ МАССИВОВ НЕ ВСЕГДА НАЧИНАЕТСЯ С НОЛЯ, а не все это замечают.

C++ Аппроксимация обобщенным методом наименьших квадратов (МНК) (скачать, открыть в браузере) Поиск решения с минимизацией невязки при помощи SVD-разложения для прямоугольной матрицы (скачать, открыть в браузере)

Delphi Аппроксимация обобщенным методом наименьших квадратов (МНК) (скачать, открыть в браузере) Поиск решения с минимизацией невязки при помощи SVD-разложения для прямоугольной матрицы (скачать, открыть в браузере)

Visual Basic 6 Аппроксимация обобщенным методом наименьших квадратов (МНК) (скачать, открыть в браузере) Поиск решения с минимизацией невязки при помощи SVD-разложения для прямоугольной матрицы (скачать, открыть в браузере)

Реализация алгоритма на AlgoPascal Реализация алгоритма на AlgoPascal доступна для лучшего понимания сути алгоритма, если вы захотите разобраться в нем. Автоматический перевод позволяет получить работоспособную программу, но оригинал на AlgoPascal гораздо легче читать, поскольку он набирается человеком.

открыть AP-файл в браузере

    Бочканов Сергей, Быстрицкий Владимир

Copyright © 1999-2005

При поддержке проекта MANUAL.RU