Documentos de Académico
Documentos de Profesional
Documentos de Cultura
I1 Nterpolación
I1 Nterpolación
Ejercicio 1:
POLINOMIO DE LAGRANGE
Encontrar el polinomio de grado 3 que cumple p(1)=1, p(2)=1, p(3)=2,
p(4)=6.
x=[1, 2, 3, 4]
y=[1; 1; 2; 6]
vander(x)
x= 1 2 3 4
y= 1
1
2
6
ans = 1 1 1 1
8 4 2 1
27 9 3 1
64 16 4 1
p=vander(x)\y
p = 0.3333
-1.5000
2.1667
0.0000
xd=[0:0.1:5];
yd=polyval(p,xd);
plot(xd,yd)
Para observar grficamente el polinomio de interpolacin representaremos
los datos de interpolacin (los vectores x e y) mediante crculos, y
representaremos el polinomio p mediante los vectores xd e yd.
plot(x,y,'o',xd,yd)
Ejercicio 2:
Diferencias divididas
A continuacin vamos a construir con Matlab la tabla de diferencias
divididas de una funcin en unos nodos x(0), x(1), ..., x(N-1), x(N). (Ref: Diez
lecciones de Clculo Numrico. J. M. Sanz Serna.) (Ref: Numerical methods
using Matlab. J. H. Mathews y K. D. Fink.)
Construiremos una tabla como la que se muestra, donde xN-1 es el nodo
x(N-1), xN-2 el nodo x(N-2), etc.
x0 f[x0]
x1 f[x1] f[x0,x1]
x2 f[x2] f[x1,x2] f[x0,x1,x2]
. . . . .
. . . . .
. . . . .
xN f[xN] f[xN-1,xN] f[xN-2,xN-1,xN] ... f[x0,...,xN]
nodos=[1 2 3 4];
N=length(nodos)-1;
fnodos=[1, 1, 2, 6];
Inicializamos una matriz con NaN.
M=NaN(N+1,N+2);
% Rellenamos la primera columna
M(:,1)=nodos;
% Rellenamos la segunda columna
M(:,2)=fnodos;
M
M=
Ejercicio 3:
Forma de Newton
Con las diferencias divididas calculadas podemos construir el polinomio de
interpolacin en la forma de Newton, donde xN-1 es el nodo x(N-1): P(x)
=f[x0] + f[x0,x1]*(x-x0) + f[x0,x1,x2]*(x-x0)*(x-x1) + ... + f[x0,x1,...,xN]*(x-
x0)*(x-x1)* ... *(x-xN-1) .
q=[1];
for i=2:N+1
monomio=[1, -nodos(i-2+1)]
q=conv(q,monomio)
end
monomio = 1 -1
q= 1 -1
monomio = 1 -2
q= 1 -3 2
monomio = 1 -3
q= 1 -6 11 -6
newton=[fnodos(1)];
q=[1];
for i=2:N+1
monomio=[1, -nodos(i-2+1)]
q=conv(q,monomio)
newton=[0, newton] + M(i,i+1)*q
end
monomio = 1 -1
q= 1 -1
newton = 0 1
monomio = 1 -2
q= 1 -3 2
monomio = 1 -3
q= 1 -6 11 -6
Ejercicio 4:
x=[0.97 1.12 2.92 3.00 3.33 3.97 6.10 8.39 8.56 9.44];
y=[2.58 0.43 0.06 5.74 7.44 8.07 6.37 2.51 1.44 0.52];
n=length(x); %nmero de pares de datos
%A=vander(x);
A=zeros(n); %lneas equivalentes a utilizar vander(x)
for j=1:n
A(:,j)=(x').^(n-j);
end
p=A\y'; %sistema de ecuaciones lineales, y' es vector columna
p = 1.0e+004 *
0.0000 -0.0003 0.0057 -0.0595 0.3782 -1.4951 3.6430 -5.2142
3.9256 -1.1823
Ejercicio 5:
EJERCICIOS DE ECUACIONES NO LINEALES
Ejemplo 1:
xf(1)=input('Ingrese el valor inicial: ');
tol=input('Ingrese el porcentaje de error: ');
syms x;
f=input('Ingrese la funcin f(x), despejada g(f(x)): ');
i=1;
ea(1)=100;
while abs(ea(i))>=tol,
xf(i+1) = subs(f,x,xf(i));
ea(i+1) = abs((xf(i+1)-xf(i))/xf(i+1))*100;
i=i+1;
end
fprintf('i xf(i) Error aprox (i) \n');
for j=1:i;
fprintf('%2d \t %11.7f \t %7.3f \n',j-1,xf(j),ea(j));
end
Ejercicio 2:
% y = -x^2 + x + 0.5
% y + 5xy = x^2
%function
f= @(x) ...
[ -x(1)^2+x(1)+0.5-x(2) ;...
x(2)+5*x(1)*x(2)-x(1)^2 ];
%jacobian
J= @(x) ...
[ -2*x(1)+1 -1 ;...
5*x(2)-2*x(1) 1+5*x(1) ];
%initial guess:
x=[1.2; 1.2];
tol = 10e-9;
maximum_iter = 100;
x = x - J(x)\f(x);
error = norm(x-xold)/norm(x);
iter = iter+1;
end
x_newton_raphson = x
Ejercicio 3:
f1=subs(f,x,fx(1));
f2=subs(f,x,fx(2));
ea(1)=100;
i=1;
j=2;
while abs(ea(i))>=tol
xf(j+1)=(xf(j-1)*f2-xf(j)*f1)/(f2-f1); f1=f2; f2=subs(f,x,xf(j+1));
ea(i+1)=(xf(j+1)-xf(j))/xf(j+1)*100;
j=j+1;
i=i+1;
end
Ejercicio 4:
f1=subs(f,x,xai);
f2=subs(f,x,xbi);
ea(i)=100;
if f1*f2 < 0
xa(i)=xai; f1=subs(f,x,xa(i));
xb(i)=xbi; f2=subs(f,x,xb(i));
xr(i)=(xa(i)+xb(i))/2; f3=subs(f,x,xr(i));
Ejercicio 5: