Interpolacion de Neville con Datos Y Función
syms x;
vx = input('Ingrese el vector [X0 X1 X2 ......Xn]: ');
xint = input('Ingrese el punto a interpolar: ');
disp('Seleccione como trabajara el metodo');
opcion = input('1) Vector; 2) Funcion; opcion: ');
vy=zeros(length(vx));
if(opcion == 1)
vy = input('Ingrese el vector [f(x0) f(x1) f(x2).....f(xn)]: ');
elseif(opcion == 2)
f = input('Ingrese la funcion de trabajo: ');
for i = 1:length(vx)
vy(i) = subs(f, vx(i));
end
else
disp('Opcion invalida :( .|.\n');
end
Q = zeros(length(vx), length(vx));
for i = 1 : length(vx)
Q(i, 1) = vy(i);
fprintf('Q(%1.0f,0) = %3.15f\n', i-1, vy(i));
end
disp('-------');
for j = 2:length(vx) %x
for i = j: length(vx) %y
Q(i, j) = ( (xint - vx(i-j+1))*Q(i, j-1) - (xint - vx(i) )*Q( i-1, j-1) ) / (vx(i) - vx(i-j+1));
fprintf('Q(%1.0f,%1.0f) = ((x-x%1.0f)*Q(%1.0f,%1.0f)-(x-x%1.0f)*Q(%1.0f,%1.0f))/(x%1.0f-x%1.0f) = %3.15f \n',i-1,j-1, i-j, i-1, j-2, i-1, i-2, j-2, i-1, i-j, Q(i,j));%a todos se les rest -1 y lo demaa squeda igyal
end
disp('-------');
end
fprintf('La respuesta es: %3.15f \n', Q(length(vx), length(vx)));
No hay comentarios:
Publicar un comentario