Lagrange
Enviado por Programa Chuletas y clasificado en Matemáticas
Escrito el en español con un tamaño de 1,5 KB
function y= lagrange(FuncionInterpolada,inicio,fin,npuntos,PuntosInterpolar)
h=(fin-inicio)/(npuntos-1);
vx=[inicio:h:fin]; %Obtenemos los puntos que nos dan
vy=feval(FuncionInterpolada,vx); %Se evalua la funci´on en los puntos que nos dan
%Hace que en principio la matriz de salida valga 0, y tenga la misma dimensi´on que PUNTOSINTERPOLAR
y=zeros(size(PuntosInterpolar));
%Este for realiza el sumatorio (en matlab las matrices empiezan en el 1)
for i=1:npuntos
%hacemos que lx valga uno para que las multiplicaciones no salgan nulas
lx=ones(size(PuntosInterpolar));
%Este for realiza el productorio
for j=1:npuntos
if i~=j %i debe ser distinto de j
lx=lx.*(PuntosInterpolar-vx(j))/(vx(i)-vx(j));
end
end
%realiza la suma
y=y+vy(i).*lx;
end
function resultado=secante_s(nombre_f, nombre_df, x0, delta_x, epsilon_y,
iter_max)
xh=x0+delta_x*10;
xi=x0;
xhi=x0;
i=0;
while(i<=iter_max & abs(xi-xh)>delta_x &
epsilon_y
xi=xh-feval(nombre_f,xh)*(xh-xi)/(feval(nombre_df,xh)-feval(nombre_df,xi))
i=i+1;
xh=xi;
xhi=xh;
end;
resultado(1)=xi;
resultado(2)=abs(feval(nombre_f,xi)-feval(nombre_f,xh))
resultado(3)=i;
h=(fin-inicio)/(npuntos-1);
vx=[inicio:h:fin]; %Obtenemos los puntos que nos dan
vy=feval(FuncionInterpolada,vx); %Se evalua la funci´on en los puntos que nos dan
%Hace que en principio la matriz de salida valga 0, y tenga la misma dimensi´on que PUNTOSINTERPOLAR
y=zeros(size(PuntosInterpolar));
%Este for realiza el sumatorio (en matlab las matrices empiezan en el 1)
for i=1:npuntos
%hacemos que lx valga uno para que las multiplicaciones no salgan nulas
lx=ones(size(PuntosInterpolar));
%Este for realiza el productorio
for j=1:npuntos
if i~=j %i debe ser distinto de j
lx=lx.*(PuntosInterpolar-vx(j))/(vx(i)-vx(j));
end
end
%realiza la suma
y=y+vy(i).*lx;
end
function resultado=secante_s(nombre_f, nombre_df, x0, delta_x, epsilon_y,
iter_max)
xh=x0+delta_x*10;
xi=x0;
xhi=x0;
i=0;
while(i<=iter_max & abs(xi-xh)>delta_x &
epsilon_y
xi=xh-feval(nombre_f,xh)*(xh-xi)/(feval(nombre_df,xh)-feval(nombre_df,xi))
i=i+1;
xh=xi;
xhi=xh;
end;
resultado(1)=xi;
resultado(2)=abs(feval(nombre_f,xi)-feval(nombre_f,xh))
resultado(3)=i;