Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Analisis Numerico Basico
Analisis Numerico Basico
Prefacio
Esta obra es una contribucin dedicada a los estudiantes que toman un curso de Anlisis
Numrico en las carreras de ingeniera en la ESPOL. El pre-requisito es haber tomado los
cursos de matemticas del ciclo bsico de nivel universitario y alguna experiencia previa con
el programa MATLAB para aprovechar el poder de este instrumento computacional y aplicar
los mtodos numricos de manera efectiva.
El contenido se basa en la experiencia desarrollada en varios aos impartiendo los cursos
de Anlisis Numrico y Mtodos Numricos en las carreras de ingeniera, sin embargo esta
obra solo pretende ser un texto complementario para estas materias. La orientacin principal
del material es su aplicacin computacional, sin descuidar los conceptos matemticos
bsicos con los que se fundamentan los mtodos numricos.
Este texto contribuye tambin a difundir entre los estudiantes el uso del programa MATLAB
para clculos, graficacin y manejo matemtico simblico para integrarlo como un soporte
comn para todos los cursos bsicos matemticos, incluyendo lgebra Lineal, Clculo
Diferencial e Integral, Ecuaciones Diferenciales, Anlisis Numrico y otros.
MATLAB dispone de un amplio repertorio de funciones especiales para su aplicacin
inmediata en la solucin de una gran cantidad de problemas matemticos, sin embargo
sera equivocado usarlas como una receta sin el conocimiento de sus fundamentos
matemticos. En este curso se desarrollan algunas funciones alternativas a las que ofrece
MATLAB, y en algunos casos, nuevas funciones cuya programacin es instructiva para
orientar a los estudiantes en el desarrollo de software para matemticas e ingeniera.
El segundo objetivo principal de esta obra es contribuir al desarrollo de textos virtuales en la
ESPOL de tal manera que puedan ser usados en lnea e interactivamente, aunque tambin
puedan imprimirse, pero tratando de reducir al mnimo el uso de papel. Otra ventaja
importante de los textos virtuales es que pueden ser actualizados y mejorados
continuamente sin costos de impresin. El texto ha sido compilado en formato pdf. En un
texto digital, se puede controlar el tamao de la pantalla y se puede agregar un ndice
electrnico para facilitar la bsqueda de temas. Se pueden usar facilidades para resaltar y
marcar texto, agregar comentarios, notas, enlaces, revisiones, bsqueda por contenido, etc.
Adjunto a este libro digital se provee un documento en formato de texto copiable con todas
las funciones instrumentadas en MATLAB desarrolladas en este documento, de tal manera
que los usuarios puedan tomarlas y pegarlas en la ventana de edicin de MATLAB,
probarlas inmediatamente y posteriormente realizar cambios y mejoras en las mismas.
Esta obra es de uso y distribucin libres y est disponible para uso pblico en el sitio del
Departamento de Matemticas en la pgina web de la ESPOL: www.espol.edu.ec
CONTENIDO
1
Introduccin
1.1
Resolucin de problemas con el computador
1.2
Fuentes de error en la resolucin de un problema numrico
1.3
El modelo matemtico
1.4
Algoritmos numricos
1.5
Instrumentacin computacional
1.6
Un ejemplo inicial
1.7
Preguntas
8
8
9
9
10
10
11
13
14
14
17
17
18
19
19
20
20
21
23
24
25
27
29
31
33
34
34
34
35
36
37
38
40
40
41
42
42
46
47
47
48
50
52
53
57
62
63
65
70
70
4
3.5.2
3.5.3
3.5.4
3.5.5
3.5.6
3.5.7
3.5.8
71
71
73
74
77
78
80
130
130
130
132
133
133
134
136
5
5.2
5.3
5.4
5.5
5.6
5.7
5.8
5.9
6
Mtodo de Gauss-Seidel
5.2.1
Formulacin matemtica
5.2.2
Manejo computacional de la frmula de Gauss-Seidel
5.2.3
Instrumentacin computacional del mtodo de Gauss-Seidel
5.2.4
Forma matricial del mtodo de Gauss-Seidel
Mtodo de relajacin
5.3.1
Formulacin matemtica
5.3.2
Manejo computacional de la frmula de relajacin
5.3.3
Forma matricial del mtodo de relajacin
Convergencia de los mtodos iterativos para sistemas lineales
5.4.1
Matriz de transicin para los mtodos iterativos
Eficiencia de los mtodos iterativos
Estimacin del error en los mtodos iterativos
Instrumentacin computacional del mtodo de Jacobi con el radio
espectral
Prctica computacional con los mtodos iterativos
Ejercicios y problemas con sistemas de ecuaciones lineales
137
137
138
139
140
141
141
142
142
144
145
149
149
150
151
157
Interpolacin
166
6.1
El polinomio de interpolacin
166
6.1.1
Existencia del polinomio de interpolacin
167
6.1.2
Unicidad del polinomio de interpolacin con diferentes mtodos 169
6.2
El polinomio de interpolacin de Lagrange
169
6.2.1
Algoritmo del polinomio de interpolacin de Lagrange
170
6.2.2
Eficiencia del mtodo de Lagrange
172
6.2.3
Instrumentacin computacional del mtodo de Lagrange
172
6.3
Interpolacin mltiple
174
6.3.1
Instrumentacin computacional para dos variables
176
6.4
Error en la interpolacin
177
6.4.1
Una frmula para aproximar el error en la interpolacin
179
6.5
Diferencias finitas
180
6.5.1
Relacin entre derivadas y diferencias finitas
181
6.5.2
Diferencias finitas de un polinomio
182
6.6
El polinomio de interpolacin de diferencias finitas
184
6.6.1
Prctica computacional
186
6.6.2
Eficiencia del polinomio de interpolacin de diferencias finitas
187
6.6.3
El error en el polinomio de interpolacin de diferencias finitas
189
6.6.4
Forma estndar del polinomio de diferencias finitas
191
6.6.5
Otras formas del polinomio de interpolacin de diferencias finitas 193
6.7
El polinomio de interpolacin de diferencias divididas
193
6.7.1
El error en el polinomio de interpolacin de diferencias divididas 196
6.8
El polinomio de mnimos cuadrados
197
6.8.1
Prctica computacional
200
6.9
Ejercicios y problemas con el polinomio de interpolacin
201
6.10
El trazador cbico
205
6.10.1 El trazador cbico natural
206
6.10.2 Algoritmo del trazador cbico natural
209
6.10.3 Instrumentacin computacional del trazador cbico natural
211
6.10.4 El trazador cbico sujeto
214
6.10.5 Algoritmo del trazador cbico sujeto
216
6.10.6 Instrumentacin computacional del trazador cbico sujeto
217
6.10.7 Ejercicios con el trazador cbico
221
6
7
Integracin numrica
7.1
Frmulas de Newton-Cotes
7.1.1
Frmula de los trapecios
7.1.2
Error de truncamiento en la frmula de los trapecios
7.1.3
Instrumentacin computacional de la frmula de los trapecios
7.1.4
Frmula de Simpson
7.1.5
Error de truncamiento en la frmula de Simpson
7.1.6
Instrumentacin computacional de la frmula de Simpson
7.1.7
Error de truncamiento vs. Error de redondeo
7.2
Obtencin de frmulas de integracin numrica con el mtodo de
coeficientes indeterminados
7.3
Cuadratura de Gauss
7.3.1
Frmula de la cuadratura de Gauss con dos puntos
7.3.2
Instrumentacin computacional de la cuadratura de Gauss
7.3.3
Instrumentacin extendida de la cuadratura de Gauss
7.4
Integrales con lmites no acotados
7.5
Integrales con rango no acotado
7.6
Integrales mltiples
7.6.1
Instrumentacin computacional de la frmula de Simpson en
dos direcciones
7.7
Casos especiales
7.7.1
Integrales dobles con lmites variables
7.7.2
Integrales dobles con puntos singulares
7.7.3
Integrales dobles con puntos singulares y lmites variables
7.8
Ejercicios y problemas de integracin numrica
Diferenciacin numrica
8.1
Obtencin de frmulas de diferenciacin numrica
8.2
Una frmula para la primera derivada
8.3
Una frmula de segundo orden para la primera derivada
8.4
Una frmula para la segunda derivada
8.5
Obtencin de frmulas de diferenciacin numrica con el mtodo
de coeficientes indeterminados
8.6
Algunas otras frmulas de inters para evaluar derivadas
8.7
Extrapolacin para diferenciacin numrica
8.8
Ejercicios de diferenciacin numrica
222
223
223
225
229
231
232
234
235
237
238
238
241
242
243
244
246
248
250
250
251
251
252
258
258
258
260
262
262
263
264
265
7
9.2
9.3
9.4
9.5
9.6
9.7
9.7
10
289
289
291
292
294
295
297
298
300
300
300
302
305
307
308
311
312
312
314
315
316
319
319
320
321
323
325
327
329
331
331
333
336
337
338
341
346
346
349
353
Bibliografa
355
ANLISIS NUMRICO
Un enfoque algortmico con el soporte de MATLAB
1
INTRODUCCIN
1.1
Suponer un problema que debemos resolver y que est en nuestro mbito de conocimiento.
En la etapa de Anlisis es necesario estudiar y entender el problema. Sus caractersticas,
las variables y los procesos que intervienen. Asimismo, debemos conocer los datos
requeridos y el objetivo esperado. En el caso de problemas de tipo numrico, el resultado de
esta etapa ser un modelo matemtico que caracteriza al problema. Por ejemplo, un
sistema de ecuaciones lineales.
En la etapa de Diseo procedemos a elegir el mtodo numrico apropiado para resolver el
modelo matemtico. Debe suponerse que no se puede, o que sera muy laborioso, obtener
la solucin exacta mediante mtodos analticos. Los mtodos numricos permiten obtener
soluciones aproximadas con simplicidad. El resultado de esta etapa es la formulacin
matemtica del mtodo numrico y la elaboracin de un algoritmo para usarlo.
9
En la etapa de Instrumentacin elegimos el dispositivo de clculo para la obtencin de
resultados. En problemas simples, basta una calculadora. Para problemas complejos,
requerimos el computador mediante funciones predefinidas y en algunos casos,
desarrollando programas y funciones en un lenguaje computacional. Esta ltima opcin es
importante para la comprensin de los mtodos.
Este proceso debe complementarse con una revisin y retroalimentacin. Es preferible
invertir ms tiempo en las primeras etapas, antes de llegar a la instrumentacin.
1.2
1.3
El modelo matemtico
10
1.4
Algoritmos numricos
1.5
Instrumentacin computacional
En este curso se usar MATLAB para instrumentar los algoritmos correspondientes a los
mtodos numricos estudiados. La aplicacin computacional puede realizarse usando
directamente la funcionalidad disponible en el lenguaje, sin embargo para comprender y
aplicar los mtodos numricos es preferible instrumentar el algoritmo construyendo
funciones en el lenguaje computacional y tratando de que sean independientes de los datos
especficos de un problema particular, facilitando as su reutilizacin. Estas funciones
pueden llamarse desde la ventana de comandos o mediante un programa que contiene los
datos del problema que se desea resolver. Se supondr que los estudiantes tienen el
conocimiento bsico del lenguaje y del entorno de MATLAB.
11
1.6
Un ejemplo inicial
Anlisis
Para formular el modelo matemtico el problema debe entenderse detalladamente. En este
ejemplo un dibujo facilita su elaboracin.
Sea:
x: medida del lado de los cuadrados que se deben recortar para formar la caja
Volumen:
Ecuacin:
El modelo matemtico es una ecuacin polinmica de tercer grado que no se puede resolver
directamente con la conocida frmula de la ecuacin cuadrtica, por lo tanto se utilizar un
mtodo numrico.
12
Algoritmo
No es necesario construir un algoritmo pues los clculos sern realizados directamente en la
ventana de comandos de MATLAB usando la funcionalidad disponible en el lenguaje
Instrumentacin
Definicin de la ecuacin (se escribe como una expresin entre comillas simples)
>> f='250-192*x+28*x^2-x^3';
Grfico de la ecuacin con el comando EZPLOT:
>> ezplot(f,[0,20]),grid on
300
200
100
0
-100
-200
-300
-400
0
10
x
12
14
16
18
20
8.0932,
15.8136,
7.8136
13
1.7
Preguntas
14
2
Existen dos estrategias para disear mtodos numricos y es importante conocer sus
caractersticas para elegirlos adecuadamente, as como su instrumentacin computacional
2.1
Mtodos iterativos
15
Algoritmo
Algoritmo: Raz cuadrada
Entra: n
Dato
E
Error permitido
x
Valor inicial
Sale: y
Respuesta calculada con error E
1
n
y (x + )
2
x
Repetir mientras |x - y| > E
xy
1
n
y (x + )
2
x
Fin
Ejemplo. Calcular r =
16
El ltimo resultado tiene quince dgitos decimales que no cambian, por lo tanto podemos
suponer que la respuesta tiene esa precisin. Se observa la rpida convergencia de la
sucesin de nmeros generad. Sin embargo es necesario verificar si la solucin es
aceptable pues si los nmeros convergen a un valor, no necesariamente es la respuesta
correcta
>> y^2
ans =
7.00000000000000
Se comprueba que el ltimo valor calculado es la raz cuadrada de 7
Ejemplo. Calcular r = 7 con la siguiente frmula iterativa:
n
=
y 0.4(x + )
x
>> n=7;
>> x=3;
>> y=0.4*(x+n/x)
y=
2.133333333333334
>> x=y;
>> y=0.4*(x+n/x)
y=
2.165833333333333
>> x=y;
>> y=0.4*(x+n/x)
y=
2.159138258304477
>> x=y;
>> y=0.4*(x+n/x)
y=
2.160468969251076
>> x=y;
>> y=0.4*(x+n/x)
y=
2.160202499208563
.
.
.
>> x=y;
>> y=0.4*(x+n/x)
y=
2.160246899469289
>> x=y;
>> y=0.4*(x+n/x)
17
y=
2.160246899469287
>> x=y;
>> y=0.4*(x+n/x)
y=
2.160246899469287
>> y^2
ans =
4.66666666666666
La frmula converge pero el resultado final no es la raz cuadrada de 7. Esto plantea la
importancia de verificar la formulacin del mtodo numrico y la validacin de la
respuesta obtenida.
En general, los mtodos numricos se enfocan a resolver una clase o tipo de problemas. El
ejemplo anterior es un caso particular del problema general: la solucin de ecuaciones no
lineales f(x)=0
2.1.1
(valor desconocido)
(valor aproximado)
.
2.1.2
Error de truncamiento
La distancia entre la respuesta esperada y el valor calculado con una frmula iterativa se
denomina error de truncamiento.
Definicin: Error de truncamiento
Sean
18
2.1.3
convergencia
Definicin: Criterio para finalizar un proceso iterativo (error absoluto)
Sea E algn valor positivo arbitrariamente pequeo.
Si el mtodo converge, se cumplir que a partir de alguna iteracin i:
|xi+1 - xi| < E
.
Este valor E es el error absoluto y se usa como una medida para el error de la respuesta
calculada.
La precisin utilizada en los clculos aritmticos, debe ser coherente con la precisin del
mtodo numrico y con los exactitud del modelo matemtico y de los datos utilizados.
Adicionalmente, es necesario verificar que la respuesta final sea vlida para el modelo
matemtico y aceptable para el problema que se est resolviendo.
Ejemplo. Se desea que la respuesta calculada para un problema con un mtodo iterativo
tenga un error absoluto menor que 0.0001. Entonces el algoritmo deber terminar cuando
se cumpla que |xi+1 - xi| < 0.0001. Los clculos deben realizarse al menos con la misma
precisin.
Para que el criterio del error sea independiente de la magnitud del resultado, conviene usar
la definicin del error relativo:
Definicin: Criterio para finalizar un proceso iterativo (error relativo)
Sea e algn valor positivo arbitrariamente pequeo.
Si el mtodo converge, se cumplir que a partir de alguna iteracin i:
| xi+ 1 xi |
.
<e
| xi+ 1 |
19
Este valor e es el error relativo y puede usarse como una medida para el error de la
respuesta calculada, independiente de la magnitud. Para calcular el error relativo se toma el
ltimo valor como el ms cercano a la respuesta.
Ejemplo. Se desea que la respuesta calculada para un problema con un mtodo iterativo
tenga un error relativo menor que 0.1%. Entonces el algoritmo deber terminar cuando se
cumpla que
| xi+ 1 xi |
< 0.001
| xi+ 1 |
Tambin debera distinguirse entre error y precisin.
Ejemplo. Si el error es 1%, la precisin es 99%.
2.1.4
2.1.5
20
Definicin: Orden de convergencia de un mtodo iterativo
Sean Ei , Ei+1 los errores en las iteraciones consecutivas i, i + 1 respectivamente
Si se pueden relacionar estos errores en la forma:
Ei+ 1 = O(Ein )
2.1.6
Los mtodos iterativos normalmente requieren que el valor inicial sea elegido
apropiadamente. Si es elegido al azar, puede ocurrir que no se produzca la convergencia.
Si el problema es simple, mediante algn anlisis previo puede definirse una regin de
convergencia tal que si el valor inicial y los valores calculados en cada iteracin
permanecen en esta regin, el mtodo converge.
2.1.7
Preguntas
21
2.2
Mtodos directos
Son procedimientos para obtener resultados realizando una secuencia finita de operaciones
aritmticas. La cantidad de clculos aritmticos depende del tamao del problema. El
resultado obtenido ser exacto siempre que se puedan conservar en forma exacta los
valores calculados en las operaciones aritmticas, caso contrario se introducirn los errores
de redondeo.
Ejemplo. Instrumentar un mtodo directo para resolver un sistema triangular inferior de
ecuaciones lineales.
Modelo matemtico
a1,1x1
a2,1x1 + a2,2x2
a3,1x1 + a3,2x2 + a3,3x3
....
an,1x1 + an,2x2 + ax,3x3 + . . . + an,nxn
En donde:
= b1
= b2
= b3
= bn
1
a2,2
1
a3,3
(b2 - a2,1x1)
(b3 - a3,1x1 - a3,2x2)
...
En general:
xi =
1
(bi - ai,1x1 - ai,2x2 - . . . - ai,i-1xi-1), i = 2, 3, . . . , n, ai,i 0
ai,i
22
Algoritmo
Algoritmo: Triangular
Entra: n:
Nmero de ecuaciones
ai,j
Coeficientes
bi
Constantes
Solucin calculada
Sale: xi
Para i = 1, 2, . . ., n
s 0;
Para j = 1, 2, . . ., i-1
s s + ai,jxj
Fin
xi (bi s)/ai,i
Fin
Este algoritmo es un caso particular del problema general: sistema de n ecuaciones lineales.
Los mtodos numricos normalmente se desarrollan para resolver una clase o tipo general
de problemas. La instrumentacin puede hacerse mediante un programa, pero es ms
conveniente definirlo como una funcin en MATLAB para estandarizar la entrada y salida de
variables.
Instrumentacin computacional
La instrumentacin del mtodo numrico del ejemplo anterior se har mediante una funcin
en MATLAB. Para que la instrumentacin sea general es preferible que el mtodo numrico
sea independiente de los datos de un problema particular.
El nombre para la funcin ser triangular. La funcin recibir como datos la matriz de
coeficientes a y el vector de constantes b y producir como resultado el vector solucin v
(vector columna)
function x = triangular(a, b)
n = length(b);
for i = 1: n
s = 0;
for j = 1: i-1
s = s + a(i,j)*x(j);
end
x(i) = (b(i) - s)/a(i,i);
end
x=x';
23
Ejemplo. Escribir los comandos para resolver un problema usando la funcin anterior
=2
3x1
7x1 + 5x2
=3
8x1 + 2x2 + 9x3 = 6
>> a = [3 0 0; 7 5 0; 8 2 9]
>> b = [2; 3; 6]
>> x = triangular(a, b)
x=
0.6667
-0.3333
0.1481
Definir la matriz
Definir el vector de constantes
Uso de la funcin
2.2.1
Error de redondeo
Los mtodos numricos operan con datos que pueden ser inexactos y con dispositivos para
representar a los nmeros reales. El error de redondeo se atribuye a la imposibilidad de
almacenar todas las cifras de estos nmeros y a la imprecisin de los instrumentos de
medicin con los cuales se obtienen los datos.
Definicin: Error de redondeo absoluto
Sean
X: Valor exacto
(normalmente desconocido)
E=X X
Error de redondeo
X: Valor exacto
(normalmente desconocido)
24
Debido a que normalmente no es posible calcular exactamente el valor de E, se debe
intentar al menos acotar su valor. A diferencia del error de truncamiento, se dispone
solamente de un resultado para estimar el error de redondeo.
2.2.2
X = 0.5367x10
El error de redondeo por la limitacin del dispositivo de almacenamiento es
E = 0.00008x103 = 0.8x103 - 4 = 0.8x10-1
max(| E |) 1 10nm
10 10 m (Solo depende del almacenamiento)
=n =
min(| X |) 0.1 10
25
2.2.3
En los mtodos directos debe considerarse el error que se propaga en las operaciones
aritmticas, el cual puede ser significativo cuando la cantidad de clculos requeridos es
grande. A continuacin se analizan la suma y el producto
a) Error de redondeo en la suma
Sean
X, Y : Valores exactos
X , Y : Valores aproximados
=
eX + Y
EX + Y EX + EY
EX
EY
=
=
+
X+Y
X+Y
X+Y X+Y
X
EX
X+Y X
X
X+Y
| eX + Y | |
| eX + Y | |
ex +
Y
X+Y
EX
X+Y
X
X+Y
EY
X+Y Y
|+|
eY
EY
X+Y
ex | + |
Y
X+Y
|
eY |
EX Y EX EY
EX
EY
=
=
XY
XY
XY XY
26
| eX Y | |
| eX Y | |
EX
XY
X
XY
|+|
EY
XY
ex | + |
Y
XY
|
eY |
P= X Y
e XY
= ex + eY
| e XY | | e x | + |e Y |
En general, si los valores de los operandos tienen ambos el mismo signo se puede concluir
que la operacin aritmtica de multiplicacin puede propagar ms error de redondeo que la
suma. Adicionalmente, si el resultado de cada operacin aritmtica debe almacenarse, hay
que agregar el error de redondeo debido a la limitacin del dispositivo de almacenamiento.
27
2.2.4
Ejemplos de aplicacin
1) Error de redondeo en mediciones
La velocidad de una partcula es constante e igual a 4 m/s, medida con un error de 0.1 m/s
durante un tiempo de recorrido de 5 seg. medido con error de 0.1 seg. Determine el error
absoluto y el error relativo en el valor de la distancia recorrida.
v = 4, Ev = 0.1
t = 5, Et = 0.1
d = vt
(velocidad)
(tiempo)
(distancia recorrida)
(Error absoluto)
Ev
v
Et
t
0.1 0.1
+
= 0.045 = 4.5%
4
5
(Error relativo)
(Errores relativos)
| eX Y
EX Y EX EY
EX
EY
=
=
XY
XY
XY XY
EX
E
| |
|+| Y |
XY
XY
0.05
0.05
| |
|+|
| 0.3333 =33.33%
578.1 577.8
578.1 577.8
El aumento en la cota del error en el resultado es muy significativo con respecto a los
operandos. Se concluye que se debe evitar restar nmeros cuya magnitud sea muy
cercana pues el cociente al ser muy pequeo, har que el error relative sea significativo.
Adicionalmente habra que aumentar el efecto del error de redondeo al almacenar el
resultado.
28
3) Suma de nmeros de diferente magnitud
Es suficiente considerar tres nmeros: X, Y, Z. Suponer por simplicidad que los datos son
valores positivos exactos, por lo tanto eX = 0, eY = 0, ez = 0
S = X + Y + Z, con
X>Y>Z
X
X+Y
e=
(X + Y) + Z
eX +
Y
X+Y
X+Y
X+Y+Z
e Y + r1 = r1
eX + Y +
(X + Y)r1 + (X + Y + Z)r2
Z
X+Y
e Z + r2
r1 + r2
=
=
X+Y+Z
X+Y+Z
X+Y+Z
(2X + 2Y + Z)10 10 m
X+Y+Z
(2Z + 2Y + X)10 10 m
Z+Y+X
Si X > Z , se puede concluir que la suma de los nmeros debe realizarse comenzando con
los nmeros de menor magnitud, pues la cota del error ser menor.
29
2.2.5
30
La suma est incluida en una repeticin doble. La variable i, cambia n veces y para cada
uno de sus valores, la variable j cambia n veces. Por lo tanto.
T(n) = n2
Ejemplo. El siguiente algoritmo es una modificacin del anterior. Suponga que se desea
sumar nicamente los elementos de la sub-matriz triangular superior. Obtener T(n)
...
s0
Para i=1, 2, ..., n
Para j=i, i+1, ..., n
s s + ai, j
fin
fin
...
Si no es evidente la forma de T(n), se puede recorrer el algoritmo y anotar la cantidad de
sumas que se realizan
i
j
1
n
2
n-1
3
n-2
...
...
n-1
2
n
1
Entonces, T(n) = 1 + 2 + .... + n =
n
n2 n
(n + 1) =
+
2
2 2
31
2.2.6
La notacin O( )
Supongamos que para resolver un problema se han diseado dos algoritmos: A y B, con
eficiencias TA(n) = 10n+2, TB(n) = 2n2 + 3, respectivamente. Cual algoritmo es ms
eficiente?.
Para valores pequeos de n, TB(n) < TA(n), pero para valores grandes de n, TA(n) < TB(n).
Es de inters prctico determinar la eficiencia de los algoritmos para valores grandes de n,
por lo tanto el algoritmo A es ms eficiente que el algoritmo B como se puede observar en el
grfico:
Si T(n) incluye trminos con n que tienen diferente orden, es suficiente considerar el trmino
de mayor orden pues es el que determina la eficiencia del algoritmo cuando n es grande.
No es necesario incluir los coeficientes y las constantes.
Ejemplo. Suponga T(n) = n2 + n + 10. Evaluar T para algunos valores de n
T(2)
= 4 + 2 + 10
T(5)
= 25 + 5 + 10
T(20) = 400 + 20 + 10
T(100) = 10000 + 100 + 10
Se observa que a medida que n crece, T depende principalmente de n2. Este hecho se
puede expresar usando la notacin O( ) la cual indica el orden de la eficiencia del
algoritmo, y se puede escribir: T(n) = O(n2) lo cual significa que la eficiencia es
proporcional a n2, y se dice que el algoritmo tiene eficiencia cuadrtica o de segundo orden.
En general, dado un problema de tamao n, la medida de la eficiencia T(n) de un algoritmo
se puede expresar con la notacin O(g(n)) siendo g(n) alguna expresin tal como: n, n2, n3,
..., log(n), n log(n), ..., 2n, n!, ... la cual expresa el orden de la cantidad de operaciones
aritmticas que requiere el algoritmo.
32
Es de inters medir la eficiencia de los algoritmos para problemas de tamao grande, pues
para estos valores de n se debe conocer la eficiencia. En el siguiente cuadro se ha tabulado
T(n) con algunos valores de n y para algunas funciones tpicas g(n).
Tabulacin de T(n) con algunos valores de n para algunas funciones tpicas g(n)
n [log(n)] n [n log(n)]
1
3
5
7
9
11
13
15
17
19
21
23
25
50
100
0
1
1
1
2
2
2
2
2
2
3
3
3
3
4
1
3
5
7
9
11
13
15
17
19
21
23
25
50
100
0
1
1
3
9
27
8
25
125
13
49
343
19
81
729
26
121
1331
33
169
2197
40
225
3375
48
289
4913
55
361
6859
63
441
9261
72
529
12167
80
625
15625
195 2500 125000
460 10000 1000000
2
8
32
128
512
2048
8192
32768
5
1.31x10
5
5.24x10
6
2.09x10
6
8.38x10
7
3.35x10
15
1.12x10
30
1.26x10
n!
1
6
120
5040
5
3.62x10
7
3.99x10
9
6.22x10
12
1.30x10
14
3.55x10
17
1.21x10
19
5.10x10
22
2.58x10
25
1.55x10
64
3.04x10
157
9.33x10
Los algoritmos en las dos ltimas columnas son de tipo exponencial y factorial
respectivamente. Se puede observar que an con valores relativamente pequeos de n el
valor de T(n) es extremadamente alto. Los algoritmos con este tipo de eficiencia se
denominan no-factibles pues ningn computador actual pudiera calcular la solucin en un
tiempo aceptable para valores de n grandes.
La mayora de los algoritmos que corresponden a los mtodos numricos son de tipo
polinomial con g(n) = n, n2, n3
.
33
2.2.7
Ejercicios
34
3
Sea f: RR. Dada la ecuacin f(x) = 0, se debe encontrar un valor real r tal que f(r) = 0.
Entonces r es una raz real de la ecuacin
Si no es posible obtener la raz directamente, entonces se debe recurrir a los mtodos
numricos iterativos para calcular r en forma aproximada con alguna precisin controlada.
Se han creado muchos mtodos numricos para resolver este problema clsico, pero con el
uso de computadoras para el clculo, conviene revisar solamente algunos de estos mtodos
que tengan caractersticas significativamente diferentes.
3.1
Mtodo de la biseccin
Sea f: RR. Suponer que f es continua en [a, b], y que adems f(a) y f(b) tienen signos
diferentes.
3.1.1. Existencia de la raz real
Si una funcin f es continua en un intervalo [a, b] y f(a) tiene signo diferente que f(b),
entonces existe por lo menos un punto r en (a, b) tal que f(r)=0. Si adems f'(x) no cambia
de signo en el intervalo [a, b], entonces la solucin es nica.
La validez de esta proposicin se basa en el Teorema del Valor Intermedio.
35
En la figura se puede observar que luego de haber calculado c, para la siguiente iteracin
debe sustituirse el intervalo [a, b] por [c, b] debido a que f(a) y f(c) tienen igual signo y por
lo tanto la raz estar en el intervalo [c, b]
3.1.2
Sean
El mtodo de la biseccin genera a partir de [a, b] una sucesin de intervalos [a1, b1], [a2,
b2], , [ai, bi] tales que a a1 a2 ai constituyen una sucesin creciente y b b1 b2
, bi una sucesin decreciente con ai < bi. Adems por definicin del mtodo: ci, r [ai,
bi] en cada iteracin i
Sean
Entonces
d
0 di 0 ai bi ci r i>0 | ci r |< E para algn valor positivo E
2i
i
i
i
i
Suponer que se desea que el ltimo valor calculado ci tenga error E = 0.001, entonces si el
algoritmo termina cuando bi ai < E, se cumplir que |ci r| < E y ci ser una
aproximacin para r con un error menor que 0.0001
Se puede predecir el nmero de iteraciones que se deben realizar con el mtodo de la
Biseccin para obtener la respuesta con error permitido E:
En la iteracin i:
Se desea terminar cuando:
Entonces se debe cumplir
De donde se obtiene:
di = d/2i
di < E
d/2i < E
log(d / E)
i>
log(2)
36
Ejemplo. La ecuacin f(x) = x ex - = 0 tiene una raz real en el intervalo [0, 2]. Determine
cuantas iteraciones deben realizarse con el mtodo de la biseccin para obtener un
resultado con error E=0.0001. Por simple inspeccin f(0) < 0, f(2) > 0 y f es contnua en
[0, 2]
El nmero de iteraciones que debern realizarse es:
i > log(2/0.0001)/log(2) i >14.287 15 iteraciones
3.1.3
8 iteraciones
37
Tabulacin de los clculos para obtener la raz con el mtodo de la Biseccin
iteracin
inicio
1
2
3
4
5
6
7
8
a
0
1
1
1
1
1.0625
1.0625
1.0625
1.0703
b
2
2
1.5
1.25
1.125
1.125
1.0938
1.0781
1.0781
c
1
1.5
1.25
1.125
1.0625
1.0938
1.0781
1.0703
1.0742
sign(f(a))
-
sign(f(c))
+
+
+
+
+
-
En la octava iteracin:
b a = 1.0781-1.0703 = 0.0078 |r c|<0.01
r = 1.074 con error menor que 0.01
En la ltima iteracin se observa que el intervalo que contiene a la raz se ha reducido a
[1.0703, 1.0781], por lo tanto el ltimo valor calculado de c = 1.074 debe estar cerca de r
con una distancia menor que 0.01
3.1.4
Suponer el caso ms desfavorable, en el que r est muy cerca de uno de los extremos del
intervalo [a, b]:
Sean
Ei = r ci :
error en la iteracin i
En cada iteracin la magnitud del error se reduce en no ms de la mitad respecto del error
en la iteracin anterior: Ei+1 0.5 Ei . Esta es una relacin lineal. Con la notacin O( ) se
puede escribir Ei+1 = O(Ei ) . Entonces, el mtodo de la Biseccin tiene convergencia lineal o
de primer orden y su factor de convergencia es 0.5 aproximadamente.
38
3.1.5
Calcular una raz r real de la ecuacin f(x) = 0. f es contnua en un intervalo [a, b] tal que
f(a) y f(b) tienen signos diferentes
Para instrumentar el algoritmo de este mtodo se escribir una funcin en MATLAB. El
nombre ser biseccin. Recibir como parmetros f, a, b, y entregar c como aproximacin
a la raz r.
Criterio para salir: Terminar cuando la longitud del intervalo sea menor que un valor
pequeo e especificado como otro parmetro para la funcin. Entonces el ltimo valor c
estar aproximadamente a una distancia e de la raz r.
function c = biseccion(f, a, b, e)
f=inline(f);
while b-a >= e
c=(a+b)/2;
if f(c)==0
return
else
if sign(f(a))==sign(f(c))
a=c;
else
b=c;
end
end
end
Ejemplo. Desde la ventana de comandos de MATLAB, use la funcin biseccin para
calcular una raz real de la ecuacin f(x) = xex - = 0. Suponer que se desea que el error
sea menor que 0.0001.
Por simple inspeccin se puede observar que f es continua y adems f(0) < 0, f(2) > 0. Por
lo tanto se elije como intervalo inicial: [0, 2]. Tambin se puede previamente graficar f.
En la ventana de comandos de MATLAB se escribe:
>> format long
>> syms x
>> f = x*exp(x)-pi;
>> c = biseccion(f, 0, 2, 0.0001)
c=
1.073669433593750
>> x=c;
>> eval(f)
ans =
6.819373368882609e-005
39
( )
6
4
-2
-4
-6
0
0.5
1.5
2.5
3.5
Nota. La funcin solve de MATLAB solamente entrega una de las dos races
40
3.2
sin(x)-exp(x)+2
2
1.5
1.5
g(x)
1
f(x)
Punto fijo r
0.5
Raiz r
0
-0.5
-1
3.2.1
0.5
1
x
1.5
0.5
x
0
-0.5
-1
0.5
1
x
1.5
Sea g una funcin continua en un intervalo [a, b] tal que g(a) > a y g(b) < b.
Entonces la ecuacin x=g(x) tiene al menos un punto fijo en [a, b]
Demostracin
Sea h(x) = g(x) - x una funcin, tambin continua, en el intervalo [a, b]
Entonces:
h(a) = g(a) - a > 0
h(b) = g(b) - b < 0
Por la continuidad de h existe algn valor r en el intervalo [a, b], tal que h(r) = 0. Entonces
g(r) - r = 0. Por lo tanto r es un punto fijo de x=g(x) y r es una raz real de f(x) = 0
41
3.2.2
Sea g una funcin continua en un intervalo [a, b] tal que g(a) > a y g(b) < b y sea r un
punto fijo en [a, b]. Si x(a,b)(|g(x)|<1), entonces la secuencia xi+1 = g(xi), i = 0, 1, 2, 3, . .
. converge al punto fijo r y g(x) es el factor de convergencia:
Demostracin
Sean las ecuaciones equivalentes:
f(x) = 0, x = g(x)
Si r es una raz de f(x)=0 se cumple que r = g(r) f(r) = 0
La ecuacin x = g(x) sugiere una frmula iterativa xi+1 = g(xi), i = 0, 1, 2, 3, . . . siendo x0 el
valor inicial elegido para generar la secuencia {xi}
Definiciones:
Ei = r xi : Error de truncamiento en la iteracin i
Ei+1 = r xi+1: Error de truncamiento en la iteracin i + 1
Si g es continua en el intervalo que incluye a r y a cada punto calculado xi.
Analizamos el siguiente caso:
g(xi ) g(r)
, para algn z (r, xi)
xi r
xi+ 1 r Ei+ 1
=
Ei+1 = g'(z)Ei , i = 0, 1, 2, 3, . . .
Ei
xi r
42
Se puede extender al caso en el cual g tiene pendiente negativa y deducir la condicin
necesaria de convergencia del mtodo del punto fijo: |g(x)| < 1.
3.2.3
g(p) g(r)
pr
3.2.4
43
Ejemplo. Calcule una raz real de f(x) = ex - x = 0 con el mtodo del punto fijo.
Un grfico de f nos muestra que la ecuacin tiene dos races reales en el intervalo [0, 2]
x2 = g(x1) = e / = e
0.5800
= 0.5800
/ = 0.5685
x3 = g(x2) = e
0.5685
= 0.5620
x4 = g(x3) = e
0.5620
= 0.5584
x5 = g(x4) = e
0.5584
= 0.5564
0.5564
x6 = g(x5) = e
/
= 0.5552
...
La diferencia entre cada par de valores consecutivos se reduce en cada iteracin. En los
ltimos la diferencia est en el orden de los milsimos, por lo tanto podemos considerar que
el mtodo converge y el error est en el orden de los milsimos.
44
Para calcular la segunda raz, usamos la misma frmula iterativa:
xi+1 = g(xi) = e
xi
/, i = 0, 1, 2, 3, . . .
El valor inicial elegido es x0 = 1.7 (cercano a la segunda raz, tomado del grfico)
Calcular los siguientes valores
x1 = g(x0) = e x0 / = e1.7 /
x1
x2 = g(x1) = e / = e
1.7424
= 1.7424
/ = 1.8179
x3 = g(x2) = e
1.8179
= 1.9604
x4 = g(x3) = e
1.9604
= 2.2608
x5 = g(x4) = e
2.2608
= 3.0528
x6 = g(x5) = e
3.0528
= 6.7399
x6 = g(x5) = e
6.7399
= 269.1367
...
La diferencia entre cada par de valores consecutivos aumenta en cada iteracin. Se
concluye que el mtodo no converge.
En el ejemplo anterior, las races reales de la ecuacin f(x)=0 son las intersecciones de f
con el eje horizontal. En el problema equivalente x=g(x), las races reales son las
intersecciones entre g y la recta x:
45
x
0.6
0.59
0.58
0.57
0.56
0.55
0.54
0.53
g(x)
0.52
0.51
0.5
0.5
0.62
0.6
0.58
0.56
x
0.54
0.52
|g(x)| < 1
Segn
la
condicin
de
convergencia
establecida,
el
grfico muestra que ser imposible
calcular la primera raz. La
segunda raz si podr ser
calculada, lo cual se puede
verificar numricamente.
1.8
1.6
1.4
g(x)
1.2
1
0.8
0.6
0.4
0.2
0
0.2
0.4
0.6
0.8
1
x
1.2
1.4
1.6
1.8
46
Reusar el comando
>> x=g(x)
x=
1.6385
3.2.5
El mtodo del punto fijo tiene convergencia lineal o de primer orden debido a que Ei y Ei+1
estn relacionados directamente mediante el factor de convergencia: Ei+1 = g'(z) Ei , por lo
tanto este mtodo tiene convergencia lineal:
Ei+ 1 = O(Ei ) y
g'(z) es el factor de
47
3.3
Mtodo de Newton
Sean f: RR, y la ecuacin f(x) = 0. Sea r tal que f(r) = 0, entonces r es una raz real de
la ecuacin.
El mtodo de Newton es una frmula iterativa eficiente para encontrar r. Es un caso
especial del mtodo del punto fijo en el que la ecuacin f(x) = 0 se re-escribe en la forma x =
g(x) eligiendo g de tal manera que la convergencia sea de segundo orden.
3.3.1
La frmula de Newton
Suponer que g es una funcin diferenciable en una regin que incluye a la raz r y al valor xi
(calculado en la iteracin i). Desarrollando con la serie de Taylor:
g(xi) = g(r) + (xi - r) g(r) + (xi - r)2g(r)/2! + . . .
Con las definiciones del mtodo del punto fijo:
r = g(r)
xi+1 = g(xi), i = 0, 1, 2, 3, . . .
Se obtiene:
xi+1 = r + (xi - r) g(r) + (xi - r)2g(r)/2! + . . .
Si se define el error de truncamiento de la siguiente forma:
Ei
= xi - r:
Error en la iteracin i
Finalmente se obtiene:
Ei+ 1 = Ei g(r) + Ei2 g(r)/2! + . . .
Si se hace que g(r) = 0, y si g(r) 0, entonces se tendr:
Ei+ 1 = O( Ei2 ),
Con lo que el mtodo tendr convergencia cuadrtica.
El procedimiento para hacer que g(r) = 0, consiste en elegir una forma apropiada para g(x):
Sea g(x) = x - f(x) h(x), en donde h es alguna funcin que deber especificarse
Es necesario verificar que la ecuacin x = g(x) se satisface con la raz r de f(x) = 0
Si f(r) = 0, y h(r) 0: g(r) = r - f(r) h(r) = r g(r) = r
48
Derivar g(x) y evaluar en r
g(x) = 1 - f(x) h(x) - f(x) h(x)
g(r) = 1 - f(r) h(r) - f(r) h(r) = 1 - f(r) h(r)
Para que la convergencia sea cuadrtica se necesita que g(r) = 0
g(r) = 0 0 = 1 - f(r) h(r) h(r) = 1/f(r) h(x) = 1/f(x), f'(x)0
Con lo que h(x) queda especificada para que la convergencia sea cuadrtica.
Al sustituir en la frmula propuesta se obtiene x = g(x) = x - f(x)/f(x), y se puede escribir la
frmula iterativa de Newton:
Definicin: Frmula iterativa de Newton
f(xi )
xi + 1 =
xi
, f '(xi ) 0 , i = 0, 1, 2, . . .
f '(xi )
3.3.2
Para calcular una raz r real de la ecuacin f(x) = 0 con error E se usa la frmula iterativa .
f(xi )
xi + 1 =
xi
, f '(xi ) 0 . Comenzando con un valor inicial x0 se genera una sucesin de
f '(xi )
valores xi , i = 0, 1, 2, 3, ... esperando que converja a un valor que satisfaga la ecuacin.
Algoritmo: Newton-Raphson
Restriccin: No detecta divergencia
Entra:
f
Ecuacin a resolver
x
Valor inicial
E
Error que se espera en la respuesta
Sale:
r
Aproximacin a la raz con error E
r x f(x)/f(x)
Mientras |r x| > E
xr
r x f(x)/f(x)
Fin
Mostrar(r)
49
Ejemplo. Calcule las races reales de f(x) = ex - x = 0 con el mtodo de Newton.
Un grfico de f nos muestra que la ecuacin tiene dos races reales en el intervalo [0, 2]
f(x 0 )
e x0 x 0
e0.5 0.5
x0
0.5
0.5522
=
=
=
f '(x 0 )
e0.5
e x0
x 2 =
x1
f(x1 )
e x1 x1
e0.5522 0.5522
x1
0.5522
0.5538
=
=
=
f '(x1 )
e0.5522
e x1
x 3 =
x2
f(x 2 )
e x2 x 2
e0.5538 0.5538
=
=
=
x2
0.5538
0.5538
f '(x 2 )
e0.5538
e x2
f(x 0 )
e x0 x 0
e1.8 1.8
x0
1.8
1.6642
=
=
=
x0
f '(x 0 )
e1.8
e
x 2 =
x1
f(x1 )
e x1 x1
e1.6642 1.6642
=
x1
=
1.6642
=
1.6393
f '(x1 )
e1.6642
e x1
x 3 =
x2
f(x 2 )
e x2 x 2
e1.6393 1.6393
=
x2
=
1.6393
=
1.6385
f '(x 2 )
e1.6393
e x2
x 4 =
x3
f(x 3 )
e x3 x 3
e1.6385 1.6385
=
x3
=
1.6385
=
1.6385
f '(x 3 )
e1.6385
e x3
50
A diferencia del mtodo del Punto Fijo, la frmula de Newton converge a ambas races. Para
entender este importante comportamiento, una interpretacin grfica de la frmula nos
muestra la transformacin geomtrica que permite la convergencia en ambas races:
Grfico de la frmula de Newton interpretada como frmula del Punto Fijo para el ejemplo
anterior:
xi + 1 =
g(xi ) =
xi
f(xi )
e xi xi
=
xi
f '(xi )
e xi
2
1.8
1.6
g(x)
1.4
1.2
1
0.8
x
0.6
0.4
0.2
0
0.5
1
x
1.5
Sea f(x) = 0 la ecuacin que se desea resolver. La siguiente interpretacin grfica es til
para comprender el proceso de clculo con la frmula de Newton.
Suponer que f(x) tiene el siguiente grfico:
51
Se elige un valor aproximado inicial para la raz r, y se lo designa x0
Se traza una tangente a f(x) en el punto f(x0). El punto de interseccin con el eje horizontal
estar ms cerca de r, y se lo designa x1, mientras que el ngulo de interseccin se lo
designa como como se muestra en el grafico:
f(x 0 )
x 0 x1
x1 = x 0
f(x 0 )
f '(x 0 )
El procedimiento anterior se puede repetir. Se traza una tangente a f(x) en el punto f(x1). El
punto de interseccin con el eje horizontal estar ms cerca de r, y se lo designa x2,
mientras que el ngulo de interseccin ser como se muestra en el siguiente grfico
f(x1 )
x1 x 2
x 2 = x1
f(x1 )
f '(x1 )
52
Es la frmula iterativa de Newton-Raphson:
f(xi )
xi + 1 =
xi
,
f '(xi )
i=
0,1,2,...
Se estableci en el mtodo del punto fijo que la ecuacin recurrente x=g(x) tiene la siguiente
propiedad de convergencia: | Ei+1 |=| g'(z) || Ei | , i = 0, 1, 2, 3, . . . La convergencia se
produce si se cumple que |g(x)|<1
Para el mtodo de Newton se obtuvo la siguiente ecuacin recurrente:
x = g(x) = x - f(x)/f(x),
Entonces,
g'(x) =
f(x)f ''(x)
[f '(x)]2
f(xi ) 0
f(r)f ''(r)
=
0
[f '(r)]2
Este resultado ya se estableci, pero demuestra que existe algn intervalo cercano r en el
que |g(x)|<1 siempre que g sea continua en ese intervalo La frmula de Newton converge
si los valores calculados se mantienen dentro de este intervalo.
Para obtener el intervalo de convergencia, no es prctico usar la definicin anterior pues
involucra resolver una desigualdad complicada. Existen otros procedimientos para
demostrar la convergencia de esta frmula como se muestra a continuacin.
53
3.3.5
Dada la ecuacin f(x)=0. Suponer que f(x), f(x), f(x) son continuas y limitadas en un
intervalo [a, b] que contiene a la raz r como se muestra en el siguiente grfico:
f(xi )
f '(xi )
xi + 1 < xi
(1)
El enunciado es vlido pues f(x), f'(x) son positivos y se suma un trmino positivo a la
derecha
2) La premisa c) implica que r < xi+1 :
Desarrollamos f(x) con tres trminos de la serie de Taylor alrededor de xi
f(r)= f(xi ) + (r xi )f '(xi ) + (r xi )2 f ''(z) / 2!
f(r) > f(xi ) + (r xi )f '(xi ) 0 > f(xi ) + (r xi )f '(xi ) r < xi f(xi ) / f '(xi ) r < xi+ 1
(2)
El enunciado es vlido pues siendo f''(x) positivo, se resta un trmino positivo a la derecha
Combinando los resultados (1) y (2) se tiene
r < xi+ 1 < xi , i = 0, 1, 2,...
r y prueba la
54
2 () (() 1) 4()(2 () 2)
2(2 () 2)2 + (() 1)2
=0
55
() = () (() 1) 4 () (() 1) = 0
= 3() cos() 4() + cos() = 0
-1
0
0.2
0.4
0.6
0.8
1
t
1.2
1.4
1.6
1.8
Grfico de f(t)
Frmula de Newton
( )
+1 = ( ) , = 0,1,2,3,
56
Su trayectoria:
u(t) = (x(t), y(t)) = (t sen t, 1 cos t)
Su velocidad:
u(t) = (1 cos t, sen t)
Magnitud de la velocidad:
u'(t) =
(1 cos t)2 + (sent)2
Dato especificado:
(1 cos t)2 + (sent)2 = 0.5
Mtodo de Newton
ti+ 1 =
ti
f(ti )
(1 cos ti )2 + (senti )2 0.25
ti
=
f '(ti )
2(1 cos ti )(senti ) + 2(senti )(cos ti )
t0 = 0.5
t1 = ... = 0.505386
t2 = ... = 0.505360
t3 = ... = 0.505360
(frmula iterativa)
(del grfico)
(iteraciones)
57
3.3.6
Prctica computacional
En esta seccin se describe el uso de MATLAB para usar el mtodo de Newton. Se lo har
directamente en la ventana de comandos.
Para calcular una raz debe elegirse un valor inicial cercano a la respuesta esperada de
acuerdo a la propiedad de convergencia estudiada para este mtodo.
Para realizar los clculos se usa la frmula de Newton en notacin algortmica:
xi+=
xi
1
f(xi )
, i=0, 1, 2, 3,
f '(xi )
x0
x1, x2, x3,
es el valor inicial
son los valores calculados
En los lenguajes computacionales como MATLAB no se requieren ndices para indicar que
el valor de una variable a la izquierda es el resultado de la evaluacin de una expresin a la
derecha con un valor anterior de la misma variable.
La ecuacin se puede definir como una expresin matemtica especificando la variable
independiente con la declaracin syms. La derivada se obtiene con la funcin diff de
MATLAB, y con la funcin eval se evalan las expresiones matemticas.
Forma computacional de la frmula de Newton en MATLAB. Previamente debe definir f y
asignar el valor inicial a x:
>> x = x - eval(f)/eval(diff(f))
Presionando repetidamente la tecla del cursor se reutiliza la frmula y se obtienen
resultados sucesivos. La convergencia o divergencia se puede observar en los resultados.
Ejemplo. Calcule con MATLAB las races reales de f(x) = ex - x = 0 con la frmula de
Newton.
Es conveniente graficar la ecuacin mediante los siguientes comandos de MATLAB.
Tambin se puede editar el dibujo directamente en la ventana de graficacin:
>> syms x;
>> f=exp(x)-pi*x;
>> ezplot(f,[0,2]),grid on
58
59
Ejemplo. Se propone el siguiente modelo para describir la demanda de un producto, en
donde x es tiempo en meses:
d(x) = 20x e 0.075x
Encuentre el valor de x para el cual la demanda alcanza el valor de 80 unidades. Use el
mtodo de Newton para los clculos. Elija el valor inicial del grfico y muestre los valores
intermedios.
La ecuacin a resolver es:
=
f(x) 20x e 0.075x
=
80 0
>> syms x;
>> f=20*x*exp(-0.075*x)-80;
>> ezplot(f,[0,50]),grid on
>> x=5;
>> x=x - eval(f)/eval(diff(f))
x=
6.311945053556490
>> x=x - eval(f)/eval(diff(f))
x=
6.520455024943885
>> x=x - eval(f)/eval(diff(f))
x=
6.525360358429755
>> x=x - eval(f)/eval(diff(f))
x=
6.525363029068742
>> x=x - eval(f)/eval(diff(f))
x=
6.525363029069534
>> x=x - eval(f)/eval(diff(f))
x=
6.525363029069534
-20
-40
-60
-80
0
10
20
30
40
50
Ejemplo. Una partcula se mueve en el plano X-Y de acuerdo con las ecuaciones
paramtricas siguientes, donde t es tiempo, entre 0 y 1:
x(t)=t*exp(t); y(t)=1+t*exp(2t)
Con la frmula de Newton calcule el tiempo en el que la partcula est ms cerca del punto
(1,1)
60
=
d
0.5
1.5
2.5
>> syms t;
>> d=sqrt((t*exp(t)-1)^2+(1+t*exp(2*t)-1)^2);
>> f=diff(d);
>> t=0.5;
>> t=t - eval(f)/eval(diff(f))
t=
0.278246639067713
>> t=t - eval(f)/eval(diff(f))
t=
0.258310527656699
>> t=t - eval(f)/eval(diff(f))
t=
0.256777599742604
>> t=t - eval(f)/eval(diff(f))
t=
0.256768238259669
>> t=t - eval(f)/eval(diff(f))
t=
0.256768237910400
>> t=t - eval(f)/eval(diff(f))
t=
0.256768237910400
>> eval(d)
ans =
0.794004939848305
61
Ejemplo. Encuentre una interseccin de las siguientes ecuaciones en coordenadas polares
r = 2+cos(3*t), r = 2- et
Ecuacin a resolver:
>> t=[-pi:0.01:2*pi];
>> r=2+cos(3*t);
>> polar(t,r),hold on
>> r=2- exp(t);
>> polar(t,r)
120
60
2
150
30
1
180
330
210
300
240
270
>> syms t;
>> f=2+cos(3*t)-(2-exp(t));
>> t=-1;
>> t=t - eval(f)/eval(diff(f))
t=
-0.213748703557153
>> t=t - eval(f)/eval(diff(f))
t=
-0.832049609116596
>> t=t - eval(f)/eval(diff(f))
t=
-0.669680711112045
>> t=t - eval(f)/eval(diff(f))
t=
-0.696790503081824
>> t=t - eval(f)/eval(diff(f))
t=
-0.697328890705191
>> t=t - eval(f)/eval(diff(f))
t=
-0.697329123134159
>> t=t - eval(f)/eval(diff(f))
t=
-0.697329123134202
(valor inicial)
62
>> t=t - eval(f)/eval(diff(f))
t=
-0.697329123134202
>> r=2+cos(3*t)
r=
1.502086605214547
(radio)
Ejemplo. Calcule las dos races reales de f(x) = ex - x = 0 con la funcin newton. Los
valores iniciales son tomados del grfico.
>> syms x;
>> f=exp(x)-pi*x;
>> ezplot(f,[0,2]),grid on
63
exp(x) - x
1.2
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
0.2
0.4
0.6
0.8
1
x
1.2
1.4
1.6
1.8
Primera raz
Segunda raz
64
>> r=fzero(f, 0.4)
r=
0.553827036644514
>> r=fzero(f, 1.6)
r=
1.638528419970363
La funcin solve
Se usa resolver ecuaciones en forma simblica exacta. En algunos casos la solucin queda
expresada mediante smbolos predefinidos en MATLAB. Con la funcin eval se convierten
las soluciones al formato numrico decimal. Esta funcin no siempre entrega todas las
soluciones de una ecuacin. La ecuacin puede estar en formato texto o como una
expresin matemtica.
Ejemplo. Resuelva la ecuacin f(x) = ex - x = 0 usando solve
>> f='exp(x)-pi*x';
>> r=eval(solve(f))
r=
0.553827036644514
La funcin roots
Sirve para calcular todas las races de ecuaciones polinmicas. Los coeficientes del
polinomio deben almacenarse en un vector.
Ejemplo. Encuentre todas las races del polinomio 2x3 - 5x2 - 4x - 7 = 0 usando roots
>> a=[2, -5, -4, -7];
(Coeficientes del polinomio)
>> r=roots(a)
r=
3.39334562071304
(Una raz real y dos races complejas)
-0.44667281035652 + 0.91209311493838i
-0.44667281035652 - 0.91209311493838i
65
3.4 Ejercicios y problemas de ecuaciones no-lineales
1. La suma de dos nmeros reales positivos es 5 y el producto de sus cuadrados es 20.
Encuentre estos dos nmeros.
2. El producto de las edades en aos de dos personas es 677.35 y si se suman los cubos de
ambas edades se obtiene 36594.38 Encuentre cuales son estas edades.
3. Una empresa produce semanalmente una cantidad de artculos. El costo de produccin
semanal tiene un costo fijo de 250 y un coso de 2.50 por cada artculo producido. El ingreso
semanal por venta tiene un valor de 3.50 por cada artculo vendido, ms un costo de
oportunidad que se ha estimado directamente proporcional a la cantidad de artculos
producidos, multiplicado por el logaritmo natural. Encuentre el punto de equilibrio para este
modelo.
4. En una empresa de fertilizantes el modelo v(x) = 0.4x (30 - x) corresponde a las ventas
en miles de dlares cada mes, mientras que el costo de produccin mensual, en miles de
dlares es c(x) = 5 + 10 ln(x), siendo x la cantidad producida en toneladas, 1x30.
a) Determine la cantidad que debe producirse para que la ganancia mensual sea 40
b) Determine la cantidad mensual que se debe producir para obtener la mxima ganancia.
5. El costo semanal fijo por uso de un local para venta de cierto tipo de artculo es $50.
Producir cada Kg. del artculo cuesta $2.5. El ingreso por venta es 3x + 2 ln(x) en donde x
representa la cantidad de kg vendidos en cada semana. Determine la cantidad de Kg. que
se debe vender semanalmente a partir de la cual la empresa obtiene ganancias.
6. En una planta de abastecimiento de combustible se tiene un tanque de forma esfrica. El
volumen del lquido almacenado en el tanque se puede calcular mediante la siguiente
frmula: v(h) =
h2 (R h / 3) ,donde h representa la altura del lquido dentro del tanque
medida desde la parte inferior del tanque y R su radio (0 h 2R). Suponga que el tanque
tiene un radio de 2 m. Calcule la altura que debe tener el lquido para que el tanque
contenga 27 m3. Calcule el resultado con una tolerancia E=104.
7. Encuentre el punto de la curva dada por y =
2x 5 3xe x 10 ubicado en el tercer
cuadrante, donde su recta tangente sea paralela al eje X.
8. Determine la raz real de la ecuacin: sin(x) = ln(x)
9. Determine la segunda raz real positiva, con 4 decimales exactos de la ecuacin:
5 cos(x) = tan(x)
10. Calcule una raz real positiva de la ecuacin sin(x) + 1 = x.
11. Para que f sea una funcin de probabilidad se tiene que cumplir que su integral en el
dominio de f debe tener un valor igual a 1. Encuentre el valor de b para que la funcin
f(x)=2x2 + x sea una funcin de probabilidad en el dominio [0, b].
66
A =P
x(1 + x)n
(1 + x)n 1
M
1
[1
],
x
(1 + x)n
17. Un modelo de crecimiento poblacional est dado por: f(t) = 5t + 2e0.1t, en donde n es el
nmero de habitantes, t es tiempo en aos.
a) Calcule el nmero de habitantes que habrn en el ao 25
b) Encuentre el tiempo para el cual la poblacin es 200
18. Un modelo de crecimiento poblacional est dado por. f(x) = kx + 2e0.1x, siendo k una
constante que debe determinarse y x tiempo en aos. Se conoce que f(10)=50.
a) Determine la poblacin en el ao 25
b) Determine el ao en el que la poblacin alcanzar el valor 1000.
19. Un modelo de crecimiento poblacional est dado por f(t) = k1 t + k2 e0.1t
Siendo k1 y k2 constantes, y t tiempo en aos.
Se conoce que f(10)=25, f(20)=650.
Determine el ao en el que la poblacin alcanzar el valor 5000.
67
0.075 t
=
c 70e
+ 25e
relacin:
.
Se necesita determinar el tiempo para que la concentracin de bacterias se reduzca a 15
unidades o menos.
a) Determine un intervalo de existencia de la raz de la ecuacin. Use un grfico
b) Aproxime la raz indicando la cota del error.
21. En un modelo de probabilidad se usa la siguiente frmula para calcular la probabilidad
f(k) que en el intento nmero k se obtenga el primer resultado favorable:
f(k) = p(1-p)k-1 ,0p1, k=0, 1, 2, 3, .
a) Si en una prueba se obtuvo que f(5) = 0.0733, encuentre cuales son los dos posibles
valores
de p posibles en la frmula.
b) Con el menor valor obtenido para p encuentre el menor valor de k para el que f(k)<0.1
22. Para simular la trayectoria de un cohete se usar el siguiente modelo:
y(t) =
6 + 2.13t 2 0.0013t 4
En donde y es la altura alcanzada, en metros y t es tiempo en segundos. El cohete est
colocado verticalmente sobre la tierra.
a) Encuentre el tiempo de vuelo.
b) Encuentre la altura mxima del recorrido.
23. El movimiento de una partcula en el plano, se encuentra representado por las
ecuaciones paramtricas:
x(t)= 3sen3 (t) 1; y(t)= 4sen(t) cos(t); t 0
68
25. La posicin del ngulo central en el da t de la luna alrededor de un planeta si su
perodo de revolucin es P das y su excentricidad es e, se describe con la ecuacin de
Kepler:
2 t - P + P e sen = 0
Encuentre la posicin de la luna (ngulo central) en el da 30, sabiendo que el perodo de
revolucin es 100 das y la excentricidad 0.5.
26. Una partcula se mueve en el plano XY (la escala est en metros) con una trayectoria
xe dx = 10 .
x
31. Una partcula sigue una trayectoria elptica centrada en el origen (eje mayor 4 y eje
menor 3) comenzando en el punto ms alto, y otra partcula sigue una trayectoria parablica
ascendente hacia la derecha comenzando en el origen (distancia focal 5). El recorrido se
inicia en el mismo instante.
a) Encuentre el punto de interseccin de las trayectorias.
b) Si la primera partcula tiene velocidad uniforme y pasa por el punto ms alto cada minuto,
determine el instante en el cual debe lanzarse la segunda partcula con aceleracin 10 m/s2
para que intercepte a la primera partcula.
69
32. La velocidad V de un paracaidista est dada por la frmula:
=
V
En donde
gx
(1 e
c
ct
x
70
3.5
En general este es un problema difcil, por lo que conviene intentar reducir el nmero de
ecuaciones y en caso de llegar a una ecuacin, poder aplicar alguno de los mtodos
conocidos.
Si no es posible reducir el sistema, entonces se intenta resolverlo con mtodos especiales
para sistemas de ecuaciones no-lineales.
Debido a que el estudio de la convergencia de estos mtodos es complicado, se prefiere
utilizar algn mtodo eficiente, de tal manera que numricamente pueda determinarse la
convergencia o divergencia con los resultados obtenidos.
Una buena estrategia consiste en extender el mtodo de Newton, cuya convergencia es de
segundo orden, al caso de sistemas de ecuaciones no lineales. En esta seccin se describe
la frmula para resolver un sistema de n ecuaciones no lineales y se la aplica a la solucin
de un sistema de dos ecuaciones. Al final de este captulo se propone una demostracin
ms formal de esta frmula.
3.5.1
Sean F: f1, f2, , fn sistema de ecuaciones no lineales con variables X: x1, x2, , xn. Se
requiere calcular un vector real que satisfaga al sistema F
En el caso de que F contenga una sola ecuacin f con una variable x, la conocida frmula
iterativa de Newton puede escribirse de la siguiente manera:
df (k) 1 (k)
(iteraciones)
) f , k=0, 1, 2,
dx
Si F contiene n ecuaciones, la frmula se puede extender, siempre que las derivadas
existan:
+ 1)
x (k=
x (k) (
F(k) 1 (k)
X (k + 1) =
X (k) (
) F =
X (k) (J(k) )1F(k)
X
En donde:
X (k + 1)
x1(k)
f1(k)
x1(k + 1)
(k)
(k)
(k + 1)
x2
x2
f
(k)
(k)
=
, X =
, F = 2 , J(k)
...
...
...
(k)
(k)
(k + 1)
xn
fn
xn
J es la matriz jacobiana
f1(k)
x 1
f (k)
2
= x 1
...
fn(k)
x 1
f1(k)
x 2
f2(k)
x 2
...
fn(k)
x 2
f1(k)
x n
f2(k)
...
x n
... ...
fn(k)
...
x n
...
71
Esta ecuacin de recurrencia se puede usar iterativamente con k=0, 1, 2, partiendo de
un vector inicial X (0) generando vectores de aproximacin: X (1) , X (2) , X (3) ,
3.5.2
En forma general la convergencia de este mtodo para sistemas no lineales requiere que:
a) f1, f2, fn as como sus derivadas sean continuas en la regin de aplicacin.
b) El determinante del Jacobiano no se anule en esta regin
c) El valor inicial y los valores calculados pertenezcan a esta regin, la cual incluye a la
raz que se intenta calcular
3.5.3
F
X
U X (J)1F
Mientras ||U-X||>E
XU
U X (J)1F
Fin
72
y
e p(
y) 3
-1
-2
0.5
1.5
2
x
2.5
3.5
f2 f2 e x + y (1 + x) xe x + y + 1
x
f1 (x 2)2 + (y 1)2 + xy 3
x
,
=
F
X=
=
xe x + y + y 3
y
f2
Ecuacin de recurrencia
+ 1)
X (k=
X (k) (J(k) )1F(k)
73
Primera iteracin: k=0
(1)
X=
X (0) (J(0) )1F(0)
0.5 0.25
x (1) 0.5 2
=
1.0 6.7225 3.2408 0.2408
(1)
y
x (1) 0.5 0.3293 0.0508 0.25 0.4055
(1) =
3.5.4
Prctica computacional
Obtencin de las races de las ecuaciones para el ejemplo anterior mediante comandos de
MATLAB. Se usarn variables de tipo simblico
Ecuacin de recurrencia:
+ 1)
X (k=
X (k) (J(k) )1F(k)
>> syms x y
>> f1=(x-2)^2 + (y-1)^2+x*y-3;
>> f2=x*exp(x+y)+y-3;
>> F=[f1; f2];
>> X=[x; y];
>> U=[0.5; 1.0];
>> J=[diff(f1,x) diff(f1,y); diff(f2,x) diff(f2,y)]
J=
[
2*x + y - 4,
x + 2*y - 2]
[ exp(x + y) + x*exp(x + y), x*exp(x + y) + 1]
74
3.5.5 Instrumentacin computacional del mtodo de Newton para un sistema de n
ecuaciones no-lineales.
Sea
Ecuacin de recurrencia:
+ 1)
X (k=
X (k) (J(k) )1F(k) , k=0, 1, 2,
Salida
U:
75
Ejemplo. Use la funcin snewton para encontrar una raz real del sistema
f1 (x, y) = (x 2)2 + (y 1)2 + xy 3 = 0
f 2 (x,=
y) xe x + y + y =
3 0
>> syms x y
>> f1=(x-2)^2 + (y-1)^2+x*y-3;
>> f2=x*exp(x+y)+y-3;
>> F=[f1; f2];
>> X=[x; y];
>> U=[0.5; 1];
>> U=snewton(F, X, U)
U=
0.405451836483295
1.121807345933181
76
>> U=snewton(F, X, U)
U=
0.409618877363502
1.116191209478472
>> U=snewton(F, X, U)
U=
0.409627787030011
1.116180137991845
>> U=snewton(F, X, U)
U=
0.409627787064807
1.116180137942814
>> U=snewton(F, X, U)
U=
0.409627787064807
1.116180137942814
Se observa la rpida convergencia.
Para verificar que son races reales de las ecuaciones debe evaluarse f
>> subs(f1,X,U)
ans =
4.440892098500626e-016
>> subs(f2,X,U)
ans =
0
Los valores obtenidos son muy pequeos, por lo cual se aceptan las races calculadas
Para calcular la otra raz, tomamos del grfico los valores iniciales cercanos a esta raz.
>> U=[2.4; -1.5];
>> U=snewton(F, X, U)
U=
2.261842718297048
-1.535880731849205
>> U=snewton(F, X, U)
U=
2.221421001369104
-1.512304705819129
77
>> U=snewton(F, X, U)
U=
2.220410814294533
-1.511478104887419
>> U=snewton(F, X, U)
U=
2.220410327256473
-1.511477608846960
>> U=snewton(F, X, U)
U=
2.220410327256368
-1.511477608846834
>> U=snewton(F, X, U)
U=
2.220410327256368
-1.511477608846835
>> subs(f1,X,U)
(Comprobar si es una solucin del sistema)
ans =
-8.881784197001252e-016
>> subs(f2,X,U)
ans =
8.881784197001252e-016
3.5.6
La funcin solve de MATLAB se puede usar para resolver sistemas no lineales como el
ejemplo anterior:
>> syms x y
>> f1=(x-2)^2 + (y-1)^2+x*y-3;
>> f2=x*exp(x+y)+y-3;
>> F=[f1;f2];
>> [x,y]=solve(F)
x=
0.409627787064806898766476190893
y=
1.116180137942813562571698234565
El mtodo solve de MATLAB proporciona solamente una de las dos soluciones. Con esto
concluimos que no siempre los programas computacionales disponibles producen todas las
respuestas esperadas.
78
3.5.7
f1(x1, x2) = 0, f2(x1, x2) = 0 dos ecuaciones no-lineales con variables x1, x2.
Sean r1, r2 valores reales tales que f1(r1, r2) = 0, f2(r1, r2) = 0, entonces (r1, r2) constituye
una raz real del sistema y es de inters calcularla.
Suponer que f1, f2 son funciones diferenciables en alguna regin cercana al punto (r1, r2)
Con el desarrollo de la serie de Taylor expandimos f1, f2 desde el punto (x1(k) , x 2(k) ) al punto
+ 1)
(x1(k + 1) , x (k
)
2
f1(k + 1) =
f1(k) + (x1(k + 1) x1(k) )
f1(k)
f (k)
+ (x 2(k + 1) x 2(k) ) 1 + O(x1(k + 1) x1(k) )2 + O(x 2(k + 1) x 2(k) )2
x 1
x 2
f2(k + 1) =
f2(k) + (x1(k + 1) x1(k) )
f2(k)
f (k)
+ (x 2(k + 1) x 2(k) ) 2 + O(x1(k + 1) x1(k) )2 + O(x 2(k + 1) x 2(k) )2
x 1
x 2
+ 1)
Por simplicidad se ha usado la notacin: f1(k) = f1 (x1(k) , x 2(k) ) , f1(k + 1) = f1 (x1(k + 1) , x (k
) , etc.
2
En los ltimos trminos de ambos desarrollos se han escrito nicamente los componentes
de inters, usando la notacin O( ).
Las siguientes suposiciones, son aceptables en una regin muy cercana a (r1, r2):
)
cercano a la raz (r1, r2)
(x1(k ) , x (k
2 )
+ 1)
Si el mtodo converge cuadrticamente entonces (x1(k + 1) , x (k
) estar muy cercano a (r1, r2)
2
f1 (x1(k + 1) , x 2(k + 1) ) 0
f2 (x1(k + 1) , x 2(k + 1) ) 0
)
(k + 1)
+ 1)
Por otra parte, si (x1(k ) , x (k
, x (k
) , las diferencias sern pequeas y
2 ) es cercano a (x 1
2
79
Sustituyendo en el desarrollo propuesto se obtiene como aproximacin el sistema lineal:
0=
f1(k) + (x1(k + 1) x1(k) )
f1(k)
f (k)
+ (x 2(k + 1) x 2(k) ) 1
x 1
x 2
0=
f2(k) + (x1(k + 1) x1(k) )
f2(k)
f (k)
+ (x 2(k + 1) x 2(k) ) 2
x 1
x 2
En notacin matricial:
=
F(k) J(k) (X (k + 1) X (k) )
Siendo
f (k)
F(k) = 1(k) ,
f2
x (k)
X (k) = 1(k) ,
x2
x (k + 1)
X (k + 1) = 1(k + 1) ,
x2
J(k)
f1(k)
x 1
= (k)
f
2
x1
f1(k)
x 2
f2(k)
x 2
J(k)=
X (k + 1) J(k) X (k) F(k)
+ 1)
X (k=
X (k) (J(k) )1F(k) ,
| J(k) | 0
80
3.5.8
81
c) Elija valores para L1, L2, u, v. Elija valores iniciales y use la funcin snewton o solve de
MATLAB para obtener la solucin. E=0.0001.
d) Analice las implicaciones de esta solucin en el movimiento del brazo.
82
4
Valor pagado
$18.00
$27.30
$16.20
Anlisis
Sean x1,x 2 ,x 3 variables que representan al precio unitario de cada producto en dlares por
Kg. Entonces, se puede escribir:
4x1 + 2x 2 + 5x 3 =
18.00
2x1 + 5x 2 + 8x 3 =
27.30
2x1 + 4x 2 + 3x 3 =
16.20
El modelo matemtico resultante es un sistema lineal de tres ecuaciones con tres variables.
En donde
ai,j : Coeficientes
bi : Constantes
xi : Variables cuyo valor debe determinarse
En notacin matricial:
a1,1
a
2,1
...
an,1
a1,2
a2,2
...
...
an,1
...
a1,n x1 b1
a2,n x 2 b2
=
... ... ...
an,n xn bn
83
Simblicamente
AX = B
Siendo
a1,1
a
2,1
=
A
...
an,1
4.1
a1,2
...
a2,2
...
an,1
...
a1,n
a2,n
=
; B
...
an,n
b1
b
2
=
; X
...
bn
x1
x
2
...
xn
[adj(A)]T
,
|A|
=
X A 1B =
X A 1B
4.2
84
Ejemplo. Con el Mtodo de Gauss-Jordan resuelva el siguiente sistema de ecuaciones
lineales
4x1 + 2x 2 + 5x 3 =
18.00
2x1 + 5x 2 + 8x 3 =
27.30
2x1 + 4x 2 + 3x 3 =
16.20
1.2500
1.3750
0.5000
4.5000
4.5750
7.2000
2.2125
4.5750
-6.5250
85
Restar de cada fila, la fila 3 multiplicada por el elemento de la columna 3
1.0000
0
0
0
0
1.0000
0
0
1.0000
1.2000
2.1000
1.8000
4.2.1
18.0
=
27.3 B
16.2
A |B =
...
... ... ...
...
an,1 an,2
... a1,n
... a2,n
... ...
... an,n
a1,n+1
1 0 ... 0 a1,n+ 1
a2,n+1
0 1 ... 0 a2,n+ 1
. . .
...
... ... ... ... ...
an,n+ 1
0 0 ... 1 an,n+ 1
Si es posible realizar esta transformacin, entonces los valores que quedan en la ltima
columna constituirn el vector solucin X
86
Las transformaciones deben ser realizadas en forma sistemtica en n etapas, obteniendo
sucesivamente en cada etapa, cada columna de la matriz identidad, de izquierda a derecha.
En cada etapa, primero se har que el elemento en la diagonal tome el valor 1. Luego se
har que los dems elementos de la columna tomen el valor 0.
1 0
0 1
... ...
0 0
... 0 a1,n+ 1
... 0 a2,n+ 1
... ... ...
... 1 an,n+ 1
Etapa 1
Etapa n
Etapa 2
Etapa 1
Normalizar la fila 1:
A |B
a1,1
a2,1
...
an,1
a1,2
a2,2
...
...
an,1
...
a1,n a1,n+ 1
1
a2,n a2,n+ 1
0
...
...
...
an,n an,n+ 1
0
a1,2
a2,2
...
...
an,1
...
a1,n a1,n+ 1
a2,n a2,n+ 1
...
...
an,n an,n+ 1
Valores
transformados
Etapa 2
Normalizar la fila 2: (transformar el elemento a2,2 a 1)
t a2,2 , a2,j a2,j / t ,
a 2,2 0
a1,2
...
a2,2
...
...
0
an,1
...
a1,n a1,n+ 1
1
a2,n a2,n+1
0
...
... ...
an,n an,n+1
0
...
...
...
a1,n a1,n+ 1
a2,n a2,n+1
... ...
an,n an,n+1
Valores
transformados
87
La formulacin obtenida en estas dos etapas se puede generalizar
Para cada columna e=1, 2, , n
Normalizar la fila e
t a e,e , a e,j a e,j / t , j=e+1, e+2, e+3, ..., n+1;
( a e,e 0 )
4.2.2
Fin
Para i=1, 2, , n; i e
t ai,e
Fin
Fin
Fin
Para i=1,2,...,n
xi ai,n+ 1
Fin
88
4.2.3
i
n-1
n-1
.
.
.
n-1
n-1
j
n+1
n
.
.
.
3
2
89
Mediante cuatro pruebas se obtuvieron los puntos:
(n, c): (10, 585), (20, 4370), (30, 14355), (40, 33540)
Con estos cuatro puntos se construye el polinomio cbico:
T(n) = n3/2 + n2 - 3n/2 = O(n3)
El polinomio es exacto. Si se usaran ms puntos el resultado sera igual.
4.2.4
Prctica computacional
Definicin de la matriz
Vector de constantes
Matriz aumentada
Normalizar fila 1
Reducir fila 2
Reducir fila 3
90
>> a(2,2:4)=a(2,2:4)/a(2,2)
a=
1.0000 0.5000 1.2500 4.5000
0 1.0000 1.3750 4.5750
0 3.0000 0.5000 7.2000
>> a(1,2:4)=a(1,2:4)-a(1,2)*a(2,2:4)
a=
1.0000
0 0.5625 2.2125
0 1.0000 1.3750 4.5750
0 3.0000 0.5000 7.2000
>> a(3,2:4)=a(3,2:4)-a(3,2)*a(2,2:4)
a=
1.0000
0 0.5625 2.2125
0 1.0000 1.3750 4.5750
0
0 -3.6250 -6.5250
>> a(3,3:4)=a(3,3:4)/a(3,3)
a=
1.0000
0
0.5625 2.2125
0 1.0000
1.3750 4.5750
0
0
1.0000 1.8000
>> a(1,3:4)=a(1,3:4)-a(1,3)*a(3,3:4)
a=
1.0000
0
0 1.2000
0 1.0000 1.3750 4.5750
0
0
1.0000 1.8000
>> a(2,3:4)=a(2,3:4)-a(2,3)*a(3,3:4)
a=
1.0000
0
0 1.2000
0 1.0000
0 2.1000
0
0 1.0000 1.8000
>> x=a(1:3,4)
x=
1.2000
2.1000
1.8000
>> a*x
ans =
18.0000
27.3000
16.2000
Normalizar fila 2
Reducir fila 1
Reducir fila 3
Normalizar fila 3
Reducir fila 1
Reducir fila 2
Vector solucin
Verificar la solucin
91
4.2.5
function x=gaussjordan(a,b)
n=length(b);
a=[a,b];
for e=1:n
a(e,e:n+1)=a(e,e:n+1)/a(e,e);
for i=1:n
if i~=e
a(i,e:n+1)=a(i,e:n+1)-a(i,e)*a(e,e:n+1);
end
end
end
x=a(1:n,n+1);
%matriz aumentada
%normalizar fila e
%vector solucin
2 5
8 9 4 x 3 8
Matriz de coeficientes
Vector de constantes
Llamada a la funcin
Solucin proporcionada por MATLAB
Verificar la solucin
La solucin satisface al sistema
92
Cuando se tiene nicamente la instrumentacin computacional de un algoritmo, se puede
obtener experimentalmente su eficiencia registrando, para diferentes valores de n, el tiempo
de ejecucin del algoritmo. Este tiempo depende de la velocidad del procesador del
dispositivo computacional, pero es proporcional a T(n).
MATLAB dispone de las funciones tic, toc para registrar el tiempo de ejecucin. Para las
pruebas se pueden generar matrices y vectores con nmeros aleatorios. Se presentan
algunos resultados obtenidos con un procesador intel core i5 y la versin 7.01 de MATLAB:
n=100, t=0.0781 seg.
n=200, t=0.3859 seg.
n=300, t=1.0336 seg.
n=400, t=2.0758 seg.
Se observa que T(n) tiene crecimiento tipo polinmico.
4.2.6
t m t m-1 . . . t 2 t1 A = I
Entonces se puede escribir
t m t m-1 . . . t 2 t1 A 1 A = A 1 I
t m t m-1 . . . t 2 t1 I = A 1
93
Ejemplo. Con el Mtodo de Gauss-Jordan resuelva el sistema de ecuaciones siguiente y
simultneamente obtenga la matriz inversa:
4x1 + 2x 2 + 5x 3 =
18.00
2x1 + 5x 2 + 8x 3 =
27.30
2x1 + 4x 2 + 3x 3 =
16.20
18.00
27.30
16.20
1 0 0
0 1 1
0 0 1
Clculos
Normalizar fila 1 y reducir filas 2 y 3
1.0000
0
0
0.5000
4.0000
3.0000
1.2500
5.5000
0.5000
4.5000
18.3000
7.2000
0.2500
-0.5000
-0.5000
0
0
1.0000
0
0
1.0000
0
0.5625
1.0000 1.3750
0
-3.6250
2.2125
4.5750
-6.5250
0.3125 -0.1250
0
-0.1250 0.2500
0
-0.1250 -0.7500 1.0000
0
0
1.0000
0
0
1.0000
1.2000
2.1000
1.8000
94
Matriz inversa
A
4.3
0.0345
0.2069 0.2759
Mtodo de Gauss
1.2500
1.3750
0.5000
4.5000
4.5750
7.2000
95
Restar de la fila, la fila 2 multiplicada por el elemento de la columna 2
1.0000 0.5000 1.2500
4.5000
0 1.0000 1.3750
4.5750
0
0
-3.6250 -6.5250
4.3.1
a2,1
A |B =
...
an,1
a1,2
a2,2
...
...
an,1
...
a1,n a1,n+ 1
a2,n a2,n+ 1
...
...
an,n an,n+ 1
96
Para cada columna e = 1, 2, , n
Normalizar la fila e
t a e,e , a e,j a e,j / t , j=e+1, e+2, e+3, ..., n+1;
( ae,e 0 )
a2,1
=
A |B
...
an,1
a1,2
a2,2
...
...
an,1
...
a1,n a1,n+ 1
a2,n a2,n+ 1
. . . .
...
...
an,n an,n+ 1
1
0
...
0
a1,2
1
...
...
...
a1,n a1,n+ 1
a2,n a2,n+ 1
...
...
1 an,n+ 1
1 a1,2
1
0
... ...
0
0
0
0
0
0
... a1,n 2
a1,n1
a1,n
... a2,n 2
a2,n1
a2,n
...
...
...
...
...
an 2,n1 an 2,n
1
an1,n
...
a1,n+ 1
a2,n+ 1
...
an 2,n+ 1
an1,n+ 1
an,n+ 1
. . . etc
Con la formulacin anterior se define el algoritmo para el mtodo de Gauss bsico:
97
4.3.2 Algoritmo de Gauss bsico
Algoritmo: Gauss bsico
Restriccin: No se verifica unicidad y existencia de la solucin
Entra: n:
Nmero de ecuaciones
ai,j
Coeficientes
Constantes
bi
Sale: xi
Solucin calculada
Para i 1, 2, , n
Matriz aumentada
ai,n+1 bi
Fin
Para e = 1, 2, . . ., n
t a e,e
Fin
Para i = e + 1, e + 2, n
t ai,e
Fin
Fin
Fin
xn an, n+ 1
Fin
98
4.3.3
Sea n el tamao del problema y T(n) la cantidad de operaciones aritmticas que se realizan
En la normalizacin:
T(n) = O(n2)
(dos ciclos anidados)
3
En la reduccin:
T(n) = O(n )
(tres ciclos anidados)
En la obtencin de la solucin: T(n) = O(n2)
(dos ciclos anidados)
Por lo tanto, este mtodo es de tercer orden: T(n) = O(n3)
La obtencin de T(n) puede ser realizada mediante el anlisis matemtico de la formulacin
o con un recorrido detallado de los ciclos del algoritmo. Se puede determinar que: T(n) =
n3/3 + O(n2) con lo que se concluye que el mtodo de Gauss es ms eficiente que el
mtodo de Gauss-Jordan para n grande. Esta diferencia se la puede constatar
experimentalmente resolviendo sistemas grandes y registrando el tiempo real de ejecucin.
Proponemos un mtodo computacional para obtener T(n). Es suficiente escribir cdigo
computacional solamente para contar la cantidad de ciclos para diferentes valores de n. Los
puntos (n, T(n) permiten obtener matemticamente la funcin T(n), la cual, por la estructura
del algoritmo debe ser un polinomio cbico, por lo tanto son suficientes cuatro puntos.
Ejemplo. Una funcin en MATLAB para conteo de los ciclos del mtodo de Gauss
function c=conteogauss(n)
c=0;
for e=1:n
for i=e+1:n
for j=e:n+1;
c = c+1;
%Conteo de los ciclos en la seccin crtica
end
end
end
Mediante cuatro pruebas se obtuvieron los puntos
(n, c): (10, 375), (20, 2850), (30, 9425), (40, 22100)
Con estos puntos se construye la funcin T(n) = n^3/3 + n^2/2 - (5*n)/6 = O(n3)
99
4.3.4
function x=gaussbasico(a,b)
n=length(b);
a=[a,b];
for e=1:n
a(e,e:n+1)=a(e,e:n+1)/a(e,e);
for i=e+1:n
a(i,e:n+1)=a(i,e:n+1)-a(i,e)*a(e,e:n+1);
end
end
x(n,1)=a(n,n+1);
for i=n-1:-1:1
x(i,1)=a(i,n+1)-a(i,i+1:n)*x(i+1:n,1);
end
4.3.5
%Matriz aumentada
%Normalizar la fila e
%Reducir otras filas
Estrategia de pivoteo
100
Etapa e:
Columna e
Transformaciones
Fila e
Tansformaciones
1 a1,2
0
1
... ...
0
0
... ...
0
0
0
0
...
...
a1,e
a2,e
...
...
a1,n
a2,n
...
...
...
...
a e,e
...
...
...
...
...
a e,n
...
... an1,e
... an,e
... an1,n
... an,n
a1,n+ 1
a2,n+ 1
...
a e,n+ 1
...
an1,n+ 1
an,n+ 1
101
4.3.6 Algoritmo de Gauss con pivoteo
Algoritmo: Gauss bsico con pivoteo parcial
Entra: n:
Nmero de ecuaciones
ai,j
Coeficientes
bi
Constantes
Solucin calculada o un vector nulo si la solucin no es nica
Sale: xi
Para i 1, 2, , n
Matriz aumentada
ai,n+1 bi
Fin
Para e = 1, 2, . . ., n
pe
Para i = e+1,e+2, ..., n
Si |ai,e| > |ae,p|
pi
Fin
Fin
Intercambiar las filas e y p
Si ae,e = 0
X nulo
Terminar
Fin
t a e,e
Para j = e, e+1, ..., n+1
a e,j a e,j / t
Fin
Para i = e + 1, e + 2, n
t ai,e
Para j = e+1,e+2,..., n+1
ai,j ai,j t a e,j
Fin
Fin
Fin
xn an, n+ 1
Fin
102
4.3.7
function x=gauss(a,b)
n=length(b);
a=[a,b];
%Matriz aumentada
for e=1:n
[z, p]=max(abs(a(e:n,e)));
%Pivoteo por filas
p=p+e-1;
t=a(e,e:n+1);
%Intercambio de filas
a(e,e:n+1)=a(p,e:n+1);
a(p,e:n+1)=t;
if abs(a(e,e))<1.0e-10
%Si el divisor es cercano a cero
x=[ ];
%no hay solucin
return;
end
a(e,e:n+1)=a(e,e:n+1)/a(e,e);
%Normalizar la fila e
for i=e+1:n
%Reducir otras filas
a(i,e:n+1)=a(i,e:n+1)-a(i,e)*a(e,e:n+1);
end
end
x(n,1)=a(n,n+1);
%Solucin del sistema triangular
for i=n-1:-1:1
x(i,1)=a(i,n+1)-a(i,i+1:n)*x(i+1:n,1);
end
Ejemplo. Desde
el sistema:
2
2
103
Escriba en la ventana de comandos de MATLAB
>> a=[2, 3, 7; -2, 5, 6; 8, 9, 4];
>> b=[3; 5; 8];
>> x=gauss(a,b)
x=
-0.0556
0.9150
0.0523
4.3.8
Matriz de coeficientes
Vector de constantes
Llamada a la funcin
Solucin calculada
MATLAB tiene un soporte muy potente para resolver sistemas de ecuaciones lineales.
Sugerimos entrar al sistema de ayuda de MATLAB y revisar la amplia informacin
relacionada con este tema.
La forma ms simple de resolver un sistema lineal, si la matriz de coeficientes es cuadrada y
no-singular, es usando la definicin de inversa de una matriz MATLAB.
Ejemplo. Resuelva el ejemplo anterior con la funcin inv de MATLAB
>> a=[2, 3, 7; -2, 5, 6; 8, 9, 4];
>> b=[3; 5; 8];
>> x=inv(a)*b
x=
-0.0556
0.9150
0.0523
Matriz de coeficientes
Vector de constantes
Invertir la matriz de coeficientes
Solucin calculada por MATLAB
Una forma ms general para resolver sistemas lineales, incluyendo sistemas singulares se
puede hacer con la funcin rref de MATLAB. Esta funcin reduce una matriz a su forma
escalonada con 1s en la diagonal.
Ejemplo. Resuelva el ejemplo anterior con la funcin rref de MATLAB
>> a=[2 3 7;-2 5 6;8 9 4];
>> b=[3;5;8];
>> a=[a, b];
>> c=rref(a)
c=
1.0000
0
0 -0.0556
0 1.0000
0 0.9150
0
0 1.0000 0.0523
Matriz aumentada
104
4.3.9
105
Ejemplo.
>> a=[5 3 7; 2 9 8; 5 8 2]
a=
5 3 7
2 9 8
5 8 2
>> d=determinante(a)
d=
-325
4.4
Valor pagado
50.78
47.36
91.48
98.17
Sean x1,x 2 ,x 3 ,x 4 variables que representan al precio unitario ($/kg) de cada producto.
Entonces, se puede escribir:
2.6x1 + 0.3x 2 + 2.4x 3 + 6.2x 4 =
50.78
7.7x1 + 0.4x 2 + 4.7x 3 + 1.4x 4 =
47.36
5.1x1 + 9.9x 2 + 9.5x 3 + 1.5x 4 =
91.48
6.0x1 + 7.0x 2 + 8.5x 3 + 4.8x 4 =
98.17
En notacin matricial
2.6
7.7
5.1
6.0
106
Si se resuelve este sistema con un mtodo directo se obtiene:
5.1
6.1
5.1
6.0
Si se resuelve este sistema nuevamente con un mtodo directo se obtiene una solucin
totalmente incoherente:
X=
[ 31.5482, 37.0942, 65.5637, 2.1644]T
Los resultados obtenidos con este tipo de sistemas no son confiables para tomar decisiones.
Es necesario detectar si un sistema es mal condicionado. Para esto, se debe cambiar
ligeramente el valor de algn coeficiente y observar el cambio en el vector solucin. Si la
solucin cambia significativamente, entonces es un sistema mal condicionado y debe
revisarse la elaboracin del modelo matemtico.
Esta situacin se origina en el hecho de que algunas ecuaciones pueden depender de otras
ecuaciones, lo cual puede afectar a la confianza en la solucin calculada. Este hecho se
puede asociar al valor del determinante de la matriz. En el ejemplo, si la matriz se normaliza
dividindola para la magnitud del mayor elemento, el determinante es .
107
Si el determinante fuera cero no habra una solucin nica, pero este valor muy pequeo es
un indicio que algunas ecuaciones son bastante dependientes de otras ecuaciones.
En esta seccin se establece una medida para cuantificar el nivel de mal condicionamiento
de un sistema de ecuaciones lineales.
4.4.1
Definiciones
x
i=1
=
X max
=
xi , i 1,2,...,n
n
X = ( x 2 )1/ 2
i=1
=
A max(
=
ai,j , i 1,2,...,n)
j=1
=
=
A max(
ai,j , j 1,2,...,n)
i=1
A = (
=i 1=j 1
2 1/ 2
i,j
Las dos primeras, tanto para vectores como para matrices, se denominan norma 1
norma infinito. La tercera es la norma euclideana.
108
4.4.2
Nmero de condicin
Ejemplo.
0.010 0.005
10 5
A=
=
=
; B 1000A
0.025 0.032
25 32
Determinante
Norma1 de la matriz
Norma1 de la inversa
Nmero de condicin
A
0.000195
0.0370
292.3077
10.8154
B
195
37
0.2923
10.8154
109
Si la matriz tiene filas bastante dependientes de otras filas, su determinante tomar un
valor muy pequeo y su inversa tendr valores muy grandes, siendo esto un indicio de que
la matriz es mal condicionada o es casi singular. Este valor interviene en el nmero de
condicin de la matriz.
Por otra parte, si la matriz tiene valores muy pequeos, su determinante ser muy pequeo
y su inversa contendr valores grandes aunque la matriz no sea mal condicionada.
Si el nmero de condicin solo dependiera de la norma de la matriz inversa, esta norma
tendra un valor grande en ambos casos. Por esto, y usando la propiedad anotada
anteriormente, es necesario multiplicar la norma de la matriz inversa por la norma de la
matriz original para que el nmero de condicin sea grande nicamente si la matriz es mal
condicionada.
6.0
A 1
0.3
0.4
9.9
7.0
2.4
4.7
9.5
8.5
6.2
1.4
1.5
4.8
=
164.4788
37.0436
194.3121 283.9787
4.6161
23.9171
34.9495
20.0676
110
4.4.4
X X = A 1EX
X X A 1 E X
X X A 1 A
E
X
A
cond(A)
|| A A ||
|| A ||
111
Matriz original
2.6
7.7
A=
5.1
6.0
Matriz modificada
2.6
7.7
A=
5.1
6.1
Error en la matriz:
0
0
EA = A - A =
0
0.1
0 0 0
0 0 0
0 0 0
0 0 0
0.1
|| E A ||
=
= 0.0038 = 0.38%
26.3
|| A ||
Nmero de condicin:
cond(A) = 17879.09
Cota para el error relativo de la solucin:
| |e X | cond(A) |e A | = 17879.09 (0.0038) = 67.94 = 6794%
Indica que la magnitud del error relativo de la solucin puede variar hasta en 6794%, por lo
tanto no se puede confiar en ninguno de los dgitos de la respuesta calculada.
112
Ejemplo. Encuentre el error relativo de la solucin en el ejemplo inicial y compare con el
error relativo de la matriz de los coeficientes.
Sistema original:
2.6
7.7
5.1
6.0
2.5
3.2
Solucin: X =
4.1
5.4
Sistema modificado:
2.6
7.7
5.1
6.1
0.1494
0.4182
Solucin: X =
8.3432
4.8778
Error en la solucin:
0.1494
0.4182
EX = X - X =
8.3432
4.8778
2.5 -2.3506
3.2
= -2.7818
4.1 4.2432
-0.5222
5.4
|| E X ||
|| X ||
4.2432
= 0.5086 = 50.86%
8.3432
0.1
|| E A ||
=
= 0.0038 = 0.38%
26.3
|| A ||
113
Ejemplo. Una empresa compra tres materiales A, B, C en cantidades en kg. como se
indica en el cuadro. Se dispone de dos facturas en las que consta el total pagado en
dlares. Se desconoce el total pagado en la segunda factura:
Factura
1
2
3
A
2
3
2
B
5
9
3
C
4
8
1
Total
35
k
17
Sean x1,x 2 ,x 3 variables que representan al precio unitario de cada producto. Entonces, se
puede escribir:
2x1 + 5x 2 + 4x 3 =
35
3x1 + 9x 2 + 8x 3 =
k
2x1 + 3x 2 + x 3 =
17
Con el mtodo de Gauss-Jordan encuentre la solucin en funcin de k
35 / 2
2 5 4 35 1 5 / 2 2
=
A | B 3 9 =
8 k 0 3 / 2 2 k 105
=
/ 2
18
2 3 1 17 0 2 3
1 0 4 / 3 105 5k / 3
0 1 4 / 3 2k / 3=
35
0 0 1/ 3 4k / 3 88
1 0 0 457 7k
0 1 0 6k 387
0 0 1 264 4k
457 7k
X 6k 387
=
264 4k
Para verificar que la solucin es confiable, en la matriz de coeficientes se sustituye 5 por 5.1
y se obtiene nuevamente la solucin con el mtodo anterior con k=65.
2 51/ 10 4 35 1 51/ 20 2 35 / 2
=
A | B 3
9 =
8 65 0 27 / 20 2=
25 / 2
2
3
1 17 0 21/ 10 3 18
17
X = 10
13
1 0 16 / 9 55 / 9 1 0 0 17
0 1 40 / 27 =
250 / 27 0 1 0 10
0 0
1/ 9
13 / 9 0 0 1 13
114
El error de 0.1 en un coeficiente distorsion completamente la solucin, por lo tanto la
solucin no es confiable.
Error relativo de la solucin y error relativo de la matriz
|=
ex |
X X
= 3.75
= 375%,
X
=
|e A |
A A
= 0.005
= 0.5%
A
4.4.5
4.1 5
Escribimos en la pantalla de comandos de MATLAB:
>> a=[4, 5; 4.1, 5];
>> norm(a,inf)
ans =
9.5
>> inv(a)
ans =
-10.0000 10.0000
8.2000 -8.0000
>> cond(a,inf)
ans =
182.0000
(Matriz)
(Norma de fila
(Matriz inversa)
(Nmero de condicin)
(Matriz mal condicionada)
115
4.5
Sistemas singulares
En esta seccin se describe un mtodo directo para intentar resolver un sistema lineal
propuesto de n ecuaciones con m variables, n<m. Estos sistemas tambin se obtienen
como resultado de la reduccin de un sistema dado originalmente con m ecuaciones y m
variables, en los que algunas ecuaciones no son independientes. En ambos casos la matriz
de coeficientes contendr una o ms filas nulas y por lo tanto no tienen inversa y se dice
que la matriz es singular, en este caso tambin diremos que el sistema es singular. Estos
sistemas no admiten una solucin nica.
Sin embargo, si el sistema es un modelo que representa algn problema de inters, es
importante detectar si el sistema es incompatible para el cual no existe solucin, o se trata
de un sistema incompleto para el cual existe infinidad de soluciones. Ms an, es til
reducirlo a una forma en la cual se facilite determinar las variables libres, a las que se
pueden asignar valores arbitrarios analizar las soluciones resultantes en trminos de stas
variables y su relacin con el problema.
Para facilitar el anlisis de estos sistemas, es conveniente convertirlo en una forma ms
simple. La estrategia que usaremos es llevarlo a la forma de la matriz identidad hasta donde
sea posible
4.5.1 Formulacin matemtica y algoritmo
Se desea resolver el sistema de n ecuaciones lineales con m variables, siendo nm
a1,1x1 + a1,2 x1 + ... + a1,m x m =
b1
a2,1x1 + a2,2 x1 + ... + a2,m x m =
b2
...
an,1x1 + an,2 x1 + ... + an,m x m =
bn
En donde
ai,j : Coeficientes
bi : Constantes
xi : Variables cuyo valor debe determinarse
En notacin matricial:
a1,1
a
2,1
...
an,1
a1,2
a2,2
...
...
an,1
...
a1,m x1 b1
a2,m x 2 b2
=
... ... ...
an,m x m bn
116
Simblicamente: AX = B, en donde
a1,1
a
2,1
=
A
...
an,1
a1,2
...
a2,2
...
an,1
...
a1,m
a2,m
=
; B
...
an,m
b1
b
2
=
; X
...
bn
x1
x
2
...
xm
an,1 an,2
... a1,m
... a2,m
... ...
... an,m
a1,m+ 1
a2,m+ 1
...
an,m+ 1
an,1 an,2
... a1,m
... a2,m
...
...
... an,m
an,m+ 1
0 0 ... 1 an,n+ 1 ... an,m an,m+ 1
117
Algoritmo: Gauss-Jordan para sistemas singulares
Entra
a: matriz aumentada del sistema de n ecuaciones lineales
v: vector de variables libres (inicialmente nulo)
Sale
x: Solucin calculada o un vector nulo si la solucin no es nica
a: Matriz reducida a la forma diagonal
Para e = 1, 2, . . ., n
Elegir el valor de mayor magnitud de la columna e en las filas e, e+1, ..., n
Si este valor es cero
agregar e al vector v de las variable libres
avanzar a la siguiente etapa e
Sino (continuar con la transformacin matricial)
t a e,e
Fin
Para i=1, 2, , n; i e
t ai,e
Fin
Fin
Fin
Fin
Si el vector v no contiene variables libres
El vector solucin x es la ltima columna de la matriz a
Sino
Entregar un vector x nulo
Entregar la matriz a reducida
Fin
Ejemplo. Una empresa produce cuatro productos: P1, P2, P3, P4 usando tres tipos de
materiales M1, M2, M3. Cada Kg. de producto requiere la siguiente cantidad de cada
material, en Kg.:
M1
M2
M3
P1
0.2
0.3
0.5
P2
0.5
0
0.5
P3
0.4
0.5
0.1
P4
0.2
0.6
0.2
La cantidad disponible de cada material es: 10, 12, 15 Kg. respectivamente, los cuales
deben usarse completamente. Se quiere analizar alguna estrategia de produccin factible.
118
Sean x1, x2, x3, x4 cantidades en Kg. producidas de P1, P2, P3, P4, respectivamente
Se obtienen las ecuaciones:
0.2x1 + 0.5x2 + 0.4x3 + 0.2x4 = 10
0.3x1
+ 0.5x3 + 0.6x4 = 12
0.5x1 + 0.5x2 + 0.1x3 + 0.2x4 = 15
Si fuesen desigualdades tipo menor o igual, este problema se puede interpretar como un
problema de bsqueda de la mejor solucin y cae en el mbito de la programacin lineal.
Es un sistema de tres ecuaciones y cuatro variables. En notacin matricial
x1
0.2 0.5 0.4 0.2 10
0.3 0 0.5 0.6 x 2 = 12
x
0.5 0.5 0.1 0.2 3 15
x 4
1.00
-0.30
0.30
0.20
0.44
0.36
0.40
0.48
0.12
30.00
3.00
4.00
1.00
0
0
1.00
0
1.66
-1.46
0.80
2.00
-1.60
0.60
40.00
-10.00
7.00
1.00
0
0
1.00
0
0
0
1.00
0.75
-0.50
0.75
25.41
2.83
8.75
+ 0.75x4 = 25.41
- 0.50x4 = 2.83
+ 0.75x4 = 8.75
x4 = t, t0, t
(variable libre)
119
Rango para la variable libre:
x3 = 8.75 - 0.75 t 0 t 11.66
x2 = 2.83 + 0.50 t 0 t 0
x1 = 25.41 - 0.75 t 0 t 33.88
Se concluye que el rango factible para x4 es: 0 t 11.66
Rango para las otras variables
0 t 11.66
x3 = 8.75 - 0.75 t
0 x3 8.75
x2 = 2.83 + 0.50 t
2.83 x2 8.66
x1 = 25.41 - 0.75 t
16.66 x1 25.41
Esta informacin puede ser til para decidir la cantidad que debe producirse de cada artculo
usando todos los recursos disponibles y usando cualquier artculo como referencia.
Ejemplo. Si se decide producir 10 Kg del producto P4, entonces para que no sobren
materiales, la produccin ser:
x4=10 t = x4 = 10, x3=1.25, x2=7.83, x1=17.91
Ejemplo. Si se decide producir 20 Kg del producto P1, entonces para que no sobren
materiales, la produccin ser:
x1=20 t = x4 = 7.21, x3 = 3.34, x2 = 6.43
4.5.2
La instrumentacin se realiza mediante una funcin con el nombre slin utilizando la notacin
compacta de matrices de MATLAB. En la codificacin se incluyen algunos comentarios
ilustrativos. La matriz es estandarizada dividiendo por el elemento de mayor magnitud para
reducir el error de truncamiento y detectar en forma consistente si el sistema es singular.
Por los errores de redondeo se considerar que el elemento de la diagonal es nulo si su
valor tiene una magnitud menor que 10-10.
Parmetros de entrada
a: matriz de coeficientes
b: vector de constantes
Parmetros de salida
x: vector solucin
a: matriz de coeficientes reducida a la forma escalonada
120
Puede llamarse a la funcin slin especificando nicamente un parmetro de salida, el vector
solucin:
>> x=slin(a,b)
Si se obtiene como respuesta un vector nulo
x=
[]
Entonces se puede llamar usando los dos parmetros de salida para analizar el resultado de
la transformacin matricial, como se indicar en los ejemplos posteriores:
>> [x,c]=slin(a,b)
Si el vector solucin no es un vector nulo, entonces el sistema es consistente y la solucin
obtenida es nica y la matriz se habr reducido a la matriz identidad.
Si el vector solucin es un vector nulo, entonces el sistema es singular y la matriz de
coeficientes reducida permitir determinar si es un sistema redundante o incompatible.
121
function [x,a]=slin(a,b)
[n,m]=size(a);
z=max(max(a));
v=[n+1:m];
%Vector inicial de variables libres
a(1:n,m+1)=b;
%Matriz aumentada
if n>m
%Mas ecuaciones que variables
x=[ ];
a=[ ];
return;
end
a=a/z;
%Estandarizar la matriz para reducir error
for e=1:n
%Ciclo para n etapas
[z,p]=max(abs(a(e:n,e)));
%Pivoteo por filas
p=p+e-1;
t=a(e,e:m+1);
%Cambiar filas
a(e,e:m+1)=a(p,e:m+1);
a(p,e:m+1)=t;
if abs(a(e,e))<1.0e-10
%Sistema singular
v=[v, e];
%Agregar variable libre y continuar
else
a(e,e:m+1)=a(e,e:m+1)/a(e,e);
%Normalizar la fila e
for i=1:n
%Reducir otras filas
if i~=e
a(i,e:m+1)=a(i,e:m+1)-a(i,e)*a(e,e:m+1);
end
end
end
end
x=[ ];
if length(v)==0;
%Sistema consistente. Solucin nica
x=a(1:n,m+1);
%El vector X es la ltima columna de A
a(:,m+1)=[ ];
%Eliminar la ltima columna de A
return;
end
En los siguientes ejemplos se utiliza una notacin informal para identificar cada tipo de
sistema que se resuelve. Los resultados obtenidos deben interpretarse segn lo descrito en
la instrumentacin computacional de la funcin slin.
Sistema completo:
Sistema incompleto:
122
+ 2x3 + 4x4 = 1
x2 + 2x3
=0
=0
x1 + 2x2 + x3
x 1 + x2
+ 2x4 = 2
>> a = [1 0 2 4; 0 1 2 0; 1 2 1 0; 1 1 0 2]
a=
1 0 2 4
0 1 2 0
1 2 1 0
1 1 0 2
>> b=[1; 0; 0; 2]
b=
1
0
0
2
>> x=slin(a,b)
x=
-3.0000
2.0000
-1.0000
1.5000
2) Sistema completo reducido a incompleto redundante
>> a=[1 1 2 2;1 2 2 4;2 4 2 4 ;1 3 0 2]
a=
1 1 2 2
1 2 2 4
2 4 2 4
1 3 0 2
123
>> b=[1; 2; 2; 1]
b=
1
2
2
1
>> x=slin(a,b)
x=
[]
>> [x,c]=slin(a,b)
x=
[]
c=
1 0 0 -4
0 1 0 2
0 0 1 2
0 0 0 0
-2
1
1
0
124
>> [x,c]=slin(a,b)
x=
[]
c=
1.0000
0
0 0.6400 -0.2800
0 1.0000
0 -1.9200 -0.1600
0
0 1.0000 1.6800 0.6400
Se obtiene un sistema equivalente. Las soluciones se asignan mediante la variable libre x4:
x1
x2
+ 0.64x4 = -0.28
- 1.92x4 = -0.16
x3 + 1.68x4 = 0.64
Sistema equivalente:
x1
- 4x4 = -2
- 2x4 = 1
x2
x3 + 2x4 = 1
0x4 = 3
125
4.5.3
0
0
0 1
0 0
0 1
1 1
0 0
0
1
0
0
1
x1
0 2
x2
0 1 30
x3
1 0 = 4
x4
0 0 10
x5
0 0 50
x 6
0
-1
-1
-1
0
0
0
0
0
0
1
-2
6
-4
50
20
(matriz 5x6)
(vector 5x1)
126
4.6
Sistemas tridiagonales
a 3 b3
...
x1 d1
x d
2 2
x 3 = d3
c3
... ... ... ...
an bn xn dn
a
b
c
d
2
2
2
2
a3 b3 d3
1) Sea w 1 = b1 . Dividir la primera fila para w1
a2
2) Sea g1 =
c1
w1
b2
a3
c2
b3
d1
w1
d2
d3
d1
. Restar de la segunda fila, la primera multiplicada por a2
w1
0 b2
c1
w1
a2
a3
d2 a2 g1
d3
g1
c1
w1
c2
b3
127
b2 a 2
3) Sea w=
2
c1
. Dividir la segunda fila para w2
w1
c1
g1
1 w
c2 d2 a2 g1
0 1
w2
w2
a 3 b3
d3
d a2 g1
4) Sea g2 = 2
. Restar de la tercera fila, la segunda multiplicada por a3
w2
c1
1
w
1
c2
0 1
w
2
0 b3 a 3 2
w
2
b3 a 3
5) Sea w=
3
c1
1
w
1
0 1
6) Sea g3 =
g2
d3 a3 g2
g1
c2
. Dividir la tercera fila para w3
w2
g2
d3 a3 g2
w3
g1
c2
w2
1
d3 a3 g2
. Finalmente se obtiene:
w3
c1
1 w
1
0 1
c2
w2
1
g1
g2
g3
c2
x3
w2
x=
g1
1
c1
x2
w1
128
La formulacin se extiende al caso general (2)
Transformacin matricial de un sistema tridiagonal de n ecuaciones lineales
w 1 = b1
g1 =
d1
w1
ac
wi =
bi i i1 ,
w i1
=
gi
i=
2,3,...,n
di aigi1
=
,
i 2,3,...,n
wi
Obtencin de la solucin
xn = gn
xi =
gi
(2)
ci x i + 1
,
wi
i =
n 1, n 2,...,2,1
Algoritmo de Thomas
El algoritmo incluye un ciclo dependiente del tamao del problema n para reducir la matriz y
otro ciclo separado para obtener la solucin, ambos dependientes de n. Por lo tanto este
algoritmo tiene eficiencia T(n)=O(n).
4.6.2
Con la formulacin anterior se escribe una funcin para resolver un sistema tridiagonal de n
ecuaciones lineales. La funcin recibe los coeficientes y las constantes en los vectores a, b,
c, d. La solucin es entregada en el vector x
function x = tridiagonal(a, b, c, d)
n = length(d);
w(1) = b(1);
g(1) = d(1)/w(1);
for i = 2:n
w(i) = b(i) - a(i)*c(i-1)/w(i-1);
g(i) = (d(i) - a(i)*g(i-1))/w(i);
end
x(n) = g(n);
for i = n-1:-1:1
x(i) = g(i) - c(i)*x(i+1)/w(i);
end
%Transformacin matricial
%Obtencin de la solucin
129
Ejemplo. Resuelva el siguiente sistema tridiagonal de ecuaciones lineales usando la
funcin anterior
7 5
x1 6
2 8 1 x 5
2 =
6 4 3 x3 7
9 8 x 4 8
>> a = [0 2 6 9];
>> b = [7 -8 4 8];
>> c = [5 1 3 0];
>> d = [6 5 7 8];
>> x = tridiagonal(a, b, c, d)
x=
0.7402
0.1637
4.8288
-4.4324
Solucin calculada
130
5.1
Mtodo de Jacobi
5.1.1
Formulacin matemtica
xi =
1
(bi
ai,i
i1
j= 1
j= i + 1
ai,jx j ai,jx j ) =
1
(bi
ai,i
=j 1,ji
ai,j x j ); i = 1, 2, ..., n;
131
Utilizamos un ndice arriba para indicar iteracin:
X(k+1) = G(X(k)), k=0, 1, 2, .... (iteraciones)
Frmula iterativa de Jacobi:
xi(k +1) =
1
(bi
ai,i
=j 1,ji
ai,j x (k)
j ); i = 1, 2, ..., n; k = 0, 1, 2, ...
X(0) es el vector inicial. A partir de este vector se obtienen los vectores X(1), X(2), ...
Si el mtodo converge, entonces X(k) tiende a la solucin X a medida que k crece:
X (k) X
k
k = 0, 1, 2, ...
Realice dos iteraciones, comenzando con los valores iniciales: x1(0) = x2(0) = x3(0) = 1
k=0:
x1(1) = 1/5 (5 + 3x2(0) x3(0)) = 1/5 (5 + 3(1) (1)) = 1/5 (7) = 1.4
x2(1) = 1/4 (6 2x1(0) + x3(0)) = 1/4 (6 2(1) + (1)) = 1/4 (5) = 1.25
x3(1) = 1/8 (4 2x1(0) + 3x2(0)) = 1/8 (4 2(1) + 3(1)) = 1/8 (5) = 0.625
k=1:
132
5.1.2
Vector inicial
Repita este comando y observe la convergencia
133
5.1.3
Algoritmo de Jacobi
Entra
a: matriz de coeficientes,
b: vector de constantes del sistema de n ecuaciones lineales
e: estimacin del error para la solucin,
m: mximo de iteraciones permitidas
x: vector inicial para la solucin, k es el conteo de iteraciones
Sale
x: vector solucin
tx
Para k = 1, 2, . . ., m
Calcular el vector x con la frmula de Jacobi
Si la norma del vector x t es menor que e
x es el vector solucin con error e
Terminar
sino
tx
fin
fin
Al exceder el mximo de iteraciones entregar un vector x nulo
5.1.4
134
Ejemplo. Use la funcin jacobim para encontrar el vector solucin del ejemplo anterior
con un error de 0.0001 Determine cuntas iteraciones se realizaron. Comenzar con el
vector inicial x=[1; 1; 1]
>> a=[5, -3, 1; 2, 4, -1; 2, -3, 8];
>> b=[5; 6; 4];
>> x=[1; 1; 1];
>> [x,k]=jacobim(a,b,x,0.0001,20)
x=
1.4432
0.8973
0.4757
k=
12
5.1.5
a1,1 a1,2
a
2,1 a 2,2
A=
... ...
an,1 an,2
... a1,n
0
0
... a2,n
a2,1 0
=L + D + U =
... ...
... ...
... an,n
an,1 an,2
...
...
...
...
0 a1,1 0
0 0 a 2,2
+
... ... ...
0 0
0
Sustituyendo en la ecuacin:
(L + D + U)X = B
LX + DX + UX = B
X = D-1B - D-1LX - D-1UX,
0 0 0 a1,2
0 0 0 0
+
... ... ... ...
0 an,n 0 0
... a1,n
... a2,n
... ...
0 0
135
Ecuacin recurrente del mtodo de Jacobi segn el mtodo del Punto Fijo X = G(X)
X = D-1B - D-1 (L + U)X
En donde
1
D 1 =
ai,i nxn
Ecuacin recurrente desarrollada
x1
x
2
=
:
x2
0
b1 / a1,1
b / a a / a
2 2,2 2,1 2,2
:
:
bn / an,n an,1 / an,n
a1,2 / a1,1
0
:
an,2 / an,n
a1,3 / a1,1
a2,3 / a2,2
:
an,3 / an,n
(iteraciones)
:
x (k + 1)
n
0
b1 / a1,1
b / a a / a
2 2,2 2,1 2,2
:
:
bn / an,n an,1 / an,n
a1,2 / a1,1
0
:
an,2 / an,n
a1,3 / a1,1
a2,3 / a2,2
:
an,3 / an,n
(k)
... a1,n / a1,1 x1
(k)
...
0
xn(k)
X(0) es el vector inicial. A partir de este vector se obtienen sucesivamente los vectores
X(1), X(2), ...
Si el mtodo converge, entonces la sucesin { X(k) }k=0,1,2,.. tiende al vector solucin X
136
5.1.6
Matriz diagonal
Vector inicial
137
x=
1.4500
0.8422
0.4523
Etc
5.2
Mtodo de Gauss-Seidel
Se diferencia del mtodo anterior al usar los valores ms recientes del vector X, es decir
aquellos que ya estn calculados, en lugar de los valores de la iteracin anterior como en el
mtodo de Jacobi. Por este motivo, podemos suponer que el mtodo de Gauss-Seidel en
general converge o diverge ms rpidamente que el mtodo de Jacobi.
5.2.1
Formulacin matemtica
xi(k +1) =
1
(bi ai,i
i1
j= 1
j= i + 1
i = 1, 2, ..., n; k = 0, 1, 2, ...
138
Comenzando con el vector inicial: x1(0) = x2(0) = x3(0) = 1, realice dos iteraciones:
k=0:
k=1:
5.2.2
Vector inicial
Repetir este comando y observar la convergencia
139
>> x=gaussseidel(a,b,x)
x=
1.4412
0.8985
0.4766
Etc.
En general, la convergencia es ms rpida que con el mtodo de Jacobi
5.2.3
a y el vector de constantes b de un
x, el criterio de error e y el mximo
vector x calculado y el nmero de
contendr un vector nulo y el nmero
140
Ejemplo. Use la funcin gaussseidelm para encontrar el vector solucin del ejemplo
anterior con un error de 0.0001 y determine cuntas iteraciones se realizaron si se
comienza con el vector inicial x=[1; 1; 1]
>> a=[5, -3, 1; 2, 4, -1; 2, -3, 8];
>> b=[5; 6; 4];
>> x=[1; 1; 1];
>> [x,k]=gaussseidelm(a,b,x,0.0001,20)
x=
1.4432
0.8973
0.4757
k=
7
5.2.4
...
...
...
...
El sistema est en la forma recurrente del punto fijo X = G(X) que sugiere su uso iterativo.
En el mtodo de Gauss-Seidel se utilizan los valores recientemente calculados del vector X.
141
Frmula iterativa
X (k +1) =
D1B D1LX (k +1) D1UX (k) , k =
0,1,2,...
X(0) es el vector inicial. A partir de este vector se obtienen sucesivamente los vectores
X(1), X(2), ...
Si el mtodo converge, entonces la sucesin { X(k) }k=0,1,2,.. tiende al vector solucin X
Frmula matricial iterativa del mtodo de Gauss-Seidel:
x1(k +1) b1 / a1,1
0
0
0
(k + 1)
0
0
x 2 b2 / a2,2 a2,1 / a2,2
:
:
:
:
:
x (k + 1) bn / an,n an,1 / an,n an,2 / an,n an,3 / an,n
n
5.3
...
...
...
...
(k + 1)
0 x1 0 a1,2 / a1,1 a1,3 / a1,1
+ 1)
0 x (k
0
a2,3 / a2,2
0
2
: : :
:
:
0 x (k + 1) 0
0
0
n
(k)
... a1,n / a1,1 x1
Mtodo de relajacin
Formulacin matemtica
(bi ai,i
i1
j= 1
j= i
i = 1, 2, ..., n; k = 0, 1, 2, ...
142
Realice una iteracin con el vector inicial: x1(0) = x2(0) = x3(0) = 1, y con =1.1:
k=0:
x1(1) = x1(0) + 1.1/5 (5 5x1(0) + 3x2 (0) x3 (0)) = 1 + 1.1/5 (5 5(1) + 3(1) 1) = 1.4400;
x2(1) = x2(0) + 1.1/4 (6 2x1(1) 4x2(0) + x3(0)) = 1 + 1.1/4 (6 2(1.6) 4(1) + 1) = 1.0330
x3 (1 )= x3(0) + 1.1/8 (4 2x1(1) + 3x2(1) 8x3(0)) = 1 + 1.1/8 (4 2(1.6) 3(0.925) 8(1)) =
0.4801
5.3.2
Vector inicial
Repita este comando y observe la convergencia
143
D es una matriz diagonal con elementos iguales a los de la diagonal principal de A
L es una matriz triangular inferior con ceros en la diagonal principal y los otros elementos
iguales a los elementos respectivos de la matriz A
S es una matriz triangular superior con todos sus elementos iguales a los elementos
respectivos de la matriz A
Sustituyendo en la ecuacin:
(L + D + S - D)X = B
LX + DX + SX - D X = B
X = D-1B - D-1LX - D-1SX + D-1DX,
...
...
...
...
El sistema est en la forma recurrente del punto fijo X = G(X) que sugiere su uso iterativo.
En el mtodo de Relajacin se agrega un factor
Frmula iterativa en forma matricial
+ 1)
X (k=
X (k) + (D1B D1LX (k +1) D1SX (k) ), =
k 0,1,2,...
es el factor de relajacin. Este factor modifica al residual tratando de reducirlo a cero con
mayor rapidez que el mtodo de Gauss-Seidel.
Si =1 la frmula iterativa se reduce a la frmula del mtodo de Gauss-Seidel
Si (0,1) se denomina mtodo de subrelajacin.
Si (1,2) se denomina mtodo de sobrerelajacin.
X(0) es el vector inicial. A partir de este vector se obtienen sucesivamente los vectores
X(1), X(2), ...
144
5.4 Convergencia de los mtodos iterativos para sistemas lineales
Dado el sistema de ecuaciones lineales
AX = B
Se puede re-escribir en un sistema equivalente recurrente como en el Punto Fijo: X = G(X)
X= C + TX
En donde C es un vector y T se denomina matriz de transicin
Forma iterativa de la ecuacin de recurrencia:
X (k +1) =
C + TX (k) , k =
0,1,2,...
De la resta de las ecuaciones se obtiene
X - X(k+1) = T (X - X(k))
Si se define el error de truncamiento vectorialmente entre dos iteraciones consecutivas
E(k) = X - X(k)
E(k+1) = X - X(k+1)
Sustituyendo en la ecuacin anterior
E(k+1) = T E(k)
Definicin: Convergencia del error de truncamiento
E(k+1) = T E(k)
En donde T es la matriz de transicin
Definicin
Si A es una matriz, entonces su radio espectral se define como
(A)
= max { i | i es un valor caracterstico de A}
1 i n
(k + 1)
=
C + TX (k) , k =
0,1,2,...
converge con cualquier vector inicial X (0) R n al vector solucin X si y solo si (T) < 1
145
5.4.1 Matriz de transicin para los mtodos iterativos
Forma general recurrente de los mtodos iterativos
X (k + 1) =
C + TX (k) , k =
0,1,2,...
Para obtener T se usar la definicin de convergencia con el error de truncamiento
E(k+1) = T E(k)
Matriz de transicin para el mtodo de Jacobi
Sistema de ecuaciones lineales
AX = B
Ecuacin recurrente equivalente sustituyendo A = L + D + U
a / a
2,1
2,2
T=
D1(L + U) =
an,1 / an,n
a1,2 / a1,1
0
:
an,2 / an,n
a1,3 / a1,1
a2,3 / a2,2
:
an,3 / an,n
...
:
...
0
146
Convergencia definida con el error de truncamiento
E(k+1) = T E(k)
Su norma:
|| E(k+1) || || T || || E(k) ||, k = 0, 1, 2, ...
Esta relacin define una condicin suficiente para la convergencia del mtodo de Jacobi
mediante la norma de la matriz de transicin: || T || < 1
Se conoce tambin la relacin (A) || T ||
La forma de la matriz T establece que si en cada fila de la matriz A la magnitud de cada
elemento en la diagonal es mayor que la suma de la magnitud de los otros elementos de la
fila respectiva, entonces || T || < 1 usando la norma de fila. Si la matriz A cumple esta
propiedad se dice que es diagonal dominante y constituye una condicin suficiente para
la convergencia
i (|ai,i| >
=j 1,ji
| ai,j | ) || T || < 1
Matriz de transicin T
0 9 / 8 2 / 8
T=
D (L + U) =
2 / 7 0 2 / 7
2 / 6 8 / 6 0
1
Norma de T:
|| T=
|| 5 / 3 > 1
147
Los valores propios de T son las races del polinomio caracterstico:
p( ) = det(T I) = 3 + 11/ 14 17 / 84 = 0
Los valores propios son: 0.287968, 0.706615, -0.994583
Por lo tanto (T) < 1 y se puede concluir que el mtodo de Jacobi si converge
Clculos con MATLAB usando precisin estndar
>> t=[0 9/8 2/8; 2/7 0 2/7; 2/6 8/6 0];
>> lambda=eig(t)
lambda =
0.9946
-0.2880
-0.7066
>> ro=max(abs(lambda))
ro =
0.9946
Matriz de transicin
Obtencin de los valores propios
(Eigen values)
Radio espectral
Matriz de transicin:
T = (I + D-1L)-1( -D-1U)
148
Matriz de transicin para el mtodo de Relajacin
Sistema de ecuaciones lineales
AX = B
Ecuacin recurrente equivalente sustituyendo A = L + D + S D incluyendo el factor
X = X + D-1B - D-1LX - D-1SX,
149
5.5
La frmula del error de truncamiento expresa que la convergencia de los mtodos iterativos
es de primer orden:
E(k+1) = O(E(k))
Cada iteracin requiere multiplicar la matriz de transicin por un vector, por lo tanto la
cantidad de operaciones aritmticas realizadas T en cada iteracin es de segundo orden:
T(n)=O(n2 )
Si k representa la cantidad de iteraciones que se realizan hasta obtener la precisin
requerida, entonces la eficiencia de clculo de los mtodos iterativos es: T(n) = k O(n2)
5.6
|| X(k+1) - X(k) || 0, si k
|| X (k + 1) X (k) ||
< e,
|| X (k + 1) ||
150
5.7
La siguiente instrumentacin del mtodo de Jacobi usa el radio espectral para determinar la
convergencia. En caso de convergencia, entrega la solucin y la cantidad de iteraciones
realizadas hasta que se cumple el requisito del error permitido. Caso contrario, entrega un
vector nulo.
a: matriz de coeficientes
b: vector de constantes
e: error permitido
x: vector solucin
k: conteo de iteraciones realizadas
function [x,k]=jacobie(a,b,e)
d=diag(diag(a));
l=tril(a)-d;
u=triu(a)-d;
T=-inv(d)*(l+u);
v=eig(T);
r=max(abs(v));
if r>=1
x=[ ];
k=r;
return;
end
x=[1; 1; 1];
for i=1:1000000000
xn=inv(d)*b-inv(d)*(l+u)*x;
if norm(x-xn,inf)<e
k=i;
return;
end
x=xn;
end
%Matriz de transicin
%Radio espectral
151
Ejemplo. Resolver el siguiente sistema de ecuaciones con el mtodo iterativo de Jacobi en
caso de que converja y determine la cantidad de iteraciones realizadas hasta que los
resultados tengan error E=104
8x1 + 9x 2 + 2x 3 =
69
2x1 + 7x 2 + 2x 3 =
47
2x1 + 8x 2 + 6x 3 =
68
>> a=[8 9 2; 2 7 2; 2 8 6]
a=
8 9 2
2 7 2
2 8 6
>> b=[69; 47; 68]
b=
69
47
68
>> [x,k]=jacobie(a,b,0.0001)
x=
2.0000
5.0000
4.0000
k=
2096
Vector solucin
Cantidad de iteraciones
NOTA: La gran cantidad de iteraciones requeridas demuestra lo ineficiente que puede ser
este mtodo iterativo cuando el radio espectral es cercano a 1
No es diagonal dominante
pero pudiera ser que converja
152
>> b=[5;6;4]
b=
5
6
4
>> d=diag(diag(a))
d=
9 0 0
0 5 0
0 0 8
>> l=tril(a)-d
l=
0 0 0
2 0 0
6 2 0
>> u=triu(a)-d
u=
0 3 7
0 0 7
0 0 0
>> t=-inv(d)*(l+u)
t=
0 -0.3333 -0.7778
-0.4000
0 -1.4000
-0.7500 -0.2500
0
>> e=eig(t)
e=
-1.1937
0.5969 + 0.0458i
0.5969 - 0.0458i
>> r=norm(e,inf)
r=
1.1937
>> x=[1;1;1]
x=
1
1
1
>> x=jacobi(a,b,x)
x=
-0.5556
-0.6000
-0.5000
matriz diagonal
Mtodo de Jacobi
Matriz de transicin
valores caractersticos
153
>> t=inv((eye(3)+inv(d)*l))*(-inv(d)*u)
t=
0 -0.3333 -0.7778
0 0.1333 -1.0889
0 0.2167 0.8556
>> r=norm(eig(t),inf)
r=
0.5916
>> x=[1;1;1]
x=
1
1
1
>> x=gaussseidel(a,b,x)
x=
-0.5556
0.0222
0.9111
>> x=gaussseidel(a,b,x)
x=
-0.1605
-0.0114
0.6232
>> x=gaussseidel(a,b,x)
x=
0.0746
0.2977
0.3696
>> s=triu(a)
s=
9 3 7
0 5 7
0 0 8
>> w=0.9;
>> t=inv(eye(3)+w*inv(d)*l)*(eye(3)-w*inv(d)*s)
t=
0.1000 -0.3000 -0.7000
-0.0360 0.2080 -1.0080
-0.0594 0.1557 0.7993
>> r=norm(eig(t),inf)
r=
0.6071
Mtodo de Gauss-Seidel
Matriz de transicin
Si converge
Matriz de transicin
Si converge
154
>> x=[1;1;1]
x=
1
1
1
>> x=relajacion(a,b,x,0.9)
x=
-0.4000
0.0640
0.8056
>> x=relajacion(a,b,x,0.9)
x=
-0.1231
0.1157
0.5876
>> w=1.1;
>> t=inv(eye(3)+w*inv(d)*l)*(eye(3)-w*inv(d)*s)
t=
-0.1000 -0.3667 -0.8556
0.0440 0.0613 -1.1636
0.0704 0.2856 0.9258
>> r=norm(eig(t),inf)
r=
0.6076
>> w=1.5;
>> t=inv(eye(3)+k*inv(d)*l)*(eye(3)-k*inv(d)*s)
t=
-0.5000 -0.5000 -1.1667
0.3000 -0.2000 -1.4000
0.4500 0.6375 1.3375
>> r=norm(eig(t),inf)
r=
0.9204
>> w=1.6;
>> t=inv(eye(3)+w*inv(d)*l)*(eye(3)-w*inv(d)*s)
t=
-0.6000 -0.5333 -1.2444
0.3840 -0.2587 -1.4436
0.5664 0.7435 1.4708
>> r=norm(eig(t),inf)
r=
1.0220
Si converge
Mtodo de relajacin (w=1.5)
Matriz de transicin
Si converge
Mtodo de relajacin (w=1.6)
Matriz de transicin
No converge
155
Se puede comprobar la convergencia o divergencia llamando repetidamente a la funcin
relajacin escrita previamente en MATLAB. Se la puede modificar incluyendo una
condicin para que se repita hasta que el mtodo converja y un conteo de iteraciones para
comparar con diferentes casos, en forma similar a la funcin gaussseidelm
Ejemplo La siguiente matriz es del tipo que aparece frecuentemente en Anlisis Numrico
4 1 1 1
1 4 1 1
a=
1 1 4 1
1 1 1 4
Use el Teorema general de convergencia: (T) < 1, para determinar cul es el mtodo
iterativo ms favorable para realizar los clculos con esta matriz.
Mtodo de Jacobi
>> t=inv((eye(4)+inv(d)*l))*(-inv(d)*u);
>> rgaussseidel=norm(eig(t),inf)
rgaussseidel =
0.5699
Mtodo de Gauss-Seidel
>> w=0.9;
>> t=inv(eye(4)+w*inv(d)*l)*(eye(4)-w*inv(d)*s);
>> rrelajacion=norm(eig(t),inf)
rrelajacion =
0.6438
Mtodo de Relajacin
156
>> w=1.1;
>> t=inv(eye(4)+w*inv(d)*l)*(eye(4)-w*inv(d)*s);
>> rrelajacion=norm(eig(t),inf)
rrelajacion =
0.4754
>> w=1.2;
>> t=inv(eye(4)+w*inv(d)*l)*(eye(4)-w*inv(d)*s);
>> rrelajacion=norm(eig(t),inf)
rrelajacion =
0.3312
>> w=1.3;
>> t=inv(eye(4)+w*inv(d)*l)*(eye(4)-w*inv(d)*s);
>> rrelajacion=norm(eig(t),inf)
rrelajacion =
0.3740
>> w=1.4;
>> t=inv(eye(4)+w*inv(d)*l)*(eye(4)-w*inv(d)*s);
>> rrelajacion=norm(eig(t),inf)
rrelajacion =
0.4682
Estos resultados muestran que para esta matriz, los tres mtodos convergeran. La
convergencia ser ms rpida si se usa el mtodo de relajacin con w = 1.2. Se puede
verificar realizando las iteraciones con las funciones respectivas escritas en MATLAB
157
5.9
x 1 + 2x 2 x 3 = 2
x 1 + x 2 + ( + 1)x 3 = 1
Indique para cuales valores de el sistema tiene una solucin
2. Dado el sistema [ai, j] x = [bi], i, j = 1, 2, 3
Siendo ai, j = i/(i + j), bi = 2i
a) Escriba el sistema de ecuaciones lineales correspondiente
b) Resuelva el sistema con el Mtodo de Gauss-Jordan
3. Los puntos (x, y): (1, 3), (2,5), (4,2), (5, 4) pertenecen a la siguiente funcin:
f(x) = a1x2 + a2 e0.1x + a3 x + a4
a) Escriba el sistema de ecuaciones con los puntos dados,
b) Resuelva el sistema con el Mtodo de Gauss usando la estrategia de pivoteo con 4
decimales
4. Demuestre mediante un conteo que la cantidad de multiplicaciones que requiere el
mtodo de directo de Gauss-Jordan para resolver un sistema de n ecuaciones lineales es
n3/2 + O(n2) y que para el Mtodo de Gauss es n3/3 + O(n2)
5. En el mtodo de Gauss con pivoteo parcial, en cada etapa e de la transformacin, se
elige como divisor el coeficiente con mayor magnitud de los coeficiente ubicados en la
columna e y en las filas e, e+1, e+2, , n.
Describa en seudocdigo un algoritmo para realizar el pivoteo total que consiste en elegir
como divisor el coeficiente de mayor magnitud en la submatriz ubicada desde la fila e hasta
la fila n y desde la columna e hasta la columna n. Su algoritmo debe describir nicamente el
intercambio de filas y columnas indicando los ciclos y los ndices para comparar e
intercambiar filas y columnas.
6. Describa, en notacin simblica o en cdigo MATLAB, un algoritmo que reciba una matriz
Anxn y entregue como resultado las matrices L, D, U tales que A = L+D+U. Describa la
descomposicin matricial mediante ciclos e ndices. L: sub matriz debajo de la diagonal, D:
matriz diagonal, U: submatriz sobre la diagonal. No use comandos diag, tril, triu de
MATLAB
7. Considere la matriz de los coeficientes del ejercicio 3 de la seccin anterior
a) Use el mtodo de Gauss-Jordan para encontrar la matriz inversa
b) Calcule el nmero de condicin. Es una matriz mal condicionada?
158
8. Dado el siguiente sistema de ecuaciones
1 1/ 2 1/ 3 x1 4
1/ 4 1/ 5 1/ 6 x = 5
2
1/ 7 1/ 8 1/ 9 x 3 6
a) Resuelva el sistema usando el mtodo de Gauss-Jordan. Simultneamente encuentre la
inversa de la matriz
b) Modifique la matriz de coeficientes sustituyendo el valor de elemento a1,1 con el valor 0.9
Resuelva nuevamente el sistema. Encuentre la variacin en la solucin calculada.
c) Obtenga el nmero de condicin de la matriz original.
d) Suponga que el error en los coeficientes no excede a 0.01. Use la definicin indicada
para encontrar una cota para el error en la solucin
9. Un comerciante compra tres productos: A, B, C. Estos productos se venden por peso en
Kg. pero en las facturas nicamente consta el total que debe pagar. El valor incluye el
impuesto a las ventas y supondremos, por simplicidad que es 10%. El comerciante desea
conocer el precio unitario de cada artculo, para lo cual dispone de tres facturas con los
siguientes datos:
Factura Kg. de A Kg. de B Kg. de C Valor pagado
1
4
2
5
$19.80
2
2
5
8
$30.03
3
2
4
3
$17.82
Formule el modelo matemtico para encontrar la solucin y obtngala mediante un mtodo
directo.
10. El siguiente programa se puede usar para construir una matriz Anxn mal condicionada
con nmero de condicin mayor a 1000.
n=input('Ingrese dimensin ');
c=0;
while c<=1000
a=fix(10*rand(n,n));
c=cond(a,inf);
end
disp(c);
disp(a);
a) Use este programa para construir una matriz mal condicionada de dimensin 5x5
b) Defina un vector de constantes y con la matriz anterior, defina un sistema de ecuaciones
lineales
c) Use un mtodo directo computacional para obtener la solucin del sistema anterior.
d) Modifique ligeramente algn coeficiente de la matriz, recalcule la solucin y verifique la
sensibilidad de la solucin a este cambio.
e) Use el nmero de condicin para establecer una cota para el error relativo de la solucin
en trminos del error relativo de la matriz de coeficientes.
159
11. Suponga que el siguiente modelo describe la cantidad de personas que son infectadas
por un virus, en donde x es tiempo en das: f(x) = k1 x + k2 x2 + k3 e0.15X. Se conoce
adems que la cantidad de personas infectadas fue 25, 130 y 650 en los das 10, 15 y 20
respectivamente. En el modelo, k1, k2 y k3 son coeficientes que deben determinarse.
a) Plantee el sistema de ecuaciones lineales que permitira determinar los coeficientes
b) Verifique que el vector K = [-17.325094, -2.242168, 94.265303]T es la solucin
c) Suponga que el dato 650 realmente corresponda al da 21. Al resolver nuevamente el
sistema se obtiene el vector solucin K = [-14.427522, -0.897956, 57.8065182]T.
Es confiable la solucin calculada?
d) Determine la variacin relativa de la solucin con respecto a la variacin relativa de la
matriz de coeficientes, sabiendo que la inversa de la matriz original es:
. . .
. . .
. . .
2
2 3 1 x 3 17
a) Obtenga la solucin con un mtodo directo
b) En la matriz de coeficientes sustituya 5 por 5.1 y obtenga nuevamente la solucin con un
mtodo directo y compare con la solucin del sistema original
c) Encuentre el error relativo de la solucin y compare con el error relativo de la matriz.
Comente acerca del tipo de sistema
13. Use la funcin slin para resolver el siguiente sistema. Identifique las variables libres.
Escriba el conjunto solucin en trminos de la variable libre. Asigne un valor a la variable
libre y determine el valor de cada una de las otras variables:
8
5
1
9
6
2
2
5
3
9
8
9
9
3
2
1
5
9
7
2
6
3
8
9
6
2
4
3
6
1
7 1
1
4 2 4
2 3 = 2
1 4 4
6 5 6
8 6 5
160
2 X1 X 3 =
1
P1
0.1
0.2
0.7
P2
0.3
0.6
0.1
P3
0.6
0.3
0.1
P4
0.4
0.4
0.2
La cantidad disponible semanal de cada material es: 100, 120, 150 Kg. respectivamente, los
cuales deben usarse completamente. Se quiere analizar la estrategia de produccin.
a) Formule un sistema de ecuaciones lineales siendo x1, x2, x3, x4 cantidades en Kg.
producidas semanalmente de los productos A, B, C, D respectivamente
b) Obtenga una solucin con la funcin slin y re-escriba el sistema de ecuaciones
resultante.
c) Escriba el conjunto solucin expresado mediante la variable libre.
d) Encuentre el rango factible para la variable libre
e) Encuentre el rango factible para las otras variables
f) Defina cuatro casos de produccin eligiendo un valor para cada una de las cuatro
variables y estableciendo el nivel de produccin para las restantes variables.
17. Un ingeniero que tiene a cargo una obra de construccin requiere 4800 m3 de arena,
5800 m3 de grava fina y 5700 m3 de grava gruesa. Hay tres canteras de las que pueden
obtenerse dichos materiales. La composicin del 100% de dichas canteras es:
Arena %
Cantera 1
Cantera 2
Cantera 3
52
20
25
Grava fina %
Grava gruesa %
30
50
20
18
30
55
Ej. Un m3 extraido de la Cantera 1 contiene 52% de arena, 30% de grava fina y 18% de
grava gruesa.
161
Se desea determinar cuantos metros cbicos tienen que extraerse de cada cantera para
satisfacer las necesidades del ingeniero.
a) Formule el sistema de ecuaciones lineales
b) Determine la convergencia del mtodo de Jacobi.
c) Aplicar el mtodo de Gauss-Seidel comenzando con un vector cero. Estime el error
absoluto y el error relativo en la quinta iteracin
18. Dado el sistema siguiente. Reordene las ecuaciones tratando de acercarlo a la forma
diagonal dominante.
4x1 + 2x 2 + 5x 3 =
18.00
2x1 + 5x 2 + x 3 =
27.30
2x1 + 4x 2 + 3x 3 =
16.20
30
40
32
35
20
26
43
50
162
20. Considere el siguiente sistema [ai,j][xi] = [bi], i = 1, 2, 3; j = 1, 2, 3
En donde ai,j = 1/(i+j), bi = i
a) Sustituya los valores y formule un sistema de ecuaciones lineales
b) Encuentre la solucin transformando la matriz de coeficientes a la forma de la matriz
identidad. Al mismo tiempo aplique las transformaciones al vector de las constantes y a la
matriz identidad, de tal manera que la matriz identidad se convierta en la inversa de la matriz
de coeficientes.
c) Obtenga el nmero de condicin de la matriz de coeficientes. Indique si es un sistema mal
condicionado.
d) Encuentre una cota para el error relativo de la solucin dependiente del error relativo de
la matriz de coeficientes
21. La distribucin de dinero a 16 comunidades se describe en el siguiente cuadro. No fue
posible contactar a cinco comunidades X1, X2, X3, X4, X5 por lo que se decidi asignar a
ellas el promedio del valor asignado a las comunidades que estn a su alrededor, por
ejemplo, X1 recibir el promedio de 30 + X2 + X3 + 45 + 50.
Determine cuales son los valores que sern asignados a estas cinco comunidades.
50
45
60
55
X1
X3
X4
20
30
X2
X5
15
40
25
10
35
22. Suponga que en el siguiente modelo f(x) describe la cantidad de personas que son
infectadas por un virus, en donde x es tiempo en das:
f(x) = k1 x + k2 x2 + k3 e0.15X
En el modelo k1 , k2 y k3 son coeficientes que deben determinarse.
Se conoce la cantidad de personas infectadas en los das 10, 15 y 20:
f(10)=25, f(15)=130, f(20)=650
Plantee un sistema de ecuaciones lineales para determinar los coeficientes y use la solucin
para definir el modelo f(x) para determinar el da ms cercano en el cual la cantidad de
personas infectadas por el virus ser mayor a 10000. Muestre el grfico de la ecuacin y los
valores intermedios calculados.
163
23. En una regin se desean instalar tres nuevos distribuidores X1, X2, X3 de un producto.
En las cercanas ya existen otros distribuidores: A, B, C, D, E, F, G del mismo producto. En
el grfico, los crculos indican el precio de venta del producto en cada distribuidor. Las lneas
indican con que otros distribuidores estn directamente conectados. Determine el precio de
venta que deben establecer los distribuidores de tal manera que sean el promedio de los
precios de los distribuidores con los que estn directamente conectados.
24. Para probar las propiedades de tres nuevos productos (1, 2, 3) se mezclarn tres
ingredientes (A, B, C) de los que se dispone respectivamente de 23.92, 20.68 y 31.40 Kg.
Cada Kg. del producto se obtiene mezclando los ingredientes de la siguiente forma:
1 Kg. de Producto 1: 0.70 Kg. de A, 0.25 Kg. de B, 0.05 Kg.de C
1 Kg. de Producto 2: 0.20 kg. de A, 0.60 Kg. de B, 0.20 Kg. de C
1 Kg. de Producto 3: 0.16 kg. de A, 0.04 Kg. de B, 0.80 Kg. de C
Se necesita conocer la cantidad de Kg. que se obtendr de cada producto sin que hayan
sobrantes de ingredientes
a) Con los datos formule un sistema de ecuaciones lineales.
b) Determine si el mtodo de Jacobi cumple alguna condicin de convergencia.
c) Use notacin matricial para obtener la solucin con el mtodo de Jacobi. Comience con
valores iniciales iguales al promedio de la cantidad disponible de los ingredientes y realice
las iteraciones necesarias hasta que la norma de la diferencia del vector solucin en dos
iteraciones consecutivas sea menor a 0.01
25. La matriz insumo-producto propuesto por W. Leontief, es un modelo muy importante en
Economa. En esta matriz se describe la produccin de los diferentes sectores econmicos
y la demanda interna para satisfacer a estos mismos sectores, expresada como una fraccin
de su produccin. Ejemplo. Suponga que hay tres sectores, A: agricultura, M: manufactura,
y S: servicios y su demanda interna es:
Demanda
A
M
S
Produccin
A
0.42
0.03
0.02
M
0.06
0.37
0.10
S
0.12
0.15
0.19
Sea T el nombre de esta matriz. Para los datos propuestos, en la primera columna de la
matriz T, el sector A requiere 0.4 de su propia produccin, 0.06 del sector M, y 0.12 del
sector S, etc.
164
Sea D el vector de demanda externa de cada sector y X el vector de la produccin total de
cada sector requerida para satisfacer las demandas interna y externa:
x1
x , en donde x , x , x representan la produccin total de cada sector.
1
2
3
2
x 3
Entonces la ecuacin X = TX + D proporciona la produccin total X para satisfacer las
demandas externa e interna.
a) Formule un mtodo iterativo en notacin vectorial para usar la ecuacin anterior. Indique
cual es el nombre de la matriz T. Determine si el mtodo iterativo es convergente. Norma
por filas.
b) Comience con un vector inicial X=[200, 300, 400]T realice las iteraciones necesarias
hasta que la norma de la tolerancia sea menor a 1.
c) Resuelva el sistema con el mtodo de eliminacin de Gauss, para lo cual la ecuacin
inicial se la reescribe en la siguiente forma: (I T)X = D, en donde I es la matriz identidad.
d) Calcule el nmero de condicin de la matriz de coeficientes y comente al respecto.
90
D =
=
140 , X
200
26. Las cerchas son estructuras reticuladas con elementos triangulares, usualmente
metlicas, que se utilizan para soportar grandes cargas. Es importante conocer las fuerzas
que actan en cada nodo. Para ello se plantean ecuaciones de equilibrio de fuerzas
verticales y horizontales para cada nodo, las cuales conforman un sistema de ecuaciones
lineales.
Determine las fuerzas que actan en cada nodo en la siguiente cercha con las cargas
verticales, en Kg, especificadas en los nodos 2 y 4. La cercha est sostenida en los nodos 1
y 5:
F1, F2, F3, F4, F5, F6, F7 son las fuerzas en los elementos que actan para mantener la
estructura unida, juntando los nodos y evitando que se separen. Sus valores son
desconocidos. Se convendr que si las fuerzas en cada nodo actan hacia la derecha y
hacia arriba tienen signo positivo. H es la fuerza horizontal y V1, V2 son las fuerzas
verticales que soportan la estructura. Sus valores son desconocidos.
Ecuaciones de equilibrio en cada nodo:
Nodo 1:
V1 + F1 sen(45) = 0
H + F1 cos(45) + F2 = 0
Nodo 2:
165
-F1 cos(45) + F4 + F3 cos(70) = 0
Nodo 3:
F3 sen(70) + F5 sen(60) = 0
-F2 F3 cos(70) + F5 cos(60) + F7 = 0
Nodo 4:
Nodo 5:
V2 + F6 sen(70) = 0
-F7 F6 cos(70) = 0
10 i1 + 20 i1 10 i2 20 i3 = 0
30 i2 + 20 i2 10 i1 = 0
20 i3 + 40 i3 20 i2 = 120
166
6
INTERPOLACIN
Para introducir este captulo se analiza un problema para el cual se requiere como modelo
un polinomio de interpolacin.
Problema. La inversin en la promocin para cierto producto en una regin ha producido
los siguientes resultados:
(x, f): (5, 1.2), (10, 2.5), (15, 4.3), (20, 4.0)
En donde x: tiempo invertido en la promocin del producto en horas
f: porcentaje de incremento en las ventas del producto
Se desea usar los datos para determinar la cantidad ptima de horas deberan invertirse en
regiones similares para maximizar la eficiencia de las ventas.
Con los datos obtenidos se debe construir alguna funcin que permita obtener la respuesta
y tambin estimar el error en el resultado.
6.1
El Polinomio de Interpolacin
167
Algunos fundamentos bsicos relacionados con el polinomio de interpolacin.
6.1.1
x=x1:
...
x=xn:
xn0 1
xn1 1
...
xnn 1
... x 0
... x1
... ...
... xn
1 a0 f0
1 a1 f1
=
... ... ...
1 an fn
Sea
xn0
n
x
D= 1
...
n
xn
xn0 1 ... x 0
xn1 1 ... x1
... ... ...
xnn 1 ... xn
1
...
entonces
(x j - xi ), i = 1,2,...,n
j 0, j < i
=
|D|=
D = x12
x 22
x 0 1
x1 1
x 2 1
|D|=
(x j - xi )
=j 0,j< i
168
Una funcin en MATLAB para construir la matriz de Vandermonde D y su determinante d:
function [D,d]=vand(x)
n=length(x);
for i=1:n
for j=1:n
D(i,j)=x(i)^(n-j);
end
end
d=1;
for i=1:n
for j=1:n
if j<i
d=d*(x(j)-x(i));
end
end
end
Ejemplo. Dados los siguientes puntos: (2, 5), (4, 6), (5, 3)
a) Encuentre y grafique el polinomio de interpolacin que los incluye.
Con la definicin anterior y usando un mtodo directo se obtiene:
22
2
4
2
5
2 1 a0 5
4 1 a1 = 6
5 1 a2 3
a0 -1.1666
a = 7.5
1
a2 -5.3333
D = 42
52
2 1
4 1
5 1
169
En general, la matriz de Vandermonde es una matriz mal condicionada, por lo tanto la
solucin obtenida es muy sensible a los errores en los datos y los clculos involucran el uso
de algoritmos de tercer orden: T(n)=O(n3)
Existen mtodos para encontrar el polinomio de interpolacin que no utilizan la matriz
anterior y tienen mejor eficiencia.
6.1.2
Dados los datos (xi, fi), i = 0, 1, 2, . . ., n, el polinomio de interpolacin que incluye a todos
los puntos es nico.
Demostracin
Suponer que usando los mismos datos y con mtodos diferentes se han obtenido dos
polinomios de interpolacin: p(x), y q(x). Ambos polinomios deben incluir a los puntos
dados:
p(xi) = fi , i=0, 1, 2, . . ., n
q(xi) = fi , i=0, 1, 2, . . ., n
Sea la funcin h(x) = p(x) - q(x). Esta funcin tambin debe ser un polinomio y de grado no
mayor a n. Al evaluar la funcin h en los puntos dados se tiene:
h(xi) = p(xi) - q(xi) = fi - fi = 0, i=0, 1, 2, . . ., n
Esto significara que el polinomio h cuyo grado no es mayor a n tendra n+1 races,
contradiciendo el teorema fundamental del lgebra. La nica posibilidad es que la funcin h
sea la funcin cero, por lo tanto, x[h(x)=0] x[p(x)-q(x)=0] x[p(x) = q(x)]
6.2
Dados los datos (xi, fi), i = 0, 1, 2, . . ., n. La siguiente frmula permite obtener el polinomio
de interpolacin:
Definicin: Polinomio de Interpolacin de Lagrange
n
pn (x) =
fi Li (x)
i=0
Li (x) =
x-x j
, i = 0, 1, . . . , n
j=0,j i xi -x j
n
170
Para probar que esta definicin proporciona el polinomio de interpolacin, la expresamos en
forma desarrollada:
pn (x) = f0L0 (x) + f1L1 (x) + . . . + fi-1Li 1 (x) + fiLi (x) + fi+1Li + 1 (x) + . . . + fnLn (x)
Li (x) =
(1)
(2)
De la definicin (2):
Li (xi ) = 1, i=0,1,...,n
Li (xk ) = 0 , k=0,1,...,n; k i ,
En general:
pn (xi ) = fi ; i = 0, 1, . . . , n
Por otra parte, cada factor Li(x) es un polinomio de grado n, por lo tanto pn(x) tambin
ser un polinomio de grado n con lo cual la demostracin est completa.
6.2.1 Algoritmo del polinomio de interpolacin de Lagrange
Algoritmo: Lagrange
Restriccin: No se verifica la existencia del polinomio de interpolacin
Entra: xi, fi
Puntos (datos)
Sale: p
Polinomio de interpolacin
n numeracon del ltimo punto
p0
Para i 0, 1, , n
L1
Para j 0, 1, , n; (j i)
LL
Fin
p p + fi L
Fin
171
Ejemplo. Dados los siguientes puntos: (2, 5), (4, 6), (5, 3)
Con la frmula de Lagrange, encuentre el polinomio de interpolacin que incluye a estos
puntos.
2
p2 (x) =
fL (x) = f L
i
(x) + f1L1 (x) + f2L2 (x) = 5L0 (x) + 6L1 (x) + 3L2 (x)
i=0
Li (x) =
(x-x j )
j=0,j i
(xi -x j )
L1 (x) =
j=0,j 0
(x 0 -x j )
(x-x j )
(x1 -x j )
j=0,j 1
(x-x1 )(x-x 2 )
(x-4)(x-5)
x 2 - 9x+20
=
=
(x 0 -x1 )(x 0 -x 2 )
(2-4)(2-5)
6
(x-x 0 )(x-x 2 )
(x-2)(x-5)
x 2 - 7x+10
=
=
(x1 -x 0 )(x1 -x 2 )
(4-2)(4-5)
-2
(x-x 0 )(x-x1 )
(x-2)(x-4)
x 2 - 6x+8
=
=
(x 2 -x 0 )(x 2 -x1 )
(5-2)(5-4)
3
(x-x j )
L2 (x) =
(x-x j )
L0 (x) =
, i=0, 1, 2
j=0,j 2
(x 2 -x j )
p2 (3) =
fL (3) = f L
i
(3) + f1L1 (3) + f2L2 (3) = 5L0 (3) + 6L1 (3) + 3L2 (3)
i=0
Li (3) =
(3-x j )
j=0,j i
(xi -x j )
(3-x j )
(3-x j )
L0 (3) =
L1 (3) =
j=0,j 0 (x 0 -x j )
j=0,j 1
2
L2 (3) =
, i=0, 1, 2
(x1 -x j )
(3-x j )
j=0,j 2 (x 2 -x j )
(3-x1 )(3-x 2 )
(3-4)(3-5)
=
=1/3
(x 0 -x1 )(x 0 -x 2 )
(2-4)(2-5)
(3-x 0 )(3-x 2 )
(3-2)(3-5)
=
=1
(x1 -x 0 )(x1 -x 2 )
(4-2)(4-5)
(3-x 0 )(3-x1 )
(3-2)(3-4)
=
= -1/3
(x 2 -x 0 )(x 2 -x1 )
(5-2)(5-4)
172
6.2.2
La frmula de Lagrange involucra dos ciclos anidados que dependen del nmero de datos n:
n
pn (x) =
fi Li (x)
i=0
Li (x) =
j=0,j i x -x
x-x j
i
i = 0, 1, . . . , n
La evaluacin de esta frmula es un mtodo directo que incluye un ciclo para sumar n+1
trminos. Cada factor Li(x) de esta suma requiere un ciclo con 2n multiplicaciones, por lo
tanto, la eficiencia de este algoritmo es T(n) = 2n(n+1) = O(n2), significativamente mejor que
el mtodo matricial que involucra la resolucin de un sistema lineal cuya eficiencia es
T(n) = O(n3).
6.2.3
173
Esta instrumentacin es una oportunidad para explorar algunas de las caractersticas
interesantes de MATLAB para manejo matemtico simblico:
Ejemplo. Use la funcin Lagrange para el ejemplo anterior:
>> x = [2, 4, 5];
Datos
>> f = [5, 6, 3];
>> p=lagrange(x, f)
Obtencin del polinomio de interpolacin
p=
-7/6*t^2+15/2*t-16/3
>> r=lagrange(x, f, 4)
Evaluar p en un punto dado (para verificar)
r=
6
>> r=lagrange(x, f, 4.25)
Evaluar p en un punto desconocido
r=
5.4687
>> plot(x, f, 'o'), grid on
Graficar los puntos
>> hold on, ezplot(p, [2, 5])
Graficar el polinomio sobre los puntos
174
>> g=diff(p)
g=
-7/3*t+15/2
>> t=eval(solve(g))
t=
3.2143
>> r=lagrange(x,f,t)
r=
6.7202
10
15
20
3.7
4.2
5.8
7.1
4.1
5.3
6.1
7.9
5.6
6.7
7.4
8.2
Existen solo tres datos en la direccin X, por lo tanto conviene interpolar primero en X con
los datos de cada columna. Se requiere un polinomio de grado dos:
2
p2 (x) =
fL (x) = f L
i
i=0
Li (x) =
(x-x j )
j=0,j i
(xi -x j )
, i=0, 1, 2
L0 (3) =
j=0,j 0 (x 0 -x j )
L1 (3) =
(3-x j )
(3-x j )
j=0,j 1 (x 1 -x j )
(3-x1 )(3-x 2 )
(3-4)(3-6)
=
= 3/8
(x 0 -x1 )(x 0 -x 2 )
(2-4))(2-6)
(3-x 0 )(3-x 2 )
(3-2)(3-6)
=
= 3/4
(x1 -x 0 )(x1 -x 2 )
(4-2))(4-6)
175
(3-x j )
L2 (3) =
(x1 -x j )
j=0,j 2
(3-x 0 )(3-x1 )
(3-2)(3-4)
=
= -1/8
(x 2 -x 0 )(x 2 -x1 )
(6-2))(6-4)
Para completar la interpolacin en X, ahora se deben sustituir los datos de cada columna:
y=5:
f(3, y)
10
3.7625
4.7125
p3 (y) =
fL (y) = f L
i
15
5.8250
20
7.5625
i=0
(y-y j )
Li (y) =
j=0,j i (yi -y j )
, i=0, 1, 2, 3
(12-y j )
(12-y j )
L0 (12) =
L1 (12) =
j=0,j 0 (y0 -y j )
j=0,j 1
(12-y j )
(12-y j )
L2 (12) =
L3 (12) =
(y1 -y j )
j=0,j 2 (y2 -y j )
j=0,j 3
(y2 -y j )
Resultado final:
y=12: p3 (12) = f0L0 (12) + f1L1 (12) + f2L2 (12) + f3L3 (12)
= (3.7625)(-8/125) + (4.7125)(84/125) + (5.8250)(56 / 125) + (7.5625)(-7 / 125) = 5.1121
176
6.3.1 Instrumentacin computacional del mtodo de Lagange con dos variables
Para interpolar en dos o ms variable, se puede usar la funcin lagrange para interpolar en
una variable. Al aplicarla en cada direccin se obtienen los resultados parciales.
Interpolando con estos resultados producir el resultado final.
Para el ejemplo anterior:
>> x = [2, 4, 6];
>> f = [3.7, 4.1, 5.6];
>> r1 = lagrange(x, f, 3);
>> f = [4.2, 5.3, 6.7];
>> r2 = lagrange(x, f, 3);
>> f = [5.8, 6.1, 7.4];
>> r3 = lagrange(x, f, 3);
>> f = [7.1, 7.9, 8.2];
>> r4 = lagrange(x, f, 3);
Resultado final
Si planea usar este tipo de interpolacin con frecuencia, conviene instrumentar una funcin
en MATLAB para interpolar en dos dimensiones con la frmula de Lagrange.
Esta funcin se llamar lagrange2, y usar internamente a la funcin lagrange para
interpolar con una variable, y con los resultados realizar la interpolacin con la otra variable.
Sean:
x,y:
vectores con valores de las variables independientes X, Y
f:
matriz con los datos de la variable dependiente organizados en filas
u,v:
valores para los cuales se realizar la interpolacin en x e y
respectivamente
function p=lagrange2(x, y, f, u, v)
[n,m]=size(f);
for i=1:m
r(i)=lagrange(x, f(:, i), u);
% columnas es enviada (resultados parciales)
end
p=lagrange(y, r, v);
% interpolacin final en la otra direccin
177
Ejemplo. Use la funcin lagrange2 para encontrar la respuesta en el ejemplo anterior
>> x=[2, 4, 6];
>> y=[5, 10, 15, 20];
>> f=[3.7, 4.2, 5.8, 7.1; 4.1, 5.3, 6.1, 7.9; 5.6, 6.7, 7.4, 8.2];
>> p=lagrange2(x, y, f, 3, 12)
p=
5.1121
Resultado final
6.4
Error en la interpolacin
Para entender este concepto usaremos un polinomio de interpolacin para aproximar a una
funcin conocida. As puede determinarse en forma exacta el error en la interpolacin.
Ejemplo. Suponga que se desea aproximar la funcin f(x)=ex, 0x2, con un polinomio de
segundo grado.
Para obtener este polinomio tomamos tres puntos de la funcin f: (0, e0), (1, e1), (2, e2) y
usamos la frmula de Lagrange para obtener el polinomio de interpolacin, con cinco
decimales:
p2(x) = 1.4762x2 + 0.24204x+1
178
b) Encuentre el mximo error en la aproximacin
Si se desea conocer cual es el mximo error en la aproximacin, se debe resolver la
ecuacin
d
(f(x) p2 (x)) = 0 ex 2.9524x 0.2420 = 0
dx
Con un mtodo numrico se encuentra que el mximo ocurre cuando x = 1.6064.
Entonces el mximo valor del error es: f(1.6064) p2(1.6064) = 0.2133
En el caso general, se tienen los puntos (xi, fi), i=0, 1, ..., n, pero f es desconocida
Sea pn(x) el polinomio de interpolacin, tal que pn(xi) = fi , i=0, 1, ..., n
Suponer que se desea evaluar f en un punto t usando pn como una aproximacin:
f(t) pn(t), t xi, i=0, 1, ..., n
Definicin. Error en la interpolacin
...
f(t)
179
6.4.1
Sean
g(x) =
i=0
Siendo g(x) =
(x x )
i
i=0
180
6.5
Diferencias finitas
Las siguientes definiciones establecen algunas relaciones simples entre los puntos dados.
Estas definiciones tienen varias aplicaciones en anlisis numrico.
Suponer que se tienen los puntos (xi, fi), i=0, 1, ..., n,
espaciadas regularmente en una distancia h: xi+1 - xi = h,
...
Definiciones
Primera diferencia finita avanzada:
1fi = fi+1 - fi ,
i = 0,1,2, ...
1f0 = f1 - f0
1f1 = f2 - f1, etc
Segunda diferencia finita avanzada: 2fi = 1fi+1 - 1fi , i = 0,1,2, ...
2f0 = 1f1 - 1f0
2f1 = 1f2 - 1f1, etc
Las diferencias finitas se pueden expresar con los puntos dados:
2f0 = 1f1 - 1f0 = (f2 - f1) - (f1 - f0) = f2 - 2f1 + f0
K-sima diferencia finita avanzada:
kfi = k-1fi+1 - k-1fi , i=0,1,2, ..., k=1, 2, 3, ... con 0 fi = fi
Es til tabular las diferencias finitas en un cuadro como se muestra a continuacin:
i
0
1
2
3
...
xi
x0
x1
x2
x3
...
fi
f0
f1
f2
f3
...
1fi
1f0
1f1
1f2
...
...
2fi
2f0
2f1
...
...
...
3fi
3f0
...
...
...
...
4fi
...
...
...
...
...
181
Cada diferencia finita se obtiene restando los dos valores consecutivos de la columna
anterior.
Ejemplo. Tabule las diferencias finitas correspondientes a los siguientes datos
(1.0, 5), (1.5, 7), (2.0, 10), (2.5, 8)
i
0
1
2
3
xi
1.0
1.5
2.0
2.5
fi
5
7
10
8
1fi
2
3
-2
2fi
1
-5
3fi
-6
f1 f 0 1f0
, para algn z[x0, x1]
=
h
h
Es el Teorema del Valor Medio. Este teorema de existencia, con alguna precaucin, se usa
como una aproximacin para la primera derivada en el intervalo especificado:
1f0
es una aproximacin para f en el intervalo [x0, x1].
h
182
Desarrollo de la serie de Taylor de la funcin f, que suponemos diferenciable, alrededor del
punto x1 hacia ambos a una distancia h, con dos trminos:
h2
f ''(z1 ) , para algn z1[x1, x2]
(1)
f2 = f1 + hf 1 +
2!
h2
f ''(z 2 ) , para algn z2[x0, x1]
(2)
f0 = f1 - hf 1 +
2!
Sumando (1) y (2), sustituyendo la suma f(z1) + f(z2) por un valor promedio 2f(z) y
despejando:
f2 2f1 + f0 2 f0
=
f ''(z) =
, para algn z[x0, x2]
h2
h2
2 f0
es una aproximacin para f en el intervalo [x0, x2]
h2
En general,
Definicin. Relacin entre derivadas y diferencias finitas
f (n) (z) =
n f0
hn
n f0
es una aproximacin para f(n) en el intervalo [x0, xn].
hn
Si la funcin f de donde provienen los datos es un polinomio de grado n, entonces la nsima diferencia finita ser constante y las siguientes diferencias finitas se anularn.
Demostracin:
Sea f un polinomio de grado n:
f(n)(x) = n! a0
Por lo tanto, la n-sima diferencia finita tambin ser constante: nfi = hn f(n)(x) = hn n! a0
183
Ejemplo. Tabule las diferencias finitas de f(x) = 2x2 + x + 1, para x = -2, -1, 0, 1, 2, 3
I
0
1
2
3
4
5
xi
-2
-1
0
1
2
3
1fi
-5
-1
3
7
11
fi
7
2
1
4
11
22
2fi
4
4
4
4
3fi
0
0
0
4fi
0
0
f(x) = 2x +
i2
, x = 1, 2, 3, ...
i=1
Solucin
La funcin con el sumatorio expresado en forma desarrollada:
f(x) = 2x + (12 + 22 + 32 + ... + x2), x = 1, 2, 3,
Tomando algunos puntos de esta funcin, tabulamos las diferencias finitas:
I
0
1
2
3
4
5
xi
1
2
3
4
5
6
fi
3
9
20
38
65
103
1fi
6
11
18
27
38
2fi
5
7
9
11
3fi
2
2
2
4fi
0
0
Siendo f una expresin algebraica, y observado que la tercera diferencia finita es constante,
se puede concluir que es un polinomio de grado tres. Para encontrar el polinomio de
interpolacin podemos usar la conocida frmula de Lagrange tomando cuatro puntos
tabulados:
>> x=[1 2 3 4];
>> f=[3 9 20 38];
>> p=lagrange(x,f)
p=
t^3/3 + t^2/2 + (13*t)/6
>> r=lagrange(x,f,100)
r=
338550
184
Tambin se puede obtener el polinomio de interpolacin con mtodos ms simples basados
en los valores tabulados de diferencias finitas.
6.6
Dado un conjunto de puntos (xi, fi), i=0, 1,, n espaciados en forma regular en una
distancia h y que provienen de una funcin desconocida f(x), pero supuestamente
diferenciable, se desea obtener el polinomio de interpolacin. Si se tienen tabuladas las
diferencias finitas se puede obtener el polinomio de interpolacin mediante un procedimiento
de generalizacin.
Suponer que se tienen dos puntos (x0, f0), (x1, f1) con los cuales se debe obtener el
polinomio de primer grado, es decir, la ecuacin de una recta:
p1(x) = a0 + a1(x-x0)
Sustituyendo los dos puntos y despejando a0 y a1 se obtienen, agregando la notacin
anterior:
a0 = f0
a1
=
f1 f0
f0
=
x1 x 0
h
p 1(x) =
f0 +
f0
(x x 0 )
h
En el caso de tener tres puntos (x0, f0), (x1, f1), (x2, f2), se debe obtener un polinomio de
segundo grado. Se propone la siguiente forma algebraica para este polinomio:
p2(x) = a0 + a1(x-x0) + a2(x-x0)(x-x1)
Sustituyendo los tres puntos y despejando a0, a1 y a2 se obtienen, incluyendo la notacin
anterior:
a0 = f0
=
a1
=
a2
f1 f0
f0
=
x1 x 0
h
f f
f2 f1
1 0
x 2 x1 x 1 x 0
=
x2 x0
p2 (x) =f0 +
f1 f0
f1 f0 2 f0
h
h
=
=
2h
2h2
2h2
f0
2 f0
(x x 0 ) +
(x x 0 )(x x1 )
h
2h2
185
Definicin. Polinomio de diferencias finitas avanzadas o polinomio de Newton
f0
2 f0
3 f0
(x x 0 ) +
(x
x
)(x
x
)
(x x 0 )(x x1 )(x x 2 ) + ...
+
0
1
h
2!h2
3!h3
pn (x) =f0 +
+
n f0
n!hn
Si las diferencias finitas estn tabuladas en forma de un tringulo, los coeficientes del
polinomio de interpolacin se toman directamente de la primera fila del cuadro de datos (fila
sombreada):
i
xi
fi
fi
2fi
3fi
x0
f0
1f0
2f0
3f0
nf0
x1
f1
1f1
2f1
3fn
f2
f2
f2
x2
nfi
x3
f3
f3
xn
fn
Ejemplo. Dados los siguientes puntos: (2, 5), (3, 6), (4, 3), (5, 2), encuentre el polinomio de
interpolacin que incluye a los cuatro datos usando el mtodo de diferencias finitas
El mtodo de diferencias finitas es aplicable pues h es constante e igual a 1
Tabla de diferencias finitas:
i
xi
fi
fi
2fi
3fi
-4
-3
-1
f0
2 f0
3 f0
(x x 0 ) +
(x
x
)(x
x
)
+
(x x 0 )(x x1 )(x x 2 )
0
1
h
2!h2
3!h3
1
6
4
(x 2) +
(x 2)(x 3) +
(x 2)(x 3)(x 4)
2
1
2(1 )
3!(13 )
=x 3 11x 2 + 37x 33
186
6.6.1
Prctica computacional
-1
187
(
)(
)(
)(
0
0
3
t
6.6.2
x
)(x
x
)
+
(x x 0 )(x x1 )(x x 2 ) + ...
0
1
h
2!h2
3!h3
n f0
+
(x x 0 )(x x1 )...(x xn1 )
n!hn
pn (x) =f0 +
188
El polinomio de diferencias finitas puede escribirse en forma recurrente:
pn (x) = f0 +
(x x 0 )
h
( f0 +
(x x1 )
2h
( 2 f0 +
(x x 2 )
3h
( 3 f0 + ... +
(x xn 2 )
(n 1)h
( n 1f0 +
(x xn 1 )
nh
n f0 )...)))
(x x n 1 )
p0
nh
(x x n 2 )
n 2 f0 +
p2 =
p1
(n 1)h
.
.
1f0 +
pn 1 =
pn
(x x 1 )
pn 2
2h
(x x 0 )
=
0 f0 +
pn 1 ,
h
siendo 0 f0 =
f0
xi
fi
1fi
2fi
3fi
1.2
-4
1.4
-3
1.6
-1
1.8
p0 = 6
p 0 = 3 f0
p1 =
2 f0 +
p2 =
1f0 +
p3 =
0 f0 +
(x x 2 )
3h
(x x 1 )
2h
(x x 0 )
h
p1 =4 +
p0
p1
p2
p2 =
1+
p3 =
5+
(1.5 1.6)
6 =5
3(0.2)
(1.5 1.4)
( 5) =
0.25
2(0.2)
(1.5 1.2)
0.2
( 0.25) =
4.625
189
6.6.3
+
0
1
h
2!h2
3!h3
pn (x) =f0 +
+
n f0
n!hn
f (n+ 1) (z)
, xxi, z[x0, xn ],
(n + 1)!
Si los puntos estn regularmente espaciados a una distancia h, se estableci una relacin
entre las derivadas de f y las diferencias finitas:
f (n) (t) =
n f0
hn
n+ 1f
n+ 1f
f (n+ 1) (z)
(x x 0 )(x x1 )...(x xn ) n+ 1 0
g(x) n+ 1 0
=
(n + 1)!
h (n + 1)!
h (n + 1)!
n+ 1f0
(x x 0 )(x x1 )...(x xn )
Si se toman n+1 puntos para construir el polinomio de interpolacin de grado n, y los puntos
provienen de un polinomio de grado n, entonces el f(n+1)( ) es cero y tambin n f , por lo
tanto En(x) tambin es cero, en forma consistente con la propiedad de unicidad del
polinomio de interpolacin.
190
Ejemplo. Para aplicar esta definicin se usan los siguientes datos
i
0
1
2
3
4
xi
0.0
0.1
0.2
0.3
0.4
fi
1.000000
1.110517
1.244281
1.404958
1.596730
1fi
0.110517
0.133764
0.160677
0.191772
2fi
0.023247
0.026913
0.031095
3fi
0.003666
0.004182
4fi
0.000516
En la tabla puede observarse que las diferencias finitas tienden a reducir su valor, entonces
un polinomio de interpolacin es una aproximacin adecuada para esta funcin.
Adicionalmente, las diferencias finitas en cada columna tienen valores de similar magnitud,
por lo tanto se pueden usar para estimar a las derivadas.
El grado del polinomio de interpolacin depende del error que toleramos y su valor est
relacionado directamente con el orden de la diferencia finita incluida.
Supongamos que deseamos evaluar el polinomio de interpolacin en x = 0.08 usando el
polinomio de diferencias finitas avanzadas de segundo grado.
f0
2 f0
(x x 0 ) +
(x x 0 )(x x1 )
h
2!h2
0.110517
0.023247
f(0.08) p2 (0.08) =
1+
(0.08 0) +
(0.08 0)(0.08 0.1) =
1.086554
0.1
2(0.1)2
3 f0
(x x 0 )(x x1 )(x x 2 )
3!h3
0.003666
E2 (0.08)
(0.08 0)(0.08 0.1)(0.08 0.2) =
0.0001173
3!0.13
Para comparar, calculemos el valor exacto de f(0.08) con la funcin de la cual fueron
tomados los datos: f(x) = x ex + 1
f(0.08) = 0.08 e0.08 + 1 = 1.086663
El error exacto es
1.083287 1.086554 = 0.0001089
El valor calculado con el polinomio de interpolacin de segundo grado concuerda muy bien
con el valor exacto.
191
6.6.4
f0
2 f0
3 f0
(x x 0 ) +
(x
x
)(x
x
)
(x x 0 )(x x1 )(x x 2 ) + ...
+
0
1
h
2!h2
3!h3
n f0
n!hn
x x0
h
f0
(x x 0 ) =
f0 S
h
2 f0
2 f0
2 f0 (x x 0 ) (x x 0 h) 2 f0
(x
x
)(x
x
)
=
(x
x
)(x
(x
+
h))
=
=
S(S 1)
0
1
0
0
h
h
2!
2!h2
2!h2
2!h2
.
. (sucesivamente)
.
Mediante recurrencia se puede generalizar:
pn (S) =
f0 + f0 S +
2 f0
3 f0
n f0
S(S 1) +
S(S 1)(S 2) + ... +
S(S 1)(S 2)...(S n + 1)
2!
3!
n!
i i f0
i= 0
n+ 1f0
(x x 0 )(x x1 )...(x xn )
Sustituyendo la definicin S =
x x0
h
n+ 1f0
(n + 1)!
192
Finalmente se puede expresar de la siguiente forma
Definicin. Estimacin del error en el polinomio de interpolacin de diferencias
finitas
S n+ 1
x x0
En (S)
f0 , S
=
, x xi
n
1
+
h
6.6.5
S
S + 1 2
S + 2 3
S + n 1 n
pn (x) =
pn (S) =+
fi fi1 +
fi 2 +
fi 3 + ... +
fin
n
1
2
3
x xi
S + n n+ 1 (n+ 1)
E =
(z),
s
=
h y
h
n + 1
Si el punto de referencia es xi+1 con las diferencias finitas expresadas con los puntos
anteriores, el polinomio de interpolacin toma la siguiente forma:
S
S + 1 2
S + 2 3
S + n 1 n
pn (x)= pn (S)= fi+ 1 + fi +
fi1 +
fi 2 + ... +
fin+ 1
n
1
2
3
x xi + 1
S + n n+ 1 (n+ 1)
=
E =
(z),
s
h y
h
n + 1
193
6.7
Dado un conjunto de puntos (xi, fi), i=0, 1,, n espaciados en forma arbitraria y que
provienen de una funcin desconocida f(x) pero supuestamente diferenciable, se desea
obtener el polinomio de interpolacin.
Una forma alternativa al mtodo de Lagrange es el polinomio de diferencias divididas cuya
frmula se la puede obtener mediante un procedimiento de recurrencia. La frmula
resultante es ms eficiente que la frmula de Lagrange pues en promedio requiere menos
operaciones aritmticas.
Suponer que se tienen dos puntos (x0, f0), (x1, f1) con los cuales se debe obtener el
polinomio de primer grado, es decir, la ecuacin de una recta:
p1(x) = a0 + a1(x-x0)
Sustituyendo los dos puntos, despejando a0 y a1 y adoptando una nueva notacin se
obtiene:
a=
f=
f[x 0 ]
0
0
a1
=
f1 f0
f[x 0:1 ]
=
x1 x 0
p1(x) =
f[x 0 ] + f[x 0:1 ](x x 0 )
=
f[x 0:1 ]
f1 f0
f[x1 ] f[x 0 ]
=
denota la primera diferencia dividida en el rango [x0, x1]
x1 x 0
x1 x 0
La diferencia dividida f[x 0:1 ] es una aproximacin para f( ) en el intervalo [x0, x1]
En el caso de tener tres puntos (x0, f0), (x1, f1), (x2, f2), se debe obtener un polinomio de
segundo grado. Se propone la siguiente forma para este polinomio:
p2(x) = a0 + a1(x-x0) + a2(x-x0) (x-x1)
Sustituyendo los tres puntos y despejando a0, a1 y a2 se obtienen:
a=
f=
f[x 0 ]
0
0
=
a1
=
a2
f1 f0
f[x1 ] f[x 0 ]
=
= f[x 0:1 ]
x1 x 0
x1 x 0
f f
f2 f1
1 0
x 2 x1 x 1 x 0 f[x1:2 ] f[x 0:1 ]
= = f[x 0:2 ]
x2 x0
x2 x0
194
f[x 0:2 ] =
Al extender la recurrencia y generalizar al conjunto de puntos (xi, fi), i=0, 1,, n se tiene:
f[x 0 : n ] =
pn (x)= f[x 0 ] + f[x 0 : 1 ](x x 0 ) + f[x 0 : 2 ](x x 0 )(x x1 ) + f[x 0 : 3 ](x x 0 )(x x1 )(x x 2 ) + ...
+ f[x 0 : n ](x x 0 )(x x1 ) ... (x xn1 )
f[xi : i+k ] =
xi
f[xi]
f[xi:i+1]
f[xi:i+2]
f[xi:i+3]
f[xi:i+4]
x0
f[x0]
f[x0:1]
f[x0:2]
f[x0:3]
f[x0:4]
x1
f[x1]
f[x1:2]
f[x1:3]
f[x1:4]
x2
f[x2]
f[x2:3]
f[x2:4]
x3
f[x3]
f[x3:4]
x4
f[x4]
195
Ejemplo. Dados los siguientes puntos: (2, 5), (4, 6), (5, 3), (7, 2), encuentre y grafique el
polinomio de interpolacin que incluye a los cuatro datos, usando el mtodo de diferencias
divididas:
Tabla de diferencias divididas:
i
xi
f[xi]
65 1
=
42 2
36
= 3
54
23
1
=
75
2
f[xi : i+1]
f[xi : i+2]
3 1/ 2
7
=
52
6
f[xi : i+3]
5 / 6 (7 / 6) 2
=
72
5
1/ 2 (3) 5
=
74
6
8
7
6
5
4
3
2
1
0
4
x
196
6.7.1
f (n+ 1) (z)
, xxi, z[x0, xn ], siendo g(x) = (x-x0)(x-x1) ... (x-xn)
(n + 1)!
f[x
=
0:n ]
xn x 0
n!hn
n!
f (n+ 1) (z)
g(x)f[x 0:n+1 ] =
(x x 0 )(x x1 )...(x xn )f[x 0:n+1 ]
(n + 1)!
197
6.8
Dados los puntos (xi, fi), i = 1, 2,..., n, que corresponden a observaciones o mediciones. Si
se considera que estos datos contienen errores y que es de inters modelar nicamente su
tendencia, entonces el polinomio de interpolacin no es una buena opcin. Una alternativa
es el polinomio de mnimos cuadrados. Estos polinomios tienen mejores propiedades para
realizar predicciones o extrapolaciones.
Si los datos tienen una tendencia lineal, la mejor recta ser aquella que se coloca entre los
puntos de tal manera que se minimizan las distancias de los puntos dados a esta recta, la
cual se denomina recta de mnimos cuadrados y se la obtiene con el siguiente
procedimiento:
Para cada valor xi se tiene el dato fi y el valor p(xi) obtenido con la recta de mnimos
cuadrados.
Sea p(x) = a1 + a2x la recta de mnimos cuadrados
Si ei = fi - p(xi) es la diferencia entre el dato y el punto de la recta de mnimos cuadrados.,
2
El cuadrado es para
Minimizar
S=
n
2
i
=i 1
e = (f p(x )) = (f a
i
a 2 x)2
Para minimizar esta funcin S cuyas variables son a1, a2 se debe derivar con respecto a
cada variable e igualar a cero:
n
n
n
S
2
=0:
( fi a1 a2 xi ) =0 na1 + a2 xi = fi
a 1 i 1
a 1
=
=i 1=i 1
n
n
n
S
n
2
= 0:
( fi a1 a2 xi ) =0 a1 xi + a2 xi2 = xi fi
a 2 i 1
a 2
=
=i 1 =i 1=i 1
a1n + a 2 xi =
fi
=i 1=i 1
a1 xi + a 2 xi2 =
xi fi
=i 1
=i 1=i 1
198
Ejemplo. Los siguientes datos corresponden a una muestra de 5 estudiantes que han
tomado cierta materia. Los datos incluyen la calificacin parcial y la calificacin final. Se
pretende encontrar un modelo que permita predecir la calificacin final que obtendra un
estudiante dada su calificacin parcial.
Estudiante
1
2
3
4
5
Nota Parcial
43
64
38
57
30
Nota final
75
82
70
76
68
199
Obtencin de la recta de mnimos cuadrados
5
5a1 + a 2 xi =
fi
=i 1=i 1
a1 xi + a 2 xi2 =
xi fi
=i 1
=i 1=i 1
200
6.8.1
Prctica computacional
201
6.9 Ejercicios y problemas con el polinomio de interpolacin
1. Los siguientes datos son observaciones de los ingresos f en base al monto de inversin
x realizada en cierto negocio (miles de dlares):
(5.5, 83.0), (8.2, 94.5), (12.4, 105.0), (19.0, 92.0)
a) Encuentre el polinomio de interpolacin de tercer grado con la frmula de Lagrange
Con este polinomio determine:
b) La ganancia que se obtiene si la inversin fuese 15.0
c) Cuanto habra que invertir si se desea una ganancia de 100.0
d) Para que valor de inversin se obtiene la mxima ganancia.
2. Encuentre un polinomio de interpolacin para expresar en forma exacta la suma de los
cubos de los primeros k nmeros naturales:
s(k) = 13 + 23 + 33 + . . . + k3,
k = 1, 2, 3, 4,
% de ingreso global
10
25
70
100
202
4. Se han registrado los siguientes datos del costo total c(x), en dlares, de fabricacin de x
unidades de cierto artculo:
(x, c(x)): (10, 358), (20, 1268), (30, 2778), (40, 4888), (50, 7598)
a) Mediante el polinomio de interpolacin encuentre una funcin para expresar c(x)
b) El costo medio por unidad q(x) es el costo total c(x) dividido por el nmero de unidades
producidas: q(x) = c(x)/x. Encuentre el nivel de produccin x en el cual el costo medio por
unidad es el menor
5. Los siguientes datos representan la medicin de la demanda f de un producto durante
cinco semanas consecutivas t:
t = [1, 2 , 3, 4, 5]
f = [24, 45, 62, 65, 58]
Use todos los datos dados para calcular los siguientes resultados y estimar el error en sus
respuestas:
a) Encuentre la demanda en la semana 3.5
b) Encuentre en que da la demanda fue 50
c) Encuentre en que da se tuvo la mayor demanda
6. Suponga que en el siguiente modelo f(x) describe la cantidad de personas que son
infectadas por un virus: f(x) = a x + b x2 + c e0.1X , en donde x es tiempo en das.
Siendo a, b, c coeficientes que deben determinarse.
Se conoce que la cantidad de personas infectadas en los das 0, 5 y 10 son
respectivamente: f(0)=1, f(5)=4, f(10)=20
a) Plantee un sistema de ecuaciones lineales y resulvalo para determinar los coeficientes.
b) Use el modelo f(x) para determinar en cual da la cantidad de personas infectadas por el
virus ser 1000. Obtenga la solucin con el mtodo de la Biseccin. Previamente encuentre
un intervalo de convergencia y obtenga la respuesta con un decimal exacto. Muestre los
valores intermedios calculados hasta llegar a la solucin.
7. La funcin de variable real f(x)=cos(x)ex + 1, , ser aproximada con el
polinomio de segundo grado p(x) que incluye a los tres puntos f(0), f(/), f().
a) Determine el error en la aproximacin si x = /4
b) Encuentre la magnitud del mximo error E(x)=f(x)-p(x), que se producira al usar p(x)
como una aproximacin a f(x). Resuelva la ecuacin no lineal resultante con la frmula de
Newton con un error mximo de 0.0001
5. Dados los puntos que corresponden a una funcin diferenciable
(x, f(x)): (0.1, 0.501105), (0.2, 0.504885), (0.3, 0.512148), (0.4, 0.523869), (0.5, 0.541218)
a) Encuentre el valor aproximado de f(0.12) con un polinomio de tercer grado.
b) Estime el error en la interpolacin con la frmula del error en la interpolacin.
203
8. Dados los puntos (x,f(x)) de una funcin:
x : 1.0000 1.1000 1.2000 1.3000 1.4000 1.5000 1.6000
f(x) : 2.2874 2.7726 3.2768 3.7979 4.3327 4.8759 5.4209
a) Encuentre el valor de f(1.55) con un polinomio de tercer grado.
b) Estime el error en el resultado obtenido con la frmula del error en la interpolacin.
9. Luego de efectuarse un experimento se anotaron los resultados f(x) y se tabularon las
diferencias finitas. Accidentalmente se borraron algunos valores quedando nicamente lo
que se muestra a continuacin:
xi
fi
fi
2fi
3fi
4fi
1.3
1.5
1.7
1.9
2.1
3.534
-----------------------------
-----------------------------
0.192
---------------
0.053
--------
0.002
Tambin se haba hecho una interpolacin con un polinomio de primer grado en x = 1.4
obtenindose como resultado de la interpolacin el valor 4.0755
a) Con los datos suministrados reconstruya la tabla de diferencias finitas
b) Encuentre el valor de f(1.62) con un polinomio de interpolacin de diferencias finitas de
tercer grado, y estime el error en la interpolacin.
c) Encuentre el valor de x tal que f(x) = 5.4 con un polinomio de interpolacin de diferencias
finitas de tercer grado. Para obtener la respuesta debe resolver una ecuacin cbica. Use el
mtodo de Newton y obtenga el resultado con cuatro decimales exactos. Previamente
encuentre un intervalo de convergencia.
10. La suma de los cuadrados de los primeros k nmeros pares:
s(k) = 22 + 42 + 62 + . . . . + (2k)2
Se puede expresar exactamente mediante un polinomio de interpolacin.
a) Encuentre el polinomio de interpolacin con el polinomio de diferencias finitas
b) Calcule s(100) usando el polinomio.
11. Se registraron los siguientes datos de la cantidad de producto obtenido
experimentalmente en parcelas de cultivo en las que se suministraron tres cantidades
diferentes de fertilizante tipo 1 y cuatro cantidades diferentes de fertilizante tipo 2:
Fertilizante 2
Fert. 1
1.2
1.4
1.6
1.8
1.0
7.2
7.8
7.5
7.3
1.5
8.2
8.6
9.2
9.0
2.0
9.5
9.6
9.3
8.6
204
Use todos los datos dados para determinar mediante una interpolacin polinomial con el
mtodo de Lagrange, la cantidad de producto que se obtendra si se usaran 1.2 de
fertilizante 1 y 1.5 de fertilizante 2.
12. Una empresa que vende cierto producto ha observado que su demanda depende del
precio al que lo vende (P en $/unidad) y tambin del precio al que la competencia vende un
producto de similares caractersticas (Q en $/unidad). Recopilando informacin histrica
respecto a lo que ha sucedido en el pasado se observ que la demanda diaria (unidades
vendidas por da) de este producto fueron de:
P
1
1.1
1.2
1.3
1.1
1.2
100
110
120
130
91
100
109
118
83
92
100
108
Use todos los datos dados y el polinomio de interpolacin de Lagrange para estimar los
ingresos mensuales de la empresa por la venta de este producto si decide venderlo a $1.15
por unidad y conoce que la competencia estableci un precio de $1.25 por unidad.
13. Se han registrado los siguientes datos del crecimiento demogrfico V de los individuos
en una regin en donde x es tiempo en meses
x = [5, 10, 15, 20]
V = [12, 25, 80, 200]
Observando el crecimiento rpido de los valores de V se ha propuesto el siguiente modelo
exponencial: V = c (d)x
a) Encuentre las constantes c, d del modelo propuesto con el siguiente procedimiento:
Grafique los puntos (x, ln(V)) y observe que estos puntos tienen una tendencia lineal, por
lo tanto se puede usar el mtodo de mnimos cuadrados para obtener la recta Y = a + bx
con los puntos (x, y), siendo y = ln(V).
Para determinar c, d tome logaritmo natural a la ecuacin V = c (d)x. Se obtendr la
ecuacin de una recta. Compare esta recta con la recta de mnimos cuadrados que
obtuvo anteriormente y deduzca finalmente el valor para las constantes c, d del modelo
propuesto.
b) Con el modelo propuesto, pronostique cuantos individuos habrn en el mes 25
c) Con el modelo propuesto, determine en que mes habrn 150 individuos
205
6.10 El trazador cbico
El polinomio de interpolacin es til si se usan pocos datos y estos tienen un
comportamiento tipo polinomial. En este caso un polinomio de grado bajo es una
representacin adecuada para los datos. Si no se cumplen estas condiciones, el polinomio
puede tomar una forma distorsionada y en algunos casos puede ser inaceptable como un
modelo para representar a los datos, como se muestra en el siguiente ejemplo:
Ejemplo. Se tienen cinco observaciones y se desea construir con estos datos un modelo
cuyo perfil tenga una forma tipo campana aproximadamente: (2, 4), (4,6), (5,8), (6,7), (8,4)
Con el mtodo de Lagrange obtenemos el polinomio de interpolacin
p(x) = 19/144 x4 389/144 x3 + 1375/72 x2 484/9 x + 164/3
El grfico se muestra a continuacin
2
2
5
t
Se observa que en los intervalos izquierdo y derecho la forma del polinomio no es apropiada
para expresar la tendencia de los datos.
Una opcin pudiera ser colocar polinomios de interpolacin de menor grado en tramos. Por
ejemplo un polinomio de segundo grado con los puntos (2, 4), (4, 6), (5, 8), y otro polinomio
de segundo grado con los puntos (5, 8), (6, 7), (8, 4). Sin embargo, en el punto intermedio
(5, 8) en el que se unen ambos polinomios se perdera la continuidad de la pendiente.
Una mejor opcin consiste en usar el trazador cbico. Este dispositivo matemtico
equivale a la regla flexible que usan algunos dibujantes y que permite acomodarla para
seguir de una manera suave la trayectoria de los puntos sobre un plano.
206
6.10.1 El trazador cbico natural
Dados los puntos (xi, yi), i = 1, 2, ..., n, el trazador cbico natural es un conjunto de n-1
polinomios de grado tres colocados en los intervalos de cada par de puntos consecutivos,
de tal manera que haya continuidad hasta la segunda derivada en los polinomios en los
intervalos adyacentes.
Definicin:
3
2
x2 x x3
a (x x 2 ) + b2 (x x 2 ) + c2 (x x 2 ) + d2 ,
T(x) = 2
...
3
2
an1(x x n1) + bn1(x xn1 ) + cn1(x xn1 ) + dn1, xn-1 x xn
(0)
207
El siguiente desarrollo basado en las condiciones requeridas para p(x) permite obtener los
coeficientes del polinomio.
Sea y = p(x) el polinomio en cualquier intervalo i, i=1, 2, ..., n-1
Este polinomio debe incluir a los extremos de cada intervalo i:
x=xi: yi = ai(xI xi)3 + bi(xI xi)2 + ci(xI xi) + di = di di = yi
x=xi+1: yi+1 = ai(xI+1 xi)3 + bi(xI+1 xi)2 + ci(xI+1 xi) + di
3
2
= ai hi + bi hi + ci hi + di
(1)
(2)
(3)
(4)
Si + 1 Si
6hi
(5)
(6)
Si + 1 Si 3 Si 2
hi + hi + ci hi + yi
2
6hi
De donde se obtiene:
y yi 2hi Si + hi Si + 1
ci = i + 1
hi
6
(7)
Con lo que los coeficientes de p(x) quedan expresados mediante los datos dados y los
valores de las segundas derivadas S
208
Coeficientes del trazador cbico
ai =
Si + 1 Si
6hi
Si
2
y yi 2hi Si + hi Si + 1
ci = i + 1
hi
6
bi =
di = yi
(8)
i = 1, 2, ..., n-1
En el punto intermedio entre dos intervalos adyacentes, la pendiente de los polinomios debe
ser igual:
yi = 3ai-1(xi xi-1)2 + 2bi-1(xi xi-1) + ci-1 = 3ai-1 hi-12 + 2bi-1 hi-1 + ci-1
= 3( i
) hi 1 + 2( i 1 )hi-1 + i
2
6hi
6
6hi 1
hi
6
209
yi + 1 yi yi yi 1
) , i = 2, 3, ..., n-1
hi
hi 1
(9)
Esta ecuacin debe evaluarse con los datos, con lo que se obtiene un sistema de n 2
ecuaciones lineales con las n variables: S1, S2, ..., Sn
Para obtener dos datos adicionales se considera que en el trazador cbico natural los
puntos extremos inicial y final estn sueltos por lo que no tienen curvatura. Con esta
suposicin el valor de la segunda derivada tiene un valor nulo en los extremos, y se puede
escribir:
S1 = 0, Sn = 0
(10)
yi + 1 yi yi yi 1
) , i = 2, 3, ..., n-1
hi
hi 1
S1 = 0, Sn = 0
ai =
(9)
(10)
Si + 1 Si
6hi
Si
2
yi + 1 yi 2hi Si + hi Si + 1
ci =
hi
6
bi =
di = yi
(8)
i = 1, 2, ..., n-1
y = p(x) = ai (x xi )3 + bi (x xi )2 + ci (x xi ) + di
x i x x i+ 1, =
i 1,2,...,n 1
(0)
210
Ejemplo. Dados los datos (2, 5), (4,6), (5,9), (8,5), (10,4) encuentre el trazador cbico
natural
Solucin:
Anotamos los datos en la terminologa del trazador cbico
n=5
i
hi = xi+1 xi
yi
xi
1
2
5
2
2
4
6
1
3
5
9
3
4
8
5
2
5
10
4
S1 = 0, S5 = 0, de acuerdo a la definicin (10)
Al sustituir los datos en (9) se obtiene un sistema de ecuaciones lineales
hi-1Si-1 + 2(hi-1 + hi)Si + hiSi+1 = 6 (
i = 2:
yi + 1 yi yi yi 1
) , i = 2, 3, 4
hi
hi 1
y3 y2 y2 y1
)
h2
h1
96 65
)
6S2 + S3 = 15
1
2
y y3 y3 y2
)
h2S2 + 2(h2 + h3)S3 + h3S4 = 6 ( 4
h3
h2
59 96
)
S2 + 8S3 + 3S4 = -26
3
1
y y 4 y 4 y3
)
h3S3 + 2(h3 + h4)S4 + h4S5 = 6 ( 5
h4
h3
3
0 3 10 S 4
59 96
)
3
1
S3 + 10S4 = 5
15
26 Resolviendo este sistema resulta
S2
S =
3
S 4
3.2212
4.3269
1.7981
bi
0
1.6106
-2.1635
ci
-0.5737
2.6474
2.0946
di
5
6
9
211
-0.1498
0.8990
-1.6987
5
Los coeficientes corresponden a los cuatro polinomios segmentarios del trazador cbico
natural segn la definicin inicial en la ecuacin (0):
y = p(x) = ai(xI xi)3 + bi(xI xi)2 + ci(xI xi) + di , i = 1, 2, 3, 4
i=1:
i=2:
i=3:
i=4:
6.10.3
2x4
4x5
5x8
8 x 10
function p=trazador(x,y,z)
% Trazador Cbico Natural
% p = a(i)(x-x(i))^3+b(i)(x-x(i))^2+c(i)(x-x(i))+d(i), n>2
% z es opcional: es el vector de puntos para evaluar al trazador
% Entrega los polinomios simblicos segmentarios en un vector de celdas
% o entrega puntos del trazador
n=length(x);
clear A B C D;
if n<3
p=[ ];
return
end
for i=1:n-1
h(i)=x(i+1)-x(i);
end
s(1)=0;
s(n)=0;
B(1)=2*(h(1)+h(2));
C(1)=h(2);
D(1)=6*((y(3)-y(2))/h(2)-(y(2)-y(1))/h(1))-h(1)*s(1);
212
for i=2:n-3
% Sistema tridiagonal para obtener S
A(i)=h(i);
B(i)=2*(h(i)+h(i+1));
C(i)=h(i+1);
D(i)=6*((y(i+2)-y(i+1))/h(i+1)-(y(i+1)-y(i))/h(i));
end
A(n-2)=h(n-2);
B(n-2)=2*(h(n-2)+h(n-1));
D(n-2)=6*((y(n)-y(n-1))/h(n-1)-(y(n-1)-y(n-2))/h(n-2))-h(n-1)*s(n);
u=tridiagonal(A,B,C,D);
for i=2:n-1
s(i)=u(i-1);
end
for i=1:n-1
% Coeficientes del trazador cbico natural
a(i)=(s(i+1)-s(i))/(6*h(i));
b(i)=s(i)/2;
c(i)=(y(i+1)-y(i))/h(i)-(2*h(i)*s(i)+h(i)*s(i+1))/6;
d(i)=y(i);
end
if nargin==2
% Polinomios segmentarios
syms t;
for i=1:n-1
p{i}=expand(a(i)*(t-x(i))^3+b(i)*(t-x(i))^2+c(i)*(t-x(i))+d(i));
end
else
% Puntos del trazador cbico natural
p=[ ];
m=length(z);
for k=1:m
t=z(k);
for i=1:n-1
if t>=x(i) & t<=x(i+1)
p(k)=a(i)*(t-x(i))^3+b(i)*(t-x(i))^2+c(i)*(t-x(i))+d(i);
end
end
end
if m>1
k=m;i=n-1;
p(k)=a(i)*(t-x(i))^3+b(i)*(t-x(i))^2+c(i)*(t-x(i))+d(i);
end
end
213
Ejemplo. Encuentre el trazador cbico natural usando la funcin anterior para los siguientes
puntos: (2, 4), (4, 6), (5, 8), (6, 7), (8, 4)
>> x = [2 4 5 6 8];
>> y = [4 6 8 7 4];
>> p=trazador(x,y);
Vector de celdas con los polinomios segmentarios
>> p{1}
ans =
(27*t^3)/176 - (81*t^2)/88 + (49*t)/22 + 2
>> p{2}
ans =
- (101*t^3)/88 + (1293*t^2)/88 - (1325*t)/22 + 938/11
>> p{3}
ans =
(79*t^3)/88 - (1407*t^2)/88 + (1025*t)/11 - 3749/22
>> p{4}
ans =
- (5*t^3)/176 + (15*t^2)/22 - (301*t)/44 + 326/11
Ejemplo. Graficar el primer polinomio en el primer intervalo [2, 4]:
>> f=p{1};
>> ezplot(f,[2,4]), grid on
La funcin tambin permite evaluar el trazador en puntos especficos.
Ejemplo. Con el trazador cbico, evaluar el resultado para x = 3:
>> r=trazador(x, y, 3)
r=
4.5398
Para observar el perfil del trazador, se pueden usar puntos del trazador. Se deben obtener
muchos puntos y conectarlos con segmentos de recta usando la funcin plot de MATLAB:
Ejemplo. Dibujar el perfil del trazador cbico natural sobre los puntos dados y el polinomio
de interpolacin
>> plot(x, y, o), grid on, hold on
>> p=lagrange(x, y);
>> ezplot(p, [2, 8]);
>> u = [2: 0.01: 8];
>> v = trazador(x, y, u);
>> plot(u, v)
214
8
Trazador cbico
natural
4
Polinomio de interpolacin
3
2
2
5
t
Puede observarse la notable mejora en el modelo para representar a los datos dados.
6.10.4
Puede ser de inters asignar alguna pendiente especfica a los extremos inicial y final del
trazador cbico. Esta versin se denomina trazador cbico sujeto o fijo. Por lo tanto, ya no
se aplica la definicin del trazador cbico natural en el que se supone que los extremos
estn sueltos o libres con pendiente constante, y sus segundas derivadas tendrn un valor
nulo:
S1 = 0, Sn = 0
Formulacin del trazador cbico sujeto
Dados los puntos (xi, yi), i = 1, 2, ..., n.
Adicionalmente se especifica como datos, la inclinacin del trazador en los extremos:
y(x1) = u
y(xn) = v
Utilizamos la expresin (3) del anlisis anterior:
y = 3ai(x xi)2 + 2bi(x xi) + ci
Sustituimos los datos dados para los polinomios en el primero y ltimo intervalo:
En el primer intervalo:
x = x1: y(x1) = u = 3a1(x1 x1)2 + 2b1(x1 x1) + c1 = c1
Se sustituye la definicin de c1
y y1 2h1S1 + h1S2
u= 2
h1
6
215
De donde se obtiene:
y y1
1
1
h1S1 h1S2 =
u 2
3
6
h1
(11)
En el ltimo intervalo:
x = xn: y(xn) = v = 3an-1(xn xn-1)2 + 2bn-1(xn xn-1) + cn-1
2
v = 3an-1 hn1 + 2bn-1 hn-1 + cn-1
6hn 1
2
hn 1
6
De donde se tiene
S Sn 1
y yn 1 2hn 1Sn 1 + hn 1Sn
=
v ( n
)hn 1 + Sn 1hn 1 + n
2
hn 1
6
Finalmente:
y yn 1
1
1
hn 1Sn 1 + hn 1Sn =
v n
6
3
hn 1
(12)
Las ecuaciones (11) y (12) junto con las ecuaciones que se obtienen de (9) conforman un
sistema tridiagonal de n ecuaciones lineales con las n variables S1, S2, ..., Sn
El resto del procedimiento es similar al que corresponde al trazador cbico natural.
216
6.10.5 Algoritmo del trazador cbico sujeto
Dados los puntos: (xi, yi), i = 1, 2, ..., n
1. Con las ecuaciones (9), (11) y (12) obtenga un sistema de n ecuaciones lineales con
las incgnitas S1, S2, ..., Sn, (Sistema tridiagonal de ecuaciones lineales)
2. Resuelva el sistema y obtenga los valores de S1, S2, ..., Sn
3. Con las definiciones dadas en (8) obtenga los coeficientes para el trazador cbico.
4. Sustituya los coeficientes en la definicin dada en (0) y obtenga el polinomio del
trazador cbico en cada uno de los intervalos.
1
1
y y1
h1S1 h1S2 = u 2
3
6
h1
(11)
yi + 1 yi yi yi 1
) , i = 2, 3, ..., n-1
hi
hi 1
1
1
y yn 1
hn 1Sn 1 + hn 1Sn = v n
6
3
hn 1
ai =
(9)
(12)
Si + 1 Si
6hi
Si
2
yi + 1 yi 2hi Si + hi Si + 1
ci =
hi
6
bi =
di = yi
(8)
i = 1, 2, ..., n-1
y = p(x) = ai (x xi )3 + bi (x xi )2 + ci (x xi ) + di
x i x x i+ 1, =
i 1,2,...,n 1
(0)
217
6.10.6
function p=trazadorsujeto(x,y,u,v,z)
% Trazador Cbico Sujeto
% u,v son las pendientes en los extremos
% a(i)(z-x(i))^3+b(i)(z-x(i))^2+c(i)(z-x(i))+d(i), n>2
% z es opcional: es el vector de puntos para evaluar al trazador
% Entrega los polinomios segmentarios en un vector de celdas
% o entrega puntos del trazador
n=length(x);
clear A B C D;
if n<3
p=[ ];
return
end
for i=1:n-1
h(i)=x(i+1)-x(i);
end
B(1)=-2*h(1)/6;
C(1)=-h(1)/6;
D(1)=u-(y(2)-y(1))/h(1);
for i=2:n-1
A(i)=h(i-1);
B(i)=2*(h(i-1)+h(i));
C(i)=h(i);
D(i)=6*((y(i+1)-y(i))/h(i)-(y(i)-y(i-1))/h(i-1));
end
A(n)=h(n-1)/6;
B(n)=h(n-1)/3;
D(n)=v-(y(n)-y(n-1))/h(n-1);
s=tridiagonal(A,B,C,D);
for i=1:n-1
% Coeficientes del trazador cbico sujeto
a(i)=(s(i+1)-s(i))/(6*h(i));
b(i)=s(i)/2;
c(i)=(y(i+1)-y(i))/h(i)-(2*h(i)*s(i)+h(i)*s(i+1))/6;
d(i)=y(i);
218
end
if nargin==4
%Polinomios segmentarios
syms t
for i=1:n-1
p{i}=expand(a(i)*(t-x(i))^3+b(i)*(t-x(i))^2+c(i)*(t-x(i))+d(i));
end
else
% Puntos del trazador cbico sujeto
p=[ ];
m=length(z);
for k=1:m
t=z(k);
for i=1:n-1
if t>=x(i) & t<=x(i+1)
p(k)=a(i)*(t-x(i))^3+b(i)*(t-x(i))^2+c(i)*(t-x(i))+d(i);
end
end
end
if m>1
k=m;i=n-1;
p(k)=a(i)*(t-x(i))^3+b(i)*(t-x(i))^2+c(i)*(t-x(i))+d(i);
end
end
Ejemplo. Corregir el perfil del trazador cbico del ejemplo anterior para que la curva
comience y termine con pendiente nula. De esta manera se acercar ms al perfil de una
distribucin tipo campana, lo cual fue el objetivo inicial. Usar los mismos datos:
(2, 4), (4, 6), (5, 8), (6, 7), (8, 4)
>> x = [2 4 5 6 8];
>> y = [4 6 8 7 4];
>> p = trazadorsujeto(x, y, 0, 0); Vector de celdas con polinomios segmentarios
>> p{1}
ans =
(11*t^3)/160 - t^2/20 - (5*t)/8 + 49/10
>> p{2}
ans =
- (21*t^3)/20 + (107*t^2)/8 - (2173*t)/40 + 153/2
>> p{3}
ans =
(7*t^3)/10 - (103*t^2)/8 + (3077*t)/40 - 569/4
>> p{4}
ans =
(41*t^3)/160 - (391*t^2)/80 + 29*t - 232/5
219
Ejemplo. Graficar el primer polinomio en el primer intervalo [2, 4]:
>> f=p{1};
>> ezplot(f,[2,4]), grid on
La funcin tambin permite evaluar el trazador en puntos especficos.
Ejemplo. Con el trazador cbico sujeto, evaluar el resultado para x = 3:
>> r=trazadorsujeto(x, y, 0, 0, 3)
r=
4.4313
Igual que en el trazador cbico natural, para observar el perfil del trazador sujeto, es ms
simple generar muchos puntos y conectarlos con segmentos de recta usando la funcin
plot:
Ejemplo. Dibujar el perfil del trazador cbico sujeto sobre los puntos dados, el polinomio de
interpolacin y el trazador cbico natural
>> u = [2: 0.01: 8];
>> t = trazadorsujeto(x, y, 0, 0, u);
>> plot(u, t);
(
7
Trazador cbico
natural
6
5
Polinomio de
interpolacin
Trazador cbico
sujeto
2
2
5
t
El perfil del trazador cbico sujeto suaviza los extremos y proporciona un mejor modelo.
La biblioteca de MATLAB tiene la funcin spline para obtener puntos del trazador cbico
natural. Sin embargo, los resultados no siempre son aceptables como se muestra en el
siguiente ejemplo. Adicionalmente, no proporciona la forma simblica de los polinomios
segmentarios.
220
Ejemplo. Usar la funcin spline de MATLAB para obtener puntos del trazador cbico
natural y dibujarlos sobre los grficos anteriores para comparar y evaluar.
>> u = [2: 0.01: 8];
>> t = trazadorsujeto(x, y, 0, 0, u);
>> plot(u, t);
(
7
Trazador cbico
natural
6
5
Polinomio de
interpolacin
Trazador cbico
sujeto
Trazador cbico
spline
2
2
5
t
221
6.10.7 Ejercicios con el trazador cbico
1. Con los siguientes datos (x, y): (1.2, 4.6), (1.5, 5.3), (2.4, 6.0), (3.0, 4.8), (3.8, 3.1)
a) Encuentre el trazador cbico natural
b) Encuentre el valor interpolado para x=2.25
2. Con los siguientes datos (x, y): y(1.2) = 1, (1.5, 5.3), (2.4, 6.0), (3.0, 4.8), y(3.8) = -1
a)
b)
222
7
INTEGRACIN NUMRICA
f(z) =
1
2
1
z2
2
P(a Z b) = f(z)dz
a
A =
f(x)dx
a
En general hay dos situaciones en las que son tiles los mtodos numricos:
1) El integral existe pero es muy difcil o no se puede evaluar analticamente.
2) nicamente se conocen puntos de f(x) pero se requiere calcular en forma
aproximada el integral debajo de la curva que incluye a los puntos dados
En ambos casos se trata de sustituir f(x) por alguna funcin ms simple, siendo importante
adems estimar la precisin del resultado obtenido.
223
7.1
Frmulas de Newton-Cotes
n+1 (n+1)
En(s) =
(z), x0<x<xn
h f
n
+
1
A = f(x)dx A1 + A2 + A3 + . . .+ Am =
a
A
i=1
A
i=1
224
Por simplicidad se usarn puntos regularmente espaciados a una distancia h
b
A=
x1
x2
xm
x0
x1
x m 1
f(x)dx p 1(s)dx +
p1(s)dx + . +
p1(s)dx
A = A1 + A2 + . . . + Am
m: cantidad de franjas espaciadas regularmente en h, siendo h =
ba
m
x1
x1
x0
x0
p1(s)dx =
(f0 + f0 s)dx
A1 =
(f0 + f0 s)hds = h
0
A1 =
f0s +
1
f0s2
2
= h [f0 +
0
1
(f1 f0)]
2
h
[f0 + f1], es la conocida frmula de la geometra para el rea de un trapecio
2
225
Definicin: Frmula de los trapecios
A
m-1
h
h
[f0 + 2f1 + 2f2 + .. + 2fm-1 + fm] = [f0 + 2 fi + fm],
2
2
i=1
m es la cantidad de trapecios.
0 f(x)dx
h
ba 20
[f0 + 2f1 + 2f2 + 2f3 + f4],=
h = = 0.5
2
m
4
0.5
=
[f(0) + 2f(0.5) + 2f(1) + 2f(1.5) + f(2)] = 1.5225
2
Sin embargo, es necesario poder contestar una pregunta fundamental: Cul es la precisin
del resultado calculado?
7.1.2
T1 =
E1(s)dx =
x0
x1
s 2 (2)
2 h f (z1)dx =
x0
x1
2 s(s 1)h
2 (2)
(z1 )dx
x0
h3
2
Con el teorema del valor medio para integrales, puesto que s(s-1) no cambia de signo en el
intervalo [0,1], se puede sacar del integral la funcin f evaluada en algn punto z1,
desconocido, en el mismo intervalo.
226
1
h3
f(z1) s(s 1)ds , x0<z1<x1
2
0
T1 =
h3
f(z1), x0<z1<x1
12
h3
h3
h3
f(z1) f(z2) - . f(zm)
12
12
12
T=-
h3
[ f(z1) + f(z2) + . + f(zm)]
12
T=-
h3
mf(z), siendo z algn valor en el intervalo (a, b)
12
Mediante la sustitucin h =
ba
, la frmula se puede expresar de la siguiente forma
m
T=
h2
(b a) f(z), a z b
12
A
i=1
Sean Am =
Ai , Am' =
i=1
A
m'
A
i=1
| Am Am' |
| Am' |
227
Hay que tener la precaucin de no usar valores muy grandes para m por el efecto del error
de redondeo acumulado en las operaciones aritmticas y que pudiera reducir la precisin en
el resultado.
En caso de conocer nicamente puntos de f, al no disponer de ms informacin para
estimar el error de truncamiento, un criterio simple puede ser tomar el mayor valor de las
segundas diferencias finitas como una aproximacin para la segunda derivada en la frmula
del error, siempre que no cambien significativamente:
T=-
h2
(b a) f(z), a z b
12
2 fi
h2
(b-a)
2
T || max(| fi |)
12
f(z)
Esta frmula tambin pudiera usarse para estimar el error de truncamiento en el caso de
que f(x) se conozca explcitamente y m haya sido especificado. Habra que tabular las
diferencias finitas para los puntos usados en la integracin numrica y estimar el error con la
frmula anterior.
Ejemplo. Estime cuantos trapecios deben usarse para integrar f(x) = sen(x) en el intervalo
[0,2] de tal manera que la respuesta tenga el error absoluto menor a 0.0001
Se requiere que error de truncamiento cumpla la condicin:
| T | < 0.0001
|
h2
(b a) f(z) | < 0.0001
12
Siendo el valor de z desconocido se debe usar el mximo valor de f(z) = -sen(z), 0<z<2
max | f(z) | = 1
|
De donde
Entonces
h2
(2 0) (1)| < 0.0001
12
h2 < 0.0006
h < 0.0245
ba
< 0.0245
m
m > (2 0)/0.0245
m > 81.63 m = 82 trapecios
228
Ejemplo. Estime cuantos trapecios deben usarse para integrar f(x) = x sen(x)
en el intervalo [0,2] de tal manera que la respuesta tenga el error absoluto menor a 0.0001
Se requiere que error de truncamiento cumpla la condicin:
| T | < 0.0001
|
h2
(b a) f(z) | < 0.0001
12
cos(z)
z
zsen(z)
sen(z)
4 z3
0<z<2
f
0.0000
0.3390
0.8415
1.2217
1.2859
f
0.3390
0.5025
0.3802
0.0643
2f
0.1635
-0.1223
-0.3159
(b-a)
(2-0)
2
| max(| fi |) =
(0.3159) = 0.0527
12
12
229
Ejemplo. Dados puntos de una funcin f: (0.1, 1.8), (0.2, 2.6), (0.3, 3.0), (0.4, 2.8), (0.5, 1.9)
Calcule el rea A debajo de f aproximando mediante cuatro trapecios y estime el error en el
resultado obtenido.
0.1
[1.8 + 2(2.6) + 2(3.0) + 2(2.8) + 1.9] = 1.0250
2
Al no disponer de ms informacin, se usarn las diferencias finitas para estimar el error
A=
X
0.1
0.2
0.3
0.4
0.5
T |-
f
1.8
2.6
3.0
2.8
1.9
f
0.8
0.4
-0.2
-0.9
2f
-0.4
-0.6
-0.7
(b-a)
(0.5-0.1)
2
| max(| fi |) =
(0.7) = 0.0233
12
12
7.1.3
Si se quiere integrar debajo de una funcin dada en forma explcita, conviene definir una
funcin de MATLAB para evaluar el integral dejando como dato el nmero de trapecios m.
Los resultados calculados pueden usarse como criterio para estimar el error de
truncamiento.
En la siguiente instrumentacin debe suministrarse la funcin f (definida en forma simblica
y en formato inline), el intervalo de integracin a, b y la cantidad de franjas o trapecios m
function r = trapecios(f, a, b, m)
f=inline(f);
h=(b-a)/m;
s=0;
for i=1: m - 1
s=s + f(a + i*h);
end
r = h/2*(f(a) + 2*s + f(b));
230
Ejemplo. Probar la funcin esta funcin para integral f(x)=sen(x), 0x2
>> syms x;
>> f = sin(x);
>> t = trapecios(f, 0, 2, 5)
t=
1.397214...
Se puede probar con ms trapecios para mejorar la aproximacin
>> t = trapecios(f, 0, 2, 50)
t=
1.415958...
>> t = trapecios(f, 0, 2, 500)
t=
1.416144...
Compare con el valor exacto que proporciona MATLAB
>> t = eval(int(f,0,2))
t=
1.416146
Los resultados tienden hacia el valor exacto a medida que se incrementa el nmero de
trapecios. Estos resultados pueden usarse como criterio para estimar la precisin.
Ejemplo. La siguiente funcin no es integrable analticamente:
S=
x s en(x)dx
Use la frmula de los trapecios para obtener la respuesta aproximada y estimar el error.
>> syms x;
>> f=sqrt(x)*sin(x);
>> ezplot(f,[0,2]),grid on
>> r=trapecios(f,0,2,10)
r=
1.5313
>> r=trapecios(f,0,2,20)
r=
1.5323
>> r=trapecios(f,0,2,40)
r=
1.5326
>> r=trapecios(f,0,2,50)
r=
1.5326
x 1/2 sin(x)
1.4
1.2
1
0.8
0.6
0.4
0.2
0
0
0.2
0.4
0.6
0.8
1
x
1.2
1.4
1.6
1.8
231
7.1.4
Frmula de Simpson
Esta frmula usa como aproximacin para f un polinomio de segundo grado, o parbola:
f(x) p2(s) = f0 + f0 s +
1 2
f0 s(s-1)
2
A=
x2
x4
xm
x0
x2
x m 2
f(x)dx
p2 (s)dx +
p2 (s)dx + . +
p 2 (s)dx
A A1 + A2 + . + Am/2
El rea de dos intervalos consecutivos es aproximada mediante el rea debajo de
parbolas. Los puntos son numerados desde cero: x0, x1, ..., xm, e donde m debe ser un
nmero par, as la cantidad de parbolas es m/2.
h=(b-a)/m
Para obtener la frmula se debe encontrar el valor del rea para una parbola:
A1 =
x2
x2
x0
x0
p2 (s)dx = [f0 + fs s +
1 2
f0 s(s 1)] dx
2
232
2
A1 =
(f0 + f0 s + 2
f0 s(s 1)hds
h
[f0 + 4f1 + 2f2 + 4f3 +.. + 2fm-2 + 4fm-1 + fm]
3
m es un parmetro para la frmula (debe ser un nmero par)
A=
7.1.5
h4
(ba) f(4)(z), a<z<b
180
Esta frmula puede usarse para acotar el error de truncamiento. Bajo ciertas
consideraciones y si se fija m, se puede estimar la derivada con la diferencia finita
correspondiente:
(b-a)
4f
4
f(4)(z) 4 i , T
max| fi |
180
h
Ejemplo. Dados puntos de una funcin f: (0.1, 1.8), (0.2, 2.6), (0.3, 3.0), (0.4, 2.8), (0.5, 1.9)
Calcule el rea debajo de f mediante una aproximacin con parbolas.
233
La suma del rea debajo de las dos parbolas, con la frmula anterior:
h
A = [f0 + 4f1 + 2f2 + 4f3 + f4]
3
0.1
(1.8 + 4(2.6) + 2(3.0) + 4(2.8) + 1.9) = 1.0433
A=
3
Este resultado es aproximadamente igual al rea debajo de f.
Estimar el error en el resultado obtenido
Al no disponer de ms informacin, se usarn las diferencias finitas para estimar el error
X
0.1
0.2
0.3
0.4
0.5
f
0.8
0.4
-0.2
-0.9
f
1.8
2.6
3.0
2.8
1.9
2f
-0.4
-0.6
-0.7
3f
-0.2
-0.1
4f
0.1
h4
(b a) f(4)(z), a<z<b
180
T=
(0.5-0.1)
(b-a)
4
| max| fi | =
(0.1) = 0.00022
180
180
Esto indicara que podemos tener confianza en la respuesta hasta el tercer decimal.
Resultado mejor que el obtenido con la Regla de los Trapecios
T |-
=
S
curva f(x) en ese intervalo se puede calcular con el integral
b
a
1 + [f '(x)]2 dx
=
S
Longitud del arco:
=
s
g(x)dx
=
b
a
1 + [f '(x)]2 dx
1 + cos2 (x)dx
ba 20
= = 0.5
m
4
h
S = [f0 + 4f1 + 2f2 + 4f3 + f4]
3
0.5
S=
[g(0) + 4g(0.5) + 2g(1) + 4g(1.5) + g(2)]
3
S = 2.3504
=
h
234
h4
(b a) f(4)(z), a<z<b
180
X
0.0
0.5
1.0
1.5
2.0
T|-
f
1.4142
1.3305
1.1366
1.0025
1.0831
2f
3f
4f
-0.0837
-0.1938
-0.1341
0.0806
-0.1101
0.0597
0.2148
0.1698
0.1551
-0.0148
(b-a)
(2-0)
4
| max( fi )=
(0.0148) = 0.00016
180
180
7.1.6
Ejemplo. Integrar f ( x=
)
235
2.3516
>> r=simpson(f,0,2,12)
r=
2.3517
>> r=simpson(f,0,2,16)
r=
2.3517
7.1.7
T=
h2
(b a) f(z) = O(h2)
12
Frmula de Simpson:
T=
h4
(b a) f(4)(z) = O(h4)
180
ba
m
Entonces, para ambas frmulas, cuando h 0 T 0
Adems
h=
Est claro que la frmula de Simpson converge ms rpido, supuesto que h<1
Por otra parte, al evaluar cada operacin aritmtica se puede introducir un error de
redondeo Ri si no se conservan todos los dgitos decimales en los clculos numricos. La
suma de estos errores es el error de redondeo acumulado R. Mientras ms sumas se
realicen, mayor es la cantidad de trminos que acumulan error de redondeo.
R = R1 + R2 + R3 + . + Rm
Estos errores de redondeo pueden tener signos diferentes y anularse, pero tambin puede
ocurrir que tengan igual signo, por lo tanto el valor puede crecer
Siendo m =
ba
, cuando h 0 m R puede crecer
h
236
Ejemplo. Encontrar el rea entre f(x) = 4 + cos(x+1), y g(x)=ex sen(x), que incluya el rea
entre las intersecciones de f y g en el primer cuadrante. Use la Regla de Simpson, m=10.
>> syms x;
>> f=4+x*cos(x+1);
>> g=exp(x)*sin(x);
>> ezplot(f,[0,3.5]),grid on
>> hold on
>> ezplot(g,[0,3.5])
e p( ) s ( )
8
6
4
-2
-4
-6
0
0.5
1.5
2.5
3.5
237
7.2
Frmula propuesta
2h
A=
f(x)dx =
Deben determinarse los coeficientes c0, c1, c2. Para obtenerlos, se usarn tres casos con
polinomios de grado 0, 1 y 2 con los cuales queremos que se cumpla la frmula. Es
suficiente considerar la forma ms simple de cada caso:
1) f(x) = 1,
2h
A=
(1)dx =
2) f(x) = x,
2h
A=
xdx =
3) f(x) = x2,
2h
A=
x
0
dx=
8 3
8
h = c0 f(0) + c1f(h) + c2 f(2h)= c0 (0) + c1(h2 ) + c2 (4h2 ) c1 + 4c2=
h
3
3
h
4h
h
=
, c1
=
, c2
3
3
3
Reemplazando en la frmula propuesta se llega a la conocida frmula de Simpson
=
c0
Resolviendo las tres ecuaciones resultantes se obtienen:
A=
h
(f(0) + 4f(h) + f(2h))
3
238
La obtencin de la frmula implica que es exacta si f es un polinomio de grado menor o igual
a dos. Para otra f, ser una aproximacin equivalente a sustituir f por un polinomio de grado
dos.
7.3
Cuadratura de Gauss
=
A
=
f(x)dx
Los puntos t0, t1, ..., tm, son desconocidos. Adicionalmente tambin deben determinarse los
coeficientes c0, c1, ..., cm
El caso simple es la frmula de dos puntos. Se usa el mtodo de los coeficientes
indeterminados para determinar las cuatro incgnitas
7.3.1
Frmula propuesta
b
=
A
=
f(x)dx
c0 f(t 0 ) + c1f(t1 )
Por simplicidad se usar el intervalo [-1, 1] para integrar. Mediante una sustitucin ser
extendido al caso general:
1
=
A
f(t)dt
=
c0 f(t 0 ) + c1f(t1 )
Habiendo cuatro incgnitas se tomarn cuatro casos en los que la frmula sea exacta. Se
usarn polinomios de grado 0, 1, 2, 3. Es suficiente considerarlos en su forma ms simple:
1
1) f(t)=1, A =
2) f(t)=t, A =
1
1
3) f(t)=t2, A =
2
2
= c0 f(t 0 ) + c1f(t1 ) =c0 t 20 + c1t12 = c0 t 20 + c1t12
3
3
dt =
1
1
4) f(t)=t3, A =
239
Se genera un sistema de cuatro ecuaciones no-lineales. Una solucin para este sistema se
obtiene con facilidad mediante simple sustitucin:
Los valores c0 = c1 = 1 satisfacen a la ecuacin 1.
De la ecuacin 2 se tiene t0 = -t1. Esto satisface tambin a la ecuacin 4.
2/3 = (1)(-t1)2 + (1)(t1)2 se obtiene:
t1 =
, entonces, t 0 =
Definicin:
1
3
A=
c0 f(t 0 ) + c1f(t1 ) =
f(
f(t)dt =
1
1
3
) + f(
1
3
Esta simple frmula es exacta si f es un polinomio de grado menor o igual a tres. Para otra f
es una aproximacin equivalente a sustituir f con un polinomio de grado tres.
1
(2t
Ejemplo. Calcule =
A
+ t 2 1)dt
1
1
1
1
1 3
1 2
1
1
-4/3
A=
f(
) + f( ) =
[2(
) + (
) 1] + [2( )3 + ( )2 1] =
f(t)dt =
3
3
3
3
3
3
1
=
A
=
f(x)dx
c0 f(t 0 ) + c1f(t1 )
x
=
Sea
ba
b+a
t+
2
2
Se tiene que t = 1 x = b,
t = -1 x = a,
dx =
ba
dt
2
Sustituyendo se tiene
Definicin:
b
A=
f(x)dx=
a
ba
ba
b+a
ba
ba 1 b+a
ba 1 b+a
+
+
f(
t+
)dt=
f(
) + f(
)
2 1
2
2
2
2
2
2
2
3
3
240
2
(m=1)
b
A = f(x)dx =
a
ba
ba b+a
ba
f(
t+
)dt
[f(t 0 ) + f(t1 )],
2 1
2
2
2
ba 1 b+a
t0 =
+
,
2
2
3
t0 =
t1
=
21
2
21
2
ba 1 b+a
t1 = +
2
2
3
2+1
1
3
1.2113
=
+ =
2
3
2 3 2
1 2+1
1
3
+ =
+= 1.7886
2
3
2 3 2
1
1
[ f(1.2113) + f(1.7886)] = 7.3825
2
La respuesta exacta con cuatro decimales es 7.3890. Se observa que usando nicamente
dos puntos se tiene una precisin mejor que usando la frmula de Simpson con tres puntos.
1/ 2
1 + 5u + u du
2
Aplique la cuadratura de Gauss con m = 1, 2, 3. Con estos resultados haga una estimacin
de la precisin de la respuesta.
1/ 2
A=
1 + 5u + u du ,
f(u) =
A=
ba
ba 1 b+a
ba 1 b+a
+
+
f(
) + f(
)
2
2
2
2
2
3
3
f(x)dx=
a
1/ 2
m=1: A
5
1 + 5u + u2
f(u)du =
1/ 2 0
1/ 2 0 1 1/ 2 + 0
1/ 2 0 1 1/ 2 + 0
f(
) + f(
)
+
+
2
2
2
2
2
3
3
m=2 : A
1/ 2
f(u)du +
f(u)du
1/ 4
1/ 4 0
1/ 4 0 1 1/ 4 + 0
1/ 4 0 1 1/ 4 + 0
+
) + f(
+
)
f( 2
2
2
2
2
3
3
1/ 2 0
1/ 2 1/ 4 1 1/ 2 + 1/ 4
1/ 2 1/ 4 1 1/ 2 + 1/ 4
+
+
f(
) + f(
)
2
2
2
2
2
3
3
= 1.2237
241
1/ 6
m=3 : A
2/6
f(u)du +
3/6
f(u)du +
1/ 6
f(u)du
2/6
= 1.2251
E1 = 1.2237 1.2117 = 0.0120
E2 = 1.2251 1.2237 = 0.0014
La respuesta tiene el error en el orden 10-3 aproximadamente
7.3.2
>> syms x;
>> f=x*exp(x);
>> s=cgauss(f,1,2)
s = 7.3832
Para mejorar la precisin de sta frmula se la puede aplicar ms de una vez dividiendo el
intervalo de integracin en sub-intervalos.
Ejemplo. Aplique dos veces la cuadratura de Gauss en el ejemplo anterior
2
A = xe x dx = A1 + A2 =
1
1.5
xe x dx +
xe x dx
1.5
242
7.3.3
Ejemplo. Aplicar sucesivamente la Cuadratura de Gauss incrementando el nmero de subintervalos, hasta que la respuesta tenga cuatro decimales exactos
>> syms x;
>> f=x*exp(x);
>> s=cgaussm(f,1,2,1)
s=
7.3833
>> s=cgaussm(f,1,2,2)
s=
7.3887
>> s=cgaussm(f,1,2,3)
s=
7.3890
>> s=cgaussm(f,1,2,4)
s=
7.3890
En el ltimo clculo se han usado 4 sub-intervalos. El valor obtenido tiene cuatro decimales
fijos
Para obtener frmulas de cuadratura de Gauss con ms puntos no es prctico usar el
mtodo de coeficientes indeterminados. Se puede usar un procedimiento general basado en
la teora de polinomios ortogonales. En la bibliografa se pueden encontrar estas frmulas
as como expresiones para estimar el error de truncamiento pero imprcticas para su uso.
243
7.4
Ejemplo. Calcule A =
dx
(1 + x2 )3
dx
dx
dx
A=
A1 + A 2
(1 + x2 )3 =
(1 + x2 )3 + (1 + x2 )3 =
0
0
1
=
A2
dx
(1 +=
x 2 )3
1
dt
2)
(1 + 1/ t2 )3 (=
t
1
t4
(1 + t2 )3 dt
0
244
7.5
Ejemplo. Calcule A =
sen(x)
(x 1)2 / 3 dx
No se puede aplicar directamente la frmula de Simpson por el punto singular. Mediante una
sustitucin adecuada se debe tratar de eliminarlo:
(x-1)1/3 = u
x = u3 + 1: x = 1 u = 0; x = 0 u = -1; dx = 3u2du
1
=
A
sen(x)
dx
(x 1)2 / 3=
0
sen(u3 + 1)
u2
(3u2=
du)
3sen(u3 + 1)du
=
f(u)du
f
0
1.6394
2.3026
2.4988
2.5244
2f
3f
4f
1.6394
0.6633
0.1961
0.0256
-0.9761
-0.4671
-0.1705
0.5090
0.2966
-0.2124
(b-a)
(0 - (-1))
4
| max(| fi |) =
(-0.2124) = -0.0012
180
180
245
1
Ejemplo. Calcule A =
sen(x)
dx con la Cuadratura de Gauss con m = 1, 2
x
0
A=
f(x)dx=
a
ba
ba 1 b+a
ba 1 b+a
+
+
f(
) + f(
)
2
2
2
2
2
3
3
Ejemplo. Calcule S =
e1/ x
2 x5 / 3 dx con la frmula de Simpson, m=4.
S=
e1/ x
2 x5 / 3 dx =
1/ 2
eu
2
5 / 3 (du / u )=
1/ 2 1/ u
eu
du
u1/ 3
=
S
eu
=
0 u1/ 3 du
et 2
=
3t dt
t
(1/ 2)1/ 3
3te t dt
246
Regla de Simpson, m=4
S=
h
t3
[f0 + 4f1 + 2f2 + 4f3 + f4], f(t) = 3te
3
m=4 h=
(1/2)1/3
= 0.198425
4
7.6
Integrales mltiples
Para evaluar integrales mltiples se pueden usar las reglas de integracin numrica
anteriores integrando separadamente con cada variable:
db
f(x,
y)dxdy
=
f(x, y)dx dy con la regla
=
y c=
x a
ca
V=
b
b
b
b
f(x,y
)dx
+
4
f(x,y
)dx
+
2
f(x,y
)dx
+
4
f(x,y
)dx
+
.
.
.+
0
1
2
3
f(x,ym )dx
a
a
a
a
a
f(x, y0 )dx
a
b
f(x, y1)dx
a
b
f(x, y2 )dx
a
b
f(x, y3 )dx
a
x
( f(x0 , y0 ) + 4f(x1, y0 ) + 2f(x2 , y0 ) + 4f(x3 , y0 ) + . . . + f(xm , y0 ) )
3
x
( f(x0 , y1 ) + 4f(x1, y1) + 2f(x2 , y1) + 4f(x3 , y1) + . . . + f(xm , y1 ) )
3
x
( f(x0 , y2 ) + 4f(x1, y2 ) + 2f(x2 , y2 ) + 4f(x3 , y2 ) + . . . + f (xm , y2 ) )
3
x
( f(x0 , y3 ) + 4f(x1, y3 ) + 2f(x2 , y3 ) + 4f(x3 , y3 ) + . . . + f(xm , y3 ) )
3
. . .
b
f(x, ym )dx
a
x
( f(x0 , ym ) + 4f(x1, ym ) + 2f(x2 , ym ) + 4f(x3 , ym ) + . . . + f(xm , ym ) )
3
247
Ejemplo. Calcule el integral de f(x,y)=sen(x+y), 0x1, 2y3, con
direccin.
3 1
sen(x
y)dxdy
+
=
sen(x + y)dx dy,
y 2=
x 0
=
20
V
=
en cada
x =y =0.5
1
1
1
0.5
sen(x+2)dx + 4 sen(x+2.5)dx + sen(x+3)dx
3 0
0
0
1
sen(x + 2)dx
0
1
0.5
0.5741
( sen(0 + 2) + 4sen(0.5 + 2) + sen(1 + 2) ) =
3
sen(x + 2.5)dx
0
1
sen(x + 3)dx
0
m = 2
0.5
0.1354
( sen(0 + 2.5) + 4sen(0.5 + 2.5) + sen(1 + 2.5) ) =
3
0.5
-0.3365
( sen(0 + 3) + 4sen(0.5 + 3) + sen(1 + 3) ) =
3
0.5
0.1299
[ 0.5741+ 4(0.1354) +(-0.3365)] =
3
100
200
300
400
0
0
1
0
0
0
3
5
2
0
4
5
6
3
1
6
7
9
5
2
0
3
5
1
0
Con todos los datos de la tabla estime el volumen aproximado de agua que contiene el lago.
Utilice la frmula de Simpson en ambas direcciones.
400 200
V=
f(x, y)dydx
=
x 0=
y 0
=
V
x y
f(x 0 , y0 ) + 4f(x 0 , y1 ) + 2f(x 0 , y2 ) + 4f(x 0 , y3 ) + f(x 0 , y4 )
3 3
y
+4
f(x1 , y0 ) + 4f(x1 , y1 ) + 2f(x1 , y2 ) + 4f(x1 , y3 ) + f(x1 , y3 )
3
y
+2
f(x 2 , y0 ) + 4f(x 2 , y1 ) + 2f(x 2 , y2 ) + 4f(x 2 , y3 ) + f(x 2 , y4 )
3
y
+4
f(x 3 , y0 ) + 4f(x 3 , y1 ) + 2f(x 3 , y2 ) + 4f(x 3 , y3 ) + f(x 3 , y4 )
3
y
+
f(x 4 , y0 ) + 4f(x 4 , y1 ) + 2f(x 4 , y2 ) + 4f(x 4 , y3 ) + f(x 4 , y4 )
3
248
V
=
100 50
[ 0 + 4(0) + 2(1) + 4(0) + 0]
3 3
50
+4
[ 0 + 4(3) + 2(5) + 4(2) + 0]
3
50
+ 2 [ 4 + 4(5) + 2(6) + 4(3) + 1]
3
50
+4
[ 6 + 4(7) + 2(9) + 4(5) + 2]
3
50
+
[ 0 + 4(3) + 2(5) + 4(1) + 0] }
3
V = 287777.78
7.6.1
Se instrumenta el mtodo de Simpson para una funcin de dos variables f(x,y). Primero se
integra en la direccin X y despus, con los resultados obtenidos, se aplica nuevamente la
frmula de Simpson en la direccin Y.
f:
funcin de dos variables
ax, bx, ay, by: lmites de integracin en las direcciones x, y respectivamente
mx, my:
cantidad de franjas en cada direccin
function s=simpson2(f, ax, bx, ay, by, mx, my)
dy=(by-ay)/my;
y=ay;
for i=1:my+1
g = subs(f,'y',y);
%Sustituye en f el smbolo y por cada valor
r(i) = simpson(g, ax, bx, mx);
y = y+dy;
end
s=0;
for i=2:my
s=s+2*(2-mod(i,2))*r(i);
end
s=dy/3*(r(1)+s+r(my+1));
249
1
=
V
Ejemplo. Calcule
=
y 0=
x 0
Se observa que el integral entre el plano X-Y debajo de la superficie existe y est acotado.
Solucin con la funcin simpson2
>> syms x y;
>> format long
>> f=cos(x^2+y)*(x+y);
>> v=simpson2(f,0,1,0,1,4,4)
v=
0.500415316612236
>> v=simpson2(f,0,1,0,1,8,8)
v=
0.500269266271819
>> v=simpson2(f,0,1,0,1,12,12)
v=
0.500258596816339
>> v=simpson2(f,0,1,0,1,16,16)
v=
0.500256714328757
>> v=simpson2(f,0,1,0,1,20,20)
v=
0.500256191304419
250
Si se incrementa el nmero de franjas, el resultado tiende a un valor fijo que es el integral.
Nota. Este integral no se puede resolver por mtodos analticos o con MATLAB:
>> syms x y;
>> f=cos(x^2+y)*(x+y);
>> v=eval(int(int(f,0,1),0,1))
Error using
7.7
Casos especiales
7.7.1
=
V
2x
x 0=
y x
=
f(x,=
y)dydx
2x
(x 2 + y3 )dydx ,
x 0=
y x
=
Frmula de Simpson con una parbola en cada direccin (m=2): x = 0.5: x = 0, 0.5, 1
2(0)
2(0.5)
x
f(0,y)dy + 4 f(0.5,y)dy +
3 0
0.5
2(1)
f(1,y)dy
Los lmites para integrar en Y as como la longitud y de los intervalos, cambian segn X:
=
V
0.5 0
{ [ f(0,0) + 4f(0,0) + f(0,0)] +
3 3
0.25
0.5
4
[ f(0.5,0.5) + 4f(0.5,0.75) + f(0.5,1)] +
[ f(1,1) + 4f(1,1.5) + f(1,2)] } = 1.03125
3
3
251
7.7.2
Ejemplo. Calcule el valor del integral con la frmula de Simpson con m = 4 en cada
direccin.
e y x
x0 x1/ 3 dx dy
=
y 0=
0.5 0.5
V=
V=
3u e y u du dy
3
Esta funcin aunque es acotada, no es integrable analticamente, por lo que ahora se puede
integrar numricamente
7.7.3
sen(x + y)
=
y 1x
= 1
2x
aproximada
u
2 x : x = 1 u = 1, x = y =
Sea =
u
=
V
2 y
sen(2 u2 + y)
(2udu)
=
dy
u
2 y , x = 2 u2, dx = -2udu
2sen(2 u2 + y)du dy
2 y
2-1
0.5
2sen(2-u2 +1)du + 4
3 1
2sen(2-u2 +1)du + 4
2-1.5
2sen(2-u
+2)du
2-2
1
2sen(2-u2 +1.5)du +
2
2
2sen(2-u
+1.5)du
+
2sen(2-u
+2)du
0
0.5
1
252
1
2sen(2-u
+1)du = 0
2sen(2-u
+1.5)du=
0.5
0.1464
2sen(2 0.70712 + 1.5) + 4(2sen(2 0.8535 2 + 1.5)) + 2sen(2 12 + 1.5) =
0.2133
3
1
2sen(2-u
+2)du=
0.5
2sen(2 02 + 2) + 4(2sen(2 0.52 + 2)) + 2sen(2 12 + 2) =
-0.9673
3
0.5
0.0190
[ 0 + 4(0.2133)+(-0.9673)] =
3
7.8
frmula del error de truncamiento respectiva y sin realizar la integracin, estime la cantidad
de trapecios que tendra que usar para que la respuesta tenga cinco decimales exactos.
2. Se desea integrar f(x) = exp(x) + 5x3 , x [0, 2]
a) Use la frmula del error para determinar la cantidad de trapecios que se deberan usar
para obtener la respuesta con 2 decimales exactos.
b) Calcule la respuesta usando la cantidad de trapecios especificada
3. a) Encuentre en forma aproximada el rea debajo de f(x), 0x1.6 Use la frmula de
Simpson incluyendo los cinco puntos tomados mediante aproximacin visual del grfico.
253
4. En el siguiente grfico se muestra delineada la zona de un derrame de petrleo ocurrido
en cierta regin. Las mediciones han sido obtenidas a distancias de 4 Km.
Con la frmula de Simpson, encuentre en forma aproximada el rea total cubierta por el
derrame de petrleo.
1 x t2
e dt
0
Esta funcin se usa para definir la funcin de densidad de probabilidad de la distribucin
normal estndar. Calcule erf(1) con la frmula de Simpson con m=2,4,6. Con estos
resultados estime la precisin en la respuesta.
6. Una empresa est vendiendo una licencia para manejo de un nuevo punto de venta. La
experiencia indica que dentro de t aos, la licencia generar utilidades segn f(t) =
14000+490t dlares por ao. Si la tasa de inters r permanece fija durante los prximos n
aos, entonces el valor presente de la licencia se puede calcular con
5. La siguiente definicin se denomina funcin error: erf(x) =
V = f(t)e rt dt
0
Calcule V si n=5 aos y r=0.07. Use la frmula de Simpson con m=4,6,8. Con estos
resultados estime el error de truncamiento
7. Un comerciante usa el siguiente modelo para describir la distribucin de la proporcin x
del total de su mercadera que se vende semanalmente:
f(x )=20x3(1-x), 0x1
El rea debajo de f(x) representa entonces la probabilidad que venda una cantidad x en
cualquier semana.
Se desea conocer la probabilidad que en una semana venda ms de la mitad de su
mercadera (debe integrar f entre 0.5 y 1). Use la Frmula de Simpson con m=4
8. Segn la teora de Kepler, el recorrido de los planetas es una elipse con el Sol en uno de
sus focos. La longitud del recorrido total de la rbita esta dada por
/2
s = 4 a 1 k 2 sen 2 t dt ,
0
254
9. Una placa rectangular metlica de 0.45 m por 0.60 m pesa 5 Kg. Se necesita recortar este
material para obtener una placa de forma elptica, con eje mayor igual a 50 cm, y eje menor
igual a 40 cm. Calcule el rea de la elipse y determine el peso que tendr esta placa. Para
calcular el rea de la elipse use la frmula de Simpson con m = 4. Finalmente, estime cual
es el el error de truncamiento en el valor del rea calculada.
10. Una curva C puede darse en forma paramtrica con las ecuaciones:
x = f(t)
y = g(t), t [a, b]
Si no hay intersecciones entre f y g, entonces, la longitud del arco de C se puede calcular
con la integral:
b
=
S
(x '(t))2 + (y '(t))2 dt
Use la frmula de Simpson, m=4, para calcular la longitud del arco de la curva dada con las
siguientes ecuaciones paramtricas
=
x 2 cos(t),
=
y
3sen(t), t [0, / 2]
puntos.
1
12. Calcule A =
dx
1/ 2 (2x
1)1/ 3
13. Calcule A =
dx
1 + x4
15. Calcule A =
dx
x2 + x 2 .
255
17. Escriba una tabla con los cinco puntos del grfico, para x = 0.2, 0.6, 1.0, 1.4, 1.8
aproximando visualmente con una precisin de tres decimales.
0.42
0.4
0.38
0.36
0.34
0.32
0.3
0.2
0.4
0.6
0.8
1
x
1.2
1.4
1.6
1.8
18. Calcule
=
A
(x + y) sin(x)dxdy .
1 0.5
con m=4
19. Calcular la siguiente integral, con el algoritmo de la integral doble de Simpson:
=
S
9 y2 dA
20. La funcin () =
1 x
0
modelos de probabilidad. Encuentre un valor aproximado de (2) aplicando la Cuadratura
de Gauss.
Sugerencia: Separe el intervalo de integracin en dos intervalos: [0,1], [1, ]. Luego, para
el segundo intervalo use un cambio de variable para eliminar el lmite superior .
Finalmente aplique la Cuadratura de Gauss una vez en cada intervalo.
256
21. El siguiente cuadro contiene valores de una funcin f(x,y). Use la frmula de Simpson
para calcular el volumen entre el plano X-Y y la superficie f(x,y), 0.1 x 0.5, 0.2 y 1.0 .
Use todos los datos disponibles.
Y
X
0.1
0.2
0.3
0.4
0.5
0.2
0.4
0.6
0.8
1.0
0.04
0.41
0.81
0.76
0.06
0.08
0.47
0.83
0.70
0.02
0.12
0.53
0.84
0.62
0.01
0.16
0.58
0.83
0.53
0.01
0.20
0.62
0.82
0.42
0.02
22. Cuando un cuerpo de masa m se desplaza verticalmente hacia arriba desde la superficie
de la tierra, si prescindimos de toda fuerza de resistencia (excepto la fuerza de la gravedad),
x
R
A = e sen(x)dx
0
24. El siguiente integral no puede resolverse analticamente y tampoco pueden aplicarse las
frmulas comunes de integracin numrica.:
1
sen(x)
dx
x
Aplique la Cuadratura de Gauss con uno, dos y tres subintervalos. Con estos resultados
estime la precisin del resultado de la integracin.
sin(x)
dx
1 x
a) Use una sustitucin para eliminar el punto singular y aplique la regla de Simpson, m=4.
b) Estime el error en el resultado obtenido
25. Encuentre un valor aproximado del siguiente integral
cos(x) -1
dx . Estime el error en la aproximacin.
0
x
257
2y
sen(x y)
11
2x
sen(x + y)
2x
= + ( ())
Este integral no puede ser calculado por mtodos analticos.
la siguiente integral:
A=
2 4
ex
3x
dx
258
8
DIFERENCIACIN NUMRICA
En este captulo se describen con algunas frmulas para evaluar derivadas. Estas frmulas
son de especial inters para algunos mtodos usados en la resolucin de ecuaciones
diferenciales y que se estudiarn posteriormente.
8.1
Dados los puntos (xi, fi), i=0, 1, 2, ..., n, siendo f desconocida pero supuestamente
diferenciable. E es de inters evaluar alguna derivada de f en alguno de los puntos xi.
Un procedimiento para obtener frmulas aproximadas para las derivadas de f consiste en
usar los puntos dados para construir el polinomio de interpolacin y luego derivar el
polinomio y evaluar la derivada en el punto de inters:
f(x) pn(x) f(k)(xi)
dk
[pn (x)]x = xi
dxk
Adicionalmente, con la frmula del error en la interpolacin se puede estimar el error para
las frmulas de las derivadas.
Un procedimiento ms simple consiste en usar la serie de Taylor, bajo la suposicin de que
la funcin f se puede expresar mediante este desarrollo. Mediante artificios algebraicos se
pueden obtener frmulas para aproximar algunas derivadas y su error de truncamiento:
Desarrollo de la serie de Taylor a una distancia h a la derecha y a la izquierda del punto xi :
(1)
fi+1 = fi + hf i +
(2)
fi-1 = fi - hf i +
hn + 1 (n+1)
hn
h2
f i + ... + f (n)i +
f
(z), xi z xi+1
(n + 1)!
n!
2!
hn + 1 (n+1)
hn (n)
h2
f i - ... +
f if
(z), xi-1 z xi
n!
2!
(n + 1)!
8.2
Tomando tres trminos de (1) y despejando f se obtiene una aproximacin para la primera
derivada en el punto xi, y el error de truncamiento respectivo:
f f h
h2
fi+1 = fi + hf i +
f (z) f i = i + 1 i - f (z), xi z xi+1
h
2
2!
Definicin: Una frmula para la primera derivada con el error de truncamiento
fi + 1 fi fi
=
h
h
h
E = - f (z) = O(h), xi z xi+1
2
f i
259
Esta aproximacin significa que la pendiente
de la tangente a f en el punto xi es aproximada
mediante la pendiente de la recta que incluye a
los puntos xi y xi+1, como se muestra en la
figura.
Para que la aproximacin sea aceptable,
debe ser suficientemente pequeo:
h0 E =
h
f (z) 0
2
260
Resultados obtenidos
0.100000000000000
0.010000000000000
0.001000000000000
0.000100000000000
0.000010000000000
0.000001000000000
0.000000100000000
0.000000010000000
0.000000001000000
0.000000000100000
0.000000000010000
0.000000000001000
0.000000000000100
0.000000000000010
0.000000000000001
5.436563656918091
5.436563656918091
5.436563656918091
5.436563656918091
5.436563656918091
5.436563656918091
5.436563656918091
5.436563656918091
5.436563656918091
5.436563656918091
5.436563656918091
5.436563656918091
5.436563656918091
5.436563656918091
5.436563656918091
5.863007978820316
5.477519670803988
5.440642892414083
5.436971417314140
5.436604431352520
5.436567733330121
5.436564065597337
5.436563599303667
5.436563643712587
5.436562311444957
5.436540106984465
5.436984196194316
5.431211036466265
5.373479439185757
5.773159728050813
0.426444321902225
0.040956013885896
0.004079235495992
0.000407760396049
0.000040774434429
0.000004076412030
0.000000408679246
0.000000057614424
0.000000013205504
0.000001345473134
0.000023549933626
0.000420539276225
0.005352620451826
0.063084217732334
0.336596071132722
Se observa que la precisin mejora cuando se reduce h, pero a partir de cierto valor de h el
resultado pierde precisin.
La aproximacin propuesta para fi es una frmula de primer orden cuyo error de
truncamiento es E=O(h). Por lo tanto, si se desea una aproximacin con alta precisin, se
debe elegir para h un valor muy pequeo, pero ya hemos mencionado que esto puede hacer
que el error de redondeo sea significativo.
Adicionalmente, si nicamente se tienen puntos de f, no se puede elegir h. Entonces es
preferible usar frmulas con mayor precisin usando los puntos dados.
8.3
Una frmula ms precisa para la primera derivada se obtiene restando (1) y (2) con cuatro
trminos:
(1)
fi+1 = fi + hf i +
(2)
fi-1 = fi - hf i +
(1) (2):
f i =
h2
h3
f i +
f (z1) ,
2!
3!
h2
h3
f i f (z2) ,
2!
3!
xi z1 xi+1
xi-1 z2 xi
h3
h3
f (z1) +
f (z2)
3!
3!
fi + 1 fi 1 h2
fi + 1 fi 1 h2
- (f (z1) + f (z2)) =
2h
12
2h
12
fi + 1 fi 1
,
2h
E=-
h2
f (z) = O(h2), xi-1 z xi+1
6
261
Ejemplo. Usar las frmulas para evaluar f'(1.1) dados los siguientes datos:
(x, f(x)): (1.0, 2.7183), (1.1, 3.3046), (1.2, 3.9841), (1.3, 4.7701)
f2 f1 3.9841 3.3046
=
= 6.7950,
0.1
h
f f 3.9841 2.7183
f 1 2 0 =
= 6.3293,
2h
2(0.1)
f 1
E=O(h)=O(0.1)
E=O(h2)=O(0.01)
Para comparar, estos datos son tomados de la funcin f(x) = x ex. El valor exacto es
f (1.1) = 6.3087. El error en la primera frmula es -0.4863 y para la segunda es -0.0206
En la realidad, nicamente se conocen puntos de f(x) con los cuales se debe intentar
estimar el error en los resultados de las frmulas mediante las aproximaciones de
diferencias finitas, recordando que esta aproximacin es aceptable si los valores de las
diferencias finitas en cada columna no cambian significactivamente y tienden a reducirse.
Ejemplo. Estime el error en los resultados del ejemplo anterior, con los dados dados:
(x, f(x)): (1.0, 2.7183), (1.1, 3.3046), (1.2, 3.9841), (1.3, 4.7701)
Tabulacin de las diferencias finitas:
i
xi
fi
fi
0
1.0
2.7183 0.5863
1
1.1
3.3046 0.6795
2
1.2
3.9841 0.7860
3
1.3
4.7701
2fi
0.0932
0.1065
3fi
0.0133
f 1
f2 f1 3.9841 3.3046
=
= 6.7950,
0.1
h
E=-
h
2 fi
h 2 fi
0.1066
f (z)
=
=
0.5325
2
2
2 h
2h
2(0.1)
f 1
E=-
f2 f0 3.9841 2.7183
=
= 6.3293,
2h
2(0.1)
3 fi
h2 3 fi
0.0133
h2
f (z)
=
=
0.0222
3
6
6 h
6h
6(0.1)
262
8.4
Una frmula para la segunda derivada se obtiene sumando (1) y (2) con 5 trminos:
(1)
fi+1 = fi + hf i +
(2)
fi-1 = fi - hf i +
(1) + (2):
h2
h4
h3
f i +
f i + f iv(z1),
2!
4!
3!
h4
h2
h3
f i f i + f iv(z2),
4!
2!
3!
f i =
xi z1 xi+1
xi-1 z2 xi
h4 iv
h2
f i)+
(f (z1) + f iv(z2))
4!
2!
fi 1 2fi + fi + 1 h2
(2f iv(z)), xi-1 z xi+1
2
h
4!
f i
E=-
h2 iv
f (z) = O(h2), xi-1 z xi+1
12
Ejemplo. Use la frmula para calcular f''(1.1) dados los siguientes datos:
(x, f(x)): (1.0, 2.7183), (1.1, 3.3046), (1.2, 3.9841), (1.3, 4.7701)
f0 2f1 + f2 2.7183 2(3.3046) + 3.9841
=
= 9.32,E=O(h2)=O(0.01)
2
2
h
0.1
Estos datos son tomados de la funcin f(x) = x ex. El valor exacto es f(1.1) = 9.3129. El
error de truncamiento es -0.0071. Si se tuviese un punto adicional, se pudiera estimar el
error con la frmula, usando los datos y una aproximacin de diferencias finitas para la
cuarta derivada.
f 1
8.5
Este mtodo permite obtener frmulas para derivadas usando como base cualquier grupo
de puntos.
Dados los puntos (xi, fi), i= 0, 1, 2, ..., n, encontrar una frmula para la k-sima derivada
de f(x) con la siguiente forma:
f(k)(xj) = cofi + c1fi+1 + c2fi+2 + ..., + cmfi+m + E,
La derivada debe evaluarse en el punto j que debe ser alguno de los puntos que intervienen
en la frmula.
263
Para determinar los coeficientes y el error de truncamiento se sigue el procedimiento:
1) Desarrollar cada trmino alrededor del punto xj con la serie de Taylor
2) Comparar los trminos en ambos lados de la ecuacin
3) Resolver el sistema resultante y obtener los coeficientes y la frmula para E
Ejemplo. Con el Mtodo de Coeficientes Indeterminados obtenga una frmula para f en el
punto xi usando los puntos xi y xi+1 :
fi = cofi + c1fi+1 + E
1) Desarrollar cada trmino alrededor del punto xi
fi = cofi + c1 (fi + hf i +
h2
f (z))+ E
2!
h2
f (z)+ E
2!
2) Comparar trminos
0 = c 0 + c1
1 = c1h
0 = c1
h2
f (z) + E
2!
8.6
264
8.7
Esta tcnica se puede aplicar a la diferenciacin numrica para mejorar la exactitud del valor
de una derivada usando resultados previos de menor precisin.
Examinamos el caso de la primera derivada, comenzando con una frmula conocida:
f(xi + h) f(xi h)
+ O(h2 )
2h
Si se define el operador D:
=
f '(xi )
f(xi + h) f(xi h)
2h
2
f '(x
=
)
D(h)
+
O(h
)
i
D(h) =
3fi(1) + O(h2 )
D(h) 4D(h / 2) =+
fi(1) Ah2 + O(h4 ) 4fi(1) Ah2 + O(h2 ) =
De donde se obtiene
4D(h / 2) D(h)
=
fi(1) f=
'(xi )
+ O(h4 )
3
Es una frmula mayor precisin que la frmula inicial, para evaluar la primera derivada.
Este procedimiento puede continuar para encontrar frmulas de mayor orden.
265
Ejm. Dados los puntos (0.1, 0.1105), (0.2, 0.2442), (0.3, 0.4049), (0.4, 0.5967), (0.5, 0.8243)
de una funcin f(x), calcule f'(0.3) usando extrapolacin en la diferenciacin
h = 0.2, xi = 0.3
f '(xi ) D(h) =
1.7845;
f '(xi ) D(h / 2) =
1.7625;
f '(xi )
4D(h / 2) D(h)
=
1.7551
3
8.8
1. Se tomaron los siguientes datos en Km. para las coordenadas del recorrido de un cohete:
(50, 3.5), (80, 4.2), (110, 5.7), (140, 3.8), (170, 1.2). Mediante aproximaciones de segundo
orden determine
a) Velocidad en el centro de la trayectoria
b) Aceleracin en el centro de la trayectoria
fi + 1 fi 1
para aproximar la primera derivada no puede
2h
aplicarse en los puntos extremos del conjunto de datos pues se requiere un punto a cada
lado. Use el mtodo de coeficientes indeterminados para encontrar frmulas de segundo
orden para la primera derivada con los siguientes puntos:
2 fi
h2
266
9
267
Ejemplo. Un cuerpo de masa m sujeto a un extremo de un resorte con constante de
amortiguacin k, con el otro extremo fijo, se desliza sobre una mesa con un coeficiente de
friccin c. A partir de un estado inicial, las oscilaciones decrecen hasta que se detiene. La
ecuacin del movimiento es
ma =
cv kx
Fx =
268
En el siguiente ejemplo, se modifica la ecuacin anterior incorporando un trmino no-lineal:
d2 x c
dx k
+ (x 1)
+ x=0
2
dt
m
dt m
Al resolverla con la funcin dsolve de MATLAB usando los mismos datos, se obtiene:
>> x=dsolve('D2x+0.25/5*(x-1)*Dx+0.8/5*x=0','x(0)=1,Dx(0)=0')
Warning: Explicit solution could not be found.
x = [ empty sym ]
Este mensaje indica que no se puede obtener la solucin analtica. En estas situaciones
toma inters el estudio de los mtodos numricos.
9.1
x
x0
dy = f(x, y)dx
x0
Los mtodos numricos permiten obtener una solucin aproximada cuando no es posible o
es muy complicado obtenerla en forma explcita.
Para adquirir confianza al resolver ecuaciones complicadas para las cuales ya no pueda
obtener la solucin analtica, es conveniente comparar la solucin numrica con la solucin
analtica de ecuaciones cuya solucin es conocida.
269
9.1.1 Existencia de la solucin
Condicin de Lipschitz
Sea la funcin f : A R, A R. Si existe una constante kR+ tal que
9.1.2
hn+1
h2
hn (n)
yi + ... +
y i+
y (n+1)(z), xi z xi+1
2!
n!
(n + 1)!
270
Ejemplo. Obtenga dos puntos de la solucin de la siguiente ecuacin diferencial utilizando
los tres primeros trminos de la serie de Taylor. Use h = 0.1
y - y - x + x2 - 1 = 0, y(0) = 1
Solucin
yi+1 = yi + hy i +
h2
yi,
2!
E=
h3
y(z) = O(h3) = O(0.001) (Error de truncamiento)
3!
xi+1 = xi + h, i = 0, 1, 2, ...
y = f(x, y) = y - x2 + x + 1,
y = f(x, y) = y - 2x + 1 = (y - x2 + x + 1) - 2x + 1 = y - x2 - x + 2
x0 = 0, y0 = 1, h = 0.1
h2
( yi - x2i - xi + 2)
2
xi+1 = xi + h, i = 0, 1, 2, ...
Puntos de la solucin:
i=0:
y1 = y0 + h(y0 - x20 + x0 + 1) +
= 1 + 0.1(1 02 + 0 + 1) +
h2
( y0 - x20 - x0 + 2)
2
0.12
( 1 - 02 0 + 2) = 1.2150
2
x1 = x0 + h = 0 + 0.1 = 0.1
i=1:
y2 = y1 + h(y1 - x21 + x1 + 1) +
h2
( y1 - x21 - x1 + 2)
2
0.12
( 1.2150 0.12 0.1 + 2) = 1.4610
2
271
En el siguiente grfico se muestran los dos puntos obtenidos junto con lel grfico de la
solucin analtica exacta. La concordancia es muy buena.
9.1.3
yi+1 = yi + hy i +
h2
h2
yi = yi + hf(xi,yi) +
f (xi,yi)
2!
2!
xi+1 = xi + h, i = 0, 1, 2, ...
function [u,v]=taylor3(f, df, x, y, h, m)
f=inline(f);
df=inline(df);
u=[ ];
v=[ ];
for i=1:m
y=y+h*f(x,y)+h^2/2*df(x,y);
x=x+h;
u(i)=x;
v(i)=y;
end
% f(x,y)
% f(x,y)
% Puntos de la solucin
272
Ejemplo. Con la funcin taylor3, obtenga 20 puntos de la solucin de la siguiente ecuacin
diferencial. Tabule y grafique los puntos. Use h = 0.1
y - y - x + x2 - 1 = 0, y(0) = 1
f(x, y) = y - x2 + x + 1
f(x, y) = y - x2 - x + 2
x0 = 0, y0 = 1,
h = 0.1,
m = 20
(cantidad de puntos)
>> f=y-x^2+x+1;
>> df=y-x^2-x+2;
>> [u, v] = taylor3(f, df, 0, 1, 0.1, 20);
>> plot(u, v, 'o');
>> g=dsolve('Dy-y-x+x^2-1=0','y(0)=1','x')
g = x+x^2+exp(x)
>> hold on;
>> grid on;
>> ezplot(g, [0,2]);
p( )
14
12
10
0
0
0.2
0.4
0.6
0.8
1.2
1.4
1.6
1.8
273
9.1.4
Usando el manejo simblico y de texto de MATLAB describimos una funcin para obtener
las derivadas sucesivas de una funcin implcita con sustitucin de las derivadas. La
expresin resultante queda en formato simple y directamente evaluable, por lo tanto puede
incorporarse en un mtodo numrico para evaluar trminos de la serie de Taylor.
function df=derive(f,nd)
% f es una funcin con variable independiente x, y variable dependiente y
% f, df en formato texto
% nd es el orden de la derivada
t=compactar(char(f));
for j=1:nd
f=compactar(f);
n=length(f);
g='';
for i=1:n
if f(i)=='y';
g=[g,'y(x)'];
else
g=[g,f(i)];
end
end
d=diff(sym(g));
s=char(d);
s=compactar(s);
p=strfind(s,'y(x)');
while length(p)>0
i=p(1);
s(i+1:i+3)='';
p=strfind(s,'y(x)');
end
p=strfind(s,'diff(y,x)');
while length(p)>0
i=p(1);
s(i)='k';
s(i+1:i+8)='';
p=strfind(s,'diff(y,x)');
end
df='';
274
for i=1:length(s)
if s(i)=='k'
df=[df,'(',t,')'];
else
df=[df,s(i)];
end
end
p=strfind(df,'y(x)');
while length(p)>0
i=p(1);
df(i+1:i+3)='';
p=strfind(df,'y(x)');
end
df=sym(df);
f=char(df);
end
df=char(df);
function x=compactar(x)
while length(strfind(x,' '))>0
p=strfind(x,' ');
x(p(1))='';
end
Ejemplo. Sea y = y(x), obtenga la primera derivada de y(x) = f(x,y) = y2sen(y)-x2+x+1
>> f='y^2*sin(y)-x^2+x+1';
>> d=derive(f,1)
d=
y^2*cos(y)*(x + y^2*sin(y) - x^2 + 1) - 2*x + 2*y*sin(y)*(x + y^2*sin(y) - x^2 + 1) + 1
Para evaluar esta derivada se puede usar la funcin eval:
275
9.1.5
Con la funcin derive se puede instrumentar una funcin para obtener puntos de la solucin
de una ecuacin diferencial ordinaria de primer orden, lineal o no lineal, con una cantidad
arbitraria de trminos de la serie de Taylor con lo cual, en teora, la precisin puede ser
ilimitada:
La funcin requiere especificar f = f(x,y) definida en formato texto, el punto inicial (x0, y0) y
los parmetros h (paso o distancia entre puntos), m (cantidad de puntos que se calcularn),
k (orden de la derivada de y(x) = f(x,y) que se desea incluir, k1 ).
Ecuacin diferencial:
y'(x) = f(x,y), y(x0) = y0, x0 x xn
Serie de Taylor:
2
3
k +1
yi+1 = yi + hf(xi, yi) + h f(1)(xi, yi) + h f(2)(xi, yi) + ... + h
f(k)(xi, yi)
2!
3!
(k + 1)!
xi+1 = xi + h, i = 0, 1, 2, ...
276
Ejemplo. Calcule 5 puntos de solucin de la ecuacin y - y - x + x2 - 1 = 0, y(0) = 1. Use
el desarrollo de la serie de Taylor hasta la tercera derivada de y(x) = f(x,y), con h = 0.1
2
3
4
yi+1 = yi + hf(xi, yi) + h f(1)(xi, yi) + h f(2)(xi, yi) + h f(3)(xi, yi)
3!
2!
4!
xi+1 = xi + h, i = 0, 1, 2, 4, 5
0.5000
2.3987
Este resultado coincide con la solucin exacta en los cuatro decimales mostrados:
>> y=dsolve('Dy=y+x-x^2+1','y(0)=1','x')
y=
x + exp(x) + x^2
>> x=0.5;
>> eval(y)
ans =
2.3987
En las siguientes secciones se describirn algunos mtodos numricos clsicos
equivalentes a usar ms trminos de la serie de Taylor y que no requieren especificar las
derivadas de f(x,y).
Estos mtodos usan aproximaciones para las derivadas y tiene la ventaje que pueden
extenderse a sistemas de ecuaciones diferenciales y ecuaciones diferenciales con derivadas
de mayor orden incluyendo ecuaciones diferenciales no lineales.
277
9.1.6
Frmula de Euler
Las siguientes frmulas constituyen los mtodos clsicos para resolver numricamente
ecuaciones diferenciales ordinarias. Son equivalentes a usar varios trminos de la serie de
Taylor pero sustituyen las derivadas por aproximaciones, de tal manera que no se requiere
especificarlas o usar el mtodo de derivacin implcita anterior. Las frmulas y los algoritmos
resultantes son independientes de una EDO particular.
Sea una ecuacin diferencial ordinaria explcita de primer orden con una condicin en el
inicio:
y(x) = f(x, y), y(x0) = y0
La frmula de Euler usa los dos primeros trminos de la serie de Taylor:
yi+1 = yi + hyi +
h2
h2
y(z) = yi + hf(xi, yi) +
y(z), xi z xi+1
2!
2!
E=
h
y(z) = O(h2),
2!
i = 0, 1, 2, ...
xi z xi+1
Algoritmo para calcular puntos de la solucin de una EDO de primer orden con la
frmula de Euler
1)
2)
3)
4)
5)
6)
278
Clculo de los puntos
i=0:
i=1:
y2 = y1 + h f(x1, y1) = 1.2 + 0.1 f(0.1, 1.2) = 1.2 + 0.1 (1.2 + 0.1 - 0.12 + 1] = 1.4290
x2 = x1 + h = 0.1 + 0.1 = 0.2
9.1.7
La frmula de Euler utiliza la pendiente de la recta en cada punto para predecir y estimar la
solucin en el siguiente punto, a una distancia elegida h. La diferencia del punto calculado,
con respecto al valor exacto es el error de truncamiento, el cual puede crecer al proseguir el
clculo.
h2
y(z) = O(h2),
2
Para reducir E se debe reducir h puesto que h 0 E0. Sin embargo, este hecho
matemticamente cierto, al ser aplicado tiene una consecuencia importante que es
interesante analizar:
279
Suponer que se desea calcular la solucin y(x) en un intervalo fijo x0 x xf mediante m
puntos xi = x0, x1, x2, ..., xm espaciados regularmente en una distancia h:
h=
x f x0
m
h2
y(zi )
2
xf x0 2
h ( D ) = h[( x f x 0 ) D ]
h
y"(zi )
,
2
independiente de h. Se muestra que el error de truncamiento acumulado es solamente de
orden O(h), por lo tanto h debe ser un valor mas pequeo que el previsto para asegurar que
la solucin calculada sea suficientemente precisa hasta el final del intervalo.
Por otra parte, cada vez que se evala f(xi, yi) se puede introducir el error de redondeo Ri
debido a los errores en la aritmtica computacional y al dispositivo de almacenamiento.
Entonces, el error de redondeo se pudiera acumular en cada paso y al final del intervalo se
tendr:
x x0
1
( R ) = [( x f x 0 ) R ]
R = R1 + R2 + R3 + . . . + Rm = m ( R ) = f
h
h
R es algn valor promedio del error de redondeo en cada paso, independiente de h.
El error total acumulado al realizar los clculos con la frmula de Euler hasta el final del
intervalo:
1
EA = E + R = h[( x f x 0 ) D ] + [( x f x 0 ) R ]
h
Si m es muy grande, h ser muy pequeo y E ser pequeo, pero al reducir h, el error de
redondeo R puede crecer y llegar a ser mayor al error de truncamiento, por lo tanto el
resultado perder precisin en vez de aumentarla, lo cual se acepta equivocadamente como
verdadero porque solamente se considera el error de truncamiento.
Como conclusin de lo anterior, es preferible usar frmulas cuyo error de truncamiento E
sea de mayor orden para que el valor de h no requiera ser muy pequeo si se buscan
resultados con alta precisin. Esto retardar tambin el efecto del error de redondeo
acumulado R.
280
9.1.8
Una funcin en MATLAB para obtener puntos de la solucin de una EDO de primer orden
con dos trminos de la Serie de Taylor. La funcin requiere especificar f(x,y), el punto inicial
(x0, y0) y los parmetros h (paso o distancia entre puntos), y m (cantidad de puntos).
Ecuacin diferencial: y'(x)=f(x,y), y(x0)=y0, x0xxn
Serie de Taylor:
yi+1 = yi + hy i = yi + hf(xi,yi)
xi+1 = xi + h, i = 0, 1, 2, ...
function [u,v]=euler(f, x, y, h, m)
f=[f, '+0*x+0*y'];
f=inline(f);
u=[ ];
v=[ ];
for i=1:m
y=y + h*f(x,y);
x=x+h;
u(i)=x;
v(i)=y;
end
281
9.1.9
h2
h3
h2
h3
yi +
y(z) = yi + hf(xi, yi) + f(xi, yi) +
y(z), xi z xi+1
2!
3!
2!
3!
h2
f(xi, yi) + O(h3)
2
fi + 1 fi
+ O(h)
h
h
h
h2 f f
yi+1 = yi + hfi + [ i + 1 i + O(h)] + O(h3) = yi + hfi + fi+1 - fi + O(h3)
2
2
h
2
h
yi+1 = yi + (fi + fi+1) + O(h3)
2
Para evaluar fi+1 = f(xi+1, yi+1) se usa yi+1 calculado con la frmula de Euler como
aproximacin inicial:
yi+1 = yi + hf(xi, yi)
h
(f(xi, yi) + f(xi+1, yi+1))
yi+1 = yi +
2
xi+1 = xi + h,
i = 0, 1, 2, ...
282
Esta frmula se puede escribir con la notacin que se muestra en la definicin.
Definicin:
Frmula de Heun
K1 = hf(xi, yi)
K2 = hf(xi + h, yi + K1)
1
yi+1 = yi + (K1 + K2)
2
xi+1 = xi + h,
i = 0, 1, 2, ...
E=
h3
y(z) = O(h3), xi z xi+1
3!
Grficamente, se puede interpretar que esta frmula calcula cada nuevo punto usando un
promedio de las pendientes en los puntos inicial y final en cada intervalo de longitud h.
El error de truncamiento en cada paso es de tercer orden O(h3), y el error de truncamiento
acumulado es de segundo orden O(h2), mejor que la frmula de Euler.
Algoritmo para resolver una EDO de primer orden con la frmula de Heun
1) Defina f(x,y) y la condicin incial (x0, y0)
2) Defina h y la cantidad de puntos a calcular m
3) Para i =1, 2, ..., m
4)
K1 = hf(xi, yi)
5)
K2 = hf(xi + h, yi + K1))
1
6)
yi+1 = yi + (K1 + K2)
.
2
7)
xi+1 = xi + h
8) fin
Ejemplo. Obtener dos puntos de la solucin de la siguiente ecuacin diferencial con la
frmula de Heun. Use h = 0.1
y - y - x + x2 - 1 = 0, y(0) = 1
y = f(x, y) = x - x2 + y + 1, x0 = 0, y0 = 1, h = 0.1
Clculos
i=0:
283
i=1:
K1 = hf(x1, y1) = 0.1 f(0.1, 1.2145) = 0.1 (0.1 0.12 + 1.2145 + 1) =0.2305;
K2 = hf(x1 + h, y1 + K1) = 0.1 f(0.2, 1.4450) = 0.1 [ 0.2 0.22 + 1.4450 + 1] = 0.2605
1
y2 = y1 + (K1 + K2) = 1.2145 + 0.5(0.2305 + 0.2605) = 1.4600
2
x2 = x1 + h = 0.1 + 0.1 = 0.2
284
Ejemplo. Para el ejemplo anterior, calcule 20 puntos de la solucin espaciados en una
distancia h = 0.1, usando la funcin heun.
y - y - x + x2 - 1 = 0, y(0) = 1
f(x, y) = y - x2 + x + 1
x0 = 0, y0 = 1,
h = 0.1,
m = 20 (cantidad de puntos)
>> f=y-x^2+x+1;
>> [u, v]= heun(f, 0, 1, 0.1, 20);
>> plot(u, v, 'o');
>> g=dsolve('Dy-y-x+x^2-1=0','y(0)=1','x')
g=
x+x^2+exp(x)
>> hold on;
>> grid on;
>> ezplot(g,[0,2]);
285
9.1.11 Frmulas de Runge-Kutta
Estas frmulas utilizan artificios matemticos para incorporar ms trminos de la serie de
Taylor. Describimos la ms popular, denominada frmula de Runge-Kutta de cuarto orden,
la cual es aproximadamente equivalente a incluir los cinco primeros trminos de la Serie de
Taylor:
yi+1 = yi + hf(xi, yi) +
h4
h2
h3
f(xi, yi) +
f (xi, yi) +
f(xi, yi) + O(h5)
4!
2
3!
xi+1 = xi + h, i = 0, 1, 2, ...
Mediante sustituciones de las derivadas por aproximaciones, se desarrolla una frmula que
no requiere especificar las derivadas de f(x,y)
Dada una ecuacin diferencial de primer orden con una condicin en el inicio: y(x) = f(x, y),
y(x0) = y0, se define la frmula de Runge-Kutta de cuarto orden:
Definicin:
K1 = hf(xi, yi)
K2 = hf(xi + h/2, yi + K1/2)
K3 = hf(xi + h/2, yi + K2/2)
K4 = hf(xi + h, yi + K3)
1
yi+1 = yi + (K1 + 2K2 + 2K3 + K4)
6
xi+1 = xi + h,
i = 0, 1, 2, ...
E=
h5 (5)
y (z) = O(h5), xi z xi+1
5!
Grficamente, se puede interpretar que esta frmula calcula cada nuevo punto usando un
promedio ponderado de las pendientes en los puntos inicial, medio y final en cada intervalo
de longitud h. El error de truncamiento en cada paso es de quinto orden O(h5), y el error de
truncamiento acumulado es de cuarto orden O(h4), suficientemente exacto para problemas
comunes.
Algoritmo para resolver una EDO de primer orden con la frmula de Runge-Kutta
1) Defina f(x,y) y la condicin inicial (x0, y0)
2) Defina h y la cantidad de puntos a calcular m
3) Para i =1, 2, ..., m
4)
K1 = hf(xi, yi)
5)
K2 = hf(xi + h/2, yi + K1/2)
6)
K3 = hf(xi + h/2, yi + K2/2)
7)
K4 = hf(xi + h, yi + K3)
1
.
8)
yi+1 = yi + (K1 + 2K2 + 2K3 + K4)
6
9)
xi+1 = xi + h
10) fin
286
Ejemplo. Obtenga un punto de la solucin de la siguiente ecuacin diferencial con la
frmula de Runge-Kutta de cuarto orden. Use h = 0.1
y - y - x + x2 - 1 = 0, y(0) = 1
Ecuacin diferencial
y = f(x, y) = x - x2 + y + 1, x0 = 0, y0 = 1, h = 0.1
Clculo de puntos
i=0:
K1 = hf(x0, y0) = 0.1 f(0, 1) = 0.1 (0 - 02 +1 + 1) = 0.2000;
K2 = hf(x0 + h/2, y0 + K1/2) = 0.1 f(0.05, 1.1) = 0.1 (0.05-0.052+1.1+1) = 0.2148
K3 = hf(x0 + h/2, y0 + K2/2) = 0.1 f(0.05, 1.1074) = 0.1 (0.05-0.052+1.1074+1) = 0.2155
K4 = hf(x0 + h, y0 + K3) = 0.1 f(0.1, 1.2155) = 0.1 (0.1-0.12+1.2155+1) = 0.2305
1
1
y1 = y0 + (K1 + 2K2 + 2K3 + K4 ) = 1 + [0.2 + 2(0.2148)+2(0.2155)+0.2305] = 1.2152
6
6
x1 = x0 + h = 0 + 0.1 = 0.1
Para comprobar comparamos con la solucin exacta: y(x) = x + x2 + ex
y(0.1) = 1.2152
El error de truncamiento en cada paso est en el orden de los cienmilsimos, coincidiendo
aproximadamente con E=O(h5). Los resultados tienen una precisin aceptable para la
solucin de problemas prcticos, por lo cual esta frmula es muy utilizada
287
9.1.12 Instrumentacin computacional de la frmula de Runge-Kutta
Una funcin en MATLAB para obtener puntos de la solucin de una EDO de primer orden
con una frmula equivalente a usar cinco trminos de la Serie de Taylor pero sin describir
las derivadas de f(x,y). La funcin requiere especificar f(x,y), el punto inicial (x0, y0) y los
parmetros h (paso o distancia entre puntos), y m (cantidad de puntos).
Ecuacin diferencial: y'(x) = f(x,y), y(x0) = y0, x0 x xn
K1 = hf(xi, yi)
K2 = hf(xi + h/2, yi + K1/2)
K3 = hf(xi + h/2, yi + K2/2)
K4 = hf(xi + h, yi + K3)
1
yi+1 = yi + (K1 + 2K2 + 2K3 + K4)
6
i = 0, 1, 2, ...
xi+1 = xi + h,
function [u,v]=rk4(f, x, y, h, m)
f=[f, '+0*x+0*y'];
f=inline(f);
u=[ ];
v=[ ];
for i=1:m
k1=h*f(x,y);
k2=h*f(x+h/2, y+k1/2);
k3=h*f(x+h/2, y+k2/2);
k4=h*f(x+h, y+k3);
y=y+1/6*(k1+2*k2+2*k3+k4);
x=x+h;
u(i)=x;
v(i)=y;
end
288
>> g=dsolve('Dy-y-x+x^2-1=0','y(0)=1','x')
g=
x+x^2+exp(x)
>> hold on;
>> grid on;
>> ezplot(g,[0,2]);
14
12
10
Solucin analtica
8
Solucin numrica
4
0
0
0.2
0.4
0.6
0.8
1
x
1.2
1.4
1.6
1.8
Solucin analtica
289
9.2
Los mtodos numricos desarrollados para una ecuacin diferencial ordinaria de primer
orden pueden extenderse directamente a sistemas de ecuaciones diferenciales de primer
orden.
Analizamos el caso de dos ecuaciones diferenciales ordinarias de primer orden con
condiciones en el inicio
F(x, y, z, y) = 0, y(x0) = y0
G(x, y, z, z) = 0, z(x0) = z0
Se deben escribir en la notacin adecuada para usar los mtodos numricos
y = f(x, y, z), y(x0) = y0
z = g(x, y, z), z(x0) = z0
9.2.1
La frmula de Heun o frmula mejorada de Euler para un sistema de dos EDOs de primer
orden con condiciones en el inicio, es una extensin directa de la frmula para una EDO:
Definicin:
290
Clculo de dos puntos de la solucin
i=0:
i=1:
291
9.2.2 Instrumentacin computacional de la frmula de Heun para dos E. D. O. de
primer orden
Una funcin para calcular puntos de la solucin de un sistema de dos ecuaciones
diferenciales ordinarias de primer orden con condiciones en el inicio con la frmula de Heun.
La funcin requiere f(x,y), g(x,y), los puntos iniciales (x0, y0), (x0, z0) y los parmetros h , m
(cantidad de puntos).
function [u,v,w]=heun2(f, g, x, y, z, h, m)
f=[f, '+0*x+0*y+0*z'];
%Previene que f no tenga alguna variable
f=inline(f);
%Se producira un error al evaluar f
g=[g, '+0*x+0*y+0*z'];
%Previene que g no tenga alguna variable
g=inline(g);
%Se producira un error al evaluar g
clear u v w;
for i=1:m
k1y=h*f(x,y,z);
k1z=h*g(x,y,z);
k2y=h*f(x+h,y+k1y,z+k1z);
k2z=h*g(x+h,y+k1y,z+k1z);
y=y+0.5*(k1y+k2y);
z=z+0.5*(k1z+k2z);
x=x+h;
u(i)=x;
v(i)=y;
w(i)=z;
end
Ejemplo. Con la frmula de Heun obtenga 20 puntos de la solucin del siguiente sistema de
ecuaciones diferenciales. Use h = 0.1
y x y z = 0, y(0) = 1
z + x y + z = 0, z(0) = 2
Ecuaciones diferenciales
y = f(x, y, z) = x + y + z, x0 = 0, y0 = 1
z = g(x, y, z) = -x + y - z, x0 = 0, z0 = 2
>> f=x + y + z;
>> g=-x + y - z;
>> [u, v, w]=heun2(f, g, 0, 1, 2, 0.1, 20);
>> plot(u, v, 'o'); hold on
>> plot(u, w, 'o');
292
>> [y, z]=dsolve('Dy-x-y-z=0,Dz+x-y+z=0','y(0)=1,z(0)=2','x')
Solucin analtica
y=
3/4*exp(2^(1/2)*x)-3/4*2^(1/2)*exp(-(1/2)*x)+3/4*2^(1/2)*exp(2^(1/2)*x)+3/4*exp(2^(1/2)*x)-1/2
z=
3/4*exp(2^(1/2)*x)+3/4*exp(-2^(1/2)*x)-x+1/2
>> ezplot(y, [0,2]);
>> ezplot(z, [0,2]);
293
Definicin:
294
9.2.4 Instrumentacin computacional de la frmula de Runge-Kutta para dos EDO de
primer orden
Una funcin para calcular puntos de la solucin de un sistema de dos ecuaciones
diferenciales ordinarias de primer orden con condiciones en el inicio con la frmula de
Runge-Kutta. La funcin requiere f(x,y), g(x,y), los puntos iniciales (x0, y0), (x0, z0) y los
parmetros h , m (cantidad de puntos).
function [u,v,w]=rk42(f, g, x, y, z, h, m)
f=[f, '+0*x+0*y+0*z'];
%Previene que f no tenga alguna variable
f=inline(f);
%Se producira un error al evaluar f
g=[g, '+0*x+0*y+0*z'];
%Previene que g no tenga alguna variable
g=inline(g);
%Se producira un error al evaluar g
clear u v w;
for i=1:m
k1y=h*f(x,y,z);
k1z=h*g(x,y,z);
k2y=h*f(x+h/2,y+k1y/2,z+k1z/2);
k2z=h*g(x+h/2,y+k1y/2,z+k1z/2);
k3y=h*f(x+h/2,y+k2y/2,z+k2z/2);
k3z=h*g(x+h/2,y+k2y/2,z+k2z/2);
k4y=h*f(x+h,y+k3y,z+k3z);
k4z=h*g(x+h,y+k3y,z+k3z);
y=y+1/6*(k1y+2*k2y+2*k3y+k4y);
z=z+1/6*(k1z+2*k2z+2*k3z+k4z);
x=x+h;
u(i)=x;
v(i)=y;
w(i)=z;
end
295
>> [y, z]=dsolve('Dy-x-y-z=0,Dz+x-y+z=0','y(0)=1,z(0)=2','x') Solucin analtica
y=
3/4*exp(2^(1/2)*x)-3/4*2^(1/2)*exp(-(1/2)*x)+3/4*2^(1/2)*exp(2^(1/2)*x)+3/4*exp(2^(1/2)*x)-1/2
z=
3/4*exp(2^(1/2)*x)+3/4*exp(-2^(1/2)*x)-x+1/2
>> ezplot(y, [0,2]);
>> ezplot(z, [0,2]);
Mediante la sustitucin
z = y
Se tiene
G(x, y, z, z) = 0
Se puede escribir como un sistema de dos ecuaciones diferenciales de primer orden
siguiendo la notacin anterior:
y = f(x, y, z) = z
z = g(x, y, z)
expresin que se obtiene despejando z de G
296
Con las condiciones iniciales
y(x0) = y0
z(x0) = y0 = z0
Es un sistema de dos ecuaciones diferenciales de primer orden con condiciones en el inicio.
Ejemplo. Calcule un punto de la solucin de la siguiente ecuacin diferencial de segundo
orden con condiciones en el inicio, con la frmula de Runge-Kutta de cuarto orden, h = 0.1
y y x + y + 1 = 0, y(0) = 1, y(0) = 2
Mediante la sustitucin z = y se obtiene
z z x + y + 1 = 0
Constituyen un sistema de dos ecuaciones diferenciales de primer orden que se puede
escribir
y = f(x,y,z) = z, y(0) = 1
z = g(x,y,z) = x y + z 1, z(0) = 2
Clculo de los puntos de la solucin
i=0:
x0 = 0, y0 = 1, z0 = 2
K1,y = hf(x0, y0, z0) = 0.1 f(0, 1, 2) = 0.1 (2) = 0.2
K1,z = hg(x0, y0, z0) = 0.1 g(0, 1, 2) = 0.1 (0 1 + 2 1) = 0
K2,y = hf(x0 + h/2, y0 + K1,y/2, z0+ K1,z/2)= 0.1f(0.05, 1.1, 2) = 0.1( 2) = 0.2
K2,z = hgx0 + h/2, y0 + K1,y/2, z0+ K1,z/2)= 0.1g(0.05, 1.1, 2) =0.1(0.05-1.1+2-1) = -0.005
K3,y = hf(x0 + h/2, y0 + K2,y/2, z0+ K2,z/2) = 0.1 f( 0.05, 1.1, 1.9975) = 0.1998
K3,z = hg(x0 + h/2, y0 + K2,y/2, z0+ K2,z/2) = 0.1 g( 0.05, 1.1, 1.9975) = -0.0052
K4,y = hf(x0 + h, y0 + K3,y, z0 + K3,z) = 0.1 f(0.1, 1.1998, 1.9948) = 0.1995
K4,z = hgx0 + h, y0 + K3,y, z0 + K3,z) = 0.1 g0.1, 1.1998, 1.9948) = -0.0105
1
(K1,y + 2K2,y + 2K3,y + K4,y) = 1 +
6
1
z1 = z0 + (K1,z + 2K2,z + 2K3,z + K4,z) = 2 +
6
x1 = x0 + h = 0 + 0.1 = 0.1
y1 = y0 +
1
[0.2+2(0.2)+2(0.1998)+0.1995] = 1.1998
6
1
[0+2(-0.005)+2(-0.0052)-0.0105]=1.9948
6
297
9.3.1
Instrumentacin computacional
298
9.4
Los mtodos numricos pueden aplicarse igualmente para calcular la solucin aproximada
de ecuaciones diferenciales ordinarias no lineales, para las cuales no es posible o pudiese
ser muy laborioso obtener la solucin analtica
Ejemplo. Obtenga numricamente la solucin de la ecuacin
y + yy - x + y - 3 = 0, y(0) = 1, y(0) = 2, 0x2
Mediante la sustitucin z = y, se obtiene:
z + yz - x + y - 3 = 0
299
9.5 Convergencia y estabilidad numrica
Los mtodos numricos que se utilizan para resolver una ecuacin diferencial, como se
muestra en los ejemplos anteriores, proporcionan una solucin discreta aproximada. Para
algunas ecuaciones diferenciales ordinarias, nicamente se tiene esta solucin discreta por
lo que es de inters verificar de alguna manera su existencia y convergencia.
La convergencia numrica puede hacerse variando el parmetro h del mtodo numrico
seleccionado y cuantificando la tendencia de algunos puntos de control de la solucin
calculada
Un indicio de la existencia de la solucin se puede observar en los resultados grficos y
numricos verificando que no contenga puntos singulares.
Adicionalmente, es importante verificar si la solucin obtenida es muy sensible a los errores
en la formulacin de la ecuacin diferencial o en la condicin inicial. Se puede detectar esta
situacin calculando numricamente el problema original y el problema con alguna
perturbacin. Si la solucin cambia significativamente puede interpretarse que el problema
no est bien planteado.
300
9.6
En esta seccin revisaremos los mtodos numricos para resolver ecuaciones diferenciales
ordinarias para las cuales se proporcionan condiciones iniciales en los bordes, siendo de
inters conocer la solucin en el interior de esta regin, como en el siguiente ejemplo:
y - y + y - 2ex - 3 = 0, y(0) = 1, y(1) = 5, 0 x 1
9.6.1
Una opcin para obtener la solucin numrica consiste en realizar varios intentos
suponiendo una condicin adicional en el inicio para poder usar los mtodos vistos
anteriormente. Para el ejemplo anterior probamos:
y - y + y - 2ex - 3 = 0, y(0) = 1, y(0) = 1, 0 x 1
Esta es ahora una ecuacin diferencial de segundo orden con condiciones en el inicio, la
cual se puede re-escribir como dos ecuaciones diferenciales de primer orden:
y = f(x,y,z) = z, y(0) = 1
z = g(x,y,z) = 2ex - y + z + 3, z(0) = 1
Aqu se puede aplicar alguno de los mtodos estudiados (Heun, Runge-Kutta, etc.). El
clculo debe continuar hasta llegar al otro extremo del intervalo de inters. Entonces se
debe comparar el resultado obtenido en el extremo derecho con el dato dado para ese
borde: y(1) = 5.
Esto permite corregir la condicin inicial supuesta y volver a calcular todo nuevamente. Este
procedimiento se puede repetir varias veces.
En la siguiente figura se observan tres intentos con el mtodo de Runge-Kutta de cuarto
orden probando con valores iniciales z(0) = y(0) = 1, 0.5, 0.8
Usamos la conocida funcin rk42 para resolver el ejemplo. Se calculan 20 puntos de la
solucin espaciados en una distancia 0.05
>> f='z';
>> g='2*exp(x) - y + z+3';
>> x=0;
>> y=1;
>> z=1;
>> [u,v] = rk42(f, g, x, y, z, 0.05, 20);
>> plot(u, v, 'o'), grid on, hold on
301
ya, yb
ya, yb
yn
y0
302
9.6.2
h0
es la ecuacin diferencial
303
Para describir el uso de esta ecuacin, supondremos que h=0.25. En la realidad debera
ser ms pequeo para que el error de truncamiento se reduzca. Con este valor de h el
problema se puede visualizar de la siguiente manera
i=1:
i=2:
i=3:
3.875 1.75 y2 =
0.7872
2.25
3.875 y3 7.9628
0
304
En el siguiente grfico se visualizan los resultados calculados
305
9.6.3 Instrumentacin computacional del mtodo de diferencias finitas para una EDO.
Dada la ecuacin diferencial de segundo orden con condiciones en los bordes:
F(x, y(x), y(x), y(x)) = 0, (x0, y0), (xn, yn)
La siguiente instrumentacin computacional del mtodo de diferencias finitas corresponde a
la solucin de la ecuacin de diferencias que resulta despus del reemplazo de las
derivadas y luego de ser escrita en forma estandarizada:
(P)yi-1 + (Q)yi + (R)yi+1 = (S), i = 1, 2, 3, . . . , n-1
En donde P, Q, R, S son expresiones que pueden contener xi y h, siendo x la variable
independiente. La funcin entrega los puntos calculados de la solucin x, y en los vectores
u, v.
Los puntos en los bordes: (x0, y0) y (xn, yn) son dados como datos, n es la cantidad de sub
intervalos espaciados a una distancia h.
306
Ejemplo. Use la funcin EDODIF para resolver el ejemplo anterior y - y + y - 2ex - 3 = 0,
y(0) = 1, y(1) = 5, con n=20 sub intervalos
Forma estndar de la ecuacin de diferencias para el ejemplo anterior, luego del reemplazo
de las derivadas:
(2+h)yi-1 + (2h2-4)yi + (2-h)yi+1 = 4h2 e x + 6h2, i=1, 2,..., n-1; y0=y(0)=1; yn=y(1)=5
i
P='2+h';
Q='2*h^2-4';
R='2-h';
S='4*h^2*exp(x)+6*h^2';
[u,v]=edodif(P,Q,R,S,0,1,1,5,20);
plot(u,v,'o');
y=dsolve('D2y-Dy+y-2*exp(x)-3=0','y(0)=1','y(1)=5','x');
hold on, ezplot(y,[0,1])
%Solucin analtica
307
9.6.4 Ecuaciones diferenciales ordinarias con condiciones en los bordes con
derivadas
Consideremos una variacin del problema anterior:
y - y + y - 2ex - 3 = 0, y(0) = 0.5, y(1) = 5, 0 x 1
Luego de sustituir las derivadas y simplificar se tiene la ecuacin de diferencias como antes:
(2+h)yi-1 + (2h2-4)yi + (2-h)yi+1 = 4h2 e x + 6h2, i = 1, 2, ..., n-1
i
308
Finalmente, el sistema se puede escribir:
4
0
0 y0 1.1875
3.875
2.25
1.75
0 y1 0.6960
3.875
=
0
2.25
1.75 y2 0.7872
3.875
0
2.25
3.875 y3 7.8475
0
9.6.5
309
Dato de la derivada en el borde izquierdo:
y y 1
y 0 = 1
de donde se obtiene y-1 = y1 - 2h(y 0)
2h
Ecuacin de diferencias aplicada en el borde izquierdo: i = 0
(P)(y-1) + (Q)y0 + (R)y1 = (S)
Reemplazando el dato de la derivada
(P)(y1 - 2hy0) + (Q)y0 + (R)y1 = (S)
Se obtiene la primera ecuacin:
(Q)y0 + (P + R)y1 = (S) + (P)2hy0
function [u,v]=edodifdi(P,Q,R,S,x0,dy0,xn,yn,n)
% Mtodo de Diferencias Finitas
% Solucin de una EDO con una derivada a la izquierda
% y una condicin constante a la derecha
h=(xn-x0)/n;
clear a b c d;
for i=1:n
% corresponde a las ecuaciones i = 0, 1, 2, ..., n-1
x=x0+h*(i-1);
a(i)=eval(P);
b(i)=eval(Q);
c(i)=eval(R);
d(i)=eval(S);
u(i)=x;
end
x=h;
c(1)=eval(P)+eval(R);
%correccin para la primera ecuacin
d(1)=eval(S)+eval(P)*2*h*dy0;
d(n)=d(n)-c(n)*yn;
%correccin para la ltima ecuacin
v=tridiagonal(a,b,c,d);
%solucion del sistema tridiagonal
Uso de la funcin EDODIFDI para resolver el ejemplo anterior, con n=20 subintervalos
y - y + y - 2ex - 3 = 0, y(0) = 0.5, y(1) = 5, 0 x 1
310
Forma estndar de la ecuacin de diferencias
(2+h)yi-1 + (2h2-4)yi + (2-h)yi+1 = 4h2 e x + 6h2
i
311
9.6.6
dt
1
=
dx b a
y'(x)
=
dy dy dt
1 dy
1
y'(t)
=
=
=
dx dt dx b a dt b a
y ''(x)
=
d2 y
d dy
d dy dt
d
1 dy dt
1
d2 y
1
=
(
=
)
(
)
=
(
)
=
=
y ''(t)
dt dx dx dt b a dt dx (b a)2 dt 2
dx 2 dx dx
(b a)2
312
9.7
Los mtodos de un paso como Runge-Kutta calculan cada punto de la solucin de una
E.D.O. a una distancia h utllizando la informacin del punto anterior. Los mtodos de pasos
mltiples son frmulas que utilizan varios puntos calculados y disponibles, para calcular la
solucin en un nuevo punto.
9.7.1
Estas frmulas se usan para calcular la solucin en un nuevo punto mediante un polinomio
de interpolacin colocado en varios puntos anteriores.
En el siguiente grfico se supondrn conocidos los puntos: . . . yi-3, yi-2, yi-1, yi mientras que
se desea calcular el siguiente punto yi+1
yi-3
y0
yi-2
yi-1
yi
yi+1
y1
x0 x1
Dada la E. D. O.
y(x) = dy/dx = f(x,y), y(x0) = y0
Reescribir como
dy = f(x,y) dx = y(x) dx
Integrando desde un punto arbitrario xi-k hasta el punto desconocido xi+1
xi+ 1
x ik
xi+ 1
dy =
y'(x)dx
x ik
yi + 1 =
yi k +
xi+ 1
x ik
y'(x)dx
x xi
S + n n+ 1 (n+ 1)
E =
(z),
s
h y
h
n + 1
313
Sustituyendo el polinomio y cambiando los lmites y el diferencial
xi+ 1
x ik
yi + 1 =
yi k + pn (x)dx =
yi k + h pn (s)ds
y=
yi k + h pn (s)ds
i+1
k
n =0, k =0 :
n = 2, k = 0 :
yi + 1 = yi + h [fi + sfi 1 +
= yi + h[fi +
Es la frmula de Euler
s(s 1) 2
fi 2 ]ds
2
fi 1 5 2
+
fi 2 ]
2
12
fi 1 = fi fi 1 ,
2 fi 2 = fi 1 fi 2 = fi fi 1 (fi 1 fi 2 )= fi 2fi 1 + fi 2
Se obtiene finalmente:
yi + 1 =+
yi
h
[23fi 16fi 1 + 5fi 2 ],
12
E=
O(h2 )
Observaciones importantes
1) Las frmulas de prediccin requieren tener puntos disponibles antes de su aplicacin.
Estos puntos deben ser calculados con mucha precisin. El mtodo adecuado para esto es
el mtodo de Runge-Kutta
2) La integracin extiende el polinomio de interpolacin hasta el punto i+1 que no pertenece
al dominio del polinomio. Por lo tanto se ha realizado una extrapolacin, que en general no
no produce resultados confiables.
314
9.7.2
xi+ 1
x ik
xi+ 1
dy =
y'(x)dx
x ik
yi + 1 =
yi k +
xi+ 1
x ik
y'(x)dx
x xi + 1
S + n n+ 1 (n+ 1)
E =
(z),
s
h y
h
n + 1
y=
yi k + h
i+1
0
k 1
pn (s)ds
Ejemplos:
n=
1, k =0 :
h
yi + 1 =yi + [fi + fi + 1 ]
2
315
9.7.3
La combinacin de una frmula de pasos mltiples de prediccin con una frmula de pasos
mltiples de correccin constituye un mtodo de Prediccin Correccin. Uno de estos
mtodos que ha sido estudiado se denomina mtodo de Adams Moulton. Se lo obtiene
con los parmetros n=3, k=0 en las frmulas establecidas anteriormente. Tambin se
conoce el error de truncamiento correspondiente.
Frmula de Prediccin de Adams-Moulton:
yi + 1 =+
yi
h
[55fi 59fi 1 + 37fi 2 + 9fi 3 ],
24
251
E = h5 y v (z)
720
h
[9fi + 1 + 19fi 5fi 1 + fi 2 ],
24
19 5 v
E=
h y (z)
720
yi+1
Ep
| yi + 1,c yi + 1 |
| yi + 1,p yi + 1 | + | yi + 1,c
yi+1,c
Ec
Ec
19 / 720
1
=
Suponiendo que los valores de las derivadas en los trminos del error son similares
De donde se puede establecer el siguiente criterio para la exactitud del mtodo:
| yi + 1,c yi + 1,p | 14 Ec
Suponer que se desea que el error en el resultado final de yi+1 caculado con la frmula de
correccin, no exceda a Ec<10-m, (m: cantidad de decimales exactos), entonces deber
cumplirse:
| yi + 1,c yi + 1,p |< 14x10 m
Si no se cumple, debe entenderse que el valor de h tendra que reducirse para mejorar la
exactitud.
316
9.8
1 x t2
=
y(x) e x (
317
6. Dada la siguiente ecuacin diferencial
2y(x) 3y(x) + 2x = 5, y(1) = 2, y(3) = 4
a) Normalice la ecuacin diferencial en el intervalo [0, 1]
b) Use el mtodo de diferencias finitas y obtenga la solucin,
normalizado.
h = 0.2 en el intervalo
x(0)=0.75, x'(0)=0
318
11. Un problema importante en ingeniera es la deflexin de una viga de seccin transversal
uniforme sujeta a una carga distribuida y colocada con sus extremos apoyados de forma tal
que no pueden deflectarse, como se muestra en la figura:
qx
d 2w
S
( x L)
w+
=
2
EI
2 EI
dx
Y ''+
k
f(t)
Y=
m
m
Con el mtodo de diferencias finitas, h=0.1, encuentre Y(t) entre: Y(0) = -1 y Y(1) = 3
13. Al integrar una ecuacin diferencial de primer orden y(x) = f(x,y) entre xi-1 y xi+1
xi +1
xi +1
x i 1
(s + 1)s 2
fi2
2
x xi
.
h
Obtenga una frmula aproximada con la cual pueda obtener puntos de la solucin.
b) Con la frmula calcule y(0.08) de la solucin de la ecuacin (1 + 2x) y + 0.9 y = 0,
dados la condicin inicial (0, 1) y dos puntos de la solucin: (0.02,0.9825), (0.04, 0.9660).
Use h=0.02
319
10
F(x, y, u,
u u 2 u 2 u 2 u
, ,
,
,
)=0
x y x 2 y 2 xy
Una forma de clasificar estas ecuaciones es por su tipo: parablicas, elpticas e hiperblicas,
En forma similar a las ecuaciones diferenciales ordinarias, el mtodo numrico que
usaremos consiste en sustituir las derivadas por aproximaciones de diferencias finitas. El
objetivo es obtener una ecuacin denominada ecuacin de diferencias que pueda resolverse
por mtodos algebraicos. Esta sustitucin discretiza el dominio con espaciamiento que debe
elegirse.
(8.1)
(8.2)
(8.3)
(8.4)
(8.5)
(8.6)
(8.7)
320
10.2 Ecuaciones diferenciales parciales de tipo parablico
Estas ecuaciones se caracterizan porque en su dominio una de las variables no est
delimitada. Para aplicar el mtodo de diferencias finitas usaremos un ejemplo bsico para
posteriormente interpretar los resultados obtenidos.
Ejemplo. Resolver la ecuacin de difusin en una dimensin con los datos suministrados
u(x,t):
2u
u
=k
t
x 2
Tb
L
To
Ta, Tb son valores de temperatura de las fuentes de calor aplicadas en los extremos. En
este primer ejemplo suponer que son valores constantes. To es la temperatura inicial y L es
la longitud de la barra.
Estas condiciones se pueden expresar de manera simblica en un sistema de coordenadas
u(0, t) = Ta, t 0
u(L, t) = Tb, t 0
u(x, 0) = To, 0 < x < L
Para aplicar el mtodo de diferencias finitas, debe discretizarse el dominio de u mediante
una malla con puntos en un plano en el cual el eje horizontal representa la posicin xi
mientras que el eje vertical representa el tiempo tj.
u=u(x,t), 0 x L, t 0
Para el ejemplo supondremos los siguientes datos, en las unidades que correspondan
Ta = 60
Tb = 40
To = 25
k=4
L=1
321
Decidimos adems, para simplificar la aplicacin del mtodo que x = 0.25, t = 0.1
Con esta informacin se define el dominio de ui,j. En la malla se representan los datos en
los bordes y los puntos interiores que cuyo valor debe calcularse:
10.2.1
Para el primer intento elegimos las frmulas (8.6) y (8.2) para sustituir las derivadas de la
ecuacin diferencial:
ui + 1,j 2u i,j +ui 1,j
u
u i,j
2u
u
+ O(x)2 = k i,j+ 1
+ O(t)
=k
2
2
t
t
x
(x)
Se obtiene la ecuacin de diferencias
ui + 1,j 2u i,j +ui 1,j
u i,j
u
= k i,j+ 1
, cuyo error de truncamiento es T = O(x)2 + O(t).
t
(x)2
Si x, t 0 T 0 y la ecuacin de diferencias tiende a la ecuacin diferencial parcial
Para que esta sustitucin sea consistente, todos los trminos de la ecuacin deben tener un
error de truncamiento de orden similar. Esto significa que t debe ser menor que x,
aproximadamente en un orden de magnitud.
Es conveniente analizar cuales puntos estn incluidos en la ecuacin de diferencias. Para
esto consideramos un segmento de la malla y marcamos los puntos de la ecuacin.
322
Los puntos que estn incluidos en la ecuacin de diferencia conforman un tringulo. Este
tringulo puede colocarse en cualquier lugar de la malla asignando a i, j los valores
apropiados.
Por ejemplo, si i=1, j=0, la ecuacin de diferencias se ubica en el extremo inferior izquierdo
de la malla. Los puntos en color rojo son los datos conocidos. Los puntos en amarillo son los
puntos que deben calcularse.
Se puede observar que solo hay un punto desconocido en la ecuacin. Por lo tanto, esta
ecuacin de diferencias proporciona un mtodo explcito de clculo. Esto significa que
cada punto de la solucin puede obtenerse en forma individual y directa cada vez que se
aplica la ecuacin.
Despejamos el punto desconocido ui,j+1
=
ui,j+ 1
t
(ui 1,j 2ui,j + ui + 1,j ) + ui,j
k(x)2
Definiendo =
t
k(x)2
ui,j+ 1 =
(ui 1,j 2ui,j + ui + 1,j ) + ui,j
La forma final de la ecuacin de diferencias se obtiene sustituyendo los datos del ejemplo:
t
0.1
==
=
0.4
2
2
k(x)
4(0.25)
323
i = 2:
i = 3:
j = 1, i = 1:
i = 2:
i = 3:
En el siguiente grfico se anotan los resultados para registrar el progreso del clculo
Para que la precisin de la solucin sea aceptable, los incrementos x y t deberan ser
mucho ms pequeos, pero esto hara que la cantidad de clculos involucrados sea muy
grande para hacerlo manualmente.
Ei, j = e
1 xi +t j
Ei, j+ 1 e 1xi + (t j + t)
=
= e t
1 xi +t j
Ei,j
e
324
Ecuacin de diferencias del mtodo explcito:
ui,j+ 1 =
(ui1,j 2ui,j + ui+ 1,j ) + ui,j ,
t
k(x)2
1 xi + (t j + t)
Dividiendo por e
1 (x + x) +t j
i
=
(e
2e
1 xi +t j
+e
1 (xi x) +t j
)+e
1 xi +t j
k xi +t j
e t = (e
1x
2+e
1i ( x)
)+1
e t = (2 cos(x) 2) + 1
La estabilidad est condicionada a: | e t | 1
| (2 cos(x) 2) + 1| 1
Sustituyendo los valores extremos de cos(x) = 1, cos(x) = 1
Se obtiene la restriccin para que este mtodo sea estable:
1
2
t
1
k(x)2 2
325
10.2.3 Instrumentacin computacional del mtodo de diferencias finitas para una
E.D.P. de tipo parablico
El siguiente programa es una instrumentacin en MATLAB para resolver el ejemplo anterior
y es una referencia para aplicarlo a problemas similares. Los resultados obtenidos se
muestran grficamente.
Para la generalizacin es conveniente expresar la ecuacin de diferencias en forma
estndar
ui, j+1 = (P) ui-1, j + (Q)ui, j + (R)ui+1,j, i = 1, 2, 3, . . . , n-1; j = 1, 2, 3, . . .
En donde P, Q, R dependen de los datos de la ecuacin que se desea resolver.
Para el ejemplo propuesto se tiene: ui,j+ 1 = ui1,j + (1 2 )ui,j + ui+ 1,j ,
% Ecuacin de diferencias estandarizada
% U(i,j+1)=(P)U(i-1,j) + (Q)U(i,j) + (R)U(i-1,j)
% P,Q,R son constantes evaluadas con los datos de la EDP
clf;
m=11;
% Nmero de puntos en x
n=100;
% Nmero de niveles en t
Ta=60; Tb=40;
% Condiciones en los bordes
To=25;
% Condicin en el inicio
dx=0.1; dt=0.01;
% incrementos
L=1;
% longitud
k=4;
% dato especificado
clear x U;
U(1)=Ta;
% Asignacin inicial
U(m)=Tb;
for i=2:m-1
U(i)=To;
end
lambda = dt/(k*dx^2);
P=lambda;
Q=1-2*lambda;
R=lambda;
hold on;
title('Curvas de distribucin trmica');
xlabel('X (distancia)');
ylabel('U (temperatura)');
x=0:dx:L;
% Coordenadas para el grfico
plot(x,U,'r'); grid on;
% Distribucin inicial
326
for j=1:n
U= edpdif(P,Q,R,U,m);
if mod(j,5)==0
plot(x,U,'r');
pause
end
end
function u=edpdif(P,Q,R,U,m)
% Solucin U(x,t) de una EDP con condiciones constantes en los bordes
% Mtodo explcito de diferencias finitas
u(1)=U(1);
for i=2:m-1
u(i)=P*U(i-1)+Q*U(i)+R*U(i+1);
end
u(m)=U(m);
Curvas de distribucin trmica para el ejemplo. La distribucin tiende a una forma estable.
La ejecucin controlada con el comando pause permite visualizar el progreso de los
clculos
Con esta instrumentacin se puede verificar que al incrementar t a un valor tal que
> 0.5 , ya no se cumple la condicin de estabilidad y el mtodo se hace inestable. Los
resultados que se obtienen son incoherentes.
327
10.2.4 Un esquema de diferencias finitas implcito
En un segundo intento elegimos las aproximaciones (8.6) y (8.3) para sustituir las derivadas
de la ecuacin diferencial
ui + 1,j 2u i,j +ui 1,j
u u i,j1
2u
u
+ O(x)2 = k i,j
+ O(t)
=k
2
2
t
t
x
(x)
Se obtiene la ecuacin de diferencias
ui + 1,j 2u i,j +ui 1,j
u u i,j1
= k i,j
2
t
(x)
Su error de truncamiento es igualmente T = O(x)2 + O(t), debiendo cumplirse que t < x
Marcamos los puntos incluidos en esta ecuacin de diferencias.
=k
ui,j u i,j1
t
t
(ui + 1, j 2ui, j + ui 1, j ) = ui,j ui,j 1
k(x)2
328
t
, la ecuacin se puede escribir
k(x)2
Definiendo =
0.1
= 0.4 , se obtiene la forma final
4(0.25)2
2,1 25
0
0.4 1.8 u3,1 41
Cuya solucin es
u1,1 33.0287
u2,1 = 26.1290
u3,1 28.5842
magnitud de =
deberan ser suficientemente pequeos para que la ecuacin de diferencias sea consistente
con la ecuacin original.
329
10.2.5
Se define una funcin EDPDIFPI que genera y resuelve el sistema de ecuaciones lineales
en cada nivel. El sistema de ecuaciones lineales resultante tiene forma tridiagonal, y por lo
tanto se puede usar un algoritmo especfico muy eficiente, la funcin tridiagonal cuya
instrumentacin fue realizada en captulos anteriores.
% Mtodo de Diferencias Finitas implcito para una EDP
% Ecuacin de diferencias estandarizada
% (P)ui-1,j + (Q)ui,j + (R)ui+1,j = -ui,j-1
% P,Q,R son constantes evaluadas con los datos de la EDP
clf;
m=11;
% Nmero de puntos en x
n=100;
% Nmero de niveles en t
Ta=60; Tb=40;
% Condiciones en los bordes
To=25;
% Condicin en el inicio
dx=0.1; dt=0.01;
% incrementos
L=1;
% longitud
k=4;
% dato especificado
clear x u U;
U(1)=Ta;
% Asignacin inicial
U(m)=Tb;
for i=2:m-1
U(i)=To;
end
lambda=dt/(k*dx^2);
P=lambda;
Q=-1-2*lambda;
R=lambda;
hold on;
title('Curvas de distribucin trmica ');
xlabel('X (distancia)');
ylabel('U (temperatura)');
x=0:dx:L;
% Coordenadas para el grafico
plot(x,U,'r');
% Distribucin inicial
330
for j=1:n
U =edpdifpi(P,Q,R,U,m);
if mod(j,5)==0
plot(x,U,'r');
% Para graficar curvas cada 5 niveles de t
pause
end
end
function U = edpdifpi(P, Q, R, U, m)
% Solucin de una EDP con condiciones constantes en los bordes
% Mtodo de Diferencias Finitas Implcito
% Generacin del sistema tridiagonal
clear a b c d;
for i=1:m-2
a(i)=P;
b(i)=Q;
c(i)=R;
d(i)=-1*U(i+1);
end
d(1)=d(1)-a(1)*U(1);
d(m-2)=d(m-2)-c(m-2)*U(m);
u=tridiagonal (a,b,c,d);
U=[U(1) u U(m)];
% Incluir datos en los extremos
Curvas de distribucin trmica para el ejemplo. La distribucin tiende a una forma estable.
331
10.2.6 Prctica computacional
Probar los mtodos explcito e implcito instrumentados computacionalmente para resolver
el ejemplo anterior cambiando x y t para analizar la convergencia de los esquemas de
diferencias finitas.
Realizar pruebas para verificar la condicin de estabilidad condicionada para el mtodo
explcito e incondicional para el mtodo implcito. Probar con = 0.4, 0.5, 0.6
2u
u
, 0 x 1, t 0
=k
2
t
x
u(0,t)
= 5 ,
t0
x
u(1, t) = 20 + 10 sen(t), t 0
u(x, 0) = 40 x,
0<x<1
x = 0.25, t = 0.1, k = 4
Para aplicar el mtodo de diferencias finitas, debe discretizarse el dominio de u
u(xi, tj) = ui,j ; i = 0, 1, ..., n; j = 0, 1, 2, ....
La red con los datos incluidos en los bordes inferior y derecho:
332
Usamos el esquema de diferencias finitas implcito visto anteriormente:
ui + 1,j 2u i,j +ui 1,j
(x)
=k
ui,j u i,j1
t
t
(ui + 1, j 2ui, j + ui 1, j ) = ui,j ui,j 1
k(x)2
Definiendo =
t
, la ecuacin se puede escribir
k(x)2
t
k(x)
0.1
= 0.4 ,
4(0.25)2
(1)
(2)
(3)
(4)
Se tiene un sistema de cuatro ecuaciones y cinco puntos desconocidos: u-1,1, u0,1, u1,1, u2,1,
u3,1 incluyendo el punto ficticio u-1,1
El dato adicional conocido:
u(0,t)
= 5 es aproximado ahora mediante una frmula de
x
u1,j u1,j
2(x)
= 5,
j = 1, 2, 3, . . . , E = O(x)2
De donde se obtiene u-1,j = u1,j + 5(2x) para sustituir en la ecuacin (1) anterior:
j = 1, i = 0: 0.4u-1,1 1.8u0,1 + 0.4u1,1 = 0
0.4[u1,j + 5(2x)] -1.8u0,1 + 0.4u1,1 = 0 -1.8u0,1 + 0.8u1,1 = -1
333
En notacin matricial:
0
0 u0,1 1
1.8 0.8
=
0
0.4 1.8 0.4 u2,1 20
0
0.4 1.8 u3,1 38.4
0
El sistema de ecuaciones lineales resultante tiene forma tridiagonal, y por lo tanto se puede
usar un algoritmo especfico muy eficiente para resolverlo.
10.2.8 Instrumentacin computacional para una E.D.P. con derivadas en los bordes
La siguiente instrumentacin del mtodo de diferencias finitas implcito permite resolver
problemas con una derivada en el borde izquierdo. Instrumentaciones similares se pueden
desarrollar si la derivada est a la derecha o en ambos bordes.
Dada la ecuacin diferencial parcial parablica con condiciones en los bordes:
u 2 u
u(0,t)
u=u(x,t), F(t, x, u,
, 2 ) = 0, u(x,t0)=T0,
= 0, u(1,t)=Tb
t x
x
Luego de sustituir las derivadas para el mtodo implcito se escribe la ecuacin de
diferencias estandarizada:
(P)ui-1,j + (Q)ui,j + (R)ui+1,j = -ui,j-1,
i = 1, 2, 3, . . . , m-1
u1,j u1,j
2(x)
= 0
334
Ejemplo. Resolver la siguiente ecuacin diferencial parcial
u(x,t):
2u
u
, 0 x 1, t 0
=k
t
x 2
u(0,t)
= 5 ,
t0
x
u(1, t) = 60, t 0
u(x, 0) = 40, 0 < x < 1
x = 0.1, t = 0.1, k = 4
% Mtodo de Diferencias Finitas implcito para una EDP
% A la izquierda una derivada
% Condicin inicial y en el borde derecho constantes
% Ecuacin de diferencias estandarizada
% (P)ui-1,j + (Q)ui,j + (R)ui+1,j = -ui,j-1
% P,Q,R son evaluadas con los datos de la EDP
clf;
m=11;
% Nmero de puntos en x
n=50;
% Nmero de niveles en t
der0=-5;
% Derivada en el borde izquierdo
dx=0.1;
% Incrementos
dt=0.1;
L=1;
% longitud
k=4;
% dato especificado
clear x U;
T0=40;
% Condicin inicial
Tb=60;
% Condicin en el borde derecho
for i=1:m-1
U(i)=T0;
% Condicin en el inicio
end
U(m) = Tb;
% Borde derecho
lambda=dt/(k*dx^2);
P=lambda;
Q=-1-2*lambda;
R=lambda;
hold on;
title('Curvas de distribucin trmica');
xlabel('X (distancia)');
ylabel('U (temperatura)');
x=0:dx:L;
% Coordenadas para el grafico
t=0;
for j=1:n
U = edpdifpid (P, Q, R, U, der0, dx, m);
plot(x,U,'r');
pause;
end
335
function U = edpdifpid (P, Q, R, U, der0, dx, m)
% Mtodo de Diferencias Finitas Implicito
% EDP con una derivada a la izquierda
% Generacin del sistema tridiagonal
clear a b c d;
for i=1:m-1
a(i)=P;
b(i)=Q;
c(i)=R;
d(i)=-1*U(i);
end
c(1)=P+R;
d(1)=d(1)+2*dx*P*der0;
d(m-1)=d(m-1)-c(m-1)*U(m);
u=tridiagonal(a,b,c,d);
U=[ u U(m)];
% Incluir dato en el extremo
U (temperatura)
60
55
50
45
40
0.1
0.2
0.3
0.4
0.5
0.6
X (distancia)
0.7
0.8
0.9
336
10.2.9 Mtodo de diferencias finitas para EDP no lineales
Si la ecuacin tiene trminos no lineales, se puede adaptar un mtodo de diferencias finitas
explcito como una primera aproximacin.
Ejemplo. Formule un esquema de diferencias finitas para resolver la siguiente ecuacin
diferencial parcial no lineal del campo de la acstica
u(x,t):
u
u
2u
=
u
k 2
t
x
x
Sustituyendo en la EDP
ui,j+ 1 ui,j
t
Se obtiene un esquema explcito de diferencias finitas que permitir calcular cada punto en
la malla que represente al dominio de la ecuacin diferencial siempre que estn previamente
definidas las condiciones en los bordes as como los parmetros k, t, x . Tambin
debera analizarse la estabilidad del mtodo.
ui,j+ 1 =t(ui,j
(x)2
) + ui,j
337
10.3 Ecuaciones diferenciales parciales de tipo elptico
Este tipo de ecuaciones se caracteriza porque su dominio es una regin cerrada. Para
aplicar el mtodo de diferencias finitas usaremos un ejemplo particular para posteriormente
interpretar los resultados obtenidos.
Ejemplo. Resolver la ecuacin de difusin en dos dimensiones:
2u 2u
u(x,y):
+
=
0
x 2 y 2
Suponer que u es una funcin que depende de x, y, en donde u representa valores de
temperatura, x, y representan posicin.
Esta ecuacin se puede asociar al flujo de calor en una placa muy delgada aislada
trmicamente en sus caras superior e inferior y sometida en los bordes a alguna condicin.
La solucin representa la distribucin final de temperaturas en la placa en cada punto (x, y)
Ta, Tb, Tc, Td son valores de temperatura, suponer constantes, de alguna fuente de calor
aplicada en cada borde de la placa. L1, L2 son las dimensiones de la placa.
Estas condiciones se pueden expresar simblicamente en un sistema de coordenadas X-Y:
u(0, y) = Ta,
0 < y < L2
u(L1, y) = Tb,
0 < y < L2
u(x, 0) = Tc,
0 < x < L1
u(x, L2) = Td,
0 < x < L1
Para aplicar el mtodo de diferencias finitas, debe discretizarse el dominio de u mediante
una malla con puntos u(xi, yj), en la cual xi , yj representan coordenadas
u=u(x,y), 0 x L1, 0 y L2
338
Con esta informacin describimos el dominio de u mediante una malla con puntos en dos
dimensiones en la cual el eje horizontal representa la posicin xi mientras que el eje vertical
representa yj. En esta malla se representan los datos en los bordes y los puntos interiores
que deben ser calculados
10.3.1
Elegimos las siguientes aproximaciones de diferencias finitas para sustituir las derivadas de
la ecuacin diferencial
2ui,j ui + 1,j 2u i,j +ui 1,j
=
+ O(x)2
2
2
x
(x)
2ui,j ui,j+ 1 2u i,j +ui,j1
=
+ O(y)2
y 2
(y)2
ui + 1,j 2u i,j +ui 1,j
(x)
+ O(x)2 +
+ O(y)2 = 0
=0
339
Es conveniente analizar los puntos incluidos en la ecuacin de diferencias. Para esto
consideramos un segmento de la malla y marcamos los puntos de la ecuacin.
Los puntos marcados conforman un rombo. Este rombo describe los puntos incluidos en la
ecuacin de diferencias y puede colocarse en cualquier lugar de la malla asignando a i, j los
valores apropiados.
Por ejemplo, si i=1, j=1, la ecuacin de
diferencias se aplica al extremo inferior
izquierdo de la malla.
Se puede observar que la ecuacin de
diferencias contiene tres puntos
desconocidos
=0
340
-4u1,1 + u2,1
+ u1,2
= -110
u1,1 - 4u2,1 + u3,1
+ u2,2
= -50
u2,1 - 4u3,1
+ u3,2 = -90
u1,1
u2,1
- 4u1,2 + u2,2
= -140
+ u1,2 - 4u2,2 + u3,2 = -80
u3,1
+ u2,2 -4u3,2 = -120
1 4 1 0
1 0 u2,2 50
0
1 4 0
0
1 u3,2 90
=
0 4 1 0 u1,2 140
1 0
0
1 0
1 4 1 u2,2 80
0
1 0
1 4 u3,2 120
0
Cuya solucin es
u1,1 57.9917
u
2,1 56.1491
u 3,1 51.3251
u1,2 65.8178
u2,2 65.2795
u3,2 59.1511
Se ha usado un mtodo directo para resolver el sistema cuya forma es diagonal dominante,
por lo que tambin se podran usar mtodos iterativos dado que la convergencia es segura.
341
10.3.2
; j = 1, 2, 3,
Frmula iterativa
(k + 1)
ui,j
=
1 (k)
(k)
(k)
(ui 1,j + ui(k)
+ 1,j + ui,j 1 + ui,j + 1 ) , k = 0, 1, 2, ...
4
(iteraciones)
342
k=0;
%conteo de iteraciones
conv=0;
%seal de convergencia
while k<miter & conv==0
k=k+1;
t=u;
for i=2:n+1
for j=2:m+1
u(i,j)=0.25*(u(i-1,j)+u(i+1,j)+u(i,j+1)+u(i,j-1));
end
end
if norm((u-t),inf)/norm(u,inf)<e
conv=1;
end
end
if conv==1
disp(u);
% Muestra la solucin final en la malla
disp(k);
% Cantidad de iteraciones realizadas
[x,y]=meshgrid(1:m+2, 1:n+2);
% Malla para el grafico en tres dimensiones
surf(x,y,u)
% Grafico en tres dimensiones
colormap copper
% Color
shading flat
% Suavizado
else
disp('No converge');
end
60.0000
55.0555
53.1504
52.3140
51.9277
51.7775
51.7911
51.9651
52.3661
53.2029
55.0911
60.0000
60.0000
57.1094
55.2931
54.2564
53.7079
53.4827
53.5081
53.7780
54.3539
55.3914
57.1760
60.0000
60.0000
58.1502
56.7522
55.8324
55.3016
55.0770
55.1116
55.3973
55.9657
56.8866
58.2412
60.0000
Error relativo:
Cantidad de iteraciones:
60.0000
58.8179
57.8553
57.1733
56.7603
56.5863
56.6271
56.8731
57.3301
58.0135
58.9249
60.0000
60.0000
59.3552
58.8149
58.4166
58.1708
58.0739
58.1173
58.2907
58.5835
58.9831
59.4689
60.0000
60.0000
59.8800
59.7729
59.6826
59.6256
59.6166
59.6589
59.7427
59.8454
59.9370
59.9908
60.0000
60.0000
60.4789
60.8462
61.0788
61.2131
61.2895
61.3274
61.3179
61.2245
60.9930
60.5780
60.0000
60.0000
61.2649
62.1676
62.7133
63.0120
63.1550
63.1856
63.0965
62.8308
62.2860
61.3448
60.0000
60.0000
62.4714
63.9325
64.7007
65.0824
65.2488
65.2700
65.1409
64.7821
64.0145
62.5267
60.0000
0.1%
41
60.0000
64.7253
66.4446
67.1404
67.4393
67.5585
67.5691
67.4687
67.1813
66.4858
64.7531
60.0000
60.0000
70.0000
70.0000
70.0000
70.0000
70.0000
70.0000
70.0000
70.0000
70.0000
70.0000
60.0000
343
70
65
60
55
50
15
15
10
10
5
5
0
344
Ejemplo. Use el mtodo de diferencias finitas para resolver la ecuacin diferencial parcial
de tipo elptico:
2u 2u
+
+ cos
x 2 y 2
0, 0 < x <
( x + y ) + cos ( x y ) =
2, 0< y < 4
u ( 0, y ) = cos ( y ) , u ( 2, y ) = 0 , 0 y 4
cos ( x )
u ( x, 0 ) = cos ( x ) , u ( x, 4 ) =
, 0 x 2
6
Utilice como tamao de paso x =
0.6124
y =
12
0.3536
y3
0.866
y2
y3
y2
U2
U3
U4
3/12
0.9659
y1
U1
2/12
0.5
0.866
y0
0
x0
/6
x1
2/6
x2
3/6
x3
+ cos(xi + y j ) + cos(xi y j ) = 0,
E = O(x)2 + O(y)2
345
Por simplicidad se usar la notacin incluida en los puntos de la malla en el grfico
i=1, j=1:
0.6854 0.0685
0
0.2742
0.3350
0
0.1553
0.2742 0.0685 0.6854
U =
0.6854 0.2742 0.0685
0.3076
0
0
0.2742
0.2742 0.6854
0.1133
0.8350
0.7445
U =
0.8840
0.6128
346
10.4 Ecuaciones diferenciales parciales de tipo hiperblico
En este tipo de ecuaciones el dominio est abierto en uno de los bordes Para aplicar el
mtodo de diferencias finitas usaremos un ejemplo particular para posteriormente interpretar
los resultados obtenidos.
Ejemplo. Ecuacin de la onda en una dimensin: u(x, t):
2
2u
2 u
=
c
t 2
x 2
+ O(x)2 = c2
+ O(t)2
347
Se obtiene la ecuacin de diferencias:
ui,j+ 1 2u i,j +ui,j1
(t)
= c2
c2 (t)2
1, la solucin calculada con este mtodo
(x)2
i = 1, 2, 3, 4;
j = 1, 2, 3, . . .
(1)
Se puede notar observando el grfico que para obtener cada nuevo punto de la solucin se
requieren conocer dos niveles previos de la solucin
Describimos el dominio de u mediante una malla con puntos en dos dimensiones en la cual
el eje horizontal representa la posicin xi mientras que el eje vertical representa tiempo tj.
En esta malla se representan los datos en los bordes y los puntos interiores que deben ser
calculados
348
u(x,0)
=0
t
(2)
Esta ecuacin incluye el punto ui,-1 entonces debe evaluarse la ecuacin (1) con t=0:
j = 0:
ui,1 =
1
(ui + 1,0 + ui 1,0 ) , i = 1, 2, 3, 4
2
(3)
La ecuacin (3) debe aplicarse nicamente cuando t = 0, para encontrar ui,j en el nivel j=1
1
1
0.1
j = 0, i = 1: u1,1 =(u2,0 + u0,0 ) =(0.2 + 0) =
2
2
1
1
i = 2: u2,1 = (u3,0 + u1,0 ) = (0.2 + (0.1)) =0.15
2
2
1
1
i = 3: u3,1 = (u4,0 + u2,0 ) = (0.1 + (0.2)) =0.15
2
2
1
1
i = 4: u4,1 = (u5,0 + u3,0 ) = (0 + (0.2)) =0.1
2
2
Los valores calculados son colocados en la malla:
349
Ahora se tienen dos niveles con puntos conocidos. A partir de aqu se debe usar nicamente
la ecuacin (1) como un esquema explcito para calcular directamente cada punto en los
siguientes niveles j, cada nivel a una distancia t = 0.1
j = 2,
j = 3,
j = 1, 2, 3, . . .
i = 1:
i = 2:
i = 3:
i = 4:
i = 1:
i = 2:
i = 3:
i = 4:
i = 1:
i = 2:
i = 3:
i = 4:
etc.
ui,1 =
1
(ui + 1,0 + ui 1,0 ) ,
2
ui,j+ 1 = ui+ 1,j + ui1,j ui,j1 i = 1, 2, 3, . . . , m-1 (Para los siguientes niveles j = 2, 3, 4, ...)
El esquema de clculo utilizado es explcito. Cada punto es calculado directamente
mediante funciones que entregan la solucin calculada y un programa que contiene los
datos y muestra grficamente la solucin. Se puede visualizar el movimiento de la cuerda
incluyendo en el programa los comandos pause y clf. En la ejecucin presione alguna
tecla para visualizar el movimiento.
350
351
axis([0,1,-0.5,0.5]);
pause;
clf;
U0=U1;
U1=Uj;
end
function U1= edpdifh1 (U0,m)
% Solucin U(x,t) de una EDP hiperbolica con parametro igual a 1
% Clculo del primer nivel de la solucion
U1(1)=U0(1);
for i=2:m-1
U1(i)=0.5*(U0(i-1)+U0(i+1));
end
U1(m)=U0(m);
function Uj= edpdifhj (U0,U1,m)
% Solucin U(x,t) de una EDP hiperbolica con parametro igual a 1
% Clculo de los siguientes niveles de la solucion
Uj(1)=U1(1);
for i=2:m-1
Uj(i)=U1(i+1)+U1(i-1)-U0(i);
end
Uj(m)=U1(m);
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
352
En la siguiente prueba el desplazamiento inicial es asimtrico. En el punto x=0.25, se tensa
0.25 hacia abajo y se suelta la cuerda. Las otras condiciones se mantienen igual.
Ecuacin de la cuerda en el instante inicial:
0 < x 0.25
x,
u(x, 0) = 1
3 (x 1), 0.25 < x < 1
for i=2:m-1
x=x+dx;
if x<L/4;
U0(i)=-x;
else
U0(i)=1/3*(x-1);
end
end
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
353
10.5 Ejercicios con ecuaciones diferenciales parciales
1. Dada la siguiente ecuacin diferencial parcial de tipo parablico
2u
u
=
C =
, u u(x, t), 0 < x < 2, t > 0 , con las condiciones
2
x
t
1) u(x,0)=25 sen(x), 0<x<2
2) u(0,t)=10 t, t0
3)
u(2, t)
= 5, t 0
x
t
1
=
2
2
C(x)
2. Con el criterio de Von Newman, analice la estabilidad del mtodo implcito de diferencias
finitas para resolver la EDP de tipo parablico. Demuestre que es incondicionalmente
estable.
2u
u
=C
t
x 2
c=
t
C(x)2
2u 2u
+
=0
x 2 y 2
u(0, y) = 10,
u(2, y) = 20 sen (y),
uy (x, 0) = 20,
u(x, 3) = 25x,
0y3
0y3
0x2
0x2
354
4. La siguiente ecuacin diferencial parcial de tipo hiperblico describe la posicin u de
cierta cuerda en cada punto x, en cada instante t
2u
2u
=
(1
+
2x)
, 0<x<1, t>0
t 2
x 2
Use las siguientes condiciones iniciales y de borde:
u(x, 0) = 0; 0x1
u(x,0)
= x(1 x)
t
Use x = t = 0.25, y encuentre la solucin cuando t = 1
2u 2u
x 2 + y 2 = x + y , 0 < x < 1 , 0 < y < 1
y2
y ) 0 , u (1,=
y)
, 0 y 1
u ( 0,=
6
1 3
x , 0 x 1
, 0 ) u ( x=
,1)
u ( x=
6
355
BIBLIOGRAFA