Está en la página 1de 8

PRACTICA CALIFICA

CARGUE ELLENGUAJE MATLABY ESCRIBA UN BREVE ALGORITMO Y CODIFIQUE O


APLIQUE PARA RSOLVER CADA UNA DE LOS PROBLEMA
NOTA: ANTES DE APLICAR EL PROGRAMA RESUELVA MANUALMENTE

T01. Para la función f(x) = (1+x)/(1+2x+3x2), en [0,5] complete la tabla


i 0 1 2 3
Xi 1 1.8 2.5 3
F(xi)
a) estime f(2.41), con un polinomio de grado 3 de Lagrange
b) Empleando dos polinomios de Newton diferentes de grado 2, estime f(2.41) y analice el error en
cada caso, haciendo uso del teorema del error de interpolación

a) estime f (2.41),

CON EL PROGRAMA DE LAGRANP (X, Y):

RESPUESTA: EL POLINOMIO ES P2(X)=0.0080X^4-0.10453x^3+0.496X^2-1.0567X+1

b) Empleando dos polinomios de Newton diferentes de grado 2, estime f(2.41) y analice el error en
cada caso, haciendo uso del teorema del error de interpolación.
POLINOMIO: P2(X)=0.1920(X)^2-0.8240(X)+1
Evaluando en P 2(2.41) = 0.1920(2.41) ^2-0.8240(2.42) +1
P 2(2.41) = 0.1920(2.41) ^2-0.8240(2.42) +1=0.143866
ERROR:
E=[f(2.41)-P2(2.41)]= [0.1467026-0.143866]
=0.0028366x100
T02. Dados los datos experimentales

xi 0.2 0.3 0.6 0.9 1.1 1.3 1.4 1.6


yi 0.050446 0.098426 0.33277 0.72660 1.0972 1.5697 1.8487 2.5015
a) Halle una aproximación polinomial por finimos cuadrados de grado 2
b) Halle una aproximación de mínimos cuadrados de la forma cx a
c) Compare los dos ajustes ¿ cual resulta mejor?

T03 Para los datos:

xI 0 0.5 1 1.5 2 2.5 3.0


yI 5.02 5.21 6.49 9.54 16.02 24.53 28.48

Utilice mínimos cuadrados para ajustar : a) A una parábola b) a una curva de la forma y = a ebx
Que ajuste considera mejor ¿Porque? y a la curva c) f(x) = a ex + b e-x

function [m,b]=mincuadlin(X)
n=length(X(1,:));
A=0;
B=0;
C=0;
D=0;

for i=1:n;
A=A+X(1,i);
B=B+X(2,i);
C=C+(X(1,i))^2;
D=D+X(1,i)*X(2,i);
end

m=(n*D-A*B)/(n*C-A^2);
b=(C*B-D*A)/(n*C-A^2);

for i=1:n;
hold on;
plot
(X(1,i),X(2,i),'*','MarkerEdgeColor','r','LineWidth',1)
;
end
T04 .Aproximar los datos con un polinomio de grado 2, por cuadrados m´ınimos y graficar
la soluci´on:
x 0.00 0.25 0.50 0.75 1.00
y 1.0000 1.2840 1.6487 2.1170 2, 7183

a) Calcular el polinomio interpolante de Lagrange de grado 2, en los nodos


0, 0.5 y 1.
b) Graficar la soluci´on y calcular los errores para cada dato de la tabla.

c) Comparar los resultados obtenidos con la funci´on f (x) = ex en los puntos:


0.1, 0.2, 0.3, 0.6, 0.7, 0.8 y 0.9, calcular los errores y obtener conclusiones.

SOLUCION
clc %permite borrar el area de trabajo
clear %permite borrar las variables almacenadas
format long %permite utilizar la maxima capacidad de la
maquina
fprintf('INTERPOLACION "POLINIMIO DE LAGRAGE"\n\n\n');
%fprintf me permite ingresar comentarios de manera
textual que pueden
%orientar al usuario en el uso del programa
xi=input('Ingrese los puntos pertenecientes a las x:
');
yi=input('Ingrese los puntos pertenecientes a las y:
');
%input es un comando de solicitud de entrada de datos
del usuario.
n=length(xi);
x=sym('x'); %esta funcion nos permite dejar la variable
'x' como simbólica
% y asi poder trabajar con ella, sin tener que
asignarle un valor.
for j=1:n
producto=1;
for i=1:j-1
producto=producto*(x-xi(i)); %calculo del producto 1
superior de L
end
producto2=1;
for i=j+1:n
producto2=producto2*(x-xi(i)); %calculo del producto 2
superior de L
end
producto3=1;
for i=1:j-1
producto3=producto3*(xi(j)-xi(i)); %calculo del
producto 3 inferior de L
end
producto4=1;
for i=j+1:n
producto4=producto4*(xi(j)-xi(i)); %calculo del
producto 4 inferior de L
end
L(j)=(producto*producto2)/(producto3*producto4);
%cálculos de las L para
fprintf('\n L%d:\n',j-1) %poder hallar el polinomio
disp(L(j)) %la función dispo nos permite visualizar
variables o texto
% en el workspace
end
pn=0;
for j=1:n
pn=pn+L(j)*yi(j); %calculo del polinomio interpolante
end
fprintf('\n POLINOMIO INTERPOLANTE: \n')
%disp(pn) % esta ejecucion la podemos utilizar cuando
no necesitamos
%simplicar la expresion
pn = simple(pn); %este comando nos permite simplificar
toda la expresion
disp(pn)
opc=input('\nDesea aproximar un valor (si/no): ','s');
%este comando nos permite saber si el usuario quiere
obtener una
%aproximacion de un punto dado, en el polinomio que se
acaba de obtener
if opc=='si'
x=input('\nIngrese el punto a aproximar: ');
y=eval(pn); %evaluar el punto en el polinomio
disp('\nLa aproximacion a f(x) es:')
disp(y)
end

También podría gustarte