Метод наименьших квадратов matlab

Метод наименьших квадратов matlab

Приветствую! Сегодня продолжаем говорить об обработке экспериментальных данных. Сегодняшняя статья — продолжение предыдущей темы: Интерполяция в Matlab. Настоятельно советую с ней ознакомиться перед чтением данной статьи. По сути аппроксимация в Matlab очень похожа на интерполяцию, однако, для её реализации используются другие правила и функции.

Аппроксимация

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

МНК (Метод Наименьших Квадратов)

Одним из самых популярных методов аппроксимации в Matlab и в других средах, это Метод Наименьших Квадратов ( МНК ). В этом методе при сглаживании опытных данных аппроксимирующую кривую стремятся провести так, чтобы её отклонения от табличных данных по всем узловым точкам были минимальными.

Суть МНК заключается в следующем: для табличных данных, полученных в результате эксперимента, отыскать аналитическую зависимость, сумма квадратов уклонений которой от табличных данных во всех узловых точках была бы минимальной.

Аппроксимация в Matlab по МНК осуществляется с помощью функции polyfit. Функция p = polyfit(x, y, n) находит коэффициенты полинома p(x) степени n, который аппроксимирует функцию y(x) в смысле метода наименьших квадратов. Выходом является строка p длины n+1, содержащая коэффициенты аппроксимирующего полинома.

Примеры задач

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

Осуществить аппроксимацию в Matlab табличных данных x = [0, 0.1 , 0.2, 0.3, 0.5] и y = [3, 4.5, 1.7, 0.7, -1] . Применяя метод наименьших квадратов, приблизить ее многочленами 1-ой и 2-ой степени. Для каждого определить величину среднеквадратической ошибки. Построить (на одном листе) графики и заданной таблично функции (ломанная линия) и приближающих ее многочленов 1-ой и 2-ой степени.

Читайте также:  Как поменять цвет клавиатуры на ноутбуке asus


Вывод:
ans = 0.9253
ans = 0.8973

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

Найти у(0.25) путём построения аппроксимирующего полинома методом наименьших квадратов согласно данным:
x: 0, 0.1, 0.2, 0.3, 0.5
y: 3, 4.5, 1.7, 0.7, -1
p: 0.5, 0.8, 1.6, 0.8, 0.1
Построить этот полином без учёта весовых коэффициентов с использованием определителя Вандермонда и стандартных операторов.


Вывод:
a =
228.1447
-176.0984
22.7745
3.1590
qq = 228.1447 -176.0984 22.7745 3.1590
y2 = 1.4113

Как видите встроенные функции для аппроксимации в Matlab укорачивают алгоритм почти вдвое.

Существует также возможность реализации всего алгоритма через одну функцию, но для преподавателей студентов она скорее всего будет не приемлема. С помощью функции lsqcurvefit(fun,x0,xdata,ydata), где:
xdata,ydata– табличные значения аппроксимируемой функции;
x0 –стартовое значение параметров функции;
fun – функция аппроксимации, задаваемая пользователем

С аналитически-теоретической стороны, существуют такие виды аппроксимации:

  • Аппроксимация ортогональными классическими полиномами.
  • Аппроксимация каноническим полиномом

Но на практике их реализацию требуют редко.

Вот и вся основная информация по аппроксимации в Matlab, если остались вопросы, задавайте их в комментариях.

Решим переопределенную систему уравнений с матрицей

xe=xe’; ye=ye’;A=[xe.^2 xe ones(26,1)];

(A*koef=ye, где вектор koef — вектор коэффициентов квадратного трехчлена, описывающего исследуемую траекторию движения ракеты. Решать эту систему будем методом наименьших квадратов. Найдем матрицу нормальной системы уравнений

С грустью констатируем, что она плохо обусловлена (вычислим число обусловленности матрицы)

Домножим слева на А’ и правую часть ye

и найдем вектор искомых коэффициентов

Вычислим "искомые" координаты траектории

и сравним графически траектории

и оценим все отклонения, например:

Восстановим всю траекторию

yey=[(x.^2)’ x’ ones(145,1)]*koef;

и сравним истинную и восстановленную траектории

Для построения истинной и восстановленной траектории в текст процедуры добавим:

Читайте также:  Предоставленный функции токен неправилен rdp

xe=xe’; ye=ye’;A=[xe.^2 xe ones(26,1)];

yey1=[x1′ x’ ones(146,1)];

Получаем результат (Рис. 3 и Рис. 4):

На полученном графике красная парабола – истинная траектория, зелёная парабола – вычисленная по точкам.

Если задать точность меньше, например (alfa=0.001), то траектория построенная по точкам лучше совпадёт с истинной траекторией (Рис. 4):

Определим скорость движения ракеты.

Уравнение траектории движения ракеты в общем виде: .

Продифференцируем уравнение движения ракеты по х и приравняем производную к нулю, таким образом, найдём экстремумы:

— точка экстремума.

Так как траектория парабола, то в точке экстремума находится максимум. Т.е. в точке yпринимает максимальное значение. Ракета находится в максимальной по высоте точке.

.

Формула максимального значения высоты через скорость.

.

Приравнивая правые части уравнений, получаем:

.

Теперь для нахождения начальной скорости нам необходимо знать угол запуска ракеты. Найдём его как угол наклона касательной к параболе в точке y=0.

Тангенс угла наклона касательной, касающейся параболы в точке А, равен значению производной в этой точке А: .

Получаем угол запуска ракеты: .

Найдём х (y=0, координата точки запуска ракеты):.

Т.к. угол острый и положительный, то берём со знаком плюс: ;

.

Найдём угол, под которым надо запускать антиракету.

Запишем условия точки встречи (t – старт антиракеты, τ – полёт ракеты и антиракеты, β – угол запуска антиракеты).

OX:

OY:

Из (1) выразим τ: , и подставим в (2)

.

Решим это уравнение методом вспомогательного угла:

;

Получаем .

Теперь, зная β, мы можем найти время полёта ракеты и антиракеты τ.

Рассчитаем данные для запуска антиракеты в MatLab, и найдём траекторию полёта антиракеты. Для этого в текст процедуры добавим:

v0=vvv/w; % рассчитываем скорость запуска ракетыv0

v0x=v0*cos(a); % находимOX-овую составляющую скоростиv0

v0y=v0*sin(a); % находим ОY-овую составляющую скоростиv0

Читайте также:  Почему пропал яндекс дзен

u0=2000; % задаём начальную скорость антиракеты

t0=41; % задаём время запуска антиракеты

u0x=u0*cos(b); % находимOX-овую составляющую скоростиu0

u0y=u0*sin(b); % находим ОY-овую составляющую скоростиu0

tay=(0.7*L-v0x*t0)/(v0x+u0x) % находим время τ

fort=0:floor(tay)% находим координаты антиракеты в зависимости от

xxx111=0.7*L-u0x*(tay)% координаты ракеты в момент

yyy111=[xxx111^2xxx111 1]*koef;% времени τ

x111=v0x*(tay+t0)% координаты антиракеты в

y111=v0y*(tay+t0)-(g*(tay+t0)^2)/2% момент времени τ

plot(x,yey,’g-‘,xxx,yyy,’r-‘),hold% рисуем траекторию антиракеты и

% ракеты и обозначаем точки в которых оказываются ракета и антиракета в

Curve Fitting Toolbox™ предоставляет приложение и функции для подбора кривой кривым и поверхностям к данным. Тулбокс позволяет вам выполнить исследовательский анализ данных, предварительно обработать и постобработать данные, сравнить модели кандидата и удалить выбросы. Можно провести регрессионный анализ, пользующийся библиотекой линейных и нелинейных предоставленных моделей, или задать собственные уравнения. Библиотека обеспечивает оптимизированные параметры решателя и стартовые условия улучшить качество ваших подгонок. Тулбокс также поддерживает непараметрические техники моделирования, такие как сплайны, интерполяция и сглаживание.

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

Начало работы

Изучите основы Curve Fitting Toolbox

Линейная и нелинейная регрессия

Подходящие кривые или поверхности с линейными и нелинейными моделями библиотеки и пользовательскими моделями

Интерполяция

Подходящие кривые интерполяции или поверхности, оцените значения между известными точками данных

Сглаживание

Подходящее сглаживание использования шлицует и локализованная регрессия, сглаженные данные со скользящим средним значением и другими фильтрами

Подходящая постобработка

Графический вывод, выбросы, невязки, доверительные интервалы, данные о валидации, интегралы и производные, генерирует код MATLAB ®

Сплайны

Создайте сплайны с или без данных; ppform, B-форма, продукт тензора, рациональный, и сплайны тонкой пластины stform

Ссылка на основную публикацию
Маска ввода в excel
4258 просмотра 2 ответа 1284 Репутация автора ВНИМАТЕЛЬНО ПРОЧИТАЙТЕ ВОПРОС, ПОЖАЛУЙСТА, ЭТО НАМЕРЕНИЯ ОТЛИЧАЮТ VBA. НЕ ЭКСКАЛЬНО Мне было дано...
Лучший просмотрщик фото для mac
Для просмотра изображений в Mac OS предусмотрено простое приложение «Фото», которое имеет ряд недостатков. В частности, в программе отсутствует возможность...
Мазда сх 5 отключить подушку безопасности
Обстоятельства, при которых система SRS может не сработать При тяжелых авариях, например, таких, которые описаны выше в разделе «Критерии срабатывания...
Математический альбом исаева решебник
Ольга Павлова Пособие «Математический альбом» В индивидуальной работе по математике, я очень часто использую вот такой математический альбом (производство и...
Adblock detector