jueves, 1 de diciembre de 2011

Polinomio de Lagrange


% Cálculo de la expresión del polinomio de Lagrange del ejercicio 12
% (complementarios) del boletin 1
% Antes de ejecutar, en la ventana de comandos hay que poner nds =[1,2,3,4]
% e y_nds = [-1,3,11,27], pero si se quisieran cambiar los nodos solo
% habría que cambiar los elementos de nds e y_nds
%%
clc;
clf;
%
%
format rat;

n = length(nds);
if length(y_nds) ~= n
    error('Los vectores nds e y_nds deben tener el mismo numero de componentes')
else
        w1 = zeros(1, n-1)
     
for k = 1:n-1
    w1(k) = (y_nds(k)-y_nds(k+1))/(nds(k)-nds(k+1))
end
%Segunda columna
w2 = zeros(1,n-2);
for k = 1:n-2
    w2(k) = (w1(k) - w1(k+1))/(nds(k) - nds(k+2))
end
%Tercera columna
w3 = zeros(1,n-3);
for k = 1:n-3
    w3(k) = (w2(k) - w2(k+1))/(nds(k) - nds(k+3))
end
end
w = [y_nds(1), w1(1), w2(1), w3] %son las diferencias divididas que aparecen en la expresión del polinomio de Lagrange
%
syms x;
%
monomios = x - nds %se resta componente a componente
%
pol = w(1) + w(2)*monomios(1) + w(3)*monomios(1)*monomios(2) + w(4)*monomios(1)*monomios(2)*monomios(3)
% La anterior fórmula de Newton del polinomio de Lagrange
%
%Calcula, utilizando el apartado anterior, una aproximación delnumero r = 4*(2^0.5)-5, y una
%aproximación de la raíz de la ecuación log2(y + 5) = 3.5.
valor_exacto = 2^(5/2)-5 %valor a través de la función en x=3/2
%
format short; valor_doblprec = double(valor_exacto) % valor en doble precisión
%
valor_aprox = subs(pol, x,3/2) % valor aproximado en x=3/2
%
%Gráfica que pone de manifiesto la aproximación den el intervalo [1,4]
ezplot(pol, [nds(1), nds(n)])
hold on; fplot('2^(x+1)-5',[nds(1), nds(n)],'r')
for k = 1:n
    plot(nds(k), y_nds(k), 'g*')
end

Ejecución







No hay comentarios:

Publicar un comentario

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | GreenGeeks Review