Лаба 2.2.2
.docxФедеральное Агентство Связи Федеральное Государственное Бюджетное Образовательное Учреждение Высшего Образования Ордена Трудового Красного знамени «Московский технический университет связи и информатики»
Кафедра информатики
Лабораторная работа 5
Вариант 2
«Технология аппроксимации и интерполяции функций»
Выполнил Студент группы БИН1806 Аркадьев Илья Дмитриевич
Москва 2019
Индивидуальное задание
-
xi
f1(xi)
-5
1.38
-4.5
1.221
-3.5
1.501
-3
1
-2
0.976
-0.5
0.192
0.5
0.319
Журнал команд с комментариями
Вычисление коэффициентов аппроксимирующих функций:
-
--> x = [-5 -4.5 -3.5 -3 -2 -0.5 0.5];
--> y = [1.38 1.221 1.501 1 0.976 0.192 0.319];
--> z = [x;y];
--> a = [0;0];
--> function[zr] = R(a,z)
> zr = z(2)-a(1) - a(2).*z(1)
> endfunction
--> [a, err] = datafit(R,z,a)
err =
0.2714183
a =
0.3593178
-0.2263208
--> function[zr] = R2(c,z)
> zr = z(2)-c(1)-c(2).*z(1)-c(3).*z(1).^2
> endfunction
--> c=[0;0;0];
--> [c,err] = datafit(R2,z,c)
err =
0.2383293
c =
0.3251641
-0.3324563
-0.0235403
--> function[zr] = R3(k,z)
> zr = z(2)-k(1)-k(2).*z(1)-k(3).*z(1).^2-k(4).*z(1).^3
> endfunction
--> k=[0;0;0;0];
--> [k,err] = datafit(R3,z,k)
err =
0.1494251
k =
0.2501063
-0.0464192
0.1736108
0.0283118
Построение графика:
-
--> t = -5.1:0.1:0.6;
--> y1=a(1)+a(2).*t;
--> y2 = c(1)+c(2).*t+c(3).*t.^2;
--> y3=k(1)+k(2).*t+k(3).*t.^2+k(4).*t.^3;
--> plot(x,y,'o')
--> mtlb_hold('on')
--> plot(t,y1,'b-.',t,y2,t,y3,'k--')
Значения аппроксимирующих функций в произвольной точке:
--> deff('y=f1(x)','y=a(1)+a(2).*x');
--> deff('y=f2(x)','y=c(1)+c(2).*x+c(3).*x.^2');
--> deff('y=f3(x)','y=k(1)+k(2).*x+k(3).*x.^2+k(4).*x.^3');
--> [f1(-3.25),f2(-3.25),f3(-3.25)] ans =
1.0948606 1.1570025 1.2628434 |
Линейная и кубическая интерполяция функции с использованием функции interpln(), заданной таблично:
-
--> //Линейная интерполяция сплайнами
--> x = [-5 -4.5 -3.5 -3 -2 -0.5 0.5];
--> y = [1.38 1.221 1.501 1 0.976 0.192 0.319];
--> z = [x;y];
--> f = interpln(z,-3.25)
f =
1.4135
-->//Интеполяция кубическими сплайнами
--> X = [-1 0.3 -0.7];
--> //Значения функции в заданных точках
--> Y = interp(X,x,y,koeff)
Y =
0.5067133 0.1620756 0.3052263
--> t = -5:0.1:0.5;
--> p=interp(t,x,y,koeff);
--> plot(x,y,'o');
--> mtlb_hold('on');
--> plot(t,p,'-');