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

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

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

Аппроксимация полиномами методом наименьших квадратов (МНК) - Библиотека алгоритмов 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-ой степени по МНК у нас задан набор точек и значений функции в них, и мы предполагаем, что эти точки должны лежать на одной прямой. При этом число точек может быть произвольным, намного больше M, и обычно через все сразу нельзя провести полином M-ой степени. В таком случае мы считаем, что все отклонения от предполагаемого полинома, на котором они должны лежать, обусловлены случайными погрешностями в ходе измерений.

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

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

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

Система имеет следующий вид. Пусть матрица A состоит из элементов , где индекс i принимает значения от 0 до N-1, а индекс j принимает значения от 0 до M. Пусть значения функции собраны в вектор y, состоящий из N} компонент. Пусть искомые коэффициенты собраны в M-компонентный вектор c. Тогда получаем следующую систему уравнений:

(A TA)c = A Ty

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

Замечание #1

Для высоких степеней M лучше использовать обобщенный МНК с использованием разложения по полиномам Чебышева или другим, "хорошим" базисным функциям, вроде синусов/косинусов. Связано это с тем, что при M > 10 системы уравнений для базиса fk (x) = x k очень плохо обусловлены, и даже SVD-разложение не помогает справиться с этим.

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

X - массив вещественных чисел с нумерацией элементов от 0 до N-1. Содержит набор абсцисс, в которых известны значения функции. Y - массив вещественных чисел с нумерацией элементов от 0 до N-1. Содержит набор значений функции. N - число точек. N >= 1 M - степень требуемого полинома. M >= 0

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

C - коэффициенты аппроксимирующего полинома. Массив вещественных чисел с нумерацией элементов от 0 до M. C[I] - коэффициент при X 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