¡Descarga Teoría Compu y más Apuntes en PDF de Física solo en Docsity!
UCM
Aproximación de funciones por
polinomios
UCM
- (^) Objetivo: métodos para obtener el polinomio de aproximación a una
función.
A determinar
- (^) La función la podemos conocer
- (^) explícitamente - una tabla de valores (pares de
datos)
x f(x)
- (^) Aproximación de Taylor, como método de aproximar una función por
un polinomio P(x) localmente en el entorno de un punto
- (^) Polinomio de interpolación , obtener el polinomio de mayor orden que
pase por todos los puntos
- (^) Aproximación por mínimos cuadrados , aproximar por un polinomio
de un orden determinado ya que se conoce la forma de f(x) o de los
Introducción x f(x) x0 f x1 f x1 f x3 f 2 0 2 ( ) ( ) x t f x erf x e dt 2 0 1 2 f ( )x a a x a x
UCM
Si suponemos que la función f(x) es suficientemente diferenciable su aproximación de Taylor cerca de un punto x0 es: donde z es un punto situado ente x y x 0. Si eliminamos el último término, la función f(x) se puede aproximar por un polinomio p(x) de orden n de la forma: El error al representar una función por un polinomio de Taylor viene dado por el término: Luego el error aumenta con x y disminuye con n , esto es, cuanto mayor es el orden del polinomio p(x) el error es menor y cuanto mayor es x el error es mayor. Además, cuanto más suave sea la función (derivadas más pequeñas) la aproximación es mejor. Ejemplo : la función f(x) = ex^ se puede aproximar cerca del punto x 0 =0 por el polinomio Series de Taylor (las estudiareis en Matemáticas) f x f x f x x x n f x x x n f z x x n n n n ( ) ( ) '( )( ) ! ( )( ) ( )! ( )( ) ( ) ( ) 0 0 0 0 0 1 0 (^1 ) 1 f x p x f x f x x x n f x x x n n ( ) ( ) ( ) '( )( ) ! ( )( ) ( ) 0 0 0 0 0 1 p x x x x n n ( ) ! 1 2 2
f x p x
n
f z x x
n n
( )
1 0 1
UCM
- (^) El problema que pretendemos resolver en esta sección es aproximar una función por un polinomio utilizando valores de la función fi = f(xi) en un conjunto de n +1 puntos xi , i =0,..., n. Esto es, encontrar el polinomio de interpolación p(x) de los datos ( xi,fi ) tal que fi = p(xi). Con n +1 puntos se puede calcular un polinomio de interpolación de orden n. Este problema suele aparecer cuando, por ejemplo, obtenemos en un experimento un conjunto de datos de la forma: y queremos una aproximación polinomial de la función f(x).
- (^) De este modo se puede estimar el valor de la función en otro punto x5 :
- (^) Si el polinomio de interpolación se usa para obtener valores de la función dentro del rango de valores de x utilizado para construirlo se llama interpolación.
- (^) Si el polinomio de interpolación se usa para obtener valores de la función fuera del rango de valores de x utilizado para construirlo se llama extrapolación.
- (^) El polinomio de interpolación siempre pasa por los puntos usados para obtenerlo. Sin embargo, no suele dar un resultado correcto cuando se usa para interpolar o extrapolar un valor porque siempre se trata de una aproximación. En general si la función f(x) es suave, un polinomio p(x) de orden bajo da buenos resultados. En cambio, si la función no es suave debemos tomar el polinomio que aproxima a la función con escepticismo ya que las soluciones Interpolación polinomial x f(x) x0 f x1 f x1 f x3 f
UCM
Ejemplo Matriz de Vandermonde Polinomio de interpolación
En el método de Vandermonde si se añade un dato más ( xn+1, fn+1 ) el
polinomio debe ser recalculado.
UCM
Diferencias Divididas El método de diferencias divididas permite obtener el polinomio de interpolación en menor número de operaciones aprovechando las operaciones realizadas anteriormente. Es útil reescribir el polinomio de la siguiente forma (polinomio de orden n) : Si sustituimos ahora los datos equivalentes a las raíces del polinomio, (xj,fj), se obtiene: f 0 =ao f 1 =ao + a 1 (x 1 – xo) . . fn=ao + a 1 (xn – xo) + a 2 (xn – xo) (xn – x 1 ) + …+an (xn – xo) (xn – x 1 )…. ) (xn – xn-1) La matriz del nuevo sistema tiene estructura triangular, por lo que es posible resolver este sistema de forma eficiente mediante el método de sustitución, calculando
p n ( x ) a 0 ( x x 0 )a 1 ( x x 0 )( x x 1 )a 2 ( x x 0 )( x x 1 ) ( x x n 2 )( x x n 1 )an
UCM
Diferencias Divididas Si hacemos pn(xi)=fi , llegamos a un sistema de ecuaciones triangular inferior que si resolvemos por sustitución progresiva obtenemos las siguientes expresiones para los coeficientes: Luego, para calcular los coefcientes del polinomio podemos usar las diferencias divididas. Normalmente, para calcular los coeficientes del polinomio se construye una tabla de diferencias divididas. Por ejemplo con 5 puntos ( xi, fi ), i =0,...,4 se construye la siguiente tabla: Los coeficientes del polinomio son los elementos de la primera fila de la tabla de diferencias divididas. En el caso particular en que todos los puntos xi están equiespaciados , puede obtenerse una expresión más simple de las diferencias divididas ( Método de Newton-Gregory ) xi fi f[xi, xi+1] f[xi, xi+1, xi+2] f[xi, xi+1, xi+2, xi+3] x0 f0 f[x0, x1] f[x0, x1, x2] f[x0, x1, x2, x3] x1 f1 f[x1, x2] f[x1, x2, x3] f[x1, x2, x3, x4] x2 f2 f[x2, x3] f[x2, x3, x4] x3 f3 f[x3, x4] x4 f a f x f a f x x a f x x x a f x x x n n i i 0 0 0 1 0 1 0 1 0 1 , , , , , , ,
UCM
Diferencias divididas (Programa 1 en Matlab)
- (^) Veamos un algoritmo para obtener las diferencias divididas o coeficientes ai : diferencias divididas for i =0,..., n do ai = fi end for j =1,2,..., n do for i= i,j +1,..., n do end for i= i,j +1,..., n do fi = ai end end
- (^) Una vez obtenidos estos coeficientes ya podemos evaluar el polinomio en un punto para interpolar o extrapolar un valor. f1=difdiv(x,f,x1) que tenga como entrada n +1 datos ( xi, fi ) e interpole el valor de la función en los puntos x1: function f1 = difdiv(x,f,x1) n = size(x,1)+size(x,2)-1; % crear los coeficientes a=f; for j=2:n for i=j:n a(i) = (a(i)-f(i-1))/(x(i)-x(i-j+1)); end f([j:n]) = a([j:n]); f=a; end % evaluar el polinomio en x a f1 = a(1); for k=1:n- pr = 1; for i=1:k pr = pr.(x1-x(i)); end f1 = f1+a(k+1).pr; end** a a f x x i i i i i j 1
UCM
Ejemplo Diferencias^13 Divididas Ventaja : el polinomio calculado para (n+1) datos sirve para calcular cuando el número de datos aumenta.
UCM
Método de Newton-Gregory
- (^) El método de diferencias divididas se simplifica si los datos están ordenados y a igual distancia. En este caso las diferencias de fi son: Las diferencias de orden superior se obtienen recursivamente: Una diferencia de orden n se puede expresar del siguiente modo:
- (^) Estas diferencias se han de dividir por (x-x0)n=hn , donde n es el orden de la diferencia, para convertirlas en diferencias divididas. El polinomio de interpolación tiene la forma: Podemos comprobar como Pn(xi)=fi.
- (^) Vemos que el polinomio Pn(x) es análogo a tomar los n +1 primeros términos de la expansión de Taylor de f(x) en el punto x0. Luego aplicar el algoritmo de Newton-Gregory es equivalente a realizar la discretización de la expansión de Taylor de la función. Al añadir un dato más lo que hacemos es añadir un término más a la serie de Taylor. f f f f f f f f f 0 1 0 1 2 1 i i i 1 , , , 2 0 0 1 0 2 1 1 0 2 1 0 f ( f ) ( f f ) ( f f ) ( f f ) f 2 f f n n n n n f f n f n f f n i n n n i i 0 1 2 0 1 2 1 1 1 ^ ^ ^ ^ ^ ^ ( ) , ( ) ( ) !
p x f
x x
h
f
x x x x
h
f
x x x x x x
n h
n f
n n n
0 0 0 0 1 2 2 0 0 1 1 0
UCM
Ejemplo Método de Newton
UCM
Interpolación por Splines
- (^) Hemos visto como podemos usar un polinomio de orden n para ajustar n + datos. Sin embargo, normalmente las funciones que se intentan aproximar no presentan comportamientos tan complicados. Por ello surge la aproximación mediante splines.
- (^) Una función splin está formada por varios polinomios de igual grado en cada intervalo de datos. Cada uno de estos polinomios definido en un intervalo se unen entre sí obedeciendo a ciertas condiciones de continuidad. Supongamos que tenemos el siguiente conjunto con (n+1) pares de datos (tabla) Y se desea construir un splin S de grado k>=0 para interpolar la tabla, S está definida con un polinomio diferente en cada intervalo: La función o splin S debe satisfacer: (1) En cada intervalo, S es un polinomio de grado menor o igual que k y de igual grado en cada intervalo ( usuario elige el grado ) (2) Todas las derivadas de orden menor o igual que (k-1) deben ser continuas. (3) Los polinomios Si-1(x) y Si(x) en los nodos x x0 x1 ... xn f f0 f1 ... fn 0 0 1 1 1 2 2 3 1 1 ( ) , ( ) , ( ) , ( ) , n n n S x x x x S x x x x S x x x x S x x x x ^ (^) S x f S x i n i i i i i 1 ( ) ( ),( 1 1 ) 1 ( ) ( ), (1 1) i i i i S x S x i n (^) 1 ( ) ( ), (1 1) i i i i S x S x i n (^)
UCM
Interpolación por Splines Cúbicos Vamos a deducir la ecuación para Si(x) en el intervalo [ xi,xi+1 ]. Definimos Si(x) Impongamos las condiciones anteriores (definiendo la constante hi=xi+1-xi , )
- (^) Debemos exigir que cada Spline pase por su punto (i=0,…,n-1)
- (^) Debemos exigir el último Spline pase por el último punto
- (^) De las condiciones de empalme se obtiene (i=0,...,n-2) Definimos para 1ª derivada 2ª derivada Por tanto tenemos:
- (^) n polinomios de 4 parámetros, esto hacen 4n incógnitas
- (^) n + 1 + (n-1)*3 ecuaciones, esto hacen un total de 4n-2 ecuaciones Estas dos ecuaciones que faltan las podemos obtener imponiendo condiciones a los polinomios en los bordes, ya que aquí no existen las condiciones de empalme. 2 3 1 ( ) ( ) ( ) ( ) [ , ] ( 0,..., 1) i i i i i i i i i i i S x a b x x c x x d x x en x x i n 2 3 Si ( xi (^) 1 ) a (^) i b hi · (^) i c hi · (^) i d hi · (^) i S (^) i 1 ( xi (^) 1 )ai 1 a i fi 2 Si ( xi (^) 1 ) bi 2· ·c hi i 3·d h (^) i · (^) i Si (^) 1 ( xi (^) 1 ) bi 1 (^) Si ( xi (^) 1 ) 2·c (^) i 6·d h (^) i · (^) i Si (^) 1 ( xi (^) 1 ) 2·ci 1 (^) 2 3 1 1 1 1 1 1 1 1 1 ( ) n n n n n n n n n n S x a b h c h d h f
UCM
Interpolación por Splines Cúbicos Dependiendo del tipo de condiciones de contorno que impongamos se obtienen distintos tipos de splines:
- (^) Splines con condiciones en la derivada, si nos dieran los valores de f’ 0 y f’n .
- (^) Splines naturales , cuando no se dispone de condiciones en las fronteras, se suele exigir que la derivada segunda de los polinomios se anule en los extremos , de esta forma se consigue que el comienzo y el fin sean muy suaves. Es posible despejar y reordenar las ecuaciones anteriores hasta obtener un sistema de ecuaciones tridiagonal con diagonal dominante. Para el caso del Spline Natural el resultado es el siguiente (simplificando el sistema): Una vez resuelto el sistema ya conocemos los valores de los c’s, sobre las ecuaciones de la transparencia anterior es inmediato obtener los otros 0 1 0 1 1 1 1 1 1 2 2 2 2 3 3 2 2 2 1 1 1 0; 2( ) 2( ) 2( ) 3 3 ( ) ( ) n n n n n n i i i i i i i c c Condiciones naturales h h h c g h h h h c g h h h c g g f f f f h h (^) (^)