Está en la página 1de 2

Diferencias divididas de Newton en Matlab CODIGO: % ingreso de datos.

x=[-1 0 1 2 3];y=[3 0 -1 1 2]; xa=x;ya=y; %se le dan los valores de xa e ya a las variables x e y que sern utilizadas mas a delante. % Formacion de las diferencias divididas a travs de ciclos d=zeros(length(y)); %zeros(n) genera una matriz de nxn con todos sus valores iguales a cero, en este caso utiliza el largo del arreglo y d(:,1)=y'; %Se asigna valor de y a la columna de la matriz creada anteriormente for k=2:length(x) %se hacen dos ciclos, uno dentro de otro, donde van variando los valores de j y k, y va entregando cuales son los valores que se utilizaran en for j=1:length(x)+1-k d(j,k)=(d(j+1,k-1)-d(j,k-1))/(x(j+k-1)-x(j)); end end for w=1:length(x) ds=num2str(abs(d(1,w))); %los valores numericos de la matriz ds en las coordenadas (1,w) se transforman en s tring , cuyos valores no sern modificados despus, y sern mostrados al final en present acin de resultados if w>1 %si w es mayor que 1 if x(w-1)<0 %si la multiplicacin de x por (w-1)es menor a cero, se agrega un smbolo + io de resultado. sg1='+'; else %en caso contrario, el smbolo matemtico es - . sg1='-'; al polinom for e if .

end end if d(1,w)<0 sg2='-'; else sg2='+'; end if w==1 acum=num2str(d(1,1)); %se crea un contador de nombre mostrar el final del codigo elseif w==2 polinact=['(x' sg1 num2str(abs(x(w-1))) ')' ]; actual=[ds '*' polinact]; acum=[acum sg2 actual]; else polinact=[polinact '.*' '(x' sg1 num2str(abs(x(w-1))) ')' ]; actual=[ds '*' polinact]; acum=[acum sg2 actual]; end end % Presentacion de resultados fprintf('los valores de X e Y son'); disp(xa); disp(ya); %imprimir en pantalla el polinomio obtenido fprintf('El polinomio interpolacin Newton obtenido es: %s ',acum); acum que ir almacenando el polinomio obtenido, y lo