Приветствую! Сегодня продолжаем говорить об обработке экспериментальных данных. Сегодняшняя статья — продолжение предыдущей темы: Интерполяция в 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-ой степени.
Вывод:
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;
и сравним истинную и восстановленную траектории
Для построения истинной и восстановленной траектории в текст процедуры добавим:
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