{VERSION 3 0 "IBM INTEL LINUX" "3.0" } {USTYLETAB {CSTYLE "Maple Input" -1 0 "Courier" 0 1 255 0 0 1 0 1 0 0 1 0 0 0 0 }{CSTYLE "2D Math" -1 2 "Times" 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 }{CSTYLE "2D Comment" 2 18 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 } {CSTYLE "" 0 21 "" 0 1 0 0 0 1 0 0 0 0 2 0 0 0 0 }{PSTYLE "Normal" -1 0 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "Heading 1" 0 3 1 {CSTYLE "" -1 -1 "" 1 18 0 0 0 0 0 1 0 0 0 0 0 0 0 }1 0 0 0 8 4 0 0 0 0 0 0 -1 0 }{PSTYLE "Head ing 2" 3 4 1 {CSTYLE "" -1 -1 "" 1 14 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 8 2 0 0 0 0 0 0 -1 0 }} {SECT 0 {SECT 0 {PARA 3 "" 0 "" {TEXT -1 42 "Interpolaci\363n polinomi al cl\341sica: Ejemplos" }}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 26 "Primer ejemplo: f(x)=sen x" }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 86 "En primer \+ lugar, dibujamos la gr\341fica de la funci\363n para tener una idea de su aspecto:" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "restart;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 25 "pl ot(sin(x), x=-Pi..Pi );" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 57 " Vamos a calcular el polinomio que interpola a la funci\363n" }{MPLTEXT 1 0 1 " " }{TEXT -1 133 "f(x)=sin(x) en el sentido de la interpolaci\363n polinomial cl\341sica, utilizando sucesivamente soportes con diferent e n\372mero de puntos. " }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 35 "1\272) Con soporte \{-Pi/2, 0, Pi/2\}:" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 79 "p:= proc(x::uneval) interp([-Pi/2,0,Pi/2],[sin(-Pi/2),sin(0),sin(Pi/2)], x ) end:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 5 "p(x);" }{TEXT -1 0 "" }}} {EXCHG {PARA 0 "" 0 "" {TEXT -1 53 "(En este caso, el polinomio p(x) e s de primer grado.)" }}{PARA 0 "" 0 "" {TEXT -1 61 "Dibujemos la gr \341fica del polinomio, y comparemos con la de f:" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 50 "plot([sin(y ), p(y)], y=-Pi..Pi, color[red, blue]);" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 24 "La gr\341fica del error es: " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 34 "plot(abs(p(x)-sin(x)), \+ x=-Pi..Pi);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 33 "Evaluamos el polin omio en x=Pi/3:" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 15 "z:=evalf(p(a)):" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "a:=Pi/3:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 9 "evalf(z);" }}} {EXCHG {PARA 0 "" 0 "" {TEXT -1 76 "Calculamos el error cometido al ap roximar f por el polinomio en este punto:" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 24 "evalf(abs(z-sin(P i/3)));" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 46 "Si repetimos la operac i\363n para x=-2 tendremos:" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "unassign('z');" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "unassign('a');" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 15 "z:=evalf(p(a)):" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 6 "a:=-2:" } }{PARA 0 "> " 0 "" {MPLTEXT 1 0 9 "evalf(z);" }}}{EXCHG {PARA 0 "" 0 " " {TEXT -1 32 "El error cometido esta vez ser\341:" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 22 "evalf(abs(z -sin(-2)));" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 126 "2\272) Veamos aho ra qu\351 ocurre si aumentamos el n\372mero de puntos del soporte. Por ejemplo, tomemos soporte \{-Pi, -Pi/2, 0, Pi/2\}:" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "restart;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 96 "p: =proc(x::uneval) interp([-Pi,-Pi/2,0,Pi/2], [sin(-Pi), sin(-Pi/2), sin (0), sin(Pi/2)], x) end:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 5 "p(x);" } }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 40 "(Ahora el polinomio es de tercer grado.)" }}{PARA 0 "" 0 "" {TEXT -1 78 "Comparamos la gr\341fica de \+ la funci\363n con la de su polinomio de interpolaci\363n y" }}{PARA 0 "" 0 "" {TEXT -1 41 "dibujamos la gr\341fica de la funci\363n error:" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 50 "plot([sin(y), p(y)], y=-Pi..Pi, color[red, blue]);" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 47 "plot(abs(p(c)-sin(c)), c=-Pi..Pi, title=Err or);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 135 "Igual que antes, evaluam os el polinomio en Pi/3 y calculamos el error cometido en este punto \+ al aproximar la funci\363n por el polinomio:" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "unassign('z');" } }{PARA 0 "> " 0 "" {MPLTEXT 1 0 15 "z:=evalf(p(y)):" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "y:=Pi/3:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 9 "evalf (z):" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 24 "evalf(abs(z-sin(Pi/3)));" } }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 89 "Del mismo modo, evaluamos el err or cometido al aproximar sen(x) por el polinomio en x=-2:" }}{PARA 0 " " 0 "" {TEXT -1 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "unas sign('z');" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "unassign('y');" }} {PARA 0 "> " 0 "" {MPLTEXT 1 0 15 "z:=evalf(p(y)):" }}{PARA 0 "> " 0 " " {MPLTEXT 1 0 6 "y:=-2:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 9 "evalf(z) :" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 22 "evalf(abs(z-sin(-2)));" }}} {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 90 "Como prim era conclusi\363n, parece que la aproximaci\363n obtenida con los poli nomios es buena. " }}{PARA 0 "" 0 "" {TEXT -1 172 "Se deja al alumno e l ejercicio de probar diversas funciones, as\355 como aumentar progres ivamente el n\372mero de puntos del soporte, con vistas a obtener algu na otra conclusi\363n." }}{PARA 0 "" 0 "" {TEXT -1 351 "Sin embargo, s e advierte que no siempre se obtienen buenos resultados. Por ejemplo, \+ si se pretende interpolar una funci\363n cuya derivada tome grandes \+ valores, o, en general, funciones \"no suaves\", puede llegarse a situ aciones indeseables. Incluso para funciones muy regulares la situaci \363n puede ser de este tipo, como se muestra en el siguiente caso." } }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }} {SECT 1 {PARA 3 "" 0 "" {TEXT -1 18 "Segundo ejemplo: " }{XPPEDIT 18 0 "f(x) = 1/(x^2+.1);" "6#/-%\"fG6#%\"xG*&\"\"\"\"\"\",&*$F'\"\"#F*$\" \"\"!\"\"F*!\"\"" }{TEXT -1 2 " " }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 " f(x) = 1/(x^2+.1):" }}}{PARA 0 "" 0 "" {TEXT -1 110 " Esta funci\363n es continua en todo R, pero toma grandes valores en \+ las proximidades de x=0. Veamos su aspecto:" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "restart;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 34 "f:=proc(x::uneval) 1/(x^2+.1) end:" }} {PARA 0 "" 0 "" {MPLTEXT 0 21 1 " " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "plot(f(x), x=-3..3);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 48 "Interpolamos f(x) con soporte \{-3, -1, 0, 1, 3\}:" }} {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 86 "p:= proc(z::uneval) interp([-3, -1, 0, 1, 3], [f(-3), f(-1), f(0), f(1), f (3)], z) end:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 5 "p(x);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 76 "y comparamos la gr\341fica del polinomio \+ de interpolaci\363n con la de la funci\363n:" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 46 "plot([p(x), f(x)], x=-3.. 3, color[red, blue]);" }{TEXT -1 0 "" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 37 "Vemos la gr\341fica de la funci\363n error:" }}{PARA 0 "> " 0 " " {MPLTEXT 1 0 43 "plot(abs(p(x)-f(x)), x=-3..3, title=Error);" }}} {EXCHG {PARA 0 "" 0 "" {TEXT -1 45 "Calculamos el error cometido en el punto x=2:" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "z:=p(a):" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 5 "a:=2:" } }{PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "evalf(abs(z-f(2)));" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 67 " \277Mejora la situaci\363n al aumentar e l n\372mero de puntos del soporte? " }{MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 108 " Aumentamos con dos puntos, adem\341s de los anteriores, e interpolamos f(x) con soporte \{-3,-1,-.5,0,.5,1, 3 \}:" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 12 "unassign(p);" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "un assign('x');" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 101 "p:=proc(x::uneval) interp([-3,-1,-.5,0,.5, 1, 3], [f(-3), f(-2),f(-1), f(0),f(1),f(2), f (3)], x) end:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 5 "p(x);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 63 "Comparamos la gr\341fica del nuevo polino mio con la de la funci\363n:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 27 "plo t([p(x),f(x)], x=-3..3);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 37 "Vemos la gr\341fica de la funci\363n error:" }}{PARA 0 "" 0 "" {TEXT -1 0 " " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 30 "plot(abs(p(x)-f(x)), x=-3..3); " }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 45 "Calculamos de nuevo el error \+ cometido en x=2:" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "unassign('z');" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 14 " unassign('a');" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "z:=p(a):" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 5 "a:=2:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "evalf(abs(z-f(2)));" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 278 " Clar amente, la situaci\363n empeora. Es posible, sin embargo, que otras el ecciones de nuevos puntos de soporte sean m\341s acertadas y que el er ror disminuya con ellas. Se recomienda al alumno hacer nuevas pruebas \+ variando, tanto el n\372mero de puntos del soporte como su localizaci \363n." }}}}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 27 "Aumentando el n\272 de pun tos." }}{PARA 0 "" 0 "" {TEXT -1 304 "Vamos a ver unos ejemplos con un a cantidad de puntos arbitraria .\n Objetivo: Se trata de mostrar algu nos de los problemas que presenta la interpolacion polinomial cl\341si ca y las mejoras que se pueden\nobtener seg\372n sea la elecci\363n de los puntos base.\n\nVeamos m\341s detalladamente este problema de osc ilaci\363n." }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 12 "with(plots): " }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 513 "Utilizaremos ahora una func i\363n que sabemos que tiene un comportamiento muy distinto del que se r\355a capaz de mostrar un polinomio. La funci\363n que definimos, en \+ el l\355mite en el que el n\372mero que multiplica a la variable x tie nde a infinito -en este ejemplo 100.- se comporta como una funci\363n \+ escal\363n, tambi\351n llamada de Heaviside. La funci\363n as\355 defi nida, sin embargo, es continua y\nderivable. De modo que podemos aplic ar todo lo que sabemos sobre el comportamiento del error de interpola ci\363n polinomial cl\341sica. \n" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 65 "f := proc (x) options operator, arrow; 1*(1+tanh(100. *x))/2. end:" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 30 "La gr\341fica de \+ esta funci\363n es:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 33 "plot (f(x),x = -1..1,thickness=2);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 196 "Creamos ahora una funci\363n para obtener una lista de 2n+1 puntos ba se equiespaciados en el intervalo [-1,1], zona que recoge la parte de \ncomportamiento \"an\363malo\" de la funci\363n que hemos definido. \+ \n" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 57 "puntosbase := proc (n ) local i; seq(i/n,i = -n .. n) end:" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 73 "As\355, para obtener los cinco primeros puntos equiespaciados, \+ basta\nhacer:\n" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 22 "xd := [puntosbase(2)];" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 82 "Con lo cual la lis ta de los pares de datos (x(i),y(i)) se puede\nobtener haciendo:\n" }} }{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 53 "datos := [seq([xd[i], f(xd[ i])],i = 1 .. nops(xd))];#" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 82 "Dib ujamos la funci\363n original junto con el muestreo correspondiente a \nestos datos:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 38 "puntos:=pointplot (datos,symbol=cross):" }{TEXT -1 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 43 "escalon:= plot(f(x),x = -1..1,thickness=2):" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 27 "display([escalon, puntos]); " }{TEXT -1 0 "" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 277 "Veamos ahora \+ el aspecto del polinomio de interpolaci\363n que pasa por estos punto s. La funci\363n que realiza la interpolaci\363n polinomial\nrequiere \+ los datos (x(i),y(i)) en dos listas separadas, puesto que ya tenemos l a x(i) en lista aparte, s\363lo tenemos que formar la de las\ny(i):\n " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 46 "yd:=[seq(datos[i][2],i \+ = 1 .. nops(datos))];# " }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 15 "e inte rpolarla:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 24 "polint:=interp (xd,yd,x);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 128 "El aspecto que tie ne, a pesar de pasar por todos los puntos, no esespecialmente bueno cu ando se compara con la funci\363n original:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 45 "interpola:=plot(polint,x=-1..1,color=blue):# " }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 40 "display([escalon, puntos, in terpola]);# " }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 268 "Los problemas de oscilaci\363n polinomial se agravan con el n\372mero de puntos base ( al menos con elecciones no \363ptimas de \351stos). Ve\341moslo tomand o\nnueve puntos base, con lo que obtendremos un polinomio de interpola ci\363n de grado ocho, y repitiendo los c\341lculos anteriores: " }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "xd:=[puntosbase(4)];" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 52 "datos := [seq([xd[i], f(xd[i ])],i = 1 .. nops(xd))];" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 38 "puntos:=pointplot(datos,symbol=cross):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 44 "yd:=[seq(datos[i][2],i = 1 .. nops(datos))];" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 24 "polint:=interp(xd,yd,x);" }} }{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 43 "interpola:=plot(polint,x=-1 ..1,color=blue):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 38 "display ([escalon, puntos, interpola]);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 287 "Vemos c\363mo ahora la diferencia es m\341s notable. En particula r resulta evidente que en los extremos de los intervalos el polinomio \+ de\ninterpolaci\363n oscila mucho. Estos problemas, en general, se agr avan cuanto mayor sea el n\372mero de puntos base, a menos que escojam os \351stos cuidadosamente. " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "xd:=[puntosbase(8)];" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 52 "datos := [seq([xd[i], f(xd[i])],i = 1 .. nops(xd))];" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 38 "puntos:=pointplot(datos,symbol=cros s):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 44 "yd:=[seq(datos[i][2] ,i = 1 .. nops(datos))];" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 24 "polint:=interp(xd,yd,x);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 43 "interpola:=plot(polint,x=-1..1,color=blue):" }}}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 38 "display([escalon, puntos, interpola]);" }}}} {SECT 1 {PARA 3 "" 0 "" {TEXT -1 17 "Funcion de Runge." }}{PARA 0 "" 0 "" {TEXT -1 290 "Un ejemplo cl\341sico del comportamiento oscilante \+ del polinomio de interpolaci\363n es el que se da con la funci\363n de Runge: g(x) = 1/(1+25*x^2); El aspecto de esta funci\363n es bastant e razonable y, sin embargo, se comporta muy mal en cuanto al polinomio de interpolaci\363n se refiere. En efecto,\n" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "g:=x-> 1/(1+25*x*x):" }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 19 "plot(g(x),x=-1..1);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 26 "runge:=plot(g(x),x=-1..1):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 21 "xd:= [puntosbase(5)];" }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 52 "datos := [seq([xd[i], g(xd[i])],i = 1 .. nops(xd))] ;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 38 "puntos:=pointplot(dato s,symbol=cross):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 44 "yd:=[se q(datos[i][2],i = 1 .. nops(datos))];" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 24 "polint:=interp(xd,yd,x);" }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 45 "interpola:=plot(polint,x=-1..1,color=blue):# " }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 34 "display([runge,puntos,interpola]);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 69 "Este comportamiento se agrava notablement e si aumentamos el numero de" }}{PARA 0 "" 0 "" {TEXT -1 7 "puntos." } }{PARA 0 "> " 0 "" {MPLTEXT 1 0 21 "xd:= [puntosbase(8)];" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 52 "datos := [seq([xd[i], g(xd[i])],i = 1 .. nops(xd))];" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 38 "puntos :=pointplot(datos,symbol=cross):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 44 "yd:=[seq(datos[i][2],i = 1 .. nops(datos))];" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 24 "polint:=interp(xd,yd,x);" }} }{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 45 "interpola:=plot(polint,x=-1..1,color=blue):# " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 34 "display([runge,puntos,interpola]);" }}}} {SECT 1 {PARA 3 "" 0 "" {TEXT -1 83 "Mejora de la Interpolaci\363n Pol inomial Cl\341sica con la Elecci\363n de los Puntos Base. " }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 912 "Uno de los problemas de la interpolaci \363n es que no se puede asegurar la convergencia del polinomio de int erpolaci\363n a la funci\363n conforme\nse aumenta el n\372mero de pun tos base (y por tanto el grado del polinomio) para una elecci\363n cu alquiera de estos. Lamentablemente,\nesto es cierto en particular para el caso de puntos base equiespaciados, elecci\363n obvia y muchas vec es la \372nica disponible. En\ncambio, si es posible seleccionar los p untos base de manera arbitraria, siempre podemos elegirlos de modo que las propiedades de\nconvergencia sean mejores. En concreto, si util izamos las denominadas abscisas de Chebyshev (ceros de los polinomios \+ de\nChebyshev de primera clase) que vienen dados por la expresi\363n c os((i+1/2)*Pi/(n+1)),i = 0 .. n; podemos garantizar (aunque no es la\n elecci\363n \363ptima de puntos base) que, si la funci\363n que interp olamos es C^`1`; en [a,b], el intervalo en el que interpolamos, enton ces" }}{PARA 0 "" 0 "" {TEXT -1 51 "cuando aumentos el polinomio conve rge a la funcion." }}{PARA 0 "" 0 "" {TEXT -1 133 " Veamos como se com porta el mismo problema de interpolaci\363n anterior si utilizamos las abscisas de Chebyshev en lugar de puntos base" }}{PARA 0 "" 0 "" {TEXT -1 15 "equiespaciados." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 62 "Primero definim os los nodos de Chebyshev mediante una funci\363n:" }}{PARA 0 "> " 0 " " {MPLTEXT 1 0 69 "chebynodes:= proc (n) local i; seq(-cos((i+1/2)/(n+ 1)*Pi),i = 0 .. n)" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 4 "end:" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 21 "d:=[chebynodes(8)];# " }}} {EXCHG {PARA 0 "" 0 "" {TEXT -1 133 "Utilizaremos la evaluaci\363n num \351rica de los nodos de Chebyshev para evitar que Maple los trate com o cantidades exactas y use para ello" }}{PARA 0 "" 0 "" {TEXT -1 39 "m uchos m\341s recursos de los necesarios. " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 13 "xd:=evalf(d);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 59 "datos := [seq([xd[i], evalf(f(xd[i]))],i = 1 .. nops(xd))];" } }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 38 "puntos:=pointplot(datos,sy mbol=cross):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 44 "yd:=[seq(da tos[i][2],i = 1 .. nops(datos))];" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 40 "El polinomio de interpolaci\363n nos queda:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 24 "polint:=interp(xd,yd,x);" }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 44 "interpola:=plot(polint,x=-1..1, color=blue):" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 30 "display([escalon, interpola] );" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 135 "Que, si lo comparamos con \+ el polinomio de grado ocho obtenido con abcisas equiespaciadas es una \+ mejora notable, vi\351ndose, en particular" }}{PARA 0 "" 0 "" {TEXT -1 70 "c\363mo comienza a desaparecer el problema de oscilacion en los extremos." }{MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 43 " Si volvemos a aumentar el n\372mero de puntos:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 21 "xd:=[chebynodes(16)]:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "xd:=evalf(xd):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 59 "datos := [seq([xd[i], evalf(f(xd[i]))],i = 1 .. nops(xd))]:" } }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 38 "puntos:=pointplot(datos,sy mbol=cross):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 44 "yd:=[seq(da tos[i][2],i = 1 .. nops(datos))]:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 24 "polint:=interp(xd,yd,x):" }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 44 "interpola:=plot(polint,x=-1..1, color=blue):" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 21 "plot(polint,x=-1..1);" }}} {EXCHG {PARA 0 "" 0 "" {TEXT -1 68 "Vemos de nuevo como las oscilacion es en los extremos disminuyen cada" }}{PARA 0 "" 0 "" {TEXT -1 8 "vez \+ m\341s." }{MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 39 "display([escalon, puntos, interpola]);\n" }{TEXT -1 53 "que, de nu evo, vuelven a ser virtualmente id\351nticos." }}}{SECT 1 {PARA 4 "" 0 "" {TEXT -1 21 "El ejemplo de Runge. " }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 262 "Podemos realizar la misma comparaci\363n con el ejemplo \+ de Runge y ver c\363mo se comporta en este caso la interpolaci\363n co n puntos base de Chebyshev. Puesto que la funci\363n es C^`1`;, tenemo s garantizada la convergencia, de modo que esperamos que las cosas vay an bien." }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "g:=x-> 1/(1+25*x*x):" } }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "d:=[chebynodes(8)]:" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 13 "xd:=evalf(d):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 59 "datos := [seq([xd[i], evalf(g(xd[i] ))],i = 1 .. nops(xd))]:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 38 "puntos:=pointplot(datos,symbol=cross):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 44 "yd:=[seq(datos[i][2],i = 1 .. nops(datos))]:" }}} {EXCHG {PARA 0 "" 0 "" {TEXT -1 40 "El polinomio de interpolaci\363n n os queda:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 24 "polint:=interp(xd,yd,x );" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 44 "interpola:=plot(polin t,x=-1..1, color=blue):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 27 " display([runge,interpola]);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "d:=[chebynodes(16)]:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 13 "xd:=evalf(d):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 59 "datos := \+ [seq([xd[i], evalf(g(xd[i]))],i = 1 .. nops(xd))]:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 38 "puntos:=pointplot(datos,symbol=cross):" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 44 "yd:=[seq(datos[i][2],i = 1 . . nops(datos))]:" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 40 "El polinomio \+ de interpolaci\363n nos queda:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 24 "p olint:=interp(xd,yd,x);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 44 " interpola:=plot(polint,x=-1..1, color=blue):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 27 "display([runge,interpola]);" }}}{EXCHG {PARA 0 " > " 0 "" {MPLTEXT 1 0 0 "" }}}}}}{MARK "5 0 0" 53 }{VIEWOPTS 1 1 0 1 1 1803 }