You are on page 1of 4

UNIVERSIDAD CENTRAL DE VENEZUELA

FACULTAD DE INGENIERA
ESCUELA DE INGENIERA ELCTRICA
DEPARTAMENTO DE ELECTRNICA, COMPUTACIN Y CONTROL
CALCULO NUMERICO
Profesores: Yanitza Rivero, Norma Guzmn, Dan El Montoya
QUINTA PRACTICA: INTERPOLACIN NUMRICA Y MNIMOS CUADRADOS.
OBJETIVOS:

Aproximar un valor de una funcin mediante interpolacin


Aproximar un valor de una funcin mediante interpolacin
Aproximar el valor de una funcin por mnimos cuadrados.

polinmica de Lagange.
polinmica de Newton.

OBSERVACIONES:

Los algoritmos propuestos han sido


empleando la herramienta MATLAB.

implementados

por

los

docentes

de

la

ctedra

ACTIVIDADES:

De una funcin f(x) se conoce el siguiente conjunto de puntos: (x 0,f(x0)), (x1,f(x1)),


(x2,f(x2)),.....(xn,f(xn)). Si se quiere determinar el polinomio interpolante en su forma
de Lagrange debe aplicarse la siguiente frmula
n

Pn ( x )

( x) f ( x k )

k 0

con I k ( x)

x xi

x x
i 0 k
ik

El siguiente programa calcula el valor aproximado de una funcin en un punto usando el


polinomio interpolante en su forma de Lagrange:
clear
fprintf('Interpolacin de Lagrange\n')
n=input('Ingrese el nmero de puntos : ');
for i = 1:n
fprintf('x%d = ',i)
x(i)= input(' '); % Ingreso por pantalla de los valores x(i)
fprintf('f(x(%d)) = ',i)
f(i)= input(' '); % ingreso por pantalla de los valores de
% la funcin evaluada en los x(i)
end
a=input('Ingrese el valor de x donde se quiere evaluar el polinomio interpolante : ');
for k=1:n
for i=1:n
if k==i
I(i)=1;
else
I(i)=(a-x(i))/(x(k)-x(i));
end
end
fI(k)=f(k)*prod(I); % La funcin prod calcula el producto de los elementos
% del vector I

end
fa=sum(fI); % La funcin sum calcula la suma de los elementos
% del vector fI
fprintf('f(%1.2f) = %3.6f',a,fa)
%
%
%
%
%

La sintaxis de presentacin indica que dentro del


argumento de la funcin se escribir un nmero punto flotante
por lo menos 1 carcter y dos dgitos decimales %1.2f
El valor de la funcin se escribir en una amplitud de por lo menos
tres caracteres y seis dgitos decimales %3.6f

Corra el programa y calcule el valor aproximado de la funcin en x=1.03 si se tienen los


siguientes puntos de la funcin:
x
f(x)

1.00
2.7183

1.05
3.2863

1.07
3.5276

El algoritmo que calcula el valor aproximado de una funcin en un punto mediante


interpolacin polinmica en la forma de Newton es:
Entrada: n,x1,x2,....xn,f(x1),f(x1),....f(xn),x=a
Salida: Aproximacin f(a)
Paso 1: Para k=1 hasta n Qk,1=f(xk)
Paso 2: Para i=2 hasta n hacer paso 3
Paso 3: Para j=i hasta n hacer paso 4 y 5.
Paso 4: Qj,i = (Qj-1,i-1 - Qj,i-1)/(xj-i+1 - xj)

% Clculo de las diferencias


% divididas

Paso 5: Si i=j entonces Fj= Qj,i


i 1

Paso 6:

f ( a ) f ( x1 )

F . (a x
i

i2

j)

j 1

Programe en cdigo matlab


interpolacin de Lagrange.

Existen en Matlab instrucciones que ayudan a determinar el polinomio interpolante. Copie


el siguiente programa en el editor del Matlab, gurdelo y crralo con los datos del
ejemplo usado en la interpolacin de Lagrange.

el

algoritmo

anterior

pruebe

el

ejemplo

usado

en

clear
fprintf('Interpolacin de usando la funcin polyfit y polyval\n')
n=input('Ingrese el nmero de puntos : ');
for i = 1:n
fprintf('x%d = ',i)
x(i)= input(' '); % Ingreso por pantalla de los valores x(i)
fprintf('f(x(%d)) = ',i)
f(i)= input(' '); % ingreso por pantalla de los valores de
% la funcin evaluada en los x(i)
end
a=input('Ingrese el valor de x donde se quiere evaluar el polinomio interpolante : ');
c=polyfit(x,f,length(x)-1); % Funcin que determina los coeficientes del polinomio
% interpolante.
fa=polyval(c,a);
% Funcin que evala el polinomio interpolante en x=a.
fprintf('f(%1.2f) = %3.6f',a,fa);

la

La funcin polyfit(x,y,n) calcula los coeficientes del polinomio de grado "n" que pasa
por los puntos dados en los vectores x e y. La funcin polyval(c,a) evala el polinomio
con coeficientes dados en el vector "c" en el valor "a".

Si se desea ajustar un conjunto de puntos {(xi,yi)/i=1,..n} a la recta y=ax+b por mnimos


cuadrados se debe resolver el siguiente sistema de ecuaciones lineales para determinar
las constantes a y b.
n

x i2 b

i 1
n

i 1

b.n

i 1

xi

x y
i

i 1

i 1

El siguiente programa Matlab calcula las constantes a y b de la aproximacin lineal por


mnimos cuadrados.
clear
fprintf('Aproximacin lineal por mnimos cuadrados\n\n')
n=input('Ingrese el nmero de puntos : ');
for i = 1:n
fprintf('x%d = ',i)
x(i)= input(' '); % Ingreso por pantalla de los valores x(i)
fprintf('f(x(%d)) = ',i)
y(i)= input(' '); % ingreso por pantalla de los valores de
% la funcin evaluada en los x(i)
end
A(1,1)=sum(x.*x);
A(1,2)=sum(x);
b(1)=sum(x.*y);
A(2,1)=A(1,2);
A(2,2)=n;
b(2)=sum(y);

% Sumatoria de los valores de x al cuadrado.


% Sumatoria de los valores de x.
% Sumatoria del producto xy.
% Sumatoria de los valores de y.

% el sistema de ecuaciones lineales Az=b arroja como resultado


% las constantes a y b de la aproximacin lineal por mnimos cuadrados.
z=b/A; % Solucin del sistema de ecuaciones lineales
% z(1)=a , z(2)=b
fprintf('a = %3.6f ,',z(1));
fprintf(' b = %3.6f\n',z(2));

Corra el programa anterior para los siguientes datos:


X
Y

2
2

4
11

6
28

8
40

La funcin polyfit(x,y,n) del matlab calcula la aproximacin lineal por mnimos


cuadrados de un conjunto de puntos dados en los vectores x e y. La aproximacin lineal
se logra haciendo n=1. Modifique el programa anterior de manera que calcule las
constantes a y b de la aproximacin lineal usando la funcin polyfit(x,y,n). Corra el
programa con los valores de la tabla anterior.

Realice un programa que calcule por mnimos cuadrados los coeficientes del polinomio de
ajuste pn(x) de grado "n" si se conocen los puntos {(xi,yi)/i=0,..m) con m>=n. Use en
este programa la funcin matlab polyfit(x,y,n).

Usando el programa anterior calcule los coeficientes a0, a1 y a2 del polinomio de grado
dos que se ajusta a la tabla:

i
xi
yi

0
0
1

1
0.25
1.2840

2
0.5
1.6487

3
0.75
2.1170

4
1.00
2.7183

You might also like