Vous êtes sur la page 1sur 5

UNI-FIM METODOS NUMERICOS MB536 PROFESOR: EDGAR RUIZ LIZAMA SECCIONES D - E TEMA: AJUSTE DE DATOS

2011-2

y=arc tg x en los nodos PROBLEMA 1: Considere los valores de la funcin x=3.2,. .. , 2, 3 a) Interpolar estos puntos mediante un spline cubico cuya derivada primera en los extremos coincida con la derivada primera de la funcin. b) Hallar la spline que pasa por dichos puntos tiene derivada tercera en los nodos -2 y 2. c) Comparar ambas aproximaciones. SOLUCION a) >> x = -3:1:3; >> y = atan(x); >> plot(x,y), title('y= arctg x'),xlabel('Eje X'),ylabel('Eje Y')

La primera derivada en los extremos es: 1 y ' =(arctg x )'= ( 1+ x 2 ) 1 y ' (3)= = y ' (3) 10 El polinomio segmentario se obtiene con MATLAB es >> ps = spline(x,[0.1 y 0.1]); >> xx = linspace(-3,3,101); >> plot(x,y,'o',xx,ppval(ps,xx),'-');

>> legend('Nodos','Funcion',2)

Los coeficientes de cada pieza del spline estn en la matriz S >> S = ps.coefs

S= -0.0011 0.0994 -0.1126 -0.1126 0.0994 -0.0011 0.0430 0.0397 0.3378 -0.0000 -0.3378 -0.0397 0.1000 0.1827 0.5602 0.8980 0.5602 0.1827 -1.2490 -1.1071 -0.7854 0 0.7854 1.1071

b) La existencia de derivada tercera en los nodos indicados exige que las dos primeras piezas del spline sean el mismo polinomio, al igual que las dos ultimas. Este es el polinomio interpolante cubico segmentario que calcula MATLAB por defecto: >> psnn = spline(x,y); >> snn = psnn.coefs snn = 0.0784 0.0784 -0.1084 -0.1084 0.0784 0.0784 -0.1454 0.2089 -1.2490 0.0899 0.1534 -1.1071 0.3253 0.5686 -0.7854 0 0.8938 0 -0.3253 0.5686 0.7854 -0.0899 0.1534 1.1071

c ) La diferencia mas apreciable entre ambas aproximaciones es la distinta convexidad en las piezas extremas.

PROBLEMA 2: Considere la funcin de Runge en el intervalo [-5,5] y= 1 (1+ x 2)

Vamos a comprobar que cuando una funcin tiene caractersticas muy diferentes a las de los polinomios, la interpolacin polinmica con nodos equiespaciados puede resultar inadecuada. a) Obtener el polinomio de interpolacin de grado 4 que aproxima la funcin de Runge tomando nodos equeiespaciados en el intervalo [-5, 5]. b) Comprobar que, al aumentar el grado del polinomio, en vez se mejorar la aproximacin global, sta empeora. Representar los polinomios de interpolacin de grados: 4, 8, 12 y 16 junto a la funcin que aproximan. SOLUCION a) Lo primero es codificar la funcin de Runge

% Funcion de Runge function y = f_Runge(x) % y = 1./(1 + x.^2);


Calculamos el polinomio de interpolacin de Newton de grado 4, tomando 5 nodos equiespaciados en [-5, 5] y utilizando la tabla de diferencias divididas:

% Interpolacion de Newton function [c, T] = polynew(x,y,n) x = x(:); y = y(:); if nargin == 2 n = length(x) - 1; end T = y(1:n+1); for j = 2: n+1 % Filas for k = 2:j T(j,k) = (T(j,k-1)-T(j-1,k-1))/(x(j)-x(j-k+1)); end end c = flipud(diag(T)); % Evaluacion del polinomio de Newton function z = pneval(x,c,a) n = length(c) - 1; z = c(1)*ones(size(a)); for k = 1:n z = z.*(a-x(n-k+1)) + c(k+1); end
>> x = linspace(-5,5,5); >> y = feval(@f_Runge,x); >> format long >> p = polynew(x,y) p= 0.005305039787798 -0.026525198938992 0.061007957559682 0.039787798408488 0.038461538461538 Los polinomios de Newton obtenidos son:

p 0 (x )=0,038462 p 1( x)= p 0( x)+ 0,039788 (x+ 5) p 2 (x )= p 1 (x)+ 0,061008(x+ 5)(x+ 2,5) p 3 (x)= p 2 (x)0,026525 (x+ 5)(x+ 2,5) x p 4 (x )= p3 (x )+ 0,005305(x+ 5)( x+ 2,5) x( x2,5) b) El siguiente archivo M permite graficar los polinomio pedidos

% Graficando la funcion de Runge % Archivo: funcion_Runge.m xg = linspace(-5, 5); yg = 1./(1+xg.^2); for i = 1 : 4 x = linspace(-5, 5, 4*i-1); y = feval(@f_Runge,x); p = polynew(x,y); yp = pneval(x,p,xg); subplot(2,2,i); plot(x,y,'*',xg,yg,xg,yp); end
>> funcion_Runge

Vous aimerez peut-être aussi