Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Приближение данных полиномами по методу наименьших квадратов и сплайнами в приложении Basic Fitting




Информация взята с http://matlab.exponenta.ru/spline/book1

Приложение Basic Fitting

Это приложение предоставляет простой графический интерфейс к некоторым функциям MATLAB, предназначенным для приближения данных и позволяет интерполировать одномерные данные кубическими сплайнами, сплайнами, сохраняющими форму и монотонность данных (кубическими полиномами Эрмита) и приближать данные полиномами в смысле наименьших квадратов. График полученного приближения выводится на оси графического окна. Кроме того, возможно вычислить норму ошибки и построить график распределения ошибки, а так же вычислить значение приближающей функции в заданных точках. Одновременная работа может вестись с несколькими наборами одномерных данных. Разумеется, для оформления графиков доступны все стандартные средства графического окна. Средства приложения Basic Fitting позволяют экспортировать информацию о построенном сплайне или полиноме в рабочую среду MATLAB в виде структуры со значениями коэффициентов полинома или информацией о сплайне. Вычисленные значения сплайна или полинома могут быть также экспортированы в рабочую среду. Эти данные могут быть использованы в рабочей среде для последующих действий с построенным приближением функциями MATLAB и ToolBox'ов.

Запуск приложения Basic Fitting и его основные компоненты

Запуск приложения Basic Fitting выполняется из меню Tools графического окна в пункте Basic Fitting. Поэтому для запуска приложения сначала желательно визуализировать данные. Пусть, например, наши данные заданы двумя массивами x и y следующим образом:

   x = 0:0.25:2;

   y = sin(exp(x));

Построим их график круглыми маркерами, используя функцию plot:

   plot(x, y, 'o')

и запустим приложение Basic Fitting из меню Tools графического окна:

Рядом с графическим окном появляется окно приложения Basic Fitting с панелью Plot Fits, набор данных получает имя data1 и в графическом окне появляется легенда. Основные элементы окна приложения Basic Fitting приведены на рисунке:

Раскрывающийся список Select Data содержит только одну строку, поскольку в графическом окне на осях построен один набор данных, которому автоматически присвоено имя data1 (его можно изменить, см. Работа с несколькими наборами данных).

Установка флага Center and Scale X Data позволяет при вычислениях использовать отмасштабированные данные с нулевым средним и дисперсией равной 1 для уменьшения вычислительной ошибки.

На панели Plot Fits расположены флаги для выбора типа приближения см. Какие функции MATLAB и методы используются в приложении Basic Fitting:

  • spline interpolant - для интерполяции данных кубическими сплайнами с граничными условиями отсутствия узла.
  • shape-preserving interpolant - для интерполяции данных кусочными полиномами Эрмита, сохраняющими форму.
  • linear, quadratic, qubic, 4th degree polynomial, ... , 10th degree polynomial - для приближения данных полиномами от первого до 10-го порядка в смысле наименьших квадратов (полиномиальная регрессия).

Установка флага Show equation приводит к отображению в графическом окне формулы полинома с числом значащих цифр в коэффициентах, указанном в списке Significant digits (это работает только для полиномов при приближении по методу наименьших квадратов, а при интерполяции сплайнами выводится только тип сплайна).

Для вывода графика ошибки следует установить флаг Plot residuals и определить способ в первом под этим флагом раскрывающемся списке:

  • Bar plot - столбцевой диаграммой.
  • Scatter plot - маркерами-точками.
  • Line Plot - ломаной линией.

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

График ошибки приближения выводится в том же самом графическом окне на дополнительные нижние оси, т.к. в нижнем раскрывающемся списке по умолчанию стоит Subplot. Если требуется получить распределение ошибки приближения в отдельном окне, то следует выбрать в нем Separate figure.

Для отображения численного значения ошибки в евклидовой норме (корень из суммы квадратов разностей значений данных и приближающего их полинома) на осях с графиком ошибки, следует установить флаг Show norm of residuals.

В правом нижнем углу окна находится кнопка для отображения панели Numerical results, при ее нажатии данная панель оказывается справа от Plot Fits:

Панель Numerical Results позволяет выбрать тип приближения в раскрывающемся списке Fit и посмотреть на коэффициенты полинома и ошибку приближения в евклидовой норме в окне Coefficients and norm of residuals.

Полученные результаты можно сохранить в виде переменных в рабочей среде MATLAB при помощи кнопки Save to workspace (она сейчас недоступна, поскольку пока мы не построили ни одного приближения).

Кнопка служит для скрытия панели Numerical Results, а кнопка предназначена для раскрытия последней панели Find Y=f(X) приложения Basic Fitting, служащей для вычисления значений построенного сплайна или полинома и сохранения результатов в переменных рабочей среды MATLAB. При нажатии на эту кнопку справа появляется панели Find Y=f(X) и окно приложения Basic Fitting приобретает вид:

Для вычисления значений построенного полинома или сплайна в промежуточных точках следует задать их в строке ввода в виде, понятном MATLAB, и нажать кнопку Evaluate. Значения независимой переменной могут быть заданы:

  • вектором, например [0 0.15 0.64 0.89] или 1.1:0.05:2.26;
  • функциями linspace или logspace, которые возвращают вектор из равноотстоящих точек в линейной и, соответственно, логарифмической шкале, например: linspace(0.1, 2.4, 25) или logspace(-5,0,12);
  • вектором значений, являющимся глобальной переменной рабочей среды.

Полученные результаты выводятся в таблице и их можно экспортировать в переменные рабочей среды, воспользовавшись кнопкой Save to workspace. Для отображения полученных значений маркерами на осях с данными и приближением следует установить флаг Plot evaluated results.

Панель Find Y=f(X) скрывается при помощи кнопки , расположенной в ее правом нижнем углу.

Приближение данных полиномами по методу наименьших квадратов и сплайнами в приложении Basic Fitting

Поставим задачу приблизить данные, введенные в предыдущем разделе Запуск приложения Basic Fitting и его основные компоненты, полиномом 5-ой степени в смысле наименьших квадратов и кубическими сплайнами, вывести график распределения ошибки и ее норму и вычислить значения полученного полинома в точках с координатами . Для этого раскроем все три панели приложения Basic Fitting и на панели Plot Fits установим флаги spline interpolant и 5th degree polynomial. При этом в графическом окне сразу же строятся графики сплайна и полинома. Для вывода на график выражения для полинома достаточно установить флаг Show equation и выбрать число значащих цифр в списке Significant digits (можно оставить две, как по умолчанию). Следует иметь ввиду, что вне зависимости от выбранного числа значащих цифр для отображения результата, MATLAB производит все вычисления с двойной точностью). Построим графики распределения ошибки и выведем ее значение в среднеквадратичной норме в отдельном графическом окне, для чего на панели Plot Fits выберем в самом нижнем списке Separate figure и установим флаг Show norm of residual. В результате получаем такие графики с данными, сплайном, полиномом и ошибками приближений:

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

где - построенный полином пятой степени, а 9 - число данных (длина векторов x и y). Для получения нулевой ошибки при приближении полиномом следовало бы построить полином 8-ой степени, поскольку через девять точек, заданных нашими векторами x и y, проходит единственный полином восьмой степени, который является интерполяционным (его девять коэффициентов однозначно определяются девятью условиями прохождения через заданные точки). Приблизим наши данные полиномом восьмой степени, установив флаг 8th degree polynomial на панели Plot Fits. График полинома выводится на тех же осях, что и предыдущие приближения, распределение ошибки и ее значение в среднеквадратичной норме добавляется на второй график. Однако, поскольку приближение производится по методу наименьших квадратов), то для нахождения коэффициентов полинома решается система линейных алгебраических уравнений. Из-за ошибок округления она решается неточно, чем и обусловлена ненулевая норма ошибки приближения полиномом восьмой степени (порядка 10-13).

Полиномы степени большей восьми в нашем примере будут неединственными (в них коэффициентов больше, чем условий прохождения графика полинома через точки данных). Выбор девятой или десятой степеней приведет к появлению окна с соответствующим предупреждением "Polynomial is not unique; degree >= number of points".

Продолжим работу со сплайном и полиномом пятой степени, оставив только флаги spline interpolant и 5th degree polynomial на панели Plot Fits. При сбрасывании флага, график соответствующего приближения автоматически удаляется с осей. Вычислим значение полинома в точках и отобразим их маркерами на графике. Для этого:

  1. в раскрывающемся списке Fit на панели Numerical results выберем 5th degree polynomial;
  2. введем вектор [0 sqrt(2) 2*pi/3] в строку ввода на панели Find Y=f(X);
  3. установимфлаг Plot evaluated results напанели Find Y=f(X);
  4. нажмем кнопку Evaluate на этой же панели.

На панели Find Y=f(X) появилась таблица значений полинома и они размечены на графике маркерами. Как было замечено в пункте Запуск приложения Basic Fitting и его основные компоненты, можно было воспользоваться и глобальной переменной рабочей среды, т.е., если бы мы создали вектор X, например, в командной строке:

   >> X = [0 sqrt(2) 2*pi/3];

то на шаге 2) в строке ввода можно было указать имя переменной X.

Обратите внимание, что последняя точка с абсциссой 2П/3 лежит вне наших данных. В данном случае мы проделали экстраполяцию.

Аналогичным образом можно вычислить значения сплайна в заданных точках, выбрав на шаге 1) spline interpolant в раскрывающемся списке Fit на панели Numerical results.

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










Последнее изменение этой страницы: 2018-05-10; просмотров: 326.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...