Добавил:
Angel_of_Death
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:MatLab / Hermite_Interpol
.m function [matrRR,polinom_hermite]=Hermite_Interpol(xii, f, df)
%xii - массив значений аргумента
%f - массив значений функции
%df - массив первых производных функции
n=size(f,2);
m=size(df,1)+1;
matrRR=zeros(m*n,m*n);
matrxii=zeros(m*n,1);
for nn=1:size(matrRR,2)
matrxii(nn,1)=xii(ceil(nn/m));
end
for nn=1:size(matrRR,2)
matrRR(nn,1)=f(ceil(nn/m));
end
dfn=df;
dfn=repmat(dfn,n*m,1);
for j=2:size(matrRR,2)
for i=j:size(matrRR,1)
if matrRR(i-1,j-1)==matrRR(i,j-1)
matrRR(i,j)=dfn(j-1,ceil(i/m))/factorial(j-1);
else
matrRR(i,j)=(matrRR(i-1,j-1)-matrRR(i,j-1))/(matrxii(i-(j-1),1)-matrxii(i,1));
end
end
end
syms x
polinom_hermite=matrRR(1,1);
qw=1;
for i=2:n*m
qw=qw*(x-xii(ceil((i-1)/m)));
polinom_hermite=polinom_hermite+matrRR(i,i)*qw;
end
xy=linspace(xii(1),xii(size(xii,2)),100);
yy=subs(polinom_hermite,xy);
plot(xy,yy)
% fplot(polinom_hermite,[xii(1) xii(size(xii,2))])
% polinom_hermite=factor(polinom_hermite);
%xii - массив значений аргумента
%f - массив значений функции
%df - массив первых производных функции
n=size(f,2);
m=size(df,1)+1;
matrRR=zeros(m*n,m*n);
matrxii=zeros(m*n,1);
for nn=1:size(matrRR,2)
matrxii(nn,1)=xii(ceil(nn/m));
end
for nn=1:size(matrRR,2)
matrRR(nn,1)=f(ceil(nn/m));
end
dfn=df;
dfn=repmat(dfn,n*m,1);
for j=2:size(matrRR,2)
for i=j:size(matrRR,1)
if matrRR(i-1,j-1)==matrRR(i,j-1)
matrRR(i,j)=dfn(j-1,ceil(i/m))/factorial(j-1);
else
matrRR(i,j)=(matrRR(i-1,j-1)-matrRR(i,j-1))/(matrxii(i-(j-1),1)-matrxii(i,1));
end
end
end
syms x
polinom_hermite=matrRR(1,1);
qw=1;
for i=2:n*m
qw=qw*(x-xii(ceil((i-1)/m)));
polinom_hermite=polinom_hermite+matrRR(i,i)*qw;
end
xy=linspace(xii(1),xii(size(xii,2)),100);
yy=subs(polinom_hermite,xy);
plot(xy,yy)
% fplot(polinom_hermite,[xii(1) xii(size(xii,2))])
% polinom_hermite=factor(polinom_hermite);
Соседние файлы в папке MatLab