Download - interpolacion matlab
-
7/21/2019 interpolacion matlab
1/72
Proyecto #5: Salidas gracas en Matlab. Interpolaci on
Vctor Domnguez Mara Luisa Rapunhttp://www.unavarra.es/personal/victor dominguez/
12 de diciembre de 2005
http://www.unavarra.es/personal/victor_dominguez/http://www.unavarra.es/personal/victor_dominguez/ -
7/21/2019 interpolacion matlab
2/72
-
7/21/2019 interpolacion matlab
3/72
Captulo 1
Introducci on
Trataremos en este proyecto uno de los aspectos m as potentes de Matlab: las sali-
das gr acas. Aunque es difcil, o al menos extenso, exponer con cierto detalle todos loscomandos, su funcionamiento y los diferentes par ametros y opciones que se encuentrana disposici on del usuario, s que es asumible el conocimiento de los aspectos m as b asicosy que sea el propio usuario, con la ayuda de Matlab o con guas mucho m as detalladas,quien profundice en los detalles que necesite.
En la segunda parte estudiaremos el problema de la interpolaci on polin omica comouna buena piedra de toque para testar las salidas gr acas.
Como aspectos relacionados hablaremos someramente de la interpolaci on por splines y las curvas Bezier, que nos dan un ejemplo muy sencillo de Matem aticas aplicadas aldiseno gr aco.
#4 1
-
7/21/2019 interpolacion matlab
4/72
-
7/21/2019 interpolacion matlab
5/72
Parte I
Matlab: Salidas gracas en Matlab
#4 3
-
7/21/2019 interpolacion matlab
6/72
-
7/21/2019 interpolacion matlab
7/72
Captulo 2
Dibujos bidimensionales
2.1. El comando
Ya hemos observado que los comandos de Matlab denen de una forma natural variosniveles de manipulacion. Los niveles basicos son f aciles de utilizar pero acceder a detallesmas nos exige argumentos opcionales y detalles mucho m as nos.
Esta caracterstica se destaca m as, si cabe, en los comandos relacionados con las salidasgracas. Es por ello que, empezando por la instrucci on , recorreremos los diferentesniveles de forma gradual. El nivel superior, que conlleva un control absoluto del dibujo, nolo trataremos porque requerira un exposici on demasiada larga. Lo que aqu expondremoses suciente en un 99% de los casos, y en ultima medida se pueden acceder a todas lascaractersticas de un dibujo desde la ventana gr aca a golpe de raton.
2.1.1. Primer nivel
El primer comando que trataremos es 1. Es una instrucci on muy versatil y la m asindicada para dibujar gr acas de funciones y curvas en el plano. Su sintaxis b asica es
dibuja el vector versus el vector . M as en concreto une los puntosmediante segmentos. Tomando un n umero suciente elevado de puntos trazamos con ellouna gr aca suave , sin esquinas.
Al ejecutar este comando se abre una ventana, gure en el vocabulario de Matlab, conla correspondiente salida gr aca.
Si se teclea
e es real entonces la salida gr aca toma donde es la longitud de . Si, por otrolado, es un vector de n umeros complejos, dibuja la parte real versus la parte imaginaria.Es decir, es equivalente a .
Ejercicio 1 Que hacen las siguientes lneas de codigo?1 que ha hemos tratado en el tema anterior.
#4 5
-
7/21/2019 interpolacion matlab
8/72
2.1 El comando PROYECTO #4
Figura 2.1: Ventana gr aca
Te parece natural? Que observas con la escala? Que sucede si se ejecuta ?.Como dibujaras una circunferencia?.
2.1.2. Segundo nivel
El comando ademas acepta una serie de argumentos opcionales que entre otras cosaspermiten controlar el color, colocar marcas sobre los puntos y que tipode marcas y como se unen estos puntos. As, en su aspecto m as general,
dibuja vs. , con S una cadena de caracteres que se construye con 2
2 Traducido directamente de la ayuda de Matlab
#4 6
-
7/21/2019 interpolacion matlab
9/72
PROYECTO #4 Cap tulo 2. Dibujos bidimensionales
La primera columna especica el color utilizado, la segunda la marca sobre cada punto yla tercera que patr on siguen las lneas utilizadas para unir los puntos.
Por ejemplo el siguiente chero
genera (tras el reordenamiento manual de las ventanas adecuado, obviamente), la pantallamostrada en la gura 2.2.
El comando abre una ventana gr aca asign andole un numero. Si la ventanaya est a abierta, la coloca como la ventana de salida por defecto. En particular,permite manejarse con varias ventanas de forma simult anea.
Para superponer varios dibujos sobre una misma ventana podemos
Utilizar de la siguiente forma 3
Con
especicamos detalles individuales para cada dibujo. De ambas formas se dibujan si-mult aneamente las curvas denidas por los vectores {{ , }, { , }, { , }, { , }}.Utilizar la orden que activa la superposici on en pantalla. Por ejemplo,
3 Notese que se asignan distintos colores a cada una de las gr acas de forma automatica.
#4 7
-
7/21/2019 interpolacion matlab
10/72
2.1 El comando PROYECTO #4
Figura 2.2: Ventana gr aca
Esta opcion es m as vers atil dado que permite superponer gr acas construidas condiferentes comandos. La superposici on se desconecta con , de forma queun nuevo dibujo borrar a los anteriores.
2.1.3. Tercer nivel
Ya en un tercer nivel, se pueden acceder a detalles concretos del dibujo, como eltama no y color de las marcas , la anchura de la lnea,... Las diferentes opciones llevannombre nemotecnicos que ayudan a recordarlo 4. Destacamos entre las m as importantes a
4 nemotecnicos en ingles, of course .
#4 8
-
7/21/2019 interpolacion matlab
11/72
PROYECTO #4 Cap tulo 2. Dibujos bidimensionales
: color de la lnea.
: anchura de la lnea.
: color del borde de las marcas
: color de la marca
: tamano de la marca
Para especicar un color, se puede utilizar uno de estos caracteres { , , , , , , } obien un vector con tres componentes con valores entre 0 y 1 que especica un color seg unel est andar RGB 5.
Por ejemplo
Ejercicio 2 Se trata de que dibujes las funciones seno ycoseno en [2, 2], la primera enrojo yla segunda en azul. El ancho de lnea debe ser de dos puntos ydeben seguir dos estilosdiferentes, a tueleccion.
Puedes empaquetar las instrucciones en un chero script . Te sera mas c omodo para editarycambiar los que desees.
Nota: la ventana graca
Es posible editar directamente estas propiedades en la gura . Para ello, seleccionar editplot (vease Figura 2.3) y pulsar sobre la gr aca con un doble click. Se desplegar a unaventana adicional con varias pesta nas que informan y permiten modicar diferentes carac-tersticas del objeto. Si se pulsa sobre el fondo de la pantalla controlaremos m as aspectosdel propio entorno, como la escala, el ratio entre el eje OX y OY, las marcas sobre los
ejes,..., aspectos que trataremos seguidamente.No entraremos a explicar estos detalles en profundidad. Este un buen ejemplo donde laprueba, la experimentaci on y el ensayoerror permiten aprender mejor y m as r apidamenteque cualquier manual que podamos redactar.
La ventaja de editar a traves de comandos es que podemos dotar de un aspecto deter-minado nuestros dibujos sin necesidad de retocarlos en cada paso y para cada ejemplo. Elprecio que se paga es un mayor trabajo. Por contra la manipulaci on a traves del rat on esmucho m as simple, aunque rehacer un dibujo exige volver a dar el aspecto nal deseadodel dibujo a mano. Queda por tanto a elecci on del usuario que metodo utilizar en cadacaso.
5
R ed, G reen, B lue. Crea un color anadiendo partes de rojo, verde y azul seg un los valores de unvector de tres componentes
#4 9
-
7/21/2019 interpolacion matlab
12/72
2.1 El comando PROYECTO #4
Ejercicio 3 Ejecuta
Desde la ventana graca dale el aspecto que habas dado en el ejercicio 2.
2.1.4. Comandos asociados
Paralelamente a , existe una serie de comandos que controlan el entorno dondese despliega la graca. Entre los m as elementales (o al menos, m as f aciles de utilizar),podemos destacar:
: n despliega una ventana gr aca asign andole el n umero n. Siesta existe, la transforma en la ventana gr aca de salida.
: borra la ventana actual ( gure ) de gr acos.
: borra el axes actual. El axes es la parte de la ventana utilizada paradibujar. Una ventana puede contener varios axes (vease el comando
tratado mas adelante).
: permite que sucesivas gr acas se vayan solapando.desconecta esta opcion (es la que est a por defecto).
: un comando algo complejo. Controla el ratio entre los ejes OX y OY,la parte del dibujo que se muestra por pantalla, forma de mostrar lascoordenadas....
: especica los lmites del dibujo. Se puede utilizar para centrar el dibujo
: muestra una malla en pantalla; la desconecta
: despliega una leyenda , esto es un cuadro explicativo sobre las gr acaspresentes.
: a nade ttulos ( etiquetas ) a los ejes OX y OY
: Coloca un ttulo en la cabecera del dibujo.
Asigna un color al fondo del dibujo
#4 10
-
7/21/2019 interpolacion matlab
13/72
PROYECTO #4 Cap tulo 2. Dibujos bidimensionales
Figura 2.3: Edicion de un dibujo
#4 11
-
7/21/2019 interpolacion matlab
14/72
2.1 El comando PROYECTO #4
A modo de ejemplo, el siguiente conjunto de instrucciones (empaquetado en un cheroscript 6) despliega las gracas mostradas en la Figura 2.4
Nota. En el comando hemos utilizado los atributos y paraespecicar la fuente y su tama no utilizada para escribir el ttulo. Otros atributos son
: los valores posibles son . Especican el trazode los car acteres, desde no ( ) hasta negrita ( ).
: con jamos la inclinaci on de la fuente.: especica el angulo con el que se escribe el texto. El valor por defecto, 0, es
la escritura horizontal, mientras que con 90 se escribe el texto en vertical.
Este tipo de atributos est an disponibles para cualquier comando que se ocupe de desplegartextos en la pantalla gr aca. Por ejemplo, , , , ,...
Ejercicio 4 Se trata de visualizar el efecto del comando con diferentes opciones sobreel aspecto nal de un dibujo.
Teclea6 Observa la utilizacion de para cortar lneas demasiado largas.
#4 12
-
7/21/2019 interpolacion matlab
15/72
PROYECTO #4 Cap tulo 2. Dibujos bidimensionales
0 1 2 3 4 5 6
-0.2
-0.1
0
0.1
0.2
0.3
0.4
0.5
Eje OX
E j e O Y
Algunas graficas de funciones
exp(-x/3).*cos(x/3)exp(-x).*cos(x)
exp(-3x)*cos(3x)exp(-9x).*cos(9x)
Figura 2.4: Un ejemplo
La funcion tangente presenta una asntota vertical 7 en / 2. Teclea los siguientes comandos yobserva el aspecto nal de la gura
Intuyes que hace cada comando? Utilizando la ayuda deduce exactamente que hace cadacomando.
2.1.5. Cuarto nivel: y
Los comandos y permiten acceder y cambiar los atributos de cualquier objetograco. No son, por tanto, en medida alguna exclusivos de . M as bien todo objetograco, desde una simple curva hasta la propia ventana donde se despliega el dibujo
7 Tiende a innito
#4 13
-
7/21/2019 interpolacion matlab
16/72
-
7/21/2019 interpolacion matlab
17/72
PROYECTO #4 Cap tulo 2. Dibujos bidimensionales
De forma similar
devuelve en un variable que permite a continuaci on la manipulacion de muchas de suspropiedades. Para ello se utiliza la instrucci on
cambia alguno de los atributos de la leyenda , x,f4-3359een
-
7/21/2019 interpolacion matlab
18/72
2.2 Otras salidas gracas PROYECTO #4
accede a la estructura de la gr aca, que esencialmente es el marco donde desplegamos losdibujos. La lneas edita los atributos que especica donde colocar las marcasen el eje OX, la fuente utilizada en el dibujo, la opci on de en el eje OY, el tama no
de la lnea para la malla y c omo dibujar esta. El resultado se puede ver en la gura 2.5
0 0.25 0.5 1 2 4-1
0
1
2
3
4
5
6x log(x)
Figura 2.5: Salida correspondientes
Nota
Todas las propiedades anteriores se pueden modicar de una forma m as facil edit andolodirectamente en la ventana gr aca. Su manejo es f acil intuitivo (seleccionar, doble click,bot on derecho del rat on....).
Con las ordenes y obtenemos la informaci on de las di-ferentes opciones para la instrucci on (y similares) y para la gura.
Con accedemos a los diferentes par ametros de un objeto gr aco y sus valores. Por
ejemplo
muestran los valores para el axis y gure utilizado en ese momento ( get current axis y get current gure ).
2.2. Otras salidas gracas
Resenaremos a continuaci on otros comandos relacionados con dibujos y gr acas bidi-mensionales de manejo similar a
#4 16
-
7/21/2019 interpolacion matlab
19/72
PROYECTO #4 Cap tulo 2. Dibujos bidimensionales
: curvas en polares;
: similar a pero utilizando, respectivamente, una escala lo-
gartmica en el eje OX y el eje OY;: escala logartmica en ambos ejes;
: dibuja puntos uniendolos con una linea vertical al eje OX;
: traza una gr aca en forma de escalera;
: despliega gr acas en forma de barras. Muy apropiada para repre-sentar datos y estadsticas (estilo excel );
: Muestra los datos en una gr aca de forma acumulada. El colorutilizado se controla mediante el comando , cuyo funcio-namiento veremos m as adelante;
: Une puntos mediante lneas. Es una instrucci on de bajo nivel cuyofuncionamiento es similar a ;
: una instruccion tambien de bajo nive l8, construye polgonos, ocaras en tres dimensiones y asigna un color a la cara denida;
2.3. El comando
Este comando permite la visualizaci on de diferentes subventanas gr acas ( ) enuna misma ventana. A modo de ejemplo,
dene una ventana con seis zonas para salidas gr acas dispuestas en 2 3 (dos las, trescolumnas) y accede a la primera de ellas. La numeraci on es la desplegada en la gura 2.6.Por ejemplo, las instrucciones
#4 17
-
7/21/2019 interpolacion matlab
20/72
2.4 Comandos f aciles de usar PROYECTO #4
1 2 3
4 5 6
Figura 2.6: Numeraci on con
crean la gura 2.7.
2.4. Comandos f aciles de usar
Matlab tiene implementada una serie de comandos que permiten dibujar de formasencilla gr acas de funciones. No se tiene un control tan completo como con pero secompensa con su facil uso. En el apartado que nos ocupa (gr acas bidimensionales) sonresaltables
La ayuda de Matlab es, en nuestra opini on, suciente para aprender su manejo
#4 18
-
7/21/2019 interpolacion matlab
21/72
PROYECTO #4 Cap tulo 2. Dibujos bidimensionales
0 2 4 6
-0.5
0
0.5
sin(x)
0 2 4 6
-0.5
0
0.5
1cos(x)
0 2 4 6
-0.5
0
0.5
1sin(2x)
0 2 4 6
-0.5
0
0.5
cos(2x)
0 2 4 6
-0.5
0
0.5
sin(4x)
0 2 4 6
-0.5
0
0.5
1cos(4x)
Figura 2.7: Disposicion simult anea de gracas con
#4 19
-
7/21/2019 interpolacion matlab
22/72
-
7/21/2019 interpolacion matlab
23/72
Captulo 3
Gracas en 3D
Cualquier dibujo en 3D, ya sea curvas o supercies, y su trazado a mano conllevanuna serie de dicultades que hacen que los programas de dibujo y similares, como Matlab,se revelen especialmente utiles. Matlab incluye la posibilidad de rotar objetos y haceranimaciones en el espacio de forma que se consiga una visualizaci on.
Hemos decidido incluir en este apartado las instrucciones relativas a curvas de ni-vel aunque hablando propiamente son dibujos bidimensionales. Su origen y su posteriorinterpretacion nos conducen de nuevo al entorno espacial.
3.1. El comando
Este comando sirve, a grosso modo, para dibujar curvas en el espacio. Su manejo esmuy similar a , por lo que no nos detendremos demasiado en su explicaci on. Esta essu sintaxis
opciones
con opciones muy similares a . He aqu un ejemplo sencillo
cuyo resultado se muestra en la gura 3.1. Observese que los comandos relacionados conlos aspectos accesorios del dibujo ( , , , ...) funcionan exactamenteigual y que aparecen algunos nuevos cuya utilidad y manejo no debera causar sorpresa:
#4 21
-
7/21/2019 interpolacion matlab
24/72
-
7/21/2019 interpolacion matlab
25/72
PROYECTO #4 Cap tulo 3. Gr acas en 3D
donde , especican una malla en el plano y la altura correspondiente. El color quese da a cada punto es por defecto igual a la altura.
Queda pendiente, no obstante, como construir una malla. Aunque se puede hacer a
mano ( Matlab ofrece en su ayuda informaci on detallada de c omo hacerlo), es mejor echarmano de comandos propios de Matlab, en este caso, . As, si e son dosvectores, este comando devuelve dos vectores que contienen la informaci on de la malla.La construcci on de dicha malla sigue el esquema marcado por la gura 3.3.
x
y
y(3)y(2)y(1)
y(m)
x(1) x(2)x(3) x(4)
y(4)
x(n)
Figura 3.3:
Por ejemplo
Las variables e forman una malla seg un la sintaxis de Matlab.El dibujo de la gura 3.4 se ha construido con el siguiente conjunto de instrucciones
#4 23
-
7/21/2019 interpolacion matlab
26/72
3.2 El comando PROYECTO #4
Figura 3.4: Supercie creada con
Comandos asociados
Relacionados con se dispone de una serie de instrucciones que controlan tanto elaspecto gr aco como la visualizacion nal de la supercie. Nos limitaremos a hablar deestos cuatro comandos
despliega una barra de colores que informa sobre la correspondencia entre valornumerico y color utilizado. Por defecto se despliega verticalmente a la derecha deldibujo, aunque puede mostrarse horizontalmente si as se desea 1.
1 Consulta la ayuda...
#4 24
-
7/21/2019 interpolacion matlab
27/72
PROYECTO #4 Cap tulo 3. Gr acas en 3D
especica que colores se van a utilizar en el dibujo. Existe un conjunto de formatospredenidos que listamos a continuaci on
Para cambiar a un formato basta ejecutar
y cambiara el color utilizado en la gr aca actual y en las siguientes. Se puedentambien denir formatos personalizados, bien mediante la lnea de comando o desdela propia ventana gr aca.
controlamos la relacion entre los ejes del dibujo. Baste decir que
ja que las proporciones de los ejes OX, OY y OZ sean iguales. Es decir con
la esfera se muestra como una esfera y no como un elipsoide.
similar al anterior pero relacionado con la caja que enmarca el dibujo.
3.2.2. El comando : segundo y tercer nivel
En un segundo nivel de utilizaci on del comando anterior podemos acceder a algunasopciones adicionales entre las que podramos destacar 2
2 siempre a nuestro juicio...
#4 25
-
7/21/2019 interpolacion matlab
28/72
3.2 El comando PROYECTO #4
: se especica un valor entre 0 y 1 que dene la transparencia quetiene la rejilla o red en el dibujo (con 0 la red es transparente ypor tanto no se ve)
: como la opcion anterior pero relativa a las caras.
: cuatro valores posibles: un color (en el formato habitual), ,, . Especica que color utilizar en la rejilla. Por
defecto es negro, pero se puede eliminar la rejilla ( ),se pue-de utilizar el color marcado por el primer vertice ( ) o bienutilizar un color denido por los colores de los dos vertices de cadaeje
: igual que la opcion anterior, con las mismas opciones. En este casoespecica el color de cada cara de la malla utilizada en el dibujo.Si no se especica, el color se calcula utilizando la altura de lospuntos, es decir, la coordenada .
: anchura de las lneas utilizadas en el dibujo de la red
: que marca colocar en cada punto del dibujo. Sigue el mismo for-mato que (por defecto no coloca ninguna marca).
igual que en
Tres opciones (defecto), y . Especica c omo des-pliega la red, entera, s olo las las o solo las columnas, respectiva-mente.
Por ejemplo, la gura 3.5 se obtiene con
genera la gura 3.5
En un tercer nivel de dicultad (y de precisi on), el comando devuelve un handle quepermite modicar todas estas opciones a posteriori. As, por ejemplo,
#4 26
-
7/21/2019 interpolacion matlab
29/72
PROYECTO #4 Cap tulo 3. Gr acas en 3D
Figura 3.5: Algunas opciones con
devuelve en h, despues de dibujar, un puntero al dibujo.Como antes, podemos leer una propiedad determinada mediante :
o bien ver todas con
#4 27
-
7/21/2019 interpolacion matlab
30/72
3.2 El comando PROYECTO #4
Observamos as alguna de las opciones que hemos comentado y otras muchas m as que nohemos estudiado.
Para cambiar una propiedad utilizamos de nuevo el comando . Por ejemplo con
hacemos aparecer la rejilla en el dibujo con las lneas trazadas con anchura 1.
#4 28
-
7/21/2019 interpolacion matlab
31/72
-
7/21/2019 interpolacion matlab
32/72
3.3 Otros comandos relacionados PROYECTO #4
3.3. Otros comandos relacionados
Comentaremos a continuaci on otras instrucciones relacionadas con gr acas de objetostridimensionales.
3.3.1. y
Despliegan las lneas de nivel del dibujo. Propiamente es una gr aca en 2D. La dife-rencia entre ellas es que la primera s olo traza las curvas de nivel mientras que la segundacolorea el espacio entre ellas.
Es posible a nadir un texto sobre cada lnea de nivel. Para ello basta hacer como en elejemplo siguiente
El resultado es el de la gura 3.7
-2 -1.5 -1 -0.5 0 0.5 1 1.5 2-2
-1
0
1
2
-0.
0-008-006-004-0020002004006
-2
-0.0-0
-0.00.0-2-0002-0.8-0.6-0.4-0.200.20.40.6
-
7/21/2019 interpolacion matlab
33/72
PROYECTO #4 Cap tulo 3. Gr acas en 3D
3.3.2. y
Ambas son variantes de . La primera despliega la supercie y dibuja en el planoOXY (plano inferior) las curvas de nivel.
La segunda es como pero el color que asigna a cada punto viene determinadopor una punto de iluminaci on exterior . El resultado es el de una supercie de un colordeterminado iluminado desde un punto
3.3.3.
Todos ellos dibujan unicamente la malla (rejilla) del dibujo. La segunda adem as a nadelas lneas de nivel, de forma semejante a como proceda .
3.4. Comandos f aciles de usar Los comandos
permiten trazar, de forma muy sencilla, curvas y supercies en el espacio. Su sencillez deuso (consulta la ayuda) queda lastrada con el inconveniente de que apenas se tiene controlsobre el aspecto nal.
3.5. Dibujos sobre dominios mallados en triangulos
Los comandos anteriores est an pensados para dibujar supercies denidas esencial-mente sobre una cuadrcula. Aunque en muchos casos esto es suciente en ocasiones setrabaja con funciones denidas sobre conjuntos, o dominios en la terminologa habitual,mucho m as generales.
Una forma muy simple de trabajar con estos dominios es dividirlo en tri angulos yconstruir la supercie solapando planos denidos sobre cada tri angulo3. Los resultadosque se obtienen son bastante satisfactorios, puesto que los tri angulos son mas exiblesque los rectangulos o paralelogramos a la hora de adaptarse a los dominios.
La divisi on en triangulos de un conjunto as se denomina triangulaci on o mallado
del dominio. Se dice que un mallado se hace m as no si el tama no de los triangulosdisminuye.Una triangulacion se dice conforme si la interseccion de dos lados cualesquiera del
mallado es o bien vaco (los tri angulos no se tocan), o un vertice o un lado entero. Es decirno se admiten que un lado de un tri angulo pueda ser parte de dos lados de dos tri angulosdiferentes (vease gura 3.8). Por otro lado, una familia de triangulaciones se dice regularsi los triangulos no se aplanan , es decir, los angulos de los tri angulos no se hacen muypequenos.
La siguiente cuestion es c omo almacenar la informaci on de una triangulaci on. Enprimer lugar se considera una numeraci on de los nodos (vertices) de los tri angulos. Las
3
se utiliza el conocido resultado de que tres puntos no alineados denen un unico plano. Es f acil vertambien que la supercie as construida es continua
#4 31
-
7/21/2019 interpolacion matlab
34/72
3.5 Dibujos sobre dominios mallados en triangulos PROYECTO #4
Figura 3.8: Triangulaci on no conforme
coordenadas de cada vertice se guardan en dos vectores, x e y de forma que las coordenadasdel vertice vengan dados por
(x ( ) , y ( )) .
En segundo lugar almacenamos los nodos que componen cada tri angulo, mediante unamatriz t de tres columnas y n las con n el n umero total de tri angulos. As para saberque vertices est an en el tri angulo , basta mirar
t ( , 1) t ( , 2) t ( , 3)
esto es, la la de t .A modo de ejemplo, el mallado expuesto en la gura 3.9 se guarda en las siguientes
variables
Triangulos
#4 32
-
7/21/2019 interpolacion matlab
35/72
PROYECTO #4 Cap tulo 3. Gr acas en 3D
-0.5 0 0.5-0.6
-0.4
-0.2
0
0.2
0.4
0.6
1
2
3
4
5
6
78
9 10
1112
1314
15
16
17
18
19
20
211
2
3
4
5
6
7
8
9
10
11
12
13
14
15 16
17
181920
21
22
2324
25
26
27
28
16728
Figura 3.9: Ejemplo de triangulaci on. En el graco la numeracion de los triangulos serodea con un crculo
coordenadas:
#4 33
-
7/21/2019 interpolacion matlab
36/72
3.5 Dibujos sobre dominios mallados en triangulos PROYECTO #4
La informaci on anterior es suciente para construir la malla, la triangulaci on del do-minio. Si ademas se desea construir la supercie en cuesti on hace falta un vector adicionalz de forma que
z( )sea el valor de la funci on en el nodo .
Figura 3.10: Graca sobre un dominio triangulado
Esta es una forma ya est andar de denir y trabajar con una triangulaci on que tambiensigue Matlab4 con los comandos y
4
La toolbox pdetool dedicada a la resolucion de ecuaciones en derivadas parciales sigue una variantealgo mas complicada que la expuesta arriba.
#4 34
-
7/21/2019 interpolacion matlab
37/72
PROYECTO #4 Cap tulo 3. Gr acas en 3D
La primera despliega la malla triangular especicada por , la matriz conteniendo lostri angulos, y , que dan las coordenadas de los vertices:
Se puede especicar la coordenada z de los vertices (la altura),
con lo que se dibuja la malla 3D correspondiente.El comando es similar, pero coloreando las caras. Es propiamente hablando,
una supercie.
Nota
Un tema nada trivial es la construcci on de un mallado sobre un dominio (poligonal)dado. Existen multitud de algoritmos que tratan este problema. En principio se planteala construccion de una malla gruesa, con pocos tri angulos y de area considerable, con lostri angulos lo m as regulares posibles (sin deformar, alargar , en demasa los tri angulos).
Posteriormente, se trata de renar la malla, es decir, dividir los tri angulos en triangulosmas peque nos hasta que se alcance una precisi on adecuada.
Esta idea se esconde detr as de aplicaciones como la interpolaci on (aproximacion deuna funci on) y especialmente el metodo de elementos nitos, probablemente el metodo 5mas utilizado en la resoluci on de problemas de contorno para ecuaciones en derivadasparciales.
Si se desea informacion de c omo se puede inicializar un malla en Matlab, as como elalgoritmo utilizado se puede consultar el comando (incluido tema de triangu-laciones de Delaunay). Para el renamiento, vease .
Por ultimo, y volviendo de nuevo al comando , es posible dibujar superciesdenidas sobre partes de un rect angulo. Para ello, cualquier punto cuya coordenada z seaun ( not a number ), no se dibuja. Por ejemplo
despliega una supercie 6 con un hueco en la circunferencia centrada en el origen y de radio1/ 2 (vease Figura 3.11). De todos modos se observa la deciente aproximaci on de loscuadrados, propios de , del crculo interior.
5 Propiamente hablando es una familia de metodos6 La tercera lnea merece un comentario, aunque instrucciones parecidas han sido tratadas en el Tema
1. Al hacer la comparacion , Matlab devuelve una matriz logica, de 1s y 0s. El
comando en , hace que los puntos situados dentro del crculo de radio1/ 2, que es donde la expresi on logica es 1, tomen como valor
#4 35
-
7/21/2019 interpolacion matlab
38/72
3.5 Dibujos sobre dominios mallados en triangulos PROYECTO #4
Figura 3.11: Utilizacion de en un dibujo
#4 36
-
7/21/2019 interpolacion matlab
39/72
Parte II
Interpolaci on
#4 37
-
7/21/2019 interpolacion matlab
40/72
-
7/21/2019 interpolacion matlab
41/72
Captulo 4
Interpolaci on polin omica deLagrange
Un problema ya cl asico es la construccion, o aproximacion de una funcion conocidosunos pocos valores. Algunas referencias a este tipo de problemas se remontan al mane-
jo de tablas trigonometricas y posteriormente logartmicas y exponenciales donde unospocos valores estaban tabulados y para valores intermedios era necesario un proceso deinterpolaci on.
Ciertamente la llegada de los ordenadores ha contribuido a que parte de estas aplica-ciones hayan perdido su sentido pero paralelamente han surgido nuevos problemas comoaquellos relacionados con el dise no gr aco (CAD, de computer aided design ). Un buenejemplo lo encontramos en diversas aplicaciones muy pr acticas que requeran la construc-
cion curvas, o supercies en el espacio, que pasaran por unos puntos determinados y quetuvieran buenas propiedades geometricas.En estos apuntes nos restringiremos a la interpolaci on polin omica (esto es, a la cons-
trucci on de polinomios que pasen por unos puntos predeterminados) y comentaremosbrevemente la interpolaci on polin omica a trozos con las funciones spline .
Por ultimo trataremos de forma supercial las curvas Bezier. Propiamente hablando,no se trata de un problema de interpolaci on sino de trazar curvas suaves que sigan elcamino, con cierta libertad, marcado por un polgono. Su f acil construcci on anima a suexposicion como cierre de este tema.
#4 39
-
7/21/2019 interpolacion matlab
42/72
-
7/21/2019 interpolacion matlab
43/72
Captulo 5
Interpolaci on polin omica
5.1. El problemaEl problema que queremos resolver es el siguiente
Dados un conjunto de n + 1 puntos {(x0, y0), (x1, y1), . . . (xn , yn )}, construirun polinomio pn de grado n tal que pn (x j ) = y j , j = 0 , . . . , n .
El polinomio pn se le conoce como polinomio de interpolaci on de Lagrange. Habitualmente,y j son valores de una funci on f que por ser o bien desconocida en el resto de puntos, obien porque es cara computacionalmente de evaluar, s olo se dispone de su valor en unconjunto discreto de puntos.
Tenemos una serie de cuestiones pendientes:
Se puede construir siempre el polinomio de interpolaci on pn ?. Y relacionada conesta cuestion, el polinomio de interpolaci on es unico?
Existen formas optimas para c alcular este polinomio?
Como aproxima pn a esta funcion f ?
y como cuestion asociada
Cual es la mejor forma de evaluar un polinomio? Es decir, Nos interesa el poli-nomio escrito de una forma especial o simplemente poder evaluar de forma f acil,rapida y estable?
5.2. Existencia del polinomio de interpolaci on
Probaremos la existencia del polinomio de interpolaci on mediante un razonamiento
directo. Tomemos P n pn (x) = a0 + a1x + a2x2 + . . . + an xn
#4 41
-
7/21/2019 interpolacion matlab
44/72
5.2 Existencia del polinomio de interpolacion PROYECTO #4
un polinomio de grado n. Obviamente, pn cuenta con n + 1 par ametros libres que sonsimplemente sus coecientes {a j }. Si exigimos que
pn (x j ) = y j , j = 0 , . . . , nnos encontramos con que los coecientes satisfacen el sistema lineal
1 x0 x20 xn01 x1 x21 xn11 x2 x22 xn2. . . . . . . . . . . . . . . . . .1 xn x2n xnn
a0a1a2...
an
=
y0y1y2...
yn
(5.1)
Por tanto el problema se reduce a la resoluci on de un sistema de ecuaciones lineales yla existencia y unicidad del polinomio de interpolaci on a que el sistema en cuesti on seacompatible determinado.
El sistema anterior es una matriz de tipo Vandermonde que nos ha surgido repetidasveces en estos apuntes 1. Dado que el sistema es cuadrado, tiene el mismo n umero deecuaciones que de incognitas, se tiene que
la existencia de solucion para cualquier dato es equivalente a la unicidad.
Ademas, la unicidad de soluci on es equivalente a que la unica soluci on posible para eltermino independiente nulo sea el polinomio cero. Pero esto es inmediato puesto que todo
polinomio no nulo de grado n tiene a los sumo n races.Otra forma de ver la existencia y unicidad es de tipo constructiva. Tomemos
L j (x) := (x x0) (x x j 1)(x x j +1 ) (x xn )(x j x0) (x j x j 1)(x j x j +1 ) (x j xn )
=i= j
x xix j x i
.
Es f acil ver que L j P n y que ademas
L j (xi ) := 1 , i = j ,0, i = j .
Por tanto, pn (x) = y0L0(x) + y1L1(x) + . . . + yn Ln (x).
satisface las condiciones ( 5.1). Una vez probada la existencia deducimos por los mismosargumentos la unicidad del polinomio de interpolaci on.
La formula anterior se conoce como formula de Lagrange del polinomio de in-terpolaci on y a la base {L j } j base de Lagrange del problema de interpolaci on .Ejercicio 5 Programar una funcion que evalue el polinomio de interpolacion en un conjuntode puntos segun el siguiente prototipo
1 Cada columna es el resultado de elevar a una potencia el vector (1 x0 x1 xn )
#4 42
-
7/21/2019 interpolacion matlab
45/72
PROYECTO #4 Cap tulo 5. Interpolacion polin omica
Soluci on. He aqu una posible implementaci on2
Hemos probado el programa anterior para interpolar la funci on exp(sin(6 x)) en [0 , ]en diversos puntos uniformemente distribuidos (a igual distancia). El resultado, junto conel error que comente el error de interpolaci on, se muestra en la gura 5.1.
Ejercicio 6 Implementa la construccion del polinomio de interpolacion mediante la resoluciondirecta del sistema dado en (5.1). Que observas cuando el grado del polinomio crece?.
2 Observa el de la lnea
#4 43
-
7/21/2019 interpolacion matlab
46/72
5.3 Formula de Newton PROYECTO #4
0 0.5 1 1.5 2 2.5 3 3.5-1
-0.5
0
0.5
1
1.5
2
0 0.5 1 1.5 2 2.5 3 3.5-1.5
-1
-0.5
0
0.5
1
1.5 Error
polinomio de grado 5polinomio de grado 9polinomio de grado 13
exp(-x).*sin(6.*x)polinomio de grado 5
polinomio de grado 9polinomio de grado 13
Figura 5.1: Polinomios de interpolaci on con diferentes grados
5.3. F ormula de Newton
Es f acil comprobar que la f ormula de Lagrange tiene un costo computacional elevado.Por ello es necesario explorar formas alternativas de construir el polinomio de interpolaci on
y de proceder a su evaluaci on.Si observamos detenidamente la f ormula de Lagrange, esta se basa en tomar comobase de P n , los polinomios de grado n, la dada por
{L0(x), L1(x), . . . , L n (xn )}.En esta base, las coordenadas del polinomio de interpolaci on son la solucion de un sistemaque es diagonal (de hecho es la identidad) lo que hace que la resoluci on del sistema seainmediata. El precio que se paga como contrapartida es una evaluaci on m as cara delpolinomio de interpolacion.
Podemos explorar otras bases que, aumentando el costo de la resoluci on del sistema,den f ormulas del polinomio de interpolaci on cuya evaluacion sea m as barata.
#4 44
-
7/21/2019 interpolacion matlab
47/72
PROYECTO #4 Cap tulo 5. Interpolacion polin omica
Planteamos as utilizar la base
{1, (x x0), (x x1)(x x0), . . . , (x xn 1)(x xn 2) (x x0)}.Es inmediato probar que es una base de los polinomios de grado n. Dicho de otra forma,que cualquier polinomio de grado n se puede escribir
0 + 1(x x0) + . . . + n (x xn 1)(x xn 2) (x x0). (5.2)Ademas el sistema lineal que dara los coecientes ( j ) j es ahora triangular superior, porlo que su resolucion es pr acticamente directa en O(n2) operaciones.Notese que si pn (x) interpola a f en n + 1 puntos, a nadir un punto m as ( xn +1 , yn +1 )(donde yn +1 = f (xn +1 )) es simplemente corregir el polinomio anterior en la forma siguiente
pn +1 (x) = pn (x) + n +1 (x
x0)
(x
xn ),
concretamente n +1 =
yn +1 pn (xn +1 )(xn +1 x0) (xn +1 xn )
(5.3)
Es decir, el trabajo hecho para calcular el polinomio de interpolaci on en n + 1 puntos sepuede utilizar si se desea a nadir un punto m as de interpolacion.
5.3.1. Diferencias divididas
Siguiendo la notacion cl asica, consideraremos que los valores y j que deseamos inter-
polar provienen de una funci on f a priori desconocida, es decir,y j = f (x j ), j = 0 , . . . , n .
Los coecientes del polinomio de interpolaci on dado en ( 5.4) se denotan mediante
f [x0] + f [x0, x1](x x0) + . . . + f [x0, x1, . . . , x n ](x xn 1)(x xn 2) (x x0). (5.4)y se denomiman diferencias nitas . Esta forma de escribir el polinomio se conoce comoformula de Newton del polinomio de interpolaci on 3.
Queda a un pendiente como calcular las diferencias divididas de forma que evitemostrabajar con el sistema lineal o con ( 5.3). Es inmediato comprobar que si
pn interpola en {(x0, f (x0), (x1, f (x1)) , . . . , (xn , f (xn ))},q n interpola en {(x1, f (x1), (x2, f (x2)) , . . . , (xn +1 , f (xn +1 ))}
entonces pn +1 (x) = q n (x) +
x xn +1x0 xn +1
( pn (x) q n (x)) (5.5)es el polinomio que interpola en los n + 1 puntos
{(x0, f (x0), (x1, f (x1)) , . . . , (xn +1 , f (xn +1 ))
}3 De nuevo los nombres utilizados dan idea de la antig uedad de estas tecnicas.#4 45
-
7/21/2019 interpolacion matlab
48/72
5.3 Formula de Newton PROYECTO #4
Deteng amonos un momento a examinar el coeciente director de cada polinomio. Elcoeciente en xn de pn y q n y el de xn +1 de pn +1 son respectivamente
f [x0, . . . , x n ], f [x1, . . . , x n ] f [x0, . . . , x n +1 ].
Utilizando ( 5.5) deducimos que
f [x0, x1 . . . , x n +1 ] = f [x0, . . . , x n ]f [x1, . . . , x n +1 ]
x0 xn +1, (5.6)
que permite expresar la diferencia dividida de n + 2 puntos en termino de dos de n + 1puntos. Finalmente, como 4
f [x j ] = f (x j )
obtenemos un algoritmo recursivo que nos permite calcular las diferencias divididas de
cualquier orden. El algoritmo se puede dibujar en forma de arbolOrden 0 Orden 1 Orden 2 Orden 3
x0 f (x0) = f [x0] f [x0, x1] f [x0, x1, x2] f [x0, x1, x2, x2]
x1 f (x1) = f [x1]
f [x1, x2]
f [x1, x2, x3]
x2 f (x2) = f [x2]
f [x2, x3]
x3 f (x3) = f [x3]
dondef [x i , x i+1 , . . . , x i+ j ] =
f [xi , . . . , x i+ j 1]f [x i+1 , . . . , x i+ j ]xi xi+ j
se calcula utilizando ( 5.6). En forma de pseudoc odigo, el algoritmo sera el siguiente.Diferencias divididas
0 0
= ( 0) ( , :) = 0;
( , ) = ( , ) ( + , )
0 ( ) 0( + )
4 Simplemente porque el polinomio de grado 0 que pasa por ( x j , f (x j )) es el polinomio constante f (x j )
#4 46
-
7/21/2019 interpolacion matlab
49/72
PROYECTO #4 Cap tulo 5. Interpolacion polin omica
y
y = ( 0( )) .y + ( , )
Con la notacion anterior
( , ) = f [x j , x j +1 , . . . , x j + i ]
de forma que es el orden de la diferencia y el punto desde donde empieza .
Ejercicio 7 Implementa el calculo del polinomio de interpolacion mediante diferencias divi-
-
7/21/2019 interpolacion matlab
50/72
5.3 Formula de Newton PROYECTO #4
Nuestra intencion es que, si no se especican valores donde evaluar el polinomio,devuelva el polinomio, escrito en forma de Newton utilizando una variable simb olica.
Por otro lado y entrando ya en el tema de su implementaci on, en el algoritmo anteriortodas las entradas se numeran de a . Hay que tener en cuenta, como ya hemos hechorepetidas veces, que la numeraci on en Matlab de vectores y matrices comienza en 1 y portanto los vectores y bucles ir an de 1 a donde es ahora la longitud del vector dedatos y de puntos de interpolaci on.
Dicho esto, una implementaci on, posible como tantas otras, es la siguiente
#4 48
-
7/21/2019 interpolacion matlab
51/72
PROYECTO #4 Cap tulo 5. Interpolacion polin omica
Ejercicio 8 El bucle interno en las lneas se puede vectorizar. Hacedlo.
Ejercicio 9 Un analisis mas detenido muestra que no es necesario denir toda una matrizsino que es posible realizar todo el proceso con un vector. Para ello observa que las diferencias
(i, j ) con > 0 solo se utilizan dos veces, para construir ( , + ) y ( , + ) .Retoca el algoritmo yprograma el metodo resultante.
Ayuda. Basta modicar las lneas del algoritmo como sigue
Modicaci on
= 0
( ) = ( ) ( )
0 ( ) 0( )
#4 49
-
7/21/2019 interpolacion matlab
52/72
5.3 Formula de Newton PROYECTO #4
Notese que las diferencias se sobrescriben en el vector pero de una forma tal que un
valor no es borrado hasta que ha sido utilizado. De ah que el bucle en vaya hacia atr as . Con esta modicaci on
( ) = f [x0, x1, . . . , x j ].
Implementar la evaluaci on del polinomio es ahora inmediato.
Nota
Observa que el metodo funciona a un cuando los puntos x0, . . . , xn no esten ordenados,aunque para una evaluaci on del polinomio mas estable es mejor que as sea. N otese que
la denici on de las diferencias divididas no depende del orden de los puntosf [x0, . . . , x i , . . . , x j , . . . x n ] = f [x0, . . . , x j , . . . , x i , xn ].
Se puede construir el polinomio mediante
f [xn ] + f [xn , xn 1](x xn ) + . . . + f [xn , xn 1, . . . , x 0](x x1)(x x2) (x xn ). (5.7)En este caso se habla de diferencias regresivas , mientras que en el caso anterior, el quehemos tratado, recibe el nombre de diferencias progresivas .
Modicar los algoritmos anteriores para trabajar con las diferencias regresivas es un
trabajo sin demasiada complicaci on.Ejercicio 10 Hacedlo.
Interpolaci on en Matlab
La interpolacion polin omica esta implementada en Matlab mediante dos comandos
La primera calcula el polinomio que se ajusta ( t ) un conjunto de datos. La sintaxis es
donde y son los puntos a interpolar y n el polinomio utilizado. Si se toma igual a( ) , devuelve el polinomio de interpolaci on mientras que para menor calculael polinomio que aproxima a los puntos por mnimos cuadrados.
La orden anterior devuelve un vector ( ) con los coecientes del polinomio. Su evalua-cion se lleva a cabo ahora mediante
donde es un vector de puntos donde se desea evaluar el polinomio.
#4 50
-
7/21/2019 interpolacion matlab
53/72
PROYECTO #4 Cap tulo 5. Interpolacion polin omica
5.4. Analisis del error
El error entre funci on y polinomio de interpolaci on se puede estudiar utilizando algunaspropiedades de las diferencias divididas que detallaremos m as adelante. En cualquiercaso, el resultado relevante es el siguiente: si f es la funcion regular que interpolamosen {x0, x1, . . . , x n } [a, b], entonces el error en cada punto se puede escribir
f (x) pn (x) = 1
(n + 1)!f (n +1) ( ) (x x0)(x x1) (x xn )
n (x)(5.8)
donde [a, b]. Vemos que hay varias contribuciones al error nal:El factor 1 /n ! que tiende rapidamente a 0.
Un factor que depende del crecimiento de la derivada n + 1.Un termino que depende de la colocaci on de los nodos de interpolaci on y que puedeser muy oscilante.
En vista de lo anterior es f acil concluir que hay convergencia del polinomio de interpo-lacion a la funcion si esta es suave. Dicho de otra manera, funci on y polinomio se vuelvenindistinguibles si tomamos un n umero elevado de puntos.
Desafortunadamente 6, la conclusi on anterior es falsa . Uno de los primeros (con-tra)ejemplos lo encontr o Runge a nales del siglo XIX 7. Se trata de interpolar la funci on
f (x) = 1
1 + 25 x2
en el intervalo [ 1, 1] en un conjunto uniforme de puntos. El resultado lo vemos en lagura 5.2.Una forma de reducir el error es controlar la funci on n (x) y hacerlo lo m as peque no
posible. As, el problema se plantea en los siguientes terminos 8
Que elecci on de los nodos {x0, x1, . . . , x n } hace que maxx |n (x)| seamnimo?Este es un problema cl asico, fue resuelto por Chebyshev 9 en termino de las races de
una familia de polinomios conocidos como polinomios de Chebyshev de primer tipo.6 Y contraintuitivamente. C omo entender si no que dos funciones derivables que coincidan en un
numero cada vez mayor de puntos no acaben siendo muy similares?7 Este fue el siglo de la fundamentaci on de las matematicas. Multitud de resultados que se tena como
evidentes se mostraron falsos y fue necesario reconstruir las matem aticas desde su base. Por ejemplo, enel mismo siglo se mostr o la existencia de funciones no continuas en ning un punto, o funciones continuasno derivables en ningun punto o con un numero innito de maximos y mnimos locales, se construyeroncurvas que rellenaban el plano, o curvas cerradas que englobando una area nita tenan una longitudinnita (fractales)... Algunas de estas construcciones, originarias esencialmente en las matem aticas purashan encontrado en el siglo XX aplicaciones a problemas de ndole esencialmente pr actico.
8 Un problema min-max : minimizar un maximo.9 Matem atico ruso del siglo XIX. Se encontr o con este problema cuando estudiaba los primeros mo-
tores de vapor. Concretamente, la transformaci on de un movimiento perpendicular (los pistones) en unmovimiento rotatorio (la rueda).
#4 51
-
7/21/2019 interpolacion matlab
54/72
-
7/21/2019 interpolacion matlab
55/72
PROYECTO #4 Cap tulo 5. Interpolacion polin omica
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1-4
-3
-2
-1
0
1
2
3
4Error
1./(1+25.*x. 2)polinomio de grado 5polinomio de grado 10polinomio de grado 15polinomio de grado 20
polinomio de grado 5polinomio de grado 10polinomio de grado 15polinomio de grado 20
Figura 5.3: Ejemplo de Runge con otros nodos
Ejercicio 12 Se trata de probar una serie de propiedades de las diferencias divididas de las
que nalmente se deduce la estimacion del error del polinomio de interpolacion dada en ( 5.8).(1) Probar que f ( j )(x) p( j )(x) se anula en n + 1 j puntos para j = 0 , . . . , n + 1 .(2) Utilizando (1) , probar que existe tal que
f [x0, . . . , x n ] = f (n )( )
n! .
(3) Fijemos y [a, b]. Entoncesf (y) = pn (y) + f [x0, . . . , x n , y](x x0)(x x1) (x xn ).
Utilizad ahora (2) para probar la estimacion del error en ( 5.8)
Ayuda: El Teorema de Rolle establece que si g es derivable en [a, b] con g(a) = g(b) entoncesexiste c (a, b) tal que g (c) = 0 .Aplicando este resultado, existe j (x j , x j +1 ) ( j = 0 , . . . , n 1) tal que
f ( j ) p ( j ) = 0 .Se puede aplicar el mismo resultado para probar que existe n2 puntos tales que f ( j ) = p ( j )y as sucesivamente.
#4 53
-
7/21/2019 interpolacion matlab
56/72
5.4 Analisis del error PROYECTO #4
#4 54
-
7/21/2019 interpolacion matlab
57/72
Captulo 6
Extensiones adicionales
6.1. Interpolaci on de HermiteLa interpolacion de Hermite toma como datos adicionales valores de la derivadas.
Concretamente
(x0, f (x0)) , . . . , (x0, f (m 0 )(x0))(x1, f (x1)) , . . . , (x1, f (m 1 )(x1)). . . . . . . . . . . . . . . . . . . . . . . . . . . . . .(xn , f (xn )) , . . . , (xn , f (m n )(xn ))
Observemos que no puede haber huecos en los datos. Por ejemplo, si la derivada de orden2 es dato, tambien lo es el valor de la funci on y su primera derivada. El n umero total dedatos es
N := ( m0 + 1) + ( m1 + 1) + + ( mn + 1)por lo que el polinomio debera tener grado N 1.El an alisis de este problema no tiene mayor dicultad que el ya realizado para lainterpolaci on polin omica de Lagrange. La clave est a en la fuerte relaci on entre diferen-cias divididas y derivada, mostrada en el ejercicio 12. As, una derivada se interpretabasicamente como un nodo repetido.
Entrando mas en detalle, la idea es ordenar los nodos tomarlos repetidos seg un elnumero de datos que consideramos en ese punto. As, consideramos
{x0, x0, . . . , x 0
m 0 +1
, x1, x1, . . . , x 1
m 1 +1
, . . . , x n , xn , . . . , x n
m n +1
}y denir las diferencias divididas como sigue:
f [x0, x1, . . . , x m ] :=
f (m )(x0)m!
, si x0 = xm
f [x0, x1, . . . , x m 1]f [x1, x1, . . . , x m ]x0 xm
, en otro caso
El polinomio de interpolaci on se construye ahora como antes:
f [x0] + ( x x0) f [x0, x1] + ( x x1) f [x0, x1, x2] + ( x x2) . . .+( x xn 1)f [x0, x1, . . . , x n ]
#4 55
http://-/?-http://-/?-http://-/?- -
7/21/2019 interpolacion matlab
58/72
6.1 Interpolacion de Hermite PROYECTO #4
Diferencias divididas para la interpolaci on Hermite
0 0 datos= ( 0)
= 0
0 ( ) == 0( )( ) = ( ) /
( ) = ( ) ( )
0 ( ) 0( )
y
y = ( 0( )) .y + ( )
Notese que en el algoritmo anterior la tabla de diferencias divididas se almacena de formacompacta, como se sugiri o en el Ejercicio 9.
Ejercicio 13 Entiende bien el algoritmo anterior. Implementa la interpolacion de Hermitesegun el siguiente prototipo
siguiendo las ideas expuestas en el ejercicio 7.
Observa que, una vez implementada esta funci on,
devuelve de hecho el polinomio de Taylor de orden 5 de f (x) = exp( x) en el cero. Laorden
hace m as evidente esta identidad.
#4 56
-
7/21/2019 interpolacion matlab
59/72
PROYECTO #4 Cap tulo 6. Extensiones adicionales
6.2. Interpolaci on de funciones peri odicas
Si una funcion es 2 -periodica es natural reemplazar en el problema de interpolaci onlos polinomios por funciones peri odicas. Concretamente, podemos utilizar
sin(nx ), cos(nx ), n N {0}o bien,
exp(inx ), n Z .Las combinaciones de las funciones anteriores se denominan polinomios trigonometricos.Ambas son equivalentes, pero la utilizaci on de exponenciales complejas facilita tanto elanalisis como la manipulaci on as como la extensi on de la interpolaci on a funciones com-plejas
Supongamos que tomamos un n umero impar 2 n + 1 de puntos de interpolaci on equi-distantes:
xk = 2k2n + 1, k = 0 , . . . , 2n.
El problema queda as denido: calcular
p2n +1 (x) :=n
j = n
j exp(i nx )
tal que
yk = p2n +1 (xk ) =n
j = n
j exp 2i jk2n + 1
.
De esta forma, el problema se reduce a utilizar la transformada de Fourier Discreta, yparticularmente la FFT.Es interesante senalar que el interpolante converge a la funci on bajo hipotesis mucho
mas debiles. Por ejemplo, basta con que la funci on sea derivable.Ejercicio 14 Comprobar como la interpolacion con exponenciales trigonometricas ycon se-nos ycosenos son equivalentes. Para ello escribir el polinomio trigonometrico en senos ycosenos, en funcion de exponenciales complejas yviceversa.
Ejercicio 15 Comprueba que efectivamente se reduce todo a una transforma de Fourierdiscreta.
Ayuda Observa que
exp 2i jk2n + 1
= exp2i(2n + 1 j )k
2n + 1.
Por tanto el problema es equivalente a encontrar j tales que
yk = p2n +1 (xk ) =n
j =0
j exp 2i jk2n + 1
+2n
j = n +1
2n +1 j exp 2i jk2n + 1
.
Ejercicio 16 Que pasa si se toman un numero par de puntos de interpolacion?
#4 57
-
7/21/2019 interpolacion matlab
60/72
6.3 Interpolacion polinomica a trozos PROYECTO #4
6.3. Interpolaci on polin omica a trozos
Los polinomios tienen un importante inconveniente que desaconseja su utilizaci on pa-
ra un numero elevado de puntos. Observese la gura 6.1, donde el polinomio exhibe uncomportamiento ciertamente ca otico. Ello se debe a que se obliga a que el polinomio seapracticamente constante en dos zonas con un salto en medio. El polinomio es excesiva-mente rgido 1 que en ultima medida provoca que este se rompa .
0 0.2 0.4 0.6 0.8 1-0.5
0
0.5
1
1.5
2
Figura 6.1: Rigidez polin omica
Como forma de solventar estos problemas se opta por utilizar elementos m as compli-cados para interpolar pero que sean m as exibles .
Uno de los elementos m as populares son los splines . Un spline 2 es una funcion po-linomica a trozos que tiene cierta regularidad. Es decir, los diferentes polinomios se unenexigiendo adem as sean continuas y derivables hasta cierto orden. Los representantes m assencillos son las constantes a trozos y las poligonales. En este ultimo caso, se trata senci-
llamente de unir los puntos por segmentos obteniendose una curva poligonal. Sin embargopara las constantes a trozos no podemos exigir continuidad y para las poligonales nopodemos exigir derivabilidad en los puntos de contacto (tiene picos).
Los splines c ubicos son probablemente los m as utilizados. Recurriendo a polinomiosde grados 3 se trata de construir una funci on sn tal que
sn (x)|[x i ,x i +1 ] P 3, i = 0 , . . . , n 11 Es un smil con lo que sucede si se dobla una vara muy rgida. El problema en utilizar polinomios es
que basta modicar un s olo dato para que el polinomio se cambie en todo el dominio, en muchas ocasionessin ningun control. Sin embargo, en un interpolante uno debera esperar que la modicaci on de un punto
afectara solo al entorno de dicho punto.2 aceptaremos el anglicismo a partir de ahora.
#4 58
-
7/21/2019 interpolacion matlab
61/72
PROYECTO #4 Cap tulo 6. Extensiones adicionales
y que tanto la funci on como sus derivadas primera y segunda sean continuas 3
sn (x i ) = yi , lmx x +j
s( j )n ( x) = lmx x
j
s ( j )n ( x), j = 0 , 1, 2.
Es decir, sobre cada intervalo [ x j , x j +1 ] la funci on es un polinomio de grado tres (c ubico).Al tener la primera derivada continua, se preserva la existencia de recta tangente en todopunto y por tanto la velocidad de recorrido de la curva, mientras que con la continuidadde la derivada segunda podemos denir la curvatura de la curva siendo esta continua entodo el dominio de denici on.
Dado que tenemos n intervalos, y cuatro par ametros libres sobre cada intervalo ( snes un polinomio de grado 3 en cada intervalo), disponemos de 4 n par ametros libres. Porcontra, los datos de interpolaci on jan n +1 restricciones y las condiciones de continuidaddel spline y de sus dos primeras derivadas en las interfaces de los subintervalos dan otras
3n condiciones. En total hacen
n + 1 + 3( n 1) = 4 n 2por lo que el problema precisa jar dos condiciones adicionales para poder hablar, siquieraplantear, la unicidad del spline.
Estas son algunas de las elecciones posibles
sn (x0) = sn (xn ) = 0, spline natural .
Datos adicionales sn(x0) = y 1, s
n(xn ) = yn +1 spline grapado .
Condiciones de periodicidad: si los datos son peri odicos se puede imponer sn (x0) =sn (xn ), sn (x0) = sn (xn ) spline peri odico .
No nos detendremos a detallar como se prueba la existencia y unicidad de tales splines,ni la forma de calcularlos. Baste decir que se recurre a tecnicas m as ecientes, y por tantocomplejas, que la forma directa que se deduce de su denici on.
Entre las buenas propiedades de los splines destacamos que convergen a la funci on siesta es continua. A un es m as, si la funcion f que se interpola es regular (de hecho bastacon que su derivada cuarta sea continua)
maxx |sn (x) f (x)| C m ax j (x j +1 x j )4
con C una constante dependiente de f pero independiente de los puntos.
Nota: splines en MatlabMatlab dispone de dos comandos encargados de esta tarea:
3 Si forzaramos la continuidad de la tercera derivada tendramos globalmente un polinomio de grado 3
#4 59
-
7/21/2019 interpolacion matlab
62/72
6.3 Interpolacion polinomica a trozos PROYECTO #4
0 0.2 0.4 0.6 0.8 1-0.2
0
0.2
0.4
0.6
0.8
1
1.2
Figura 6.2: Interpolaci on con splines cubicos naturales
El primero ( piecewise polynomial value ) eval ua una funcion polin omica a trozos. Uno desus argumentos es la propia estructura de la funci on segun una sintaxis propia de Matlab.La segunda instrucci on devuelve una estructura de este tipo que contiene el spline queinterpola a datos.
A modo de ejemplo, he aqu el spline natural que interpola a los datos desplegados enla gura 6.14
-
7/21/2019 interpolacion matlab
63/72
PROYECTO #4 Cap tulo 6. Extensiones adicionales
Se pueden denir splines de mayor grado, siguiendo exactamente la idea anterior, estoes, pegando polinomios a trozos y dando la mayor regularidad posible.
Ejercicio 17 Se plantea el siguiente problema: dada una serie de puntos en el plano(x0, y0), (x1, y1), . . . , (xn , yn )
construir una curva en parametricas
x (t) := ( x(t), y(t)) , t [0, T ] (6.1)tal que
x (t j ) = ( x j , y j ). (6.2)
Una buena eleccion es utilizar splines. Para ello se trata de calcular dos splines cx ( t) ycy n (t)que satisfagan, obviamente,
cxn (t j ) = x j , cy(t j ) = y j .
Tenemos as dos problemas de interpolacion desacoplados, esto es, cada uno se resuelve inde-pendiente del otro. Queda como cuestion pendiente la eleccion de T en (6.1) yde los puntost j en (6.2). Una buena eleccion es tomar
h j := (x j +1 x j )2 + ( y j +1 y j )2,que coincide con la longitud del segmento que une ( x j , y j ) y (x j +1 , y j +1 ), yhacer luego
t0 = 0 , tk := h0 + h1 + . . . + hk 1, T = tn .
Una vezya calculados, la curva se dibuja evaluando
x (t) := (cx( t), cy(t)) , t [0, T ].Implementa un programa que siga este prototipo
Ejercicio 18 El comando permite leer puntos a traves del raton. Lee bien la ayudaymodica el programa anterior para que permita introducir los datos con el raton en caso deque se llame a la funcion sin argumentos.
Entre las posibilidades que ofrece esta la de controlar que tecla del teclado o boton delrat on se ha utilizado.
#4 61
-
7/21/2019 interpolacion matlab
64/72
6.4 Curvas Bezier PROYECTO #4
Ayuda. Deduce que realiza el siguiente c odigo...
6.4. Curvas Bezier
Las curvas Bezier son curvas en el plano o espacio que quedan determinadas por unconjunto de puntos. La curva en cuesti on s olo pasa por el punto inicial y nal, pero no porel resto de puntos. Sin embargo estos puntos forman un polgono de control en el siguiente
sentido: la curva est a contenida en el polgono formado por esos puntos e imita la formade dicho polgono.Para construir la curva consideramos los polinomios de Bernstein de orden n:
B n j ( t) =n j
t j (1 t)n j , j = 0 , 1, . . . , nEs f acil comprobar que los polinomios verican las siguientes propiedades:
{B n j }n j =0 son una base de P n . Dicho de otra forma, cualquier polinomio se puedeescribir como una combinaci on de estos polinomiosn
j =0B n j ( t) = 1.
#4 62
-
7/21/2019 interpolacion matlab
65/72
PROYECTO #4 Cap tulo 6. Extensiones adicionales
Las curvas Bezier se denen ahora como sigue: para los puntos
x i = ( xi , yi ), con i = 0 , . . . , n .
y construimos la curva
S (t) :=n
j =0
B n j ( t)x j = n
j =0
B n j ( t)x j ,n
j =0
B n j ( t)y j , t [0, 1].
El par ametro t se mueve de forma que para t = 0 estamos en el punto inicial y para t = 1,en el nal. Notese que los puntos utilizados para dibujar la curva estan ordenados : hayun punto inicial x0, uno nal x n y a x j le sigue x j +1 ...
Es f acil ver que S (0) = x 0 y S (1) = x n . Podemos comprobar, gura 6.3, que la curva
se adapta a la forma que marcan los puntos.
0 0.2 0.4 0.6 0.8 10
0.2
0.4
0.6
0.8
1
0 0.2 0.4 0.6 0.8 10
0.2
0.4
0.6
0.8
1
0 0.2 0.4 0.6 0.8 10
0.2
0.4
0.6
0.8
1
0 0.2 0.4 0.6 0.8 10
0.2
0.4
0.6
0.8
1
Figura 6.3: Curvas Bezier para algunas conguraciones de puntos
Ejercicio 19 Utilizando el codigo mostrado en el Ejercicio 18, programar las curvas Bezier.Comparar con las curvas que dene la interpolacion por splines yla polinomica.
#4 63
-
7/21/2019 interpolacion matlab
66/72
6.4 Curvas Bezier PROYECTO #4
Ejercicio 20 Implementar la siguiente extension del programa anterior: permitir que el usua-rio seleccione puntos ypueda moverlos o borrarlos (por ejemplo, con el boton derecho delrat on) yas comprobar la sensibilidad de la curva al polgono de control.
Una sugerencia sera la seguiente: una vezledos los puntos, ydibujada la correspondientecurva nos situamos de nuevo en la ventana graca con yleemos la seleccion hechapor el raton. Ahora haytres opciones
Si pulsamos cerca de un punto, entendemos que hemos seleccionado dicho punto.
Si se ha pulsado con el boton derecha lo eliminamos del dibujo, redibujamos lacurva yesperamos de nuevo. Si pulsamos cerca de un punto con el boton izquierdo entendemos que ese punto lovamos a mover. Esperamos otra seleccion del raton (otro ), reemplazamos
el punto seleccionado por el nuevo yredibujamos
Si pulsamos lejos de todos los puntos, entendemos que anadimos un nuevo punto.Llamemoslo y . En este punto hayun tema no trivial: como ordenamos el punto yrespecto a los puntes anteriores {x j }.
y
xx
j+ 1 j
x j+ 2
j
Figura 6.4: Ordenaci on de nodos para la curva Bezier
Una forma de determinar5 este orden es medir el angulo entre los vectores
u = x j y , v = x j +1 yyquedarse con aquel para el que angulo j sea mayor (vease la gura 6.4). Para ello,basta utilizar que
|cos( j )| =u vu v
.
tomar j para el que |cos( j )| es maximo, yconstruir la curva Bezier con puntos{x 1, . . . , x j , y , x j +1 , . . . , x n }
{x j , x j +1 }5 Gracias a Jon Garca por sugerirnos esta soluci on.
#4 64
-
7/21/2019 interpolacion matlab
67/72
PROYECTO #4 Cap tulo 6. Extensiones adicionales
Nota
Las curvas Bezier fueron introducidas por los ingenieros Bezier y Casteljou, que tra-bajaban entonces en Renault y Citr oen. Concretamente, buscaban herramientas para eldiseno de parachoques de forma que la curva que diera su forma fuera controlada por unaserie de puntos y que tuviera buenas propiedades geometricas. Los algoritmos inicialesseguan ideas muy geometricas, que todava se utilizan en la pr actica, y se tard o alguntiempo en darle la forma que hemos mostrado, m as matematica. Resultado de este es-tudio surgieron las curvas B-splines, que reemplazaban los polinomios de Bernstein porpolinomios de grados adecuados. Las curvas B-splines son m as exibles que las curvasBezier y en su caso extremos incluyen a estas.
Por otro lado existen formas mucho m as ecientes de evaluar y calcular dichas curvasque permiten en ultima media su implementaci on en una forma m as interactiva, de formaque el usuario mueva los puntos (cambie el polgono de control ) y que la curva se redibuje
entonces.
#4 65
-
7/21/2019 interpolacion matlab
68/72
6.4 Curvas Bezier PROYECTO #4
#4 66
-
7/21/2019 interpolacion matlab
69/72
Indice de guras
2.1. Ventana graca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.2. Ventana graca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.3. Edici on de un dibujo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.4. Un ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.5. Salida correspondientes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.6. Numeraci on con . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.7. Disposici on simult anea de gracas con . . . . . . . . . . . . . . . 19
3.1. Un dibujo en 3D con . . . . . . . . . . . . . . . . . . . . . . . . . . 223.2. Bot on para rotar los dibujos . . . . . . . . . . . . . . . . . . . . . . . . . . 223.3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233.4. Supercie creada con . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.5. Algunas opciones con . . . . . . . . . . . . . . . . . . . . . . . . . . . 273.6. Esferas en 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.7. Lneas de nivel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303.8. Triangulacion no conforme . . . . . . . . . . . . . . . . . . . . . . . . . . 323.9. Numeraci on de triangulos . . . . . . . . . . . . . . . . . . . . . . . . . . . 333.10. Gr aca sobre un dominio triangulado . . . . . . . . . . . . . . . . . . . . . 343.11. Utilizaci on de en un dibujo . . . . . . . . . . . . . . . . . . . . . . . . 36
5.1. Polinomios de interpolaci on con diferentes grados . . . . . . . . . . . . . . 445.2. Ejemplo de Runge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525.3. Ejemplo de Runge con otros nodos . . . . . . . . . . . . . . . . . . . . . . 53
6.1. Rigidez polin omica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
6.2. Interpolacion con splines cubicos naturales . . . . . . . . . . . . . . . . . . 606.3. Curvas Bezier para algunas conguraciones de puntos . . . . . . . . . . . . 636.4. Ordenaci on de nodos para la curva Bezier . . . . . . . . . . . . . . . . . . 64
#4 67
-
7/21/2019 interpolacion matlab
70/72
-
7/21/2019 interpolacion matlab
71/72
Indice general
1. Introducci on 1
I Matlab: Salidas gracas en Matlab 3
2. Dibujos bidimensionales 52.1. El comando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.1. Primer nivel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.1.2. Segundo nivel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.1.3. Tercer nivel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.1.4. Comandos asociados . . . . . . . . . . . . . . . . . . . . . . . . . . 102.1.5. Cuarto nivel: y . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2. Otras salidas gr acas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.3. El comando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.4. Comandos f aciles de usar . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3. Gracas en 3D 213.1. El comando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213.2. El comando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2.1. Primer nivel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223.2.2. El comando : segundo y tercer nivel . . . . . . . . . . . . . . . 25
3.3. Otros comandos relacionados . . . . . . . . . . . . . . . . . . . . . . . . . . 303.3.1. y . . . . . . . . . . . . . . . . . . . . . . . . . . 303.3.2. y . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.3.3. . . . . . . . . . . . . . . . . . . . . . . . . . . 313.4. Comandos f aciles de usar . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313.5. Dibujos sobre dominios mallados en tri angulos . . . . . . . . . . . . . . . . 31
II Interpolaci on 37
4. Interpolaci on polin omica de Lagrange 39
5. Interpolaci on polin omica 415.1. El problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5.2. Existencia del polinomio de interpolaci on . . . . . . . . . . . . . . . . . . . 415.3. F ormula de Newton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
#4 69
-
7/21/2019 interpolacion matlab
72/72
INDICE GENERAL PROYECTO #4
5.3.1. Diferencias divididas . . . . . . . . . . . . . . . . . . . . . . . . . . 455.4. An alisis del error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
6. Extensiones adicionales 556.1. Interpolacion de Hermite . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556.2. Interpolacion de funciones periodicas . . . . . . . . . . . . . . . . . . . . . 576.3. Interpolacion polin omica a trozos . . . . . . . . . . . . . . . . . . . . . . . 586.4. Curvas Bezier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62