Оптимизация режимов движения судов с использованием MATLAB 5.0
Использование операторов polyfit и polyval для аппроксимации кривой
Цель работы.
Получение полинома, описывающего аппроксимированную кривую наиболее
близкую к исходной, которая построена по точкам.
Исходные данные.
x |0 |400 |800 |1200 |1600 |2000 |2400 |2800 |3200 | |f(x) |0 |80 |100 |110
|120 |180 |210 |230 |260 | |Программа.
%Исходные данные
x=[0 400 800 1200 1600 2000 2400 2800 3200];
f=[0 80 100 110 120 180 210 230 260];
%a - коэффициенты полинома
%S - квадратичная погрешность
[a,S]=polyfit(x,f,3)
z=polyval(a,x)
%Построение графиков
plot(x,f,x,z),grid
Результат.
a =
0.0000 -0.0000 0.1223 13.5354
S =
R: [4x4 double]
df: 5
normr: 43.1607
z =
Columns 1 through 7
13.5354 57.1717 91.9986 120.6926 145.9307 170.3896 196.7460
Columns 8 through 9
227.6768 265.8586
Командой plot произвели построение исходной функции (синий цвет) и
функции аппроксимирующей её (зелёный цвет). Поскольку велико значение
погрешности normr=43.1607 и недостаточно аппроксимирование, то следует
повысить степень полинома. Пусть вместо 3 будет 6.
Программа.
%Исходные данные
x=[0 400 800 1200 1600 2000 2400 2800 3200];
f=[0 80 100 110 120 180 210 230 260];
%a - коэффициенты полинома
%S - квадратичная погрешность
[a,S]=polyfit(x,f,6)
z=polyval(a,x)
%Построение графиков
plot(x,f,x,z),grid
Результат.
a =
0.0000 -0.0000 0.0000 -0.0000 -0.0002 0.2770 0.0140
S =
R: [7x7 double]
df: 2
normr: 12.4672
z =
Columns 1 through 7
0.0140 79.7016 101.6970 105.3007 127.5058 172.6900 214.3077
Columns 8 through 9
228.5828 260.2005
Вывод.
В результате работы видно, что при увеличении степени полинома
уменьшается погрешность и аппроксимированная кривая наиболее близка к
исходной. В случае когда степень полинома равна количеству исходных точек,
получаем: normr=0 и полное соответствие кривых в исходных точках.