Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Apuntes de Cálculo Numérico PDF
Apuntes de Cálculo Numérico PDF
Contenido:
1. Conceptos Bsicos
2. Representacin de Nmeros en la Computadora
3. Sistemas Lineales
1. Eliminacion Gaussiana y sus Variantes
2. Estabilidad de Sistemas Lineales
4. Ecuaciones Nolineales
5. Interpolacion y Aproximacion de Funciones:
1. El Problema de Interpolacin y la Representacin de Newton
2. Funciones Polinomiales por Pedazos - Splines
3. Interpolacion de Cuadrados Minimos
6. Diferenciacin e Integracin Numrica
1. Diferenciacin Numrica - Mtodos de Series de Taylor
2. Reglas del Trapezoide y Simpson
3. Anlisis de Errores y Frmulas Corregidas
4. Extrapolacin de Richardson y Reglas de Cuadratura Gaussiana
7. Ecuaciones Diferenciales Numricas - Problema de Valor Inicial
1. Mtodo de Euler - Sistemas de Ecuaciones y Ecuaciones de Orden Mayor de Uno
2. Mtodos Runge-Kutta
8. Apendices
1. Un Vistaso a Matlab
2. Reglas para la entrega de proyectos
Referencias:
1. Atkinson, K., Elementary Numerical Analysis, 2nd ed., John Wiley & Sons, Inc., New York,
1993.
2. Lindfield, G. and Penny, J., Numerical Methods using MATLAB, Prentice-Hall, New York,
1995.
3. Part-Enander, E., Sjoberg, A., Melin, B., and Isaksson, P., The MATLAB Handbook, AddisonWesley, New York, 1996.
4. Van Loan, C., Introduction to Scientific Computing: A Matrix-Vector Approach Using
MATLAB, Prentice-Hall, New York, 1997.
http://uprhmate01.upr.clu.edu/~pnm/notas4061/ (1 de 2) [04/08/2002 0:27:22]
Este documento puede ser copiado y distribuido a gusto sujeto a las siguientes restricciones:
1. El documento no puede ser alterado en ninguna manera.
2. Ninguna parte del manuscrito o su totalidad puede ser distribuido comercialmente como parte
de otro documento.
Capitulo 1
Capitulo 1
Conceptos Bsicos de Anlisis Matemtico
En este capitulo repasaremos algunos de los conceptos ms importantes del clculo que son esenciales
en el estudio de mtodos numricos. Adems discutiremos el resultado ms fundamental para
aproximar funciones para hacer estimados de errores: el Teorema de Taylor. Veremos tambin otros
resultados importantes como los Teoremas del Valor Medio para funciones e integrales, el Teorema
del valor intermedio, y el Teorema de la funcion implicita.
Resultados Bsicos
El primer resultado bsico es el Teorema del Valor Medio para funciones. En palabras y en el
contexto fsico del movimiento de una particula, este teorema dice que en cualquier intervalo finito de
tiempo, la velocidad promedio de la particula en el intervalo es igual a la velocidad instatanea en
algn instante de tiempo. Tenemos pues:
continua y
Teorema (1.1): (Teorema del Valor Medio para funciones) Sea
diferenciable en (a,b) donde a,b son finitos. Entonces existe un nmero c en (a,b) tal que
(1.1)
Para intergrales tenemos tambin un resultado parecido.
Teorema (1.2): (Teorema del Valor Medio para Integrales) Suponga que f y g son funciones
continuas en el intervalo acotado [a,b] y que g(x) 0 para toda x en [a,b]. Entonces existe un punto c
en [a,b] tal que
(1.2)
En el caso de que g=1, el resultado se puede interpretar como que el area bajo la curva f(x) en el
intervalo [a,b] es igual al area del rectangulo con base [a,b] y altura f(c).
El proximo teorema establece la idea intuitiva de que si una funcin continua cambia de signo en un
intervalo [a,b] entonces en algn punto del intervalo cruz el eje de x. Veamos:
Teorema (1.3): (Teorema del Valor Intermedio) Suponga que
es continua y que C es
un nmero estrictamente entre f(a) y f(b). Entonces existe un nmero c en (a,b) tal que f(c)=C. En
particular si f(a)f(b) < 0, entonces existe un c en (a,b) tal que f(c)=0.
Capitulo 1
El siguiente resultado nos provee de condiciones suficientes que garantizan que una ecuacin nolineal
como f(x,y)=0 se pueda resolver digamos para "x" en terminos de "y".
Teorema (1.4): (Teorema de la Funcin Implicita): Sea
un conjunto abierto,
y una funcin
(1.4)
El teorema dice que dadas las condiciones (1.3) podemos resolver la ecuacin f(x,y)=0 para "x" en
, en un intervalo alrededor de y0. Si en (1.3) cambiamos a
terminos de "y", i.e,
, entonces podemos resolver para "y" en terminos de "x". En el caso lineal
f(x,y)=ax+by+c, el teorema lo que dice es que si a 0, entonces en f(x,y)=0 podemos despejar para
"x" en terminos de "y" lo cal en este caso es obvio.
Teorema de Taylor
Un problema comn es el de evaluar una funcin f(x) en un argumento x=a dado. Aunque esto parece
un problema sencillo, la funcin f podria ser desconocida complicada para evaluar. Lo que
buscamos pues es aproximar a f con una funcin g que sea ms "fcil" de evaluar que f. Los
polinomios de Taylor son una forma de hacer esto aunque veremos otras alternativas ms adelante.
Polinomio de Taylor de grado uno: Suponga que conocemos f(a) y f '(a). Queremos hallar un
polinomio p1(x) tal que p1(a)=f(a), p'1(a)=f '(a). Sabemos que p1(x)=a1+a2x (por qu?) de modo que:
de donde obtenemos que p1(x)=f(a)+f '(a)(x-a) lo que se conoce como el polinomio de Taylor de
grado uno para f en x=a.
Polinomio de Taylor de grado dos: De igual forma, si conocemos f(a), f '(a), f "(a) podemos construir
http://uprhmate01.upr.clu.edu/~pnm/notas4061/basicos/basicos.html (2 de 11) [04/08/2002 0:28:11]
Capitulo 1
un polinomio de grado dos p2(x) tal que p2(a)=f(a), p'2(a)=f '(a), p"2(a)=f "(a). Trabajando como arriba
obtenemos que
p2(x)=f(a)+f '(a)(x-a)+(1/2)(x-a)2f "(a)
lo que se conoce como el polinomio de Taylor de grado dos para f en x=a.
En general si f(a), f '(a),,f (n)(a) son conocidas, se puede demostrar que el polinomio de grado a lo
esta dado por
ms n que cumple con las condiciones
lo que se conoce como el polinomio de Taylor de grado a lo ms n para f en x=a. Recuerde aqui que
j! denota el factorial de j y se define en forma recursiva por:
Ejemplo 1: Considere la funcin f(x)=1/(1+x) y tomemos a=0. Entonces f '(x)=-(1+x)-2, f "(x)=2(1+x)3, f(3)(x)=-(2)(3)(1+x)-4, de donde podemos concluir en forma inductiva que
En particular
Podemos ahora graficar p1, p2, y f en el mismos sistema de coordenadas con las siguientes
instrucciones en MATLAB:
x=linspace(-0.5,0.5,100);
http://uprhmate01.upr.clu.edu/~pnm/notas4061/basicos/basicos.html (3 de 11) [04/08/2002 0:28:11]
Capitulo 1
p1=1-x;
p2=p1+x.^2;
f=1./(1+x);
plot(x,p1,x,p2,x,f)
xlabel('X');ylabel('Y');
title('Funcion f(x)=1/(1+x) con sus polinomios de Taylor de grados uno y dos')
text(-0.4,1.8,'f');
text(-0.45,1.4,'p1');
text(-0.45,1.7,'p2');
Esto produce la grfica que se muestra a continuacin:
Note que el polinomio de grado dos aproxima mejor a f en el intervalo en cuestin pero la diferencia
entre los polinomios y la funcin f (el error) aumenta segn nos alejamos del centro a=0.
Queremos ahora de alguna forma cuantificar las observaciones del ejemplo anterior en cuanto al error
de aproximacin de los polinomios de Taylor. Tenemos pues:
Teorema (1.5) (de Taylor): Suponga que
y sea
. Sea Rn(x)=f(x)-pn(x) el
Capitulo 1
donde cx esta entre cero y x. El caso especial x = nos provee de una frmula para aproximar el
nmero "e":
Note que
donde usamos que como c esta entre cero y , entonces ec < e < 3. Si queremos aproximar "e" con la
frmula de arriba con un error (absoluto) de 10-t entonces podemos estimar "n" mediante el siguiente
programa en MATLAB:
t=6;
n=0;
R=3;
tol=10^(-t);
while R>tol
n=n+1;
R=3/gamma(n+1);
http://uprhmate01.upr.clu.edu/~pnm/notas4061/basicos/basicos.html (5 de 11) [04/08/2002 0:28:11]
Capitulo 1
end
n
lo cual produce el siguiente resultado para t=6 de n = 10.
Ejemplo 3: Vamos a aproximar la funcin sen(x) en el intervalo
con un error de 10-4.
Sabemos que f'(x)=cos(x), f ''(x)=-sen(x), f '''(x)=-cos(x), etc. Tomando a=0 obtenemos pues que f
'(0)=1, f ''(0)=0, f '''(0)=-1, etc., de donde podemos concluir que
Ahora
donde cx esta en
Podemos calcular la "n" que hace el error menor de 10-4 mediante el siguiente programa en
MATLAB:
t=4;
n=0;
R=pi/2;
tol=10^(-t);
while R>tol
n=n+1;
R=(pi/2)^n/gamma(n+1);
end
n
http://uprhmate01.upr.clu.edu/~pnm/notas4061/basicos/basicos.html (6 de 11) [04/08/2002 0:28:11]
Capitulo 1
tenemos que
Ejemplo 4: Vamos a calcular un polinomio de Taylor con su residuo para la funcin log(1+x2).
Primero observamos que para t > -1
De modo que
Capitulo 1
donde usamos el Teorema del Valor Medio para integrales y cx es un nmero entre cero y x2. Esta
frmula nos da un polinomio para aproximar log(1+x2) con la correspondiente frmula del error.
Evaluacin de Polinomios
Considere el polinomio
p(x)=2 - 3x + 4x2 - 5x3 + 7x4 + 2x5
Podemos evaluar este polinomio de tres maneras:
1. Calculamos 2x5, 7x4, -5x3, 4x2, 3x y luego sumamos los resultados. Esto requiere de
5+4+3+2+1=15 multiplicaciones.
2. Calculamos x2, x(x2)=x3, x(x3), etc. Luego multiplicamos por los coeficientes y sumamos.
Esto requiere 4+5=9 multiplicaciones.
3. Escribimos p(x)=2+x(-3+x(4+x(-5+x(7+2x)))) lo cal requiere de 5 multiplicaciones.
La tercera forma de evaluar el polinomio es lo que se conoce como el Mtodo de Horner y
corresponde exactamente al proceso de evaluacin sinttica que aprendimos en preclculo. En general
para evaluar el polinomio p(x)=a0 + a1x + a2x2 + + anxn tenemos
Mtodo
Nmero de Multiplicaciones
n(n+1)/2
2n-1
Horner
Examinamos ahora en ms detalles el mtodo de Horner. Este se mtodo se puede describir por las
siguientes iteraciones: dado un nmero z
1.
2.
3.
bn = an
Para i=n-1,,0
bi=ai + z bi+1
Capitulo 1
bk+1 = ak+1
Para i=k,,0
bi=ai + z bi+1
Defina el polinomio q(x) de grado k por: q(x)=a0 + a1x + a2x2 + + (ak + ak+1z)xk y los
correspondientes b's por:
1.
2. Para i=k-1,,0
3.
Observe que p(z)=q(z) y que
. Pero
Capitulo 1
a=[2 -3 4 -5 7 2];
z=linspace(-1,1,100)';
y=hornerV(a,z);
plot(z,y)
xlabel('x');ylabel('y');
title('p(x)=2-3*x+4*x^2-5*x^3+7*x^4+2*x^5')
lo cual produce la grfica:
Ejercicios
1. Considere la funcin
en el intervalo [-1,1].
para
Capitulo 1
d. Compare los resultados de la parte (c) con los predichos por la cota del Teorema de
Taylor.
Captulo 2
Captulo 2
Representacin de Nmeros en la Computadora
En este captulo estudiaremos como se representan los nmeros en la computadora. Por limitaciones
fisicas, los nmeros solo se pueden representar con un nmero finito de cifras en la computadora. Al
igual las operaciones aritmticas que se efectuan en la computadora no corresponden a las operaciones
matemticas exactas. Veremos pues como estas limitaciones en la representacin de los nmeros y las
operaciones arimticas afectan los computos y la propagacin de errores.
Hemos visto aqui como convertir un nmero binario a su decimal correspondiente. Veamos ahora como
convertimos de decimal a binario. Mostramos aqui el procedimiento convirtiendo (217.732)10 a binario.
Trabajamos primero con la parte entera del nmero. Dividimos esta sucesivamente por dos y llevamos
registro de los residuos sucesivos hasta que el cociente sea cero. Estos reciduos desde el ltimo hasta el
primero, forman la representacin binaria de la parte entera. Veamos
divisor
dividendo
cociente
residuo
217
108
Captulo 2
108
54
54
27
27
13
13
Asi que (217)10=(11011001)2. Para la parte fraccional, multiplicamos sucesivamente por dos y llevamos
cuenta cada ves que el resultado sea mayor de uno no. Veamos
2(0.732)=1.464
0.464
2(0.464)=0.928
0.928
2(0.928)=1.856
0.856
2(0.856)=1.712
0.712
2(0.712)=1.424
0.424
Captulo 2
nmeros en la computadora. Esto es bsicamente por que el circuito electrico ms bsico se puede
representar por uno si hay corriente cero si no hay corriente. Lo que lleva naturalmente al sistema
binario como forma de representar el estado del circuito. Esto con lo relativamente fcil de pasar de una
base a otra hace que las bases binaria, hexadecimal, y octal sean utilizadas eficientemente para disear
computadoras.
,y
. El nmero
largo de mantisa. Si alguna operacin aritmtica produce un resultado con e > M decimos que hubo un
overflow. Por el contrario si en el resultado, e < -N decimos que hubo un underflow.
Se puede verificar que "t" cifras en la mantisa equivalen aproximadamente a "t" cifras significativas en la
misma base. Ademas "t" digitos binarios equivalen a "t log102" digitos base dies.
Veamos ahora varias cantidades importantes del sistema (2.2):
(por qu?)
La dos formas ms comunes de calcular la mantisa son:
http://uprhmate01.upr.clu.edu/~pnm/notas4061/cap2/repre.html (3 de 18) [04/08/2002 0:30:47]
Captulo 2
Truncacin: si
digitos
Redondeo: en el caso
entonces
. Esto es truncamos
a "t"
, tenemos
donde
Note que el error en redondeo es en general la mitad del error en truncacin. Tambin se puede verificar
que como los errores en redondeo varian en signo, estadisticamente "en promedio" tienden a cancelarce.
Esta cancelacin no es tan probable con truncacin. A pesar de estas ventajas la truncacin es usada
comunmente en el diseo de computadoras por lo fcil de su implementacion a nivel de "hardware".
en presicin sencilla, fl(x) se almacena en una palabra de 32 bits con un bit para , ocho para
"e", t = 24, y N = 126, M = 127.
en presicin doble, fl(x) se almacena en una palabra de 64 bits con un bit para , once para "e", t
= 52, y N = 1022, M = 1023.
Captulo 2
La presicin sencilla economiza memoria pero no es mucho ms rapida que la presicin doble en las
computadoras modernas. La distribucin de los nmeros de punto flotante en la recta numrica es una
nouniforme. De hecho para un exponente "e" dado, los nmeros de punto flotante entre 2e y 2e+1 estan
uniformemente distribuidos con incremento 2e-t. Ilustramos esto aqui para el estandar de la IEEE con un
sistema trivial donde f y e tienen dos y tres digitos binarios respectivamente. Los nmeros de punto
flotante de este sistema los podemos enumerar en la siguiente tabla:
1+f \ e
-2
-1
1.00
(1.01)2=1.25
5/16
5/8
5/4
5/2
10
(1.10)2=1.50
3/8
3/2
12
(1.11)2=1.75
7/16
7/8
7/4
7/2
14
Podemos observar aqui que la densidad de los nmeros de punto flotante disminuye con su tamao.
Podemos tambin observar esto grficamente en la siguiente figura:
Captulo 2
Este nmero se denota en MATLAB por realmax. Cualquier resultado numrico que produsca un
nmero mayor que realmax se conoce como un overflow y se denota por Inf (infinito) y se representa en
(2.3) tomando f=0 y e=1024 en presicin doble. El nmero Inf satisface las relaciones 1/Inf=0 y
Inf+Inf=Inf.
El correspondiente nmero positivo ms pequeo es:
y se denota en MATLAB por realmin. Cualquier resultado numrico que produsca un nmero menor
que realmin se conoce como un underflow y en muchas computadoras el resultado se iguala a cero pero
esto no es estandar. Calculos como 0/0, Inf-Inf que pueden conllevar a resultados indefinidos se denotan
por NaN (not a number).
http://uprhmate01.upr.clu.edu/~pnm/notas4061/cap2/repre.html (6 de 18) [04/08/2002 0:30:47]
Captulo 2
El epsilon de la mquina esta dado en este sistema por 2-t y se denota en MATLAB por eps. Este
nmero corresponde al incremente de los nmeros entre 1 y 2 en el sistema de punto flotante. eps
corresponde al error relativo (ver definicin ms adelante) minimo posible en cualquier computo
numrico en el sistema de punto flotante. Toda operacin aritmtica en la computadora o la
representacin de punto flotante de un nmero, induce un error relativo no mayor de eps.
En la siguiente tabla ilustramos estas cantidades especiales con sus respectivas representaciones binarias
en la computadora en presicin doble:
Nmero
Signo
Exponente
Mantisa
realmax
realmin
-realmin
eps
realmin/2
Captulo 2
Como vimos antes, el uso de un nmero finito de cifras en la representacin de punto flotante introduce
errores de representacin. An cuando los nmeros en cuestin se puedan representar en forma exacta en
la computadora, estos podrin contener error, por ejemplo si son datos experimentales. Queremos ver
como estos errores en los datos se propagan al usar las operaciones aritmticas usuales o ms general al
evaluar funciones.
Denotamos por xt el valor real o exacto de una cierta cantidad y xa una aproximacin de xt obtenida
experimentalmente al truncar xt para representarlo en la computadora. Definimos los errores absolutos
y relativos respectivamente en xa como aproximacin de xt por:
Error(xa) = xt - xa , Rel(xa) = Error(xa)/xt
Se puede demostrar que si
trabajamos con seis cifras significativas. Veamos el caso de calcular f(100). Note que
correctos a seis cifras. Ahora calculamos
. El valor exacto a seis cifras de f(100) es
de modo que perdimos tres cifras en el computo. Cal fu el problema? Restamos
cantidades similares! En este caso podemos evitar restar cantidades similares si rescribimos f (x)
(racionalizando) como:
que es correcto a seis cifras. Una situacin similar ocurre al usar la frmula cuadrtica. En particular
http://uprhmate01.upr.clu.edu/~pnm/notas4061/cap2/repre.html (8 de 18) [04/08/2002 0:30:47]
Captulo 2
considere la ecuacin x2+bx+c/4=0 donde b>0 y c es mucho ms pequeo que b. Entonces como el
, vamos a tener cancelacin de cifras al calcular la raiz con el "+" en la
discriminante
frmula cuadrtica. Aqui nuevamente una racionalizacin de la frmula problemtica resuelve el asunto.
Si b<0, la raiz problemtica es la del "-".
Ejemplo 3: Considere el problema de evaluar
donde
Note que si
, entonces
con un error absoluto del orden de 10-11 y no hay perdida de cifras significativas al calcular con la
frmula aproximada.
Ejemplo 4: Otro caso comn de cancelacin de cifras significativas ocurre en el clculo de un nmero
mediante una sumatoria donde los terminos de la sumatoria son mucho mayores que el resultado y
alternan en signo. Considere el problema de evaluar el polinomio f(x) = x7-7x6+21x5-35x4+35x321x2+7x-1. El siguiente cdigo en MATLAB evalua el polinomio en el intervalo [0.988,1.012] y lo
http://uprhmate01.upr.clu.edu/~pnm/notas4061/cap2/repre.html (9 de 18) [04/08/2002 0:30:47]
Captulo 2
grafica:
x=linspace(0.988,1.012,100);
y=x.^7-7*x.^6+21*x.^5-35*x.^4+35*x.^3-21*x.^2+7*x-1;
plot(x,y)
Lo que deberia ser una grfica suave de un polinomio aparece altamente oscilatoria y de caracter
aparentemente aleatorio. Esto se debe a la cancelacin severa de cifras significativas en el clculo donde
el resultado final es aproximadamente cero y se toman sumas y diferencias de nmeros del tamao de
. El polinomio de este ejemplo corresponde a la forma expandida de (x-1)7 donde
graficamos cerca de x=1. Si clculamos con la frmula sin expandir no ocurre el problema de
cancelacin de cifras pero claro lo importante aqui es ilustrar el fenmeno.
Captulo 2
Suponga que queremos evaluar una cierta funcin f (x) en un argumento cuyo valor exacto es xt.
Suponga que xa es una aproximacin de xt. Cmo comparan f(xt) y f(xa)? Note que implicitamente
asumimos que f se puede calcular exactamente dado un argumento y lo que nos interesa es determinar
como f propaga el error en xa como aproximacin de xt. Usando el Teorema del Valor Medio (cf. Xxx)
podemos escribir
para algn c entre xa y xt. Dividiendo por f(xt) en ambos lados podemos obtener la siguiente frmula
para los errores relatvos:
actua como un factor de magnificacin para el error relativo en xa. K se denomina como el nmero de
condicin. Si suponemos que el error absoluto en xa como aproximacin de xt es pequeo, podemos
aproximar c y xt por xa y tenemos que
(2.4)
En este ejemplo hay que tener cuidado porque la aproximacin (2.4) del factor de magnificacin K,
deteriora segn nos acercamos a cero.
Si f es una funcin de dos variables (x,y), entonces el Teorema del Valor Medio nos dice que si f tiene
derivadas parciales continuas, existen c y d tal que
Captulo 2
donde
pues que
Captulo 2
(2.5)
Queremos estimar el error
donde
De aqui que
aproximada de la computadora es del orden del epsilon de la mquina. El termino del error propagado en
(2.6) es pues el ms significativo y su comportamiento depende de la operacin aritmtica en cuestin.
Veamos el caso en que
. Escribimos
en lugar de
. Escribimos
Captulo 2
de donde tenemos que si Rel(xa) y Rel(ya) son pequeos, entonces Rel(xaya) ser pequeo y se puede
aproximar por
Decimos pues que la multiplicacin es una operacin estable. En forma similar se demuestra que
obteniendo asi que la divisin es tambin una operacin estable. Para la suma y la resta la situacin es
distinta. Es fcil ver que
Sumatorias
En esta seccin estudiamos el problema de sumar muchos nmeros en la computadora. Como cada suma
introduce un error, proporcional al epsilon de la mquina, queremos ver como estos errores se acumulan
durante el proceso. El anlisis que presentamos generaliza al problema del clculo de productos
interiores.
El problema es pues clcular la sumatoria
Captulo 2
por
Teorema (2.2):
lo cal
Captulo 2
De aqui que
Asi que si queremos minimizar el error en la sumatoria calculada, debemos ordenar los ai's de modo que
i.e., debemos sumar los neros ms pequeos primero y luego los grandes. Note pues que la suma no es
una operacin conmutativa en la computadora.
Un anlisis similar pero ms complicado matemticamente se puede hacer para el producto interior
Note que en el anlisis de arriba no se tomaron en consideracin posibles errores en los datos ai's. Estos
efectos se pueden incluir tambin en el anlisis. (Ver ejercicio (7)).
Ejercicios
1. Suponga que
y que calculamos
Captulo 2
Obtenga los estimados de los errores "forward" y "backward" para este cmputo.
2. El polinomio
se evala en un sistema de punto flotante mediante la regla
de Horner. Muestre que el valor calculado
donde
satisface
se pueden descartar).
en el intervalo
para
normal:
anidada:
Suponiendo que
donde
. Defina
. Explque la
Captulo 2
Captulo 3
Captulo 3
Sistemas Lineales
Los sistemas de ecuaciones lineales son una de las herramientas matemticas de modelaje ms
comunes en las aplicaciones. Una clasificacin comn de los sistemas lineales es por su tamao. Los
sistemas con O(100) variables se consideran pequeos y usualmente se utilizan los llamados mtodos
directos para su solucin. Los sistemas de O(1000) ms variables se consideran grandes o de gran
escala y los mtodos de solucin ms eficientes por lo general son los llamados mtodos iterativos o
indirectos. Otra clasificacin importante de los sistemas lineales es por la cantidad o densidad de
ceros de la matriz de coeficientes. Los sistemas con pocas entradas distintas de cero se llaman
escasos. De lo contrario decimos que el sistema es denso. El aprovechar la estructura de ceros de la
matriz de coeficientes nos lleva por lo general a algortmos mucho ms eficientes que los
convencionales.
La solucin directa de sistemas de ecuaciones lineales conlleva esencialmente dos etapas:
transformacin del sistema original a otro sistema equivalente ms "simple" y luego la solucin del
nuevo sistema equivalente. La transformacin del sistema original a uno ms simple toma muchas
formas la ms comn de ellas siendo el proceso de Eliminacin Gaussiana. En este mtodo, en su
forma bsica, si ninguno de los pivotes se hace cero, se producen como resultado matrices L y U
triangulares inferior unitaria y superior respectivamente tal que A=LU donde A es la matriz de
coeficientes del sistema original. El sistema Ax=b se puede resolver ahora en dos etapas adicionales.
(3.1)
donde los
vectores b, x por
Captulo 3
(3.2)
Entonces podemos escribir el sistema (3.1) en forma matricial como Ax=b. La matriz A se conoce
como la matriz de coeficientes del sistema y b como el lado derecho. Si b=0, i.e., bi=0, 1 i n,
entonces decimos que el sistema es homogeneo. De lo contrario se dice que es nohomogeneo.
Ejemplo 1: Considere el sistema
Si definimos
Eliminacin Gaussiana
Vamos ahora a estudiar el mtodo ms bsico y a la ves ms importante para la solucin directa de
http://uprhmate01.upr.clu.edu/~pnm/notas4061/cap3/sislin1.html (2 de 17) [04/08/2002 0:33:33]
Captulo 3
Con este ltimo sistema equivalente podemos obtener la solucin sustituyendo para atrs:
a.
b.
c.
Vamos a generalizar este ejemplo a un sistema 33 general. Escribimos el sistema original como
(3.3)
Captulo 3
y definimos
(3.4)
donde
y definimos
donde
Captulo 3
Paso 3: Hacemos ahora la sustitucin para atrs para obtener la solucin. Suponemos aqui que
:
donde
Captulo 3
(3.5)
(3.6)
donde
(3.7)
Paso n: Calculamos finalmente la solucin del sistema haciendo sustitucin para atrs:
(3.8)
Las frmulas (3.5), (3.7), (3.8) definen el Mtodo de Eliminacin Gaussiana en su forma bsica. Las
formulas (3.5) definen la parte de eliminacin del mtodo mientras que (3.8) nos da la sustitucin
para atrs.
Antes de entrar en las variantes de el mtodo bsico vamos a hacer un estudio de la cantidad de
operaciones envueltas en el mtodo. Esto se conoce como un conteo operacional. Examinando las
frmulas para los
en (3.5) podemos construir la tabla siguiente:
Paso
Sumas
Multiplicaciones
Divisiones
(n-1)2
(n-1)2
n-1
Captulo 3
(n-2)2
(n-2)2
n-2
n-1
TOTAL
n(n-1)(2n-1)/6
n(n-1)(2n-1)/6
n(n-1)/2
Es costumbre contar las operaciones de multiplicacin y divisin juntas. De modo que la tabla de
arriba la podemos resumir diciendo que en la parte de eliminacin del mtodo de eliminacin
Gaussiana el total de:
Sumas y Restas =
Multiplicaciones y Divisiones =
conllevan:
Sumas y Restas = n-1 + (n-2) + + 1 =
Las frmulas (3.8) de la sustitucin para atrs conllevan los siguientes totales de operaciones:
Sumas y Restas = 1 + 2 + + (n-1) =
Captulo 3
Multiplicaciones y Divisiones = 1 + 2 + + n =
Combinando todos los totales parciales hasta ahora obtenemos que el proceso completo de
eliminacin Gaussiana conlleva un total de:
Sumas y Restas =
Multiplicaciones y Divisiones =
Note que para n "grande" ambos resultados son aproximadamente (1/3)n3. Asi que por ejemplo doblar
n equivale a aproximadamente ocho veces ms tiempo computacional. Observe tambin que la parte
de eliminacin es la que contribuye el termino proporcional a n3. La modificacin del lado derecho y
la sustitucin para atrs son ambas proporcionales a n2. Note que estos tres procesos son
independientes uno del otro. Por consiguiente si hay la necesidad de resolver varios sistemas todos
con la misma matriz de coeficientes, la parte de eliminacin debe hacerse una sola ves.
Al derivar las frmulas (3.5), (3.7), (3.8) asumimos que los pivotes
, entonces podemos argumentar matemticamente que algn
matriz de coeficientes del sistema original es nosingular. En tal caso podemos intercambiar la fila "i"
con la "k" y continuar el proceso. A pesar de esto un pivote pequeo, aunque distinto de cero, puede
causar que los efectos de redondeo debido a la aritmtica finita de la computadora se propagen
rpidamente.
Ejemplo 3: Considere el sistema
Captulo 3
De donde obtenemos que z = 1, y = 0, x = 0.6667. La solucin exacta del sistema es x=, y=, z=1!
Para evitar el problema de pivotes distintos de cero pero pequeos usamos lo que se denomina como
pivoteo parcial. Esto es, definimos el indice i0 por:
(3.9)
Si i0k, entonces intercambiaamos las filas i0 y k. Note que estamos haciendo el pivote
mximo
lo cal es lo que ayuda con la propagacin de errores. Existe otra variante del pivoteo. En este caso se
determinan los indices i0 y j0 tal que:
(3.10)
y se intercambian las filas i0 y k y las columnas j0 y k si i0k j0k respectivamente. Esto se conoce
como pivoteo total y se puede demostrar que es ms efectivo que el pivoteo parcial en el control de la
http://uprhmate01.upr.clu.edu/~pnm/notas4061/cap3/sislin1.html (9 de 17) [04/08/2002 0:33:33]
Captulo 3
propagacin de errores. Pero el clculo del mximo en (3.10) es mucho ms costoso que en (3.9) por
lo que en la practica se prefiere el pivoteo parcial. Adems se ha observado en pruebas usando
matrices generadas aleatoriamente, que la diferencia entre ambos mtodos no es significativa en
terminos de la propagacin del error.
Axi = ei , 1 i n
(3.11)
Asi que para calcular A-1 debemos resolver n sistemas distintos pero con la misma matriz de
coeficientes A. La eliminacin de A la hacemos una ves lo cual requiere (1/3)n3 operaciones
aproximadamente. La modificacin del lado derecho y la sustitucin para atrs de cada uno de los
sistemas en (3.11) conlleva aproximadamente n2 operaciones cada uno. Asi que en total tenemos
(1/3)n3+n(n2) = (4/3)n3 aproximadamente. (Este conteo se puede mejorar a (5/6)n3). En muchas
ocaciones las frmulas que envuelven inversos de matrices se pueden rescribir en terminos de
sistemas lineales intermedios. Por el conteo operacional de arriba, las frmulas con los sistemas
lineales son preferibles ya que la solucin de cada sistema envuelve aproximadamente (1/3)n3
operaciones mientras que calcular los inversos toma (4/3)n3 operaciones. Como regla general tenemos
pues que:
LOS INVERSOS DE MATRICES NO SE CALCULAN A MENOS QUE SE NECESITEN
EXPLICITAMENTE.
Veamos una aplicacin de esta regla. Supongamos que desamos calcular la expresin
donde c, b son vectores en
y A es nn. Si calculamos A-1, luego multiplicamos por b y
finalmente el producto interior con c tenemos aproximadamente
Clculo A-1
(4/3)n3
n2
TOTAL
(4/3)n3+n2+n
Captulo 3
Calcule
un anlisis similar al de arriba nos da aproximadamente (1/3)n3+n2+n lo cual es mucho mejor que la
frmula directa.
Teorema (3.2): Sea A una matriz nn nosingular. Defina las matrices L y U como arriba. Entonces si
no se hace pivoteo en el proceso de eliminacin Gaussiana, tenemos que A=LU.
Demostracin: El elemento (i,j) del producto LU consiste del producto interior de la fila i de L con la
columna j de U. Esto es
http://uprhmate01.upr.clu.edu/~pnm/notas4061/cap3/sislin1.html (11 de 17) [04/08/2002 0:33:33]
Captulo 3
Si i j, tenemos que
donde para simplificar la segunda sumatoria usamos que esta es telescpica. Ahora si i > j
Captulo 3
Si definimos ahora
La matriz de coeficientes de este sistema coincide con la del ejemplo anterior de modo que
Captulo 3
(3.12)
a.
Estas frmulas se obtienen multiplicando las filas de L por las columnas de Lt e igualando a las
http://uprhmate01.upr.clu.edu/~pnm/notas4061/cap3/sislin1.html (14 de 17) [04/08/2002 0:33:33]
Captulo 3
(3.13)
(3.14)
, etc.
Captulo 3
1.
2. Para j=2,3,n
a.
(3.15)
b.
El total de multiplicaciones y divisiones en estas frmulas es 2n-2 (compare con (1/3)n3 para
eliminacin Gaussiana bsico). Para resolver Lg=b es fcil ver que las frmulas son:
1.
2. Para j=2,3,,n
a.
(3.16)
(3.17)
El conteo aqui de multiplicaciones y divisiones es de 2n-1. Asi que en total para resolver el sistema
Ax=b donde A es tridiagonal se requieren de 5n-4 multiplicaciones y divisiones. En todo este proceso
necesitamos que los pivotes
y es conveniente que los
's sean menor de uno en valor
absoluto. Esto se cumple si
(3.18)
Captulo 3
(3.19)
Estas se conocen como la norma vectorial infinita y la norma matricial asociada respectivamente.
Estas normas satisfacen las siguientes propiedades para cualesquieras vectores x,y y matrices A,B:
1.
2.
(desigualdad triangular)
3.
4.
Tenemos ahora el siguiente teorema:
Teorema (3.3): Sea A una matriz nosingular. Sean x,
. Entonces
(3.20)
Demostracin: De Ax=b y
entonces
obtenemos que
Pero
. Como A es nosingular,
Si definimos
es "grande", entonces
es "grande". De lo
, entonces
i.e.,
para toda matriz A. En MATLAB podemos calcular el nmero de condicin de A con
la instruccin cond(A). Este no es el nmero de condicin en la norma (3.19) pero si en lo que se
conoce como la norma dos de A. La instruccin rcond(A) nos da una aproximacin del inverso de
cond(A). rcond es mucho ms rpida que cond para matrices de tamao grande.
En forma similar se puede demostrar el resultado que incluye variaciones en A y b ambas.
Simplemente enunciamos el resultado.
Teorema (3.4): Sea A una matriz nosingular y
(3.23)
Entonces
es nosingular y
(3.24)
(3.25)
Note que Hn es simtrica para toda n 1. Usando la instruccin de MATLAB, hilb(n) podemos
generar la matriz de Hilbert de orden n. La instruccin invhilb(n) calcula el inverso exacto de Hn. Por
ejemplo
hilb(5)
ans =
1.0000 0.5000 0.3333 0.2500 0.2000
0.5000 0.3333 0.2500 0.2000 0.1667
0.3333 0.2500 0.2000 0.1667 0.1429
0.2500 0.2000 0.1667 0.1429 0.1250
0.2000 0.1667 0.1429 0.1250 0.1111
que es la matriz de Hilbert de orden 5 truncada a cuatro cifras aunque MATLAB guarda ms cifras
internamente. Mientras que
invhilb(5)
ans =
25 -300
produce el inverso exacto de H5. Podemos calcular el nmero de condicin de H5 segn definido en
(3.21) mediante:
norm(hilb(5),inf)*norm(invhilb(5),inf)
ans =
943656
lo que indica el mal acondicionamiento de la matriz de Hilbert apenas para n=5. Este nmero compara
con
cond(hilb(5))
ans =
4.7661e+005
y con
1/rcond(hilb(5))
ans =
6.9409e+005
Usando la instruccin flops de MATLAB podemos estimar que el computo con cond requiere de 937
operaciones de punto flotante mientras que el clculo con rcond toma 296 operaciones.
La solucin exacta a tres cifras significativas es x1=15.2, x2=-18.7. Si resolvemos el sistema mediante
eliminacin Gaussiana sin pivoteo y usando aritmtica de tres cifras tenemos:
de donde obtenemos
lo cal es mejor que x(0). El proceso se puede repetir una o dos veces mas.
para el
estandar de la IEEE (2.3). Usando estas frmulas repetidamente en (3.5), (3.8), similar al anlisis que
hicimos de la sumatoria de n numros, obtenemos el siguiente resultado.
Teorema (3.5): Sea la solucin calculada del sistema Ax=b mediante eliminacin Gaussiana
usando aritmtica de punto flotante base con una mantisa de t cifras. Sea u el epsilon de la mquina.
Entonces es la solucin exacta del sistema
donde H=(hij) y
(3.28)
donde n es el tamao de A y
(3.29)
El factor del teorema mide la razn de crecimiento de las entradas de la matriz de coeficientes
segn el mtodo numrico progresa. La cota superior de este factor depende de la estrategia de
pivoteo que se use. En particular
, para pivoteo parcial
(3.30)
(3.31)
El Teorema de Gerschgorin
Dada una matriz A nxn de entradas complejas, un nmero
C (conjunto de los nmeros
complejos) es un valor propio de A si existe un vector
tal que
. Usando propiedades
de determinantes, es fcil ver que el problema de hallar los valores propios de una matriz es
equivalente al de hallar las raices de un polinomio con coeficientes complejos. Por el Teorema
Fundamental del Algebra, tenemos ahora que toda matriz nxn tiene exactamente n valores propios
contando multiplicidades. Tambin tenemos, por un teorema famoso de Galois, que el clculo de los
valores propios de una matriz no se puede hacer utilizando unicamente formulas algebraicas. Por tal
razn el clculo de los valores propios de matrices es un problema computacionalmente complejo y el
poder estimar los mismos es de vitl importancia. El estimado ms crudo de los valores propios de
una matriz esta dado por la desigualdad
, donde
es valor propio de A} (3.32)
se conoce como el radio espectral de A. Este estimado aunque til en muchas ocaciones, no es muy
preciso en cuanto a la localizacin de los valores propios de A. El Teorema de Gerschgorin va ms
all en este sentido. Para A=(aij) definimos los radios
(3.33)
y los discos
(3.34)
El Teorema de Gerschgorin establece que cada valor propio de A pertenece al menos a uno de los Dis
y que si k de los discos de Gerschgorin se intersecan entre si y estan aislados de los otros discos,
entonces su unin contiene exactamente k de los valores propios de A.
Ejercicios
1. Al resolver un sistema del tipo
es conveniente intercambiar primero las filas uno y cinco y luego las columnas uno y cinco
(por qu?). Resuelva el sistema luego de permutar y calcle la factorizacin LU de la matrz
permutada.
2. Calcule la factorizacin LU de la matrz
donde
. Calcle una
,b=
calcule una solucin aproximada de Ax=b primero redondeando las entradas de b al entero ms
cercano y luego resolviendo el resultante. Verifique que la solucin calculada es = (12, 4, 2,
el vector residual.
1)t. Sea
a. Determine los valores de ||r|| y
.
b. Utilize su respuesta a la parte (a) para hallar una cota superior para el error relativo en la
solucin aproximada.
c. Calcule la solucin exacta x y determine el error relativo exacto
4. Defina los siguientes:
A = round(10 * rand(6)) ,
s = ones(6, 1) ,
b= A*s.
La solucin al sistema lineal Ax = b es claramente s. Resuelva el sistema utilizando la
operacin \ de MATLAB. Calcule el error x - s. Ahora perturbamos el sistema como sigue.
Deje que
t = 1.0e-12, E = rand(6) - 0.5, r = rand(6, 1) - 0.5
y sean
M = A + t * E, c = b + t * r
Resuelva el nuevo sistema perturbado Mz = c para z. Compare la solucin z con la solucin del
sistema original calculando z - 1. Cmo se compara el tamao de la perturbacin en la
solucin a el tamao de las perturbaciones en A y b? Repita el anlisis de perturbacin con t
=1.0e-04 y t =1.0e-02. Es no el sistema Ax = b bien acondicionado? Explique. Utilice
MATLAB para calcular el nmero de condicin de A.
5. Defina A = round(10 * rand(5)). Calcule el radio de los discos de Gerschgorin de A y
gurdelos en un vector r. Para graficar los discos usamos el parmetro t = [0:0.1:6.3]'.
Podemos generar dos matrices X y Y cuyas columnas contengan las coordenadas x-y de los
discos. Primero inicializamos X y Y a cero (por qu?):
http://uprhmate01.upr.clu.edu/~pnm/notas4061/cap3/sislin2.html (9 de 10) [04/08/2002 0:37:38]
X = zeros(lenght(t), 5) , Y = X .
Las matrices X y Y se generan utilizando los siguientes comandos de MATLAB:
for i = 1 : 5
X (: , i) = r(i) * cos(t) + real (A (i, i));
Y (: , i) = r(i) * sin(t) + imag (A (i, i));
end
Sea e = eig(A). Podemos ahora graficar los valores propios y los discos de Gerschgorin con el
comando
plot(X, Y, real(e), imag(e), 'x') .
6. Defina
B = [3 0.1 2; 0.1 7 2; 2 2 50]
a. Utilice el mtodo descrito en el problema (5) para calcular y graficar los discos
Gerschgorin de B.
b. Como B es simtrica, sus valores propios son todos reales y por esto deben estar en el
eje real. Sin computar los valores propios, explique porqu B debe tener exactamente un
valor propio en el intervalo [46, 54]. Multiplique las primeras dos filas de B por 0.1 y
luego multiplique las primeras dos columnas por 10. Esto se logra mediante la
transformacin de similitud
La nueva matriz C tiene los mismos valores propios que B. Por qu? Explique. Utilice
C para hallar intervalos que contengan los otros dos valores propios de B. Calcule y
grafique los discos de Gerschgorin de C.
Captulo 4
Captulo 4
Solucin de Ecuaciones Nolineales
Suponga que f es una funcin continua digamos
ecuacin escalar nolineal
f(x) = 0
(4.1)
Mtodo de la Biseccin
Este mtodo tiene como base motivavin el Teorema (1.3), Teorema del Valor Intermedio. En
particular, si f es una funcin continua digamos
, y a, b son dados tales que f(a)f(b)0,
entonces definimos c=(a+b)/2. Si f(c)=0, entonces terminamos. De lo contrario remplazamos a b con
c manteniendo la diferencia en signos, etc. Esto nos lleva al siguiente pseudo algortmo llamado el
Mtodo de la Biseccin:
es una funcin continua y que a, b son dados tales que f(a)f(b)0 y >0 es
Suponga que
tambin dado (criterio de paro).
1.
2.
3.
4.
5.
Ejemplo 1: Considere la funcin f(x)=x2+x-1. Note que como f(0)=-1 y f(1)=1, tenemos que existe
una raiz de la ecuacin f(x)=0 en el intervalo (0,1). Vamos a aproximar esta raiz con el mtodo de la
biseccin. Los resultados son como sigue:
n
an
bn
cn
f(an)
f(bn)
f(cn)
0.5
-1
0.25
Captulo 4
0.5
0.25
-1
0.25
-0.69
0.25
0.5
0.375
-0.69
0.25
-0.48
0.375
0.5
0.4375
-0.48
0.25
-0.37
0.4375
0.5
0.46875
-0.37
0.25
-0.31
La solucin correcta a seis cifras calculada con la funcin fzero de MATLAB es 0.618034. Podemos
ver que el mtodo de la biseccin aunque progresa hacia la solucin, lo hace un tanto lento. Veamos
ahora por que esto es asi analizando la convergencia del mtodo.
Anlisis de Error: Como f(a)f(b)0, sabemos que existe un nmero
Mediante induccin matemtica es fcil ver que
(4.2)
Esto es asi ya que el largo del intervalo se divide a la mitad cada ves que pasamos por el paso (2) del
algortmo. Nuevamente usando induccin matemtica obtenemos que
(4.3)
tenemos que
(4.4)
, obtenemos que
Captulo 4
(4.6)
El mtodo tiene convergencia segura! Esto es dada la condicin inicial f(a)f(b)0, el mtodo
converge a una raiz en [a,b]. Esta propiedad conocida como convergencia global es una de
las caractersticas fuertes del mtodo de la biseccin y la mayoria de los mtodos no la poseen.
El error en las aproximaciones generadas por el mtodo se reduce a la mitad en cada paso.
La convergencia lineal caracterizada por la ecuacin (4.5) es lenta comparada con otros
mtodos. Esto es asi ya que el mtodo solo usa evaluaciones de la funcin y comparaciones.
Veremos que usando derivadas mas infoormacin de la funcin f, podemos asi obtener
mtodos ms rpidos.
El mtodo de la biseccin no generaliza al caso de sistemas nolineales debido a que no es posible una
generalizacin del Teorema (1.3) a funciones vectoriales de variable vectorial.
Mtodo de Newton
Suponemos ahora que la funcin f es diferenciable e incorporamos informacin de la derivada en el
mtodo. Sea pues f C1. La recta tangente a f en el punto (x0,f(x0)) esta dada por la ecuacin
. Ahora aproximamos a f con esta recta y definimos x1 como el
intercepto en x de la recto, esto es:
(4.7)
Este proceso lo podemos repetiir ahora con el punto (x1,f(x1)), etc., obteniendo asi la recursin
(4.8)
Esta recursin define el Mtodo de Newton y es un ejemplo de una iteracin de punto fijo.
Aplicacin 1
Vamos a suponer que queremos calcular el cociente a/b usando solo las operaciones
. En la
se implementan a nivel de "hardware" mientras
mayoria de las computadoras las operaciones
. Note que como
que la divisin se hace mediante programado (software) utilizando
Captulo 4
. Note que
(4.11)
i.e,
(4.12)
Esta frmula, exacta en este caso, aplica en general al mtodo de Newton pero asintoticamente segn
se converge a la raiz (demostracin ms adelante). De la ecuacin (4.12) obtenemos que
segn
si y solo si
, i.e.,
(4.13)
Cmo seleccionamos x0 para que cumpla con (4.13)? Bueno la parte de x0>0 es simple de verificar.
Cmo saber si x0<(2/b) cuando no conocemos 2/b? Note que si x0>0, entonces
Captulo 4
rpida, de hecho cuadrtica de acuerdo a la ecuacin (4.12). Esto es, en cada iteracin el nmero de
cifras significativas se duplica.
Vamos ahora a precisar la nocin de rpidez o orden de convergencia de una sucesin.
converge al nmero . Decimos que
Aplicacin 2
Vamos a discutir ahora el problema de calcular raices cuadradas. Defina para a>0 la funcin
la cual tiene como una de sus raices
. Dado que
tenemos que el
mtodo de Newton aplicado a la ecuacin f(x)=0 toma la forma:
(4.15)
Demostracin: Si x0>0 y a>0 entonces sigue de (4.15) que xn>0 para toda n0. Adems
(4.16)
Captulo 4
(4.17)
que
, i.e,
. Pero como xn>0 para toda n0, tenemos que
convergencia cuadrtica de la sucesin sigue ahora de la expresin (4.16).
, i.e.,
. La
Nuevamente vemos convergencia cuadrtica del mtodo de Newton. Veamos ahora el resultado
general.
Teorema (4.2) (Convergencia Local del Mtodo de Newton): Suponga que
es una funcin
. Entonces si x0 se selecciona
C2 en una vecindad del nmero para el cual
suficientemente cerce de , las iteraciones del Mtodo de Newton convergen a . Adems
(4.18)
es decir, (xn) converge a con orden de convergencia p=2.
Demostracin: Usando el Teorema de Taylor podemos escribir
(4.19)
donde
tal que
(4.20)
(4.21)
Captulo 4
por
(4.22)
, entonces
, entonces
(4.23)
Ahora como
, tenemos que
, i.e,
De aqui que si
permanecen en
obtenemos que
(4.24)
Si
de modo que
y la convergencia es de
(4.25)
Dejando
y usando que
obtenemos la expresin (4.18).
, y por consiguiente
, y la continuidad de
La seleccin del punto inicial x0 que garantice la convergencia del Mtodo de Newton es un asunto
notrivial. Cualquier estimado o conocimiento previo de la localizacin de la raiz debe utilizarce para
asegurar la convergencia del mtodo. Por ejemplo una grfica de la funcin f podria arrojar una idea
sobre la raiz. Luego de esto se puede utilizar un mtodo como la biseccin para corregir la
aproximacin y pasarla entonces al mtodo de Newton. Esto asemeja a los mtodos predictorcorrector comunes en la solucin numrica de ecuaciones diferenciales ordinarias.
Una ves tenemos un mtodo iterativo como el de Newton que no tiene en general una expresin como
(4.6) para predecir el nmero de iteraciones necesarias para lograr un error pre-determinadado, cmo
detenemos las iteraciones? Veamos ahora un criterio heurstico para detener el mtodo. Suponiendo
que las iteraciones (xn) estan "cerca" de la raiz , podemos escribir
http://uprhmate01.upr.clu.edu/~pnm/notas4061/cap4/nonleq.html (7 de 17) [04/08/2002 0:41:38]
Captulo 4
(4.26)
Asi que si
aproximacin de .
Mtodo de la Secante
La motivacin del mtodo de la secante viene de que en ocaciones es complicado quizas imposible
calcular la derivada de la funcin f en el mtodo de Newton. Por ejemplo la funcin f podra estar
especificada por un nmero discreto de puntos dada por un programa de computadora. En tales
situaciones el mtodo de Newton se hace impractico y buscamos un mtodo intermedio entre el de la
biseccin y el de Newton. Para esto suponemos que tenemos dos aproximaciones x0, x1 de la raiz .
Podemos ahora construir la secante a la funcin f en los punto (x0,f(x0)), (x1,f(x1)), la cual esta dada
por:
(4.27)
(4.28)
Este proceso lo podemos repetir ahora con x1, x2 para generar x3, etc. Obtenemos asi la recurcin que
define el Mtodo de la Secante:
(4.29)
El mtodo de la secante es un ejemplo de un mtodo iterativo de dos puntos ya que predice en el paso
n+1 basado en la informacin obtenida en los pasos n, n-1. Note tambin que
(4.30)
de modo que el mtodo de la secante se puede ver como una discretizacin del mtodo de Newton.
Captulo 4
El anlisis de convergencia del mtodo de la secante es un tanto ms complicado que el del mtodo de
Newton y requiere del concepto de diferencias divididas las cuales se discuten en el Cpitulo 5.
Usando propiedades de las diferencias dividas se puede demostrar que las iteraciones del mtodo de la
secante satisfacen:
(4.31)
(4.32)
donde
Demostracin (borrador): Vamos a suponer que las iteraciones convergen. Entonces de (4.31), para n
suficientemente grande, podemos escribir
(4.33)
,y
donde por conveniencia hemos tomado F0=F1=1. La iteracin (4.34) define los nmeros de Fibonachi
y es bien conocido que para n grande:
(4.35)
Captulo 4
Asi que
(4.36)
(4.37)
Taza de convergencia
Newton
Dos
Secante
1.62
Si
es dificil o imposible de evaluar, entonces el mtodo de la secante podra ser ms conveniente
que el de Newton. Muchas veces f esta dada por una tabla o programa de computadora lo que hace el
calculo de
imposible. Si
es accesible y computacionalmete viable, entonces el mtodo de
Newton es preferible por su convergencia rpida. Note que en ambos mtodos aproximamos la funcin
original por una funcin lineal a la cual es fcil de calcular sus raices.
Raices Multiples
En ambos de los Teoremas (4.2) y (4.3) tenemos la condicin
que garantiza que
en forma transversal. Cuando esta condicin de
la funcin f(x) corta el eje de "x" en
transversalidad no se cumple en la raiz
, entonces el mtodo numrico puede diverger o si
converge lo hace ms lento que en el caso transversal. Vamos a estudiar esta situacin en mas detalles
en particular para el mtodo de Newton.
, y m un entero positivo. Decimos que es una
Sea f una funcin, un nmero real tal que
raiz de f de multiplicidad m si existe una funcin g(x) tal que
(4.38)
http://uprhmate01.upr.clu.edu/~pnm/notas4061/cap4/nonleq.html (10 de 17) [04/08/2002 0:41:38]
Captulo 4
(4.39)
Demostracin: Supongamos que (4.39) es cierta. Por el Teorema de Taylor tenemos que podemos
escribir:
Como
esta entre y x, y
cerca de la funcin
, la ecuacin (4.38) se
(4.40)
Si
, entonces
Si k=m,
Captulo 4
de multiplicidad 2. Para la funcin f(x)=sen(x) tenemos que =0 es una raiz de f. Ademas con
Como =0 es la nica solucin en este caso, vemos que el mtodo tiene convergencia lineal en este
problema. En general se puede demostrar que si x= es una raiz de multiplicidad m de la ecuacin
f(x)=0, entonces las iteraciones del mtodo de Newton convergen localmente a la raiz x= y
satisfacen
(4.41)
i.e., la convergencia es lineal si m>1 con taza o razn de convergencia . Note que si m>2, entonces
>1/2 y el mtodo de la biseccin es en general ms rpido que el de Newton.
Otro problema con el clculo de raices multiples es provocado por la aritmtica finita de la
computadora y el hecho de que la funcin f no cruza el eje de x transversalmente en x= . Esto hace
que el intervalo de incertidumbre para el clculo de la raiz sea mucho mayor de lo que sera para una
raiz simple.
Cmo podemos entonces calcular raices multiples en forma efectiva? Si la multiplicidad m de la raiz
es conocida, entonces podemos mejorar la convergencia del mtodo de Newton de dos formas:
(4.42)
Captulo 4
(4.43)
Sistemas Nolineales
Consideramos ahora el problema de resolver un sistema de ecuaciones nolineales de n ecuaciones en n
funciones (nolineales) suficientemente diferenciables.
desconocidas. Sean
Un sistema nolineal n n consiste de:
(4.44)
por
Si definimos
vectorial como:
(4.45)
Sea
tal que
(4.46)
Captulo 4
Suponga que
es una aproximacin de
como la solucin de
i.e.,
De esta forma continuamos obteniendo asi la versin para sistemas del Mtodo de Newton dada por
(4.47)
Si
es nosingular, y
las iteraciones
convergen a la raiz . Las iteraciones (4.47) se pueden rescribir para que no
haya que calcular el inverso de una matriz. Esto se hace de la forma:
(4.48)
Tenemos que
Captulo 4
Estas dos expresiones las calculamos en MATLAB mediante las siguientes funciones:
function z=f(w)
z=zeros(2,1);
x=w(1);y=w(2);
z(1)=x^3-x*y^2+y^3;
z(2)=x*sin(x*y)+1;
function z=fp(w)
z=zeros(2,2);
x=w(1);y=w(2);
z(1,1)=3*x^2-y^2;
z(1,2)=-2*x*y+3*y^2;
z(2,1)=sin(x*y)+x*y*cos(x*y);
z(2,2)=x^2*cos(x*y);
Tomando como
x0=[1,0]';
normx=1;
normz=1;
while normz > 1.0e-6*normx
f0=f(x0);
fp0=fp(x0);
z=-fp0\f0;
normz=norm(z,2);
normx=norm(x0,2);
x0=x0+z;
end
x0
con el cual obtenemos (1.1674,-0.8812) como una raiz aproximada del sistema.
Ejercicios
Despes de haber calculado la raiz mayor, use divisin sinttica y calcle las raices restantes.
2. La siguiente ecuacin tiene una raiz nica en el intervalo (-1,0):
Captulo 4
Use el Mtodo de Newton para calcular la raiz lo ms preciso posible para los valores de B=1,
5, 10, 25, 50. Como punto inicial puede tomar entre otros x0=0. Explique cualquier diferencia
en el comportamiento del mtodo segn aumenta el valor de B. Utilice la grfica de
para sustentar sus argumentos.
3. Implemente el Mtodo de Newton para buscar todas las raices de un polinomio p(x). Debe
. Si es una raiz, como
utilizar el Mtodo de Horner para evaluar p(x) y su derivada
resultado del Mtodo de Horner, se obtiene un polinomio q(x) tal que p(x)=(x- )q(x). Usando
q(x) podemos calcular las raices restantes de p(x). Uttilice su programa para resolver las
ecuaciones:
a.
b.
c.
4. Sea A la matriz 3x3 y b el vector 3x1 dados por:
la cual al
.
5. La ecuacin
tiene un mximo para
satisfacen las ecuaciones:
del mximo
Captulo 4
para la funcin desconocida z(s). Usando una regla de cuadratura apropiada para discretizar el
integral en esta ecuacin, obtenga un sistema de ecuaciones nolineales cuya solucin es una
aproximacin de z(s). Resuelva el sistema resultante usando el Mtodo de Newton.
Interpolacin de Polinomios
Captulo 5
Interpolacin y Aproximacin de Funciones
Problema bsico de Interpolacin: Dados los datos (xi,yi) , 1<=i<=n, queremos hallar una funcin
g(x) tal que
g(xi)=yi , 1<=i<=n.
Problema de Interpolacin Polinomial: Dados los datos (xi,yi) , 1<=i<=n, queremos hallar un
polinomio pn-1(x) de grado a lo ms n-1, tal que
pn-1(xi)=yi , 1<=i<=n.
Ejemplo: Considere los datos (-2,5), (1,3). Podemos construir el polinomio de grado uno que interpola
a estos datos:
p1(x) = 5 - (2/3) (x+2) .
Note que tambin podemos interpolar con una funcin de la forma g(x)= a ebx. De hecho b= (1/3)ln(5/3) y a=3(5/3)1/3.
Existencia y construccin de pn-1(x)
Considere el caso de los datos (-2,10), (-1,4),(1,6), y (2,3). Entonces si escribimos p3(x)=a1+a2x
+a3x2+a4x3 tenemos que
p3(-2)=10 implica que a1-2a2+4a3-8a4 =10;
p3(-1)=4 implica que a1-a2+a3-a4 =4;
p3(1)=6 implica que a1+a2+a3+a4 =6;
p3(2)=3 implica que a1+2a2+4a3+8a4 =3;
Esto es equivalente al sistema:
Interpolacin de Polinomios
Interpolacin de Polinomios
Interpolacin de Polinomios
Interpolacin de Polinomios
3 = p3(2) = c1 +4 c2+ 12 c3 + 12 c4
Esto es un sistema triangular inferior cuya solucin es:
c1=10 , c2=-6 , c3=7/3 , c4=-11/12
En el caso general buscamos pn-1(x) de la forma:
Examinamos el caso n=4 para luego llegar al caso general. En este caso al aplicar las condiciones de
interpolacin pn-1(xi)=yi , 1<=i<=n, obtenemos el sistema triangular superior 4x4 dado por:
Inmediatamente vemos que c1=y1. Restandole la primera fila a las ecuaciones dos, tres y cuatro y
diviendo estas por (x2-x1), (x3-x1), (x4-x1) respectivamente, obtenemos el sistema transformado:
Interpolacin de Polinomios
En el caso general tenemos que c1= y1 y que pn-1(x)=c1+(x-x1)q(x) donde q(x) es polinomio de grado
n-2 que interpola a los datos:
(xi,(yi-y1)/(xi-x1)) , 2<=i<=n.
Esto nos lleva a el siguiente programa recursivo en MATLAB para calcular la representacin de
Newton del polinomio de interpolacin:
function c = interpNR(x,y)
n=length(x);
c=zeros(n,1);
c(1)=y(1);
if n>1
c(2:n)=interpNR(x(2:n),(y(2:n)-y(1))./(x(2:n)-x(1)));
end
Repitiendo el proceso que nos llevo a la forma recursiva del algortmo anterior, podemos resolver
dicha recursin para obtener asi la forma secuencial del algortmo para la representacin de Newton
del polinomio de interpolacin:
function c = interpN(x,y)
n=length(x);
http://uprhmate01.upr.clu.edu/~pnm/notas4061/interpolacion/interpolacion.htm (6 de 10) [04/08/2002 0:42:48]
Interpolacin de Polinomios
for k=1:n-1
y(k+1:n)=(y(k+1:n)-y(k)) ./ (x(k+1:n)-x(k));
end
c=y;
La representacin de Newton del polinomio de interpolacin se puede evaluar con una variacin de
mtodo de Horner donde escribimos el polinomio es forma anidada como sigue:
pn-1(x)=c1+(x-x1)(c2 +...(cn-2+(x-xn-2)(cn-1+cn(x-xn-1))))
En el caso n=4 esto reduce a :
p3(x)=c1+(x-x1)(c2+(x-x2) (c3+c4(x-x3)))
Esto nos lleva a el siguiente programa en MATLAB que implementa esta versin del mtodo de
Horner:
function pval = hornerN(c,x,z)
n = length(c);
pval = c(n)*ones(size(z));
for k = n-1:-1:1
pval=c(k) + (z-x(k)) .* pval;
end
Eficiencia
En general interpNR y interpN requieren menos operaciones de punto flotante que interpV, O(n2) en
comparacin con O(n3), ya que la matriz de Vandermonde es densa mientras que en la representacin
de Newton resolvemos un sistema triangular. Hay mtodos alternos que resuelven el sistema de
Vandermonde en O(n2) operaciones al aprovechar su estructura particular.
Si comparamos interpNR y interpN, el segundo mtodo es ms eficiente en el uso de memoria que el
primero. La naturaleza recursiva de interpNR requiere O(n2) lugares de memoria en comparacion con
O(n) para interpN.
Error de Interpolacin
Teorema: Suponga que pn-1(x) interpola a la funcin f(x) en los puntos distintos x1,,xn y que f tiene
derivadas continuas hasta orden n en un intervalo I que contiene a los xi's. Entonces para cualquier z
en I existe un entre z y los xi's tal que:
Interpolacin de Polinomios
Si f(x) es una funcin en [a,b] y los xi's estan uniformemente distribuidos en [a,b], i.e.,
xi = a+i h, 0<=i<=n-1, h=(b-a)/(n-1)
entonces se puede demostrar que:
De modo que si
donde M es una constante independiente de n, entonces el error de interpolacin tiende a cero segn h
se va a cero, i.e., hay convergencia. Este es el caso, por ejemplo para las funciones trigonomtricas sen
y cos, y para la exponencial ex en un intervalo finito.
Esta propiedad (derivadas de todo orden acotadas uniformemente) no la poseen todas las funciones. El
ejemplo clsico de este mal comportamiento en las derivadas es la funcin de Runge dada por:
Interpolacin de Polinomios
subplot(2,2,k)
plot(x,y,x,pvals)
title(sprintf('(n = %2.0f)',n))
end
Ejercicios
1. Calcule la funcin q(x) = a + b cos(x) + c sen(x) que interpola a los datos (0,2), (1/2,5),
(1,4).
2. Halle el polinomio cuadrtico que interpola a los datos (-2,-15), (-1,-8), (0,-3) por los dos
mtodos discutidos en clase.
3. Use induccin matemtica para demostrar que si V(x1,,xn) representa la matriz de
Vandermonde para {x1,,xn}, entonces
4. Demuestre que si q(x) es el polinomio de grado n-2 que interpola a los datos
http://uprhmate01.upr.clu.edu/~pnm/notas4061/interpolacion/interpolacion.htm (9 de 10) [04/08/2002 0:42:48]
Interpolacin de Polinomios
(xi,(yi-y1)/(xi-x1)) , 2<=i<=n,
y pn-1(x) interpola a (xi,yi) , 1<=i<=n, entonces
pn-1(x) = y1 + (x-x1) q(x) .
5. Demuestre mediante induccin matemtica que los coeficientes c1,,cn de la representacin de
Newton de pn-1(x) estan dados por el programa sequencial interpN.
6. Suponga que z y a(1:n) son dados e inicializados y que p(x)= a1+a2 x+...+ann-1. Haciendo uso
eficiente de la subrutina hornerV escriba segmentos de programas en MATLAB que calculen
las expresiones:
7. Escriba una funcin en MATLAB, nbest(L,R,a,delta), que devuelva el entero menor n tal que si
pn-1(x) es el polinomio de interpolacin de eax en los puntos
L +(i-1)(R-L)/(n-1) , i=1:n
entonces
para
Interpolacin de Hermite: Aqui buscamos un polinomio por pedazos Hn(x) que sea cbico en cada
subintervalo
, y que interpole a f(x) y f'(x) en los puntos
. La funcin
Hn(x) queda determinada en forma nica por estas condiciones y su clculo requiere de la solucin de n
sistemas lineales de tamao 4x4 cada uno. La desventaja de la interpolacin de Hermite es que requiere de
la disponibilidad de los
lo cual no es el caso en muchas aplicaciones.
Interpolacin usando Splines: Los dos tipos de polinomios por pedazos que hemos discutidos hasta ahora
tienen la desventaja de que su segunda derivada no es continua en los puntos de interpolacin. Se ha
observado que en aplicaciones grficas, el ojo humano es capaz de detectar discontinuidades en la
segundas derivadas de una funcin, haciendo que los grficos con este tipo de funciones no luscan
uniformes. Esto motiva el uso de los splines que son funciones s(x) continuas por pedazos con las
siguientes propiedades:
1. s(x) es polinomio cbico en
2.
.
, entonces tenemos un total de
4n desconocidas. Las condiciones 2) y 4) nos dan 3(n-1) ecuaciones mientras que de 3) obtenemos n+1
para un total de 4n-3(n-1)-(n+1)=2 grados de libertad. Estos grados de libertad se fijan imponiendo
condiciones de frontera adicionales en s(x).
Defina
.
Integrando esta ecuacin dos veces, obtenemos que
.
Las condiciones
implican que
Note que s(x) y s"(x) son continuas por construccin y adems tenemos que la condicin de interpolacin
se cumple. Falta la condicin de que s'(x) sea continua, i.e.,
En
, tenemos que
donde
Condicin Natural de los Splines: Para fijar los dos grados de libertad en el spline, requerimos que s(x) sea
lineal en los intervalos
lo cual es equivalente a las condiciones
.
Tenemos ahora el siguiente sistema de ecuaciones Am=d para las restantes desconocidas
donde:
Note que la matriz de coeficientes de este sistema es tridiagonal y simtrica lo que hace que el spline s(x)
pueda ser calculado en forma eficiente. El siguiente programa en MATLAB ensambla la matriz y lado
derecho segn definidos arriba y resuelve el sistema para determinar los M's:
%
% Los datos estan dados por los vectores x=[x(1) x(n)] , y=[y(1) y(n)]
%
n=length(x)
dx=x(2:n)-x(1:n-1);
yp=(y(2:n)-y(1:n-1))./dx;
a=sparse([1:n-2],[1:n-2],(dx(1:n-2)+dx(2:n-1))/3,n-2,n-2);
udiag=sparse([1:n-3],[2,n-2],dx(2:n-2)/6,n-2,n-2);
a=udiag'+a+udiag;
d=yp(2:n-1)-yp(1:n-2);
m=a\d;
La funcin spline de MATLAB se utiliza para calcular el spline s(x) directamente. En el siguiente ejemplo
los datos se obtienen dividiendo el intervalo [-5,5] en seis subintervalos y evaluamos la funcin atan
http://uprhmate01.upr.clu.edu/~pnm/notas4061/piecewise/piecewise.htm (3 de 5) [04/08/2002 0:43:34]
(tangente inversa) en los puntos de la particin. Luego construimos el spline que interpola en estos puntos
y lo graficamos:
%
% Divide el intervalo [-5,5] en cinco pedazos generando asi seis puntos
%
x=linspace(-5,5,6);
%
% Evalua la funcin atan en los puntos de la particin
%
y=atan(x);
%
% Calcula la representacin del spline que interpola a los datos
%
pp=spline(x,y);
%
% Calcula 100 puntos en el intervalo [-5,5] para las graficas
%
z=linspace(-5,5,100);
%
% Evalua el spline y la funcin atan en los 100 puntos
%
sval=ppval(pp,z);
y1=atan(z);
%
% Grafica el spline, atan, y los puntos de interpolación en un mismo
% sistema de coordenadas
%
plot(z,sval,z,y1,x,y,'+')
xlabel('x');
ylabel('y');
title('atan(x) en violeta y s(x) en amarillo')
son
buscamos aproximar los datos con un polinomio de grado a lo ms n-1. Las diferencias entre los datos
y la funcin g(x) estan dados por:
.
Buscamos pues minimizar la suma de los cuadrados de estas diferencias dada por:
, los valores de
Bajo ciertas condiciones en los datos
minimizan a "S" son solucin del sistema lineal (ecuaciones normales):
donde
que
La solucion "a" de las ecuaciones normales se conoce como la solucin de cuadrados minimos para
los datos
usando las funciones base
. En el caso
el problema de minimizar "S" se conoce como el problema de cuadrados
minimos polinomial y la matriz A toma la forma:
.
(Compare esta matriz con la matriz de Vandermonde que vimos en la interpolacin de polinomios).
Siguiendo nuestra discusin anterior de la matriz de Vandermonde, podemos escribir el siguiente
codigo en MATLAB que calcula la matriz A:
function a=vandg(n,x);
m=length(x);
a=ones(m,n);
for j=2:n
a(:,j)=x.*a(:,j-1);
end
El siguiente programa en MATLAB llama la funcin de arriba para luego ensamblar las ecuaciones
normales y resuelve estas para obtener asi la solucin de cuadrados minimos:
function a=leastsqu(n,x,y);
A=vandg(n,x);
B=A'*A;
a=B\(A'*y);
El vector "a" que devuelve esta funcin representa los coeficientes del polinomio de grado a lo ms n1 que mejor aproxima a los datos en el sentido de los cuadrados minimos. Podemos ahora utilizar la
funcin hornerV discutida anteriormente para evaluar dicho polinomio.
Ejemplo: Para ilustrar las ideas presentadas hasta ahora, considere el caso de aproximar 17 datos
tomados de la funcin y=ex en el intervalo [0,4] utilizando un polinomio cuadrtico y otro cbico:
%
% Genera los datos
%
x=[0:.25:4]';
http://uprhmate01.upr.clu.edu/~pnm/notas4061/leastsqr/leastsq.htm (2 de 6) [04/08/2002 0:44:30]
y=exp(x);
%
% Calcula los coeficientes de los polinomios cuadrtico y cbico
% que mejor aproximan en el sentido de los cuadrados minimos
%
a2=leastsqu(3,x,y);
a3=leastsqu(4,x,y);
%
% Genera puntos adicionales para evaluar los polinomios y
% la funcin original
%
xx=[0:.02:4]';
%
% Evalua los polinomios y la funcin original
%
pval2=hornerV(a2,xx);
pval3=hornerV(a3,xx);
yy=exp(xx);
%
% Traza las grficas
%
plot(xx,yy,xx,pval2,xx,pval3,x,y,'o')
xlabel('X');ylabel('Y');
title('Cuadratica en violeta; Cubica en azul; exp(x) en amarillo')
La matriz de coeficientes
de las ecuaciones normales es en general una matriz mal
acondicionada segn la "m" aumenta. De hecho en el caso del problema de cuadrados minimos
es de la forma:
polinomial, es fcil ver que la entrada (k,l) de
de modo que
De igual forma:
pues que
es equivalente al sistema
. <>
Vale la pena recalcar que los sistemas triangulares se resuelven eficientemente mediante sustitucin
para atras y son por lo general bien acondicionados. La funcin qr de MATLAB se utiliza para
calcular las factorizaciones QR. Modificamos la funcin leastsqu de arriba como sigue:
function a=leastsqr(n,x,y);
A=vandg(n,x);
[Q R]=qr(A);
a=R\(Q'*y);
El mismo ejemplo anterior pero usando esta subrutina en lugar de leastsqu produce resultados
similares (al nmero de cifras mostradas) pero ahora los nmeros de condicin de R son 31.3586 y
239.3714 para n=3,4 respectivamente los cuales son mucho mejor que antes.
Ejercicios:
1. Considere los datos dados por los vectores x=[0:0.25:3], y=[6.3806 7.1338 9.1662 11.5545
15.6414 22.7371 32.0696 47.0756 73.1596 111.4684 175.9895 278.5550 446.4441].
Aproxime estos datos con funciones de la forma:
1.
2.
3.
Modifique los programas dados anteriormente segn sea necesario. Grafique las tres funciones
"g(x)" y los datos originales en un mismo sistema de coordenadas. Qu tan bien aproximan
estas funciones a los datos?
se puede aproximar con un polinomio de grado cinco de la forma
2. La funcin
. Use la funcin gamma de MATLAB para generar
para x=0:0.1:1. Usando los programas desarrollados en esta leccin,
valores de
construya el polinomio de grado cinco que mejor aproxima estos datos en el sentido de los
cuadrados minimos. Trace los datos, la funcin
y el polinomio calculado en el
mismo sistema de coordenadas.
Integracin Numrica
Un mtodo comn para aproximar I(f) es reemplazando f(x) con un polinomio de interpolacin. Este
procedimiento se conoce como las reglas de Cuadratura de Newton. Examinamos los primeros dos
casos de este mtodo donde se usan polinomios de interpolacin lineales y cuadrticos.
Mtodo del trapezoide: Sea p1(x) el polinomio lineal que interpola a f(x) en x=a y x=b, i.e.,
Usando la frmula para el area de un trapezoide o integrando p1(x) directamente se obtiene que
(*)
Ms adelante anlizamos en detalles el error en esta aproximacin. Por el momento basta observar que
la aproximacin es buena siempre que f sea aproximadamente lineal. En el caso general, dividimos el
intervalo [a,b] en subintervalos ms pequeos y aplicamos la frmula anterior en cada subintervalo. Si
los subintervalos son suficientemente pequeos, entonces f es aproximadamente lineal en cada
subintervalo y la aproximacin es buena. Definimos el largo de los subintervalos por:
Integracin Numrica
Esto se conoce como la regla (compuesta) del trapezoide para aproximar I(f).
Ejemplo 1: Usando la regla del trapezoide con n=2 y n=4 aproximamos:
Con n=4 tenemos h=(2-1)/4=0.25, x0=1, x1=1.25, x2=1.5, x3=1.75, x2=2, de modo que
Integracin Numrica
Estos calculos los podemos realizar tambin utilizando la funcin trapz de MATLAB. En el siguiente
programa no solo calculamos los dos resultados de arriba sino que generamos una tabla de errores
(exactos) para varios valores de n aprovechando que en este ejemplo tenemos el valor exacto del
integral:
iexacto=log(2);
n=2;
error1=0;
for i=1:10
x=linspace(1,2,n+1);
y=1./x;
iaprox=trapz(x,y);
error=iexacto-iaprox;
ratio=error1/error;
disp(['n=' num2str(n) ', iaprox=' num2str(iaprox,6) ',error=' num2str(error,6) ',ratio='
num2str(ratio,6)])
n=2*n;
error1=error;
end
Los resultados fueron como sigue:
n
Tn(f)
en=I(f)- Tn(f)
en/ e2n
0.708333
-0.0151862
-----
0.697024
-0.00387663
3.91736
0.694122
-0.00097467
3.97738
16
0.693391
-0.000244022
3.99419
32
0.693208
-0.0000610277
3.99854
64
0.693162
-0.0000152583
3.99963
128
0.693151
-3.81467e-006
3.99991
256
0.693148
-9.53672e-007
3.99998
512
0.693147
-2.38418e-007
3.99999
1024
0.693147
-5.96046e-008
4.00000
Estos resultados confirman claramente la convergencia del mtodo del trapezoide en este ejemplo
particular. Podemos ver que cada ves que se duplica la n, lo cual equivale a dividir la h entre dos, el
error disminuye por un factor de cuatro aproximadamente (ltima columna de la tabla) esto es
Integracin Numrica
(**)
Argumentando en forma similar a en mtodo del trapezoide, tenemos que si n es un entero par (por
qu?) entonces
Integracin Numrica
Ahora
Esta frmula se conoce como la regla (compuesta) de Simpson para aproximar a I(f).
Ejemplo 2: Usando la regla de Simpson con n=2 y n=4 aproximamos:
Con n=4 tenemos h=(2-1)/4=0.25, x0=1, x1=1.25, x2=1.5, x3=1.75, x2=2, de modo que
MATLAB no tiene una rutina simp equivalente a trapz. Tiene una mejor llamada quad! La
subrutina quad utiliza una regla de Simpson adaptativa donde el valor de h se ajusta para que el error
en la aproximacin satisfaga una tolerancia especificada por el usuario. Tambin MATLAB tiene la
http://uprhmate01.upr.clu.edu/~pnm/notas4061/numint1/numint.htm (5 de 7) [04/08/2002 0:45:10]
Integracin Numrica
subrutina quad8 que al igual que quad usa un mtodo adaptativo pero con una frmula de
aproximacin de grado mayor. En lugar de usar estas rutinas que hacen las comparaciones un tanto
complicadas, implementamos nuestra versin de simp equivalente a trapz:
function q=simp(x,y);
n=length(x)-1;
if (n/2)~=floor(n/2)
disp('n tiene que ser par');
break;
end
h=x(2)-x(1);
v=2*ones(n+1,1);
v2=2*ones(n/2,1);
v(2:2:n)=v(2:2:n)+v2;
v(1)=1;v(n+1)=1;
q=(h/3)*y*v;
Esta subrutina implementa una forma vectorizada del mtodo de Simpson que ejecuta eficientemente
en MATLAB. Note que se requiere que n sea par. Recuerde tambin que en MATLAB los indices de
los arreglos corren empezando en uno. El mismo programa del Ejemplo 1 lo podemos usar aqui ahora
reemplazando la llamada a trapz por simp. Obtuvimos los siguientes resultados:
n
Sn(f)
en=I(f)- Sn(f)
en/ e2n
0.694444
-0.00129726
-----
0.693254
-0.000106788
12.1481
0.693155
-7.35009e-006
14.5288
16
0.693148
-7.35009e-006
14.5288
32
0.693147
-2.97299e-008
15.885
64
0.693147
-1.86151e-009
15.9708
128
0.693147
-1.16398e-010
15.9927
256
0.693147
-7.27562e-012
15.9983
512
0.693147
-4.54747e-013
15.9993
1024
0.693147
-2.84217e-014
16.0000
Integracin Numrica
1. Usando las reglas del trapezoide y de Simpson y los programas descritos en esta leccin,
aproxime el siguiente integral:
El valor exacto de este integral es /4. Use esto para generar una tabla con las aproximaciones
y los errores (exactos) y estime el orden de convergencia.
2. La regla del punto medio se puede usar para obtener la siguiente aproximacin de I(f):
Usando esta frmula disee una frmula compuesta llamada la regla (compuesta) del punto
medio. Use esta frmula en el ejercicio anterior y estime el orden de convergencia de la misma.
3. Utilizando un polinomio cbico de Hermite para interpolar a f(x) en [a,b], desarrolle una
frmula para aproximar a I(f). Obtenga la frmula compuesta correspondiente.
Regla del Trapezoide: Usando el teorema sobre el error de interpolacin discutido anteriormente,
tenemos que si p1(x) es el polinomio que interpola a f(x) en xj-1, xj entonces
De modo que
donde usamos el Teorema del Valor Medio para integrales. Tenemos pues que el error en la frmula
del mtodo del trapezoide esta dado por
(*)
Suponiendo que
funciones, obtenemos que
Esta frmula se conoce como la frmula exacta del error y establece que la frmula del trapezoide
Tn(f) tiene un orden de convergencia de O(h2) lo que confirma nuestros resultados numricos de la
seccin anterior. Esta frmula aparte de su vala teorica, no nos proporciona un estimador prctico del
error ya que f '' puede no ser accesible y el punto de la frmula es desconocido. Para obtener un
estimador prctico del error utilizamos la llamada frmula asinttica que se obtiene de la siguiente
manera. Si f '' es continua, entonces
se conoce como el estimador asinttico del error. Note que si f ' es accesible, esta
La frmula
frmula envuelve cantidades conocidas y es posible calcularla como parte del proceso de
aproximacin. Ms aun podemos utilizar el estimador para corregir la frmula del trapezoide
obteniendo asi la fmula del trapezoide corregida:
la cal en general debe ser una mejor aproximacin a I(f) que Tn(f).
Ejemplo 1: Consideremos nuevamente el problema de aproximar
En este caso f(x)=1/x de modo que f'(x)=-1/x2, asi que el estimador asinttico del error esta dado por
la frmula
n
2
0.708333
0.692708
-0.0151862
-0.015625
0.697024
0.693118
-0.00387663
-0.00390625
0.694122
0.693145
-0.00097467
-0.000976562
16
0.693391
0.693147
-0.000244022
-0.000244141
32
0.693208
0.693147
-0.0000610277
-0.0000610352
64
0.693162
0.693147
-0.0000152583
-0.0000152588
128
0.693151
0.693147
-3.81467e-006
-3.8147e-006
256
0.693148
0.693147
-9.53672e-007
-9.53674e-007
512
0.693147
0.693147
-2.38418e-007
-2.38419e-007
1024
0.693147
0.693147
-5.96046e-008
-5.96046e-008
Podemos ver de esta tabla que la frmula asinttica del error predice bastante bien el error real en este
ejemplo. Tambin podemos observar que la frmula corregida del trapezoide produce seis cifras
correctas en la aproximacin con apenas n=16 mientras que la frmula sin corregir requiere hasta
n=512. <>
De la frmula asinttica
tenemos que
lo cual fu lo que observamos en nuestros computos numricos. Note tambin que si casualmente f
'(a)=f '(b) , entonces la convergencia del mtodo ser ms rpida.
Mtodo de Simpson: En este caso el anlisis de los errores es similar al del mtodo del trapezoide
pero ms extenso. Simplemente pues resumimos los resultados en este caso. Si
entonces la frmula exacta del error esta dada por
De la frmula del error exacto se obtiene que el mtodo tiene un orden de convergencia O(h4) y
empleando la frmula asinttica podemos ver que los cocientes
aproximadamente 16.
son
Ejercicios:
1. Repita los clculos del Ejemplo 1 pero para el mtodo de Simpson.
2. Para la formulas bsica y compuesta de la regla del punto medio (problema 2, seccin anterior)
haga un anlisis de errores y derive las frmulas exactas y asintticas del error y la frmula
corregida del mtodo.
3. Si la regla del trapezoide se utiliza para aproximar
con h=0.01, halle una cota para el error en dicha aproximacin y un estimado asinttico del
mismo.
4. Si los puntos
no estan uniformemente distribuidos en [a,b], es posible
generalizar la frmula del trapezoide en este caso como sigue: sean
. Entonces definimos
donde
donde p es el orden de convergencia del mtodo, e.g., p=2 para el mtodo del Trapezoide y p=4 para
el de Simpson. Podemos escribir ahora que
cuyo valor exacto es 0.693147 correcto a seis cifras. El siguiente programa en MATLAB implementa
el mtodo de extrapolacin de Richardson para la regla del trapezoide:
http://uprhmate01.upr.clu.edu/~pnm/notas4061/numint3/numint3.htm (1 de 5) [04/08/2002 0:46:55]
n=2;
x=linspace(1,2,3);
y=1./x;
iaproxn=trapz(x,y);
for i=2:5
n=2*n;
x=linspace(1,2,n+1);
y=1./x;
iaprox2n=trapz(x,y);
richard=(4*iaprox2n-iaproxn)/3;
disp(['n=' num2str(n) ', iaprox2n=' num2str(iaprox2n,6) ',richard=' num2str(richard,6)])
iaproxn=iaprox2n;
end
Los resultados fueron como sigue:
n
I2n
R2n
0.697024
0.693254
0.694122
0.693155
16
0.693391
0.693148
32
0.693208
0.693147
Aqui podemos ver que ya para n=32 la frmula de Richardon tiene ya seis cifras correctas. Para el
mtodo del trapezoide la frmula de Richardson es de orden O(h4) y no requiere derivadas de la
funcin f(x) en comparacin con la frmula corregida. <>
La frmula de extrapolacin de Richardson se puede ahora utilizar en forma recursiva generando
formulas de orden cada vez ms alto (se duplica en cada etapa). La frmula resultante por este
procedimiento se conoce como la frmula de integracin numrica de Romberg.
Reglas de Cuadrtura Gaussiana: Consideramos por el momento integrales de la forma
Note que si el integral esta dado en un intervalo arbitrario [a,b] entonces mediante el cambio de
variables
tenemos que
lo cual nos da una integral en [-1,1]. Asi que sin perdida de generalidad podemos asumir que el
integral es en [-1,1].
Sean x1,x2,,xn puntos (no necesariamente uniformemente distribuidos) en [-1,1] y w1,w2,,wn
nmeros llamados pesos ("weights"). Los puntos xj's y los pesos wj's se determinan de modo que la
frmula de integracin numrica
sea exacta para polinomios de grado a lo ms 2n-1, i.e., In(p)=I(p) para todo polinomio p de grado a lo
ms 2n-1. Como In I son operadores lineales, basta verificar que
Caso n=1: Aqui I1(f)=w1f(x1) y requerimos que I1(1)=I(1), I1(x)=I(x). Pero I(1)=2 y I1(1)=w1 de
modo que w1=2. Adems I(x)=0 y I1(x)=2x1, de donde obtenemos que x1=0. Tenemos pues la fmula
numrica I1(f)=2f(0) lo cal se conoce como la frmula del punto medio.
Caso n=2: Tenemos ahora que I2(f)= w1f(x1)+ w2f(x2) y se requiere que I2(xi)=I(xi) para i=0,1,2,3.
Esto nos lleva al siguiente sistema nolineal para x1,x2,w1,w2:
Suponiendo que x1, x2 son conocidas, resolvemos la tercera y cuarta ecuacin (que son lineales en los
w's) mediante la regla de Cramer para w1, w2 obteniendo asi que
Sustituyendo estas expresiones en la primera y segunda ecuacin y resolviendo para x1, x2 obtenemos
que
Asi que nuestra frmula numrica en el caso n=2 lee como sigue:
En particular tenemos que L2(x)=(3/2)x2-(1/2) cuyos ceros son 1/3 que fueron los x's que
determinamos en el caso n=2. Tambin
de donde podemos obtener los x's para las frmulas de los casos n=3,4 respectivamente. Teniendo los
x's podemos ahora calcular los w's resolviendo un sistema lineal de ecuaciones.
Ejemplo 2: Aproximamos
usando la regla de cuadrtura con n=2. Primero hacemos un cambio de variables de modo que el
integral sea en el intervalo de [-1,1]. Para esto usamos el cambio de variables discutido al principio de
esta seccin lo que resulta en:
Ejercicios:
1. Trabaje el problema del Ejemplo 1 pero con la frmula de extrapolacin de Richardson que usa
la regla de Simpson. Cul es el orden de convergencia de la frmula de Richardson en este
caso?
2. Utilizando las expresiones para L3 y L4 dadas anteriormente y la subrutina roots de MATLAB,
calcule los x's para las frmulas de cuadrtura Gaussiana con n=3,4. Usando los x's calculados
determine usando MATLAB los pesos w's correspondientes.
3. Usando los resultados obtenidos en esta leccin para los x's y w's en los casos n=1,2 y los
casos n=3,4 del problema 2, escriba una subrutina en MATLAB con secuencia de llamada
compQG(fname,a,b,m,n) que aproxime el integral de la funcin con nombre fname en el
intervalo [a,b] aplicando una regla de cuadrtura de m puntos (1 m 4) en cada uno de n
subintervalos de [a,b] del mismo largo.
Capitulo 7
Ecuaciones Diferenciales Numricas
Problema de Valor Inicial y Mtodo de Euler
Las ecuaciones diferenciales aparecen naturalmente al modelar situaciones fsicas en las ciencias
naturales, ingeniera, y otras disciplinas, donde hay envueltas razones de cambio de una varias
funciones desconocidas con respecto a una varias variables independientes. Estos modelos varan
entre los ms sencillos que envuelven una sola ecuacin diferencial para una funcin desconocida,
hasta otros ms complejos que envuelven sistemas de ecuaciones diferenciales acopladas para varias
funciones desconocidas. Por ejemplo, la ley de enfriamiento de Newton y las leyes mecnicas que
rigen el movimiento de los cuerpos, al ponerse en terminos matemticos dan lugar a ecuaciones
diferenciales. Usualmente estas ecuaciones estan acompaadas de una condicin adicional que
especifica el estado del sistema en un tiempo o posicin inicial. Esto se conoce como la condicin
inicial y junto con la ecuacin diferencial forman lo que se conoce como el problema de valor inicial.
Por lo general, la solucn exacta de un problema de valor inicial es imposible dificil de obtener en
forma analtica. Por tal razn los mtodos numricos se utilizan para aproximar dichas soluciones.
Comenzaremos discutiendo los mtodos para ecuaciones escalares y luego generalizamos los mismos
a sistemas de ecuaciones.
El Mtodo de Euler: Considere el problema de valor inicial para la funcin (desconocida) y(t)
descrito por:
Para cualquier j0, tenemos por el Teorema de Taylor que podemos escribir:
Denotamos ahora por yj una aproximacin de y(tj). Entonces motivado por la aproximacin de arriba
definimos las aproximaciones {yj} por la recursin:
la cual descartamos en la serie de Taylor para obtener las aproximaciones, se llama el error de
truncacin o local del mtodo de Euler y esta intimamente relacionada con la convergencia del
mtodo. De hecho si definimos los errores absolutos por ej=y(tj)-yj, entonces restando la expansin de
Taylor y la formula del mtodo se obtiene que
para alguna constante L, entonces se puede verificar que de la recursin de los errores obtenemos que:
(*)
lo que prueba que el mtodo tiene un orden de convergencia global O(h).
La implementacin en MATLAB del mtodo de Euler es relativamente simple. Hacemos esto
mediante una subrutina llamada feuler que recibe en la secuencia de llamada el nombre de la
subrutina que calcula la funcin f, y los datos t0, b, y0, n. Esta subrutina devuelve dos vectores con las
t's y las y's aproximadas. Veamos:
function [tvals,yvals]=feuler(f,t0,b,y0,n)
h=(b-t0)/n;
tvals=zeros(1,n+1);
yvals=zeros(1,n+1);
http://uprhmate01.upr.clu.edu/~pnm/notas4061/odes1/odes1.htm (2 de 9) [04/08/2002 0:47:40]
index=[0:1:n];
tvals=t0+h*index;
yvals(1)=y0;
for i=2:n+1
yvals(i)=yvals(i-1)+h*feval(f,tvals(i-1),yvals(i-1));
end
Usamos ahora esta subrutina en el siguiente ejemplo.
Ejemplo 1: Considere el problema de valor inicial
cuya solucin exacta es y(t)=(t+1)5e-t. Definimos la siguiente funcin en MATLAB que evala el lado
derecho de la ecuacin diferencial:
function f=etest(t,y);
f=5*y/(t+1)-y;
Ahora resolvemos este problema para n=20 y grficamos la solucin numrica junto con la exacta
para comparar los resultados usando las siguientes instrucciones en MATLAB:
[t,y]=feuler('etest',0,4,1,20);
yy=(t+1).^5.*exp(-t);
plot(t,y,'x',t,yy)
Las soluciones numricas se ilustran en la figura por las "x". Note que las aproximaciones numricas
no coinciden con la solucin exacta y que el error aumenta segn aumenta la "t". Esto es lo usual y no
contradice el estimado del error (*) de arriba donde el error puede crecer hasta exponencial con
respecto al largo del intervalo. Para controlar el error lo primero que se hace es disminuir la h, i.e.,
aumentar la n. Para este ejemplo mostramos los resultados de disminuir h sucesivamente para la
aproximacin de y(4)= 57.2364 a las cifras mostradas. Obtuvimos lo siguiente:
n
yn
y(4)-yn
20
42.4723
14.7640
40
48.3445
8.89186
80
52.2842
4.95215
160
54.6108
2.62556
320
55.8827
1.35365
640
56.5488
0.687527
1280
56.8899
0.346503
2560
57.0624
0.173945
Vemos aqui que definitivamente la aproximacin mejora segn aumenta la "n" pero la convergencia
es bastante lenta. De hecho la aproximacin numrica tiene apenas un error relativo de 3x10-3 para
n=2560, i.e., h=4x10-4. <>
El ejemplo anterior muestra que aunque el mtodo de Euler es convergente segn la "h" tiende a cero,
la convergencia del mtodo puede ser bien lenta requiriendo un "h" excesivamente pequeo para un
error satisfactorio en las aproximaciones. Al usar un "h" excesivamente pequeo en los calculos
podemos tener acumulacin de errores debido a la aritmtica finita similar al fenomeno que
observamos en la diferenciacin numrica. Esta situacin mejora o se puede evitar al considerar
mtodos con un orden de convergencia ms alto como los llamados mtodos Runge-Kutta que
discutimos ms adelante.
Otra nocin bien importante en adicin a la de convergencia de un mtodo numrico es la de
estabilidad absoluta. En este caso la "h" se mantiene fija y nos interesa determinar can sensitivo es el
mtodo numrico a variaciones en la condicin inicial y0.
Ejemplo 2: Considere el problema de valor inicial
cuya solucin exacta es y(t)=0. Resolvemos el mismo problema de valor inicial pero con la condicin
inicial cambiada a y(1)=10-4 y usamos h=0.05 en el mtodo de Euler. La solucin calculada fu como
sigue donde mostramos el valor absoluto de la misma:
Podemos ver que un error inicial de 10-4 produjo un error de ms de 1025 en la aproximacin de y(10).
En este caso calcular con h=0.025 o n=360 aproximadamente, produce resultados satisfactorios. <>
El ejemplo anterior se generaliza a la ecuacin
, donde
. La solucin de este
problema es
para alguna constante C. Estas soluciones son acotadas para todo "t". La
regin de estabilidad absoluta S de un mtodo se define por el conjunto de las "h" tal que las
soluciones numricas sean acotadas al aplicarse al problema prueba
. En el
caso del mtodo de Euler tenemos que al aplicar este al problema prueba, el mtodo reduce a:
, i.e.,
Vemos aqui que las soluciones numricas estan acotadas para todo "j" si y solo si
.
Ejemplo 3: En el Ejemplo 2 donde =-50, el requisito de
implica que
Claramente h=0.05 no cumple con esta condicin mientras que h=0.025 si la satisface. <>
El mtodo de Euler generaliza en forma directa a sistemas de ecuaciones diferenciales. La teoria de
convergencia global y de estabibilidad absoluta que discutimos en el caso de una ecuacin, aplica
palabra por palabra al caso de sistemas. En la subrutina feuler descrita antes solo hay que aadir una
instruccin para determinar el tamao del sistema. Hicimos un cambio tambin para que en lugar de
"n" la subrutina reciba "h". La subrutina queda ahora como:
function [tvals,yvals]=feuler(f,t0,b,y0,h)
n=floor((b-t0)/h)+1;
m=length(y0);
tvals=zeros(1,n+1);
yvals=zeros(m,n+1);
index=[0:1:n];
tvals=t0+h*index;
yvals(:,1)=y0;
for i=2:n+1
yvals(:,i)=yvals(:,i-1)+h*feval(f,tvals(i-1),yvals(:,i-1));
end
Esta subrutina puede ser usada exactamente como antes para el caso de una ecuacin. Veamos un
ejemplo numrico de un sistema de ecuaciones y como lo resolvemos con feuler.
Ejemplo 4: Considere el siguiente modlo simplificado del corazn donde x(t) representa el largo de
una cierta fibra musculo del corazn y s(t) representa un estimulo aplicado:
Aqui y p son parmetros del modlo. El lado derecho del sistema lo evaluamos mediante la
siguiente subrutina en MATLAB:
function f=heart(t,y);
%
% y(1) representa x(t) y y(2) representa s(t)
%
global mheart pheart
f=zeros(2,1);
f(1)=mheart*(-y(2)-y(1)^3/3+pheart*y(1));
f(2)=y(1)/mheart;
Note el uso de la instruccin global que declara las variables mheart y pheart como variables
globales las cuales son accesibles por cualquier rutina o programa con una instruccin global igual.
Usamos las condiciones iniciales x(0)=0, s(0)=-1 y los valores de =0.5 y p=1. Aproximamos la
http://uprhmate01.upr.clu.edu/~pnm/notas4061/odes1/odes1.htm (7 de 9) [04/08/2002 0:47:40]
No comentamos sobre las interpretaciones fsicas de estas graficas pero si mencionamos que el
mtodo de Euler es efectivo en este problema ya que las soluciones no varian muy rapidamente en el
intervalo en cuestin. <>
Para resolver ecuaciones diferenciales de orden mayor de uno hacemos primero un cambio de
coordenadas para convertir la ecuacin dada a un sistema de primer orden. Luego usamos el mtodo
de Euler para sistemas segn descrito arriba.
Ejemplo 5: Considere el problema de valor inicial para la siguiente ecuacin de orden dos:
Este sistema puede resuelto de forma similar al que resolvimos en el Ejemplo 4. <>
Ejercicios:
1. La ecuacin diferencial que modela el proceso de desintegracin de un material radioactvo
esta dada por:
donde k es una constante caracteristica del istopo radioactvo. Para x0=50 y k=0.05 resuelva
este problema de valor inicial en el intervalo [0,10] con h=1,0.1,0.01. Compare sus resultados
con la solucin exacta que es x(t)=50 exp(-0.05t).
a un
2. Convierta la ecuacion diferencial de orden dos dada por
sistema de orden uno. Resuelva el sistema resultante en el intervalo [1,4] si las condiciones
iniciales son x(1)=1/2, x'(1)=-1/2. La solucin exacta en este problema es x(t)=1/(1+t2).
Mtodos Runge-Kutta
Mtodos Runge-Kutta
La convergencia lenta del mtodo de Euler y lo restringido de su regin de estabilidad absoluta nos
lleva a considerar mtodos de orden de convergencia mayor. En clase mencionamos que en cada paso el
mtodo de Euler se mueve a lo largo de la tangente de una cierta curva que esta "cerca" a la curva
desconocida o buscada. Los mtodos Runge-Kutta extienden esta idea geomtrica al utilizar varias
derivadas o tangentes intermedias, en lugar de solo una, para aproximar la funcin desconocida. Los
mtodos Runge-Kutta ms simples se obtienen usando dos de estas derivadas intermedias.
Mtodos Runge-Kutta de dos Evaluaciones: Aqui buscamos mtodos o frmulas numricas de la
forma:
Note que apesar de que en la frmula se perciven tres f's, el mtodo envuelve solo dos evaluaciones ya
que dos de estas f's tienen los mismos argumentos. La idea ahora es determinar los parmetros
de modo que el mtodo tenga orden de convergencia lo ms alto posible. Un anlisis del
error local de esta frmula basado en el Teorema de Taylor muestra que el orden ms alto que puede
tener esta frmula es dos y que esto puede ocurrir si y solo si:
Mtodos Runge-Kutta
Veamos ahora una implementacin en MATLAB del mtodo de Heun. Note que en el ciclo "for"
tenemos exactamente dos evaluaciones de "f". Tenemos pues:
function [tvals,yvals]=heun(f,t0,b,y0,h)
n=floor((b-t0)/h)+1;
m=length(y0);
k1=zeros(1,m);
tvals=zeros(n+1,1);
yvals=zeros(n+1,m);
index=[0:1:n]';
tvals=t0+h*index;
yvals(1,:)=y0;
h2=h/2;
for i=2:n+1
k1=feval(f,tvals(i-1), yvals(i-1,:));
yvals(i,:)=yvals(i-1,:)+h*k1;
yvals(i,:)=yvals(i-1,:)+h2*(k1+feval(f,tvals(i),yvals(i,:));
end
Ejemplo 1: Consideremos aqui las ecuaciones diferenciales que se obtienen de las leyes de Newton
aplicadas al problema de dos cuerpos. Suponemos aqui que uno de los cuerpos es mucho ms masivo
que el otro de modo que su movimiento es descartable, e.g., la tierra y un satlite. Suponemos tambin
que el movimiento es en un plano. Como la fuerza gravitacional es inversamente proporcional a la
distancia entre los cuerpos, tenemos tomando todas las constantes envueltas como uno, que la posicin
(x(t),y(t)) del cuerpo pequeo esta dada por el sistema de ecuaciones diferenciales:
. Debido a que
Mtodos Runge-Kutta
Definimos ahora la siguiente subrutina en MATLAB que evalua el lado derecho de este sistema:
function f=satelite(t,u)
f=zeros(1,4);
denom=(u(1)^2+u(3)^2)^1.5;
f(1)=u(2);
f(2)=-u(1)/denom;
f(3)=u(4);
f(4)=-u(3)/denom;
Ahora calculamos y graficamos la solucin del problema de valor inicial con la siguiente secuencia de
instrucciones en MATLAB. Note que graficamos el conjunto de puntos (x(t),y(t)) para los t's generados
en lugar de (t,x(t)) y (t,y(t)). Tenemos pues:
[t,y]=heun('satelite',0,10,[0.4,0,0.1,2],0.01);
plot(y(:,1),y(:,3))
xlabel('X');ylabel('Y');
title('Solucion particular del problema de dos cuerpos')
Mtodos Runge-Kutta
Note que la curva es efectivamente una elipse aunque esto se acentua en la grfica por que los ejes
tienen unidades de largo distintas. <>
Mtodos Runge-Kutta de ms de dos Evaluaciones: Aunque el mtodo de Heun fu bastante efectivo
en el ejemplo anterior, nos interesa encontrar mtodos de orden an ms alto que no requieran h's muy
pequeas. Vimos aqui que un mtodo Runge-Kutta de dos evaluaciones intermedias genera un mtodo
de orden dos. Es razonable pensar que tres o cuatro evaluaciones intermedias producen mtodos RungeKutta de ordenes tres y cuatro respectivamente. Este el caso pero ya para cinco evaluaciones no
obtenemos necesariamente mtodos Runge-Kutta de orden cinco pero si con seis evaluaciones. Un
ejemplo de un mtodo Runge-Kutta de orden cuatro de cuatro evaluaciones es el llamado mtodo RungeKutta clsico definido por las frmulas:
Mtodos Runge-Kutta
MATLAB cuenta con dos subrutinas intrinsecas para la solucin de problemas de valor inicial: ode23
y ode45. ode23 utiliza una combinacin de un mtodo Runge-Kutta de orden dos con otro de orden
tres. La combinacin de estos mtodos permite el poder estimar el error en la aproximacin numrica en
cada paso y asi la subrutina puede ajustar el largo de paso "h" en forma dinmica para mantener el error
global menor de una tolerancia especificada por el usuario. Estos mtodos se dicen que son adaptativos
de largo de paso variable. La subrutina ode45 es similar a ode23 pero utiliza una combinacin de
mtodos de ordenes cuatro y cinco de cinco y seis evaluaciones respectivamente. La secuencia de
llamada de ambas rutinas es idntica y requiere del nombre de la funcin f, los tiempos inicial y final, la
condicin inicial, la tolerancia para los computos, y un indicador de si la rutina imprime o no los
resultados calculados en la ventana de MATLAB. Normalmente este indicador se toma como cero que
es su valor por omisin. Por ejemplo un computo similar al del Ejemplo 1 lo podemos realizar
remplazando la llamada a Heun por:
[t,y]=ode23('satelite',0,10,[0.4,0,0.1,2],0.0001);
donde la solucin se calcula con un error global de 0.0001. La misma instruccin con ode45 produce la
grfica:
Las esquinas en esta grfica se deben a que como ode45 usa un mtodo de orden mayor, esto le permite
dar pasos ms largos en "t" lo que al graficar produce las esquinas. Este trazado lo podemos mejorar
usando splines cbicos como sigue:
http://uprhmate01.upr.clu.edu/~pnm/notas4061/rungek/rungek.htm (5 de 7) [04/08/2002 0:48:44]
Mtodos Runge-Kutta
[t,y]=ode45('satelite',0,10,[0.4,0,0.1,2],0.0001);
tt=linspace(0,10,200);
xx=spline(t,y(:,1),tt);
yy=spline(t,y(:,3),tt);
plot(xx,yy)
xlabel('X');ylabel('Y');
title('Solucion particular del problema de dos cuerpos con ode45 (grafica con splines)')
lo cual resulta en la mejor grfica:
Ejercicios:
1. Resuelva el siguiente problema de valor inicial usando las subrutinas ode23 o ode45:
Mtodos Runge-Kutta
donde
Examine los efectos en los clculos de la tolerancia especificada por el usuario. Grafique las
soluciones calculadas como funciones de "t" y en el plano x-y.
2. Las ecuaciones de Lorenz estan dadas por el siguiente sistema de ecuaciones diferenciales:
donde s, r, b son parmetros del sistema. Usando ode45 con una tolerancia de 0.000005 resuelva
las ecuaciones de Lorenz para s=10, r=126.52, b=8/3 con las condiciones iniciales x(0)=-7.69,
y(0)=-15.61, z(0)=90.39. Grafique las soluciones calculadas como funciones de t. Grafique las
soluciones x(t), z(t) en el plano x-z. Para los valores de s, r, b dados el sistema de Lorenz posee
lo que se conoce como comportamiento "catico".
Un Vistaso a MATLAB
Un Vistaso a MATLAB
Definiendo Matrices
Si queremos definir la siguiente matriz en MATLAB:
entonces escribimos:
A=[1 2 3 4;5 6 7 8;9 10 11 12;13,14,15,16];
(El simbolo "" denota el prompt de MATLAB y no se escribe al entrar instrucciones). El ";" al final
de la instruccin omite el "eco" o salida a la pantalla. La instruccin
x=4:-1:1
general el vector fila x=[4,3,2,1]. La instruccin
C=A(3:4,1:3);
se refiere a la submatriz
Matrices Especiales
En MATLAB podemos generar matrices especiales con las siguientes instrucciones:
Un Vistaso a MATLAB
La instruccin round(x) redondea "x" al entero ms cercano a "x". Podemos combinar funciones en
MATLAB. Por ejemplo, round(10*rand(4)) genera una matriz con entradas aleatorias entre 0 y 10.
Aritmtica de Matrices
Considere las siguientes matrices:
Entonces las operaciones A*B (producto matricial de A con B), A+B (suma de A mas B), 3*A
(multiplicacin escalar de 3 por A) tienen los siguientes resultados:
A*B
ans =
16 19 13
10 11 7
A+B
??? Error using ==> +
http://uprhmate01.upr.clu.edu/~pnm/notas4061/intro_matlab/index.htm (2 de 10) [04/08/2002 0:49:40]
Un Vistaso a MATLAB
Un Vistaso a MATLAB
ans =
16 25
4 9
eliminacin Gaussiana
forma echelon reducida o mtodo de Gauss-Jordan
mtodo de la inversa
Un Vistaso a MATLAB
flops
lleva a cabo eliminacin Gaussiana en el sistema de arriba y produce como resultado:
ans =
73
esto es, se necesitaron aproximadamente 73 operaciones de punto flotante (sumas, restas,
multiplicaciones divisiones) para resolver el sistema con eliminacin Gaussiana. Para el mtodo de
Gauss-Jordan tenemos:
flops(0)
rref([A b])
ans =
1.0000 0 0 -0.0417
0 1.0000 0 0.4167
0 0 1.0000 0.6250
flops
ans =
483
el cual requiere 483 operaciones de punto flotante. Finalmente el mtodo de la inversa se realiza con
la siguiente sequencia de instrucciones:
flops(0)
x=inv(A)*b
x=
-0.0417
0.4167
0.6250
flops
ans =
108
http://uprhmate01.upr.clu.edu/~pnm/notas4061/intro_matlab/index.htm (5 de 10) [04/08/2002 0:49:40]
Un Vistaso a MATLAB
el cual toma 108 operaciones. Vemos pues que eliminacin Gaussiana es el mejor de los tres mtodos
lo cual es cierto en general.
Usando MATLAB podemos estudiar la relacin entre la solubilidad del sistema Ax=b y la
nosingularidad de la matriz de coeficientes A. En clase vimos que el sistema Ax=b tiene solucin
nica para cualquier lado derecho b si y solo si la matriz A es nosingular. Qu sucede si A es
singular? Entonces Ax=b no tiene solucin? Si A es singular el sistema Ax=b puede tener solucin
para algunos b's pero de seguro hay al menos un b* para el cual Ax=b* no tiene solucin. Vamos a
genera una matriz singular con MATLAB:
A=round(10*rand(6));
A(:,3)=A(:,1:2)*[4 3]'
A=
2 5 23 9 7 3
0 8 24 8 9 6
7 0 28 5 8 8
7 1 31 1 3 10
9 5 51 7 0 4
4 7 37 4 7 2
(Como usamos la instruccin rand, el resultado de esta y cualquier secuencia de instrucciones que use
esta funcin de MATLAB, no siempre ser el mismo). La primera instruccin genera una matriz
aleatoria con entradas enteras entre 0 y 10, y con la segunda instruccin remplazamos la tercera
columna de A con cuatro veces la primera columna mas tres veces la segunda columna. La matriz
resultante es singular! (Explique esto sin calcular el determinante). Generamos ahora un lado derecho
arbitrario mediante la instruccin:
b=round(20*(rand(6,1)-0.5))
b=
10
4
5
3
-9
3
Esto genera una matriz 61 aleatoria con entradas enteras entre -10 y 10. Resolvemos el sistema Ax=b
calculando la forma echelon reducida de la matriz de coeficientes aumentada [A b]:
Un Vistaso a MATLAB
rref([A b])
ans =
1040000
0130000
0001000
0000100
0000010
0000001
donde x3 es arbitrario.
Funciones de Matrices
MATLAB posee una gran cantidad de funciones matriciales. De las ms comunes tenenmos:
Un Vistaso a MATLAB
det(A) - el determinante de A
inv(A) - la matriz inversa de A
Grficas
MATLAB provee excelentes funciones para grficas en dos, tres y cuatro dimensiones. Veamos un
par de ejemplos sencillos. Suponga que queremos trazar la grfica de la funcin
La primera instruccin divide el intervalo [-5,5] en subintervalos de largo 0.1, la segunda instruccin
evala la funcin en los puntos de la particin, y finalmente graficamos los resultados con plot. La
http://uprhmate01.upr.clu.edu/~pnm/notas4061/intro_matlab/index.htm (8 de 10) [04/08/2002 0:49:40]
Un Vistaso a MATLAB
instruccin plot tiene opciones para cambiar patrones del trazado, poner titulos, etc.
Supongamos ahora que queremos dibujar la superficie:
Las primeras dos instrucciones dividen los ejes de "x" y "y" en subintervalos de largo 0.4; la tercera
instruccin genera una rejilla en el conjunto [-5,5][-5,5] con cuadraditos de lados 0.4 como se ilustra
en la siguiente figura:
Un Vistaso a MATLAB
La cuarta instruccin evalua la funcin en los puntos de la rejilla, y finalmente trazamos la superficie
con surf.
Referencias
1. MATLAB User's Guide, The MathWorks, Inc., Massachusetts, 1995.
2. The MATLAB Handbook, E. Part-Enander, A. Sjoberg, B. Melin, and P. Isaksson, AddisonWesley, New York, 1996.