
- •Математические методы моделирования физических процессов
- •Введение
- •Лабораторная работа № 1 численное решение обыкновенных дифференциальных уравнений первого порядка
- •Порядок выполнения работы
- •Лабораторная работа № 2 численное решение ду высших порядков или систем оду
- •Порядок выполнения работы
- •Лабораторная работа № 3 численное решение краевых задач
- •Порядок выполнения работы
- •Лабораторная работа № 4 численное решение дифференциальныхных уравнений в частных производных
- •Порядок выполнения работы
- •Лабораторная работа № 5 численное решение систем линейных алгебраических уравнений
- •Порядок выполнения работы
- •Лабораторная работа № 6 численное решение нелинейных уравнений и их систем
- •Порядок выполнения работы
- •Лабораторная работа № 7 аппроксимация данных методом наименьших квадратов
- •Порядок выполнения работы
- •Лабораторная работа № 8 решение задач одномерной и многомерной оптимизации
- •Порядок выполнения работы
- •Библиографический список
- •Приложения
- •Первые навыки работы в matlab
- •Численное решение оду и их систем
- •Численное решение краевых (граничных) задач
- •Аналитическое решение линейных сиситем алгебраических уравнений
- •Численное решение линейных или нелинейных систем алгебраических уравнений
- •Аппроксимация данных
- •Приближение данных полиномом
- •Интерполяция сплайнами
- •Аппроксимация данных при помощи регрессии
- •Одномерная и многомерная оптимизация
- •Основные математические функции в matlab
Аппроксимация данных
При решении задач приближения функции можно выделить два направления: 1) процесс интерполяции, определяющий вид функции (полинома), совпадающей с табличными данными; 2) процесс аппроксимации, обеспечивающий оптимальное расположение линии функции (регрессии) среди множества экспериментальных точек (возможно содержащих погрешности), не обязательно совпадающей с ними.
Рассмотрим некоторые возможности MATLAB для обеих этих задач.
Приближение данных полиномом
В системе MATLAB приближение данных полиномом реализуется функцией polyfit (интерполяция или аппроксимация в зависимости от соотношения размерности массивов x, y и степени полинома) :
p = polyfit(x,y,n)
[p,S] = polyfit(x,y,n)
[p,S,mu] = polyfit(x,y,n)
p
= polyfit(x,
y,
n)
– возвращает вектор коэффициентов
полинома р(х) степени n,
который с наименьшей среднеквадратичной
погрешностью аппроксимирует функцию
у(х) в смысле метода наименьших квадратов.
Результатом является вектор-строка
длиной n+1, содержащий коэффициенты
полинома
в порядке уменьшения степеней х. Если
число экспериментальных данных
(размерность x
и y)
меньше или равно n+1, то реализуется
обычная полиномиальная интерполяция,
при которой график полинома точно
проходит через узловые точки с координатами
(х, у), хранящиеся в векторах х и у. В
противном случае (если размерность x
и y
больше n+1)
точного совпадения графика с узловыми
точками не наблюдается;
[p, S] = polyfit(x, y, n) – возвращает коэффициенты полинома р и массив записей S, который можно использовать совместно с функцией polyval для оценки погрешностей или предсказания. Если ошибки задания исходной функции y(x) независимы и распределены по номинальному закону с постоянной дисперсией, то функция polyval обеспечивает 50-процентный доверительный интервал;
[p, S, mu] = polyfit(x, y, n) – возвращает коэффициенты полинома р и структуру S для использования вместе с функцией polyval с целью оценки или предсказания погрешности, но так, что прoисходит центрирование (нормирование) и масштабирование х, xnorm=(х-mu(l))/mu(2), где mu(l) = mean(x) и mu(2) = std(x). Центрирование и масштабирование не только улучшают свойства степенного многочлена, получаемого при помощи polyval, но и значительно повышают качественные характеристики самого алгоритма аппроксимации.
К сожалению, при степени полинома свыше 5 погрешность полиномиальной регрессии сильно возрастает и ее применение без центрирования и масштабирования становится рискованным.
y = polyval(p,x) – возвращает значения полинома степени n, для аргумента (в точках) x. Входной аргумент p – вектор длины n+1, чьи элементы – коэффициенты должны быть заданы.
Покажем применение приближения данных с использованием функций polyfit(x, y, n) и polyval(p,x). Пусть дано
Х |
0,1 |
0,3 |
0,5 |
0,7 |
0,9 |
1,1 |
1,3 |
1,5 |
Y |
5,332 |
4,488 |
2,432 |
1,803 |
2,223 |
2,467 |
4,127 |
5,091 |
В
поле команд MATLAB
задаем массивы x
(
=0.2)
и y,
набирая
» x=[0.1:0.2:1.5];
» y=[5.332 4.488 2.432 1.803 2.223 2.467 4.127 5.091];
Вычислим коэффициенты полиномов степени 8 и 4
» p8=polyfit(x, y, 8);
p8= –84.708 361.1 –527.32 265.53 0.0 38.354 –73.197 18.412 4.1822
» p4=polyfit(x, y, 4);
p4= –10.356 32.7 –26.462 0.74862 5.5629
Формируем
вспомогательный массив xi
для сглаженного отображения линий
найденных полиномов с маленьким шагом
=0.01
» xi=[0.1:0.01:1.5];
Вычислим значения полиномов в точках с мелкой сеткой массива xi:
» f8=polyval(p8, xi);
» f4=polyval(p4, xi);
Печатаем результат
» plot(x,y,'ob',xi,f8,'k:',xi,f4,'k-');
» legend ('табличные данные','n=8','n=4',0);
» title ('Приближение табличной функции полиномом cтепени n');
Обратите внимание на то, что при полиномиальной регрессии для n=4 (размерность x и y больше n+1) узловые точки не ложатся точно на график полинома, поскольку их приближение к нему является наилучшим в смысле минимального среднеквадратического отклонения (аппроксимация).
А для n=8 (размерность x и y меньше n+1) узловые точки точно легли на график полинома (интерполяция).