Оптимизация режимов движения судов с использованием 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 и полное соответствие кривых в исходных точках.