jueves, 1 de diciembre de 2011
Polinomio de Lagrange(simplificado)
% 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)
w1 = diff(y_nds)./diff(nds) %Se pone un punto debido a que se divide componente a componente, como .^ que eleva componente a componente en vectores
%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 = diff(w2)/(nds(4) - nds(1))
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 delnumero 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 obtenidos usando el polinomio de interpolación de Lagrange
%
%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
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario