Professional Documents
Culture Documents
Texto digital
ISBN 978-9942-922-01-4
Versin 1.3 - 2014
Prefacio
Esta obra es una contribucin dedicada a los estudiantes que toman un curso de Anlisis
Numrico o Mtodos Numricos en carreras de ingeniera. 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.
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.
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 8
1.1 Resolucin de problemas con el computador 8
1.2 Fuentes de error en la resolucin de un problema numrico 9
1.3 El modelo matemtico 9
1.4 Algoritmos numricos 10
1.5 Instrumentacin computacional 10
1.6 Un ejemplo inicial 11
1.7 Preguntas 13
2 Tipos de mtodos numricos 14
2.1 Mtodos iterativos 14
2.1.1 Convergencia de los mtodos iterativos 17
2.1.2 Error de truncamiento 17
2.1.3 Finalizacin de un proceso iterativo 18
2.1.4 Error de truncamiento y estimacin del error 19
2.1.5 Eficiencia de un mtodo iterativo 19
2.1.6 Eleccin del valor inicial 20
2.1.7 Preguntas 20
2.2 Mtodos directos 21
2.2.1 Error de redondeo 23
2.2.2 Error en la representacin de nmeros reales 24
2.2.3 Error de redondeo en las operaciones aritmticas 25
2.2.4 Propagacin del error de redondeo en operaciones aritmticas 27
2.2.5 Eficiencia de los mtodos directos 29
2.2.6 La notacin O( ) 31
2.2.7 Ejercicios 33
3 Races reales de ecuaciones no-lineales 34
3.1 Mtodo de la biseccin 34
3.1.1 Existencia de la raz real 34
3.1.2 Convergencia del mtodo de la biseccin 35
3.1.3 Algoritmo del mtodo de la biseccin 36
3.1.4 Eficiencia del mtodo de la biseccin 37
3.1.5 Instrumentacin computacional del mtodo de la biseccin 38
3.2 Mtodo del punto fijo 40
3.2.1 Existencia del punto fijo 40
3.2.2 Convergencia del mtodo del punto fijo 41
3.2.3 Unicidad del punto fijo 42
3.2.4 Algoritmo del punto fijo 42
3.2.5 Eficiencia del mtodo del punto fijo 46
3.3 Mtodo de Newton 47
3.3.1 La frmula de Newton 47
3.3.2 Algoritmo del mtodo de Newton 48
3.3.3 Interpretacin grfica de la frmula de Newton 50
3.3.4 Convergencia del mtodo de Newton 52
3.3.5 Una condicin de convergencia local para el mtodo de Newton 53
3.3.6 Prctica computacional 57
3.3.7 Instrumentacin computacional del mtodo de Newton 62
3.3.8 Uso de funciones especiales de MATLAB 63
3.4 Ejercicios y problemas de ecuaciones no-lineales 65
3.5 Races reales de sistemas de ecuaciones no-lineales 70
3.5.1 Frmula iterativa de segundo orden para calcular races reales
de sistemas de ecuaciones no-lineales 70
4
6 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
Bibliografa 355
8
ANLISIS NUMRICO
Un enfoque algortmico con el soporte de MATLAB
1 INTRODUCCIN
Anlisis Numrico es una rama de la matemtica cuyo objetivo principal es el estudio de
mtodos para resolver problemas numricos complejos. El estudio de estos mtodos no es
reciente, pero actualmente con el apoyo de la computacin se los puede usar con mucha
eficiencia en la resolucin de problemas que antes no era posible.
Suponer un problema que debemos resolver y que est en nuestro mbito de conocimiento.
En el Diseo se pueden introducir errores en los mtodos numricos utilizados los cuales se
construyen mediante frmulas y procedimientos simplificados para obtener respuestas
aproximadas. Tambin se pueden introducir errores al usar algoritmos iterativos. Estos
errores se denominan errores de truncamiento.
Los errores son independientes y su efecto puede acumularse. En el caso del error de
redondeo el efecto puede incrementarse si los valores que se obtienen son usados en forma
consecutiva en una secuencia de clculos.
Determine la medida del lado del cuadrado que se debe recortar en cada esquina para que
el recipiente tenga la capacidad requerida.
Anlisis
Sea: x: medida del lado de los cuadrados que se deben recortar para formar la caja
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
Instrumentacin
Definicin de la ecuacin (se escribe como una expresin entre comillas simples)
>> f='250-192*x+28*x^2-x^3';
300
200
100
-100
-200
-300
-400
0 2 4 6 8 10 12 14 16 18 20
x
x = 8.0932
1.7 Preguntas
Se deben considerar algunos aspectos tales como la eleccin del valor inicial, la propiedad
de convergencia de la frmula y el criterio para terminar las iteraciones.
Estos mtodos son auto-correctivos. La precisin de la respuesta est dada por la distancia
entre el ltimo valor calculado y la respuesta esperada. Esto constituye el error de
truncamiento.
Mtodo Numrico
Se usar una frmula que recibe un valor estimado para la raz cuadrada y produce un valor
ms cercano a la respuesta. Si se usa repetidamente la frmula cada resultado tender a un
valor final que suponemos es la respuesta buscada. La obtencin de estas frmulas se
realizar posteriormente.
Algoritmo
Clculos en MATLAB
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
>> 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
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
La distancia entre la respuesta esperada y el valor calculado con una frmula iterativa se
denomina error de truncamiento.
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:
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 |
Si en un mtodo esta relacin es ms fuerte tal como Ei+1 = O(Ei2 ) entonces el error se
reducir ms rpidamente y se dice que el mtodo tiene convergencia cuadrtica o de
segundo orden.
20
Si un mtodo iterativo tiene convergencia mayor que lineal, entonces si el mtodo converge,
lo har ms rpidamente. .
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
1. Por que el error de redondeo no debe ser mayor que el error de truncamiento?
2. Una ventaja de los mtodos iterativos es que son auto-correctivos, es decir que si se
introduce algn error aritmtico en una iteracin, en las siguientes puede ser corregido.
Cuando no ocurrira esta auto-correccin?
3. El ejemplo del mtodo numrico para calcular 7 produce una secuencia numrica. Le
parece que la convergencia es lineal o cuadrtica?
21
Modelo matemtico
a1,1x1 = b1
a2,1x1 + a2,2x2 = b2
a3,1x1 + a3,2x2 + a3,3x3 = b3
....
an,1x1 + an,2x2 + ax,3x3 + . . . + an,nxn = bn
Algoritmo
Algoritmo: Triangular
Entra: n: Nmero de ecuaciones
ai,j Coeficientes
bi Constantes
Sale: xi Solucin calculada
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'; % Convertir a vector columna
23
Ejemplo. Escribir los comandos para resolver un problema usando la funcin anterior
3x1 =2
7x1 + 5x2 =3
8x1 + 2x2 + 9x3 = 6
>> a*x
ans =
2
3
6
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.
Ejemplo. Suponga que un dispositivo puede almacenar nicamente los cuatro primeros
dgitos decimales de cada nmero real y trunca los restantes (esto se llama redondeo
inferior).
Se requiere almacenar el nmero:
X = 536.78
Primero expresemos el nmero en forma normalizada, es decir sin enteros y ajustando su
magnitud con potencias de 10:
X = 0.53678x103
Ahora descomponemos el nmero en dos partes
X = 0.5367x103 + 0.00008x103
El valor almacenado es un valor aproximado
3
X = 0.5367x10
El error de redondeo por la limitacin del dispositivo de almacenamiento es
E = 0.00008x103 = 0.8x103 - 4 = 0.8x10-1
| E |< 1 10nm
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
EX+Y = EX + EY
EX + Y EX + EY EX EY
=
eX + Y = = +
X+Y X+Y X+Y X+Y
X EX Y EY
=
eX + Y +
X+Y X X+Y Y
X Y
=
eX + Y ex + eY
X+Y X+Y
EX EY
| eX + Y | | |+| |
X+Y X+Y
X Y
| eX + Y | | ex | + | eY |
X+Y X+Y
E X - Y = EX - EY
EX Y EX EY EX EY
=
eX Y = =
XY XY XY XY
26
EX EY
| eX Y | | |+| |
XY XY
X Y
| eX Y | | ex | + | eY |
XY XY
P=XY
P = ( X + EX) ( Y + EY) = X Y + X EY + Y EX + EXEY
P = X Y + X EY + Y EX El ltimo trmino se descarta por ser muy pequeo
P= X Y Valor que se almacena
EXY = X EY + Y EX
La magnitud del error de redondeo en la multiplicacin puede ser tan grande como la suma
de los errores de redondeo de los operandos ponderada por cada uno de sus respectivos
valores.
= ex + eY
e XY
| 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
Ejemplos de aplicacin
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 (velocidad)
t = 5, Et = 0.1 (tiempo)
d = vt (distancia recorrida)
Ev Et 0.1 0.1
ed = + = + = 0.045 = 4.5% (Error relativo)
v t 4 5
Suponer que se deben restar dos nmeros muy cercanos X=578.1, Y=577.8 con error de
redondeo en el segundo decimal: EX = EY = 0.05 aproximadamente (ambos errores pueden
ser del mismo signo o de diferente signo, depende de la forma como se obtuvieron los datos
X, Y)
EX EY
eX = 0.000086 =
0.0086% , e Y = 0.000086 =
0.0086% (Errores relativos)
X Y
Cota para el error de redondeo relativo:
EX Y EX EY EX EY
=
eX Y = =
XY XY XY XY
EX E
| eX Y | | |+| Y |
XY XY
0.05 0.05
| eX Y | | |+| | 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.
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
S = (X + Y) + Z
X Y
eX + Y = eX + e Y + r1 = r1 r1: error de redondeo al almacenar la suma
X+Y X+Y
| r1,r2 |< 10 10 m
(2X + 2Y + Z)10 10 m
| e(X + Y)+ Z |<
X+Y+Z
(2Z + 2Y + X)10 10 m
| e(Z + Y)+ X |<
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
Sea n el tamao del problema, y T(n) la eficiencia del algoritmo (cantidad de operaciones
aritmticas requeridas). Para obtener T(n) se pueden realizar pruebas en el computador con
diferentes valores de n registrando el tiempo de ejecucin. Siendo este tiempo proporcional
a la cantidad de operaciones aritmticas que se realizaron, se puede estimar la funcin T(n).
Para determinar T(n) se puede analizar la formulacin matemtica del mtodo numrico o la
estructura del algoritmo.
Ejemplo. El siguiente algoritmo calcula la suma de los cubos de los primeros n nmeros
naturales. Encontrar T(n)
Ejemplo. El siguiente algoritmo suma los elementos de una matriz cuadrada a de orden n.
Encontrar T(n)
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
...
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.
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.
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)
2 3 n
n [log(n)] n [n log(n)] n n 2 n!
1 0 1 0 1 1 2 1
3 1 3 3 9 27 8 6
5 1 5 8 25 125 32 120
7 1 7 13 49 343 128 5040
5
9 2 9 19 81 729 512 3.62x10
7
11 2 11 26 121 1331 2048 3.99x10
9
13 2 13 33 169 2197 8192 6.22x10
12
15 2 15 40 225 3375 32768 1.30x10
5 14
17 2 17 48 289 4913 1.31x10 3.55x10
5 17
19 2 19 55 361 6859 5.24x10 1.21x10
6 19
21 3 21 63 441 9261 2.09x10 5.10x10
6 22
23 3 23 72 529 12167 8.38x10 2.58x10
7 25
25 3 25 80 625 15625 3.35x10 1.55x10
15 64
50 3 50 195 2500 125000 1.12x10 3.04x10
30 157
100 4 100 460 10000 1000000 1.26x10 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
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
Sea f: RR. Suponer que f es continua en [a, b], y que adems f(a) y f(b) tienen signos
diferentes.
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.
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]
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
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
En la iteracin i: di = d/2i
Se desea terminar cuando: di < E
Entonces se debe cumplir d/2i < E
log(d / E)
De donde se obtiene: 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]
Algoritmo: Biseccin
Restriccin: No valida el intervalo inicial
Entra: f, a, b, E
Sale: c (aproximacin a la raz r, con error E)
Mientras b-a > E
c (a+b)/2
Si f(c)=0
Terminar
Sino
Si signo f(c) = signo f(a)
ac
Sino
bc
Fin
Fin
Fin
Ejemplo. Calcule una raz real de f(x) = x ex - = 0 en el intervalo [0, 2] con error 0.01
La funcin f es continua y adems por simple inspeccin: f(0)<0, f(2)>0, por lo tanto la
ecuacin f(x) = 0 debe contener alguna raz real en el intervalo [0, 2]
Cantidad de iteraciones
En la octava iteracin:
Suponer el caso ms desfavorable, en el que r est muy cerca de uno de los extremos del
intervalo [a, b]:
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
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
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
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:
-2
-4
-6
El clculo de las races se realiza con el mtodo de la biseccin con un error menor a
0.0001
>> h=f-g;
>> c=biseccion(h,1,1.5,0.0001)
c=
1.233726501464844
>> c=biseccion(h,3,3.2,0.0001)
c=
3.040667724609375
Nota. La funcin solve de MATLAB solamente entrega una de las dos races
40
El mtodo del punto fijo, tambin conocido como mtodo de la Iteracin funcional es el
fundamento matemtico para construir mtodos eficientes para el clculo de races reales
de ecuaciones no lineales.
Este mtodo consiste en re-escribir la ecuacin f(x) = 0 en la forma x = g(x). Esta nueva
ecuacin debe ser equivalente a la ecuacin original en el sentido que debe satisfacerse con
la misma raz, es decir la existencia de un punto fijo r de la ecuacin x = g(x) es equivalente
a encontrar una raz real r de la ecuacin f(x) = 0: r = g(r) f(r)=0 como muestra el
grfico:
sin(x)-exp(x)+2 log(sin(x)+2)
2 2
1.5 1.5
g(x)
1 1
f(x)
Punto fijo r
0.5 0.5
Raiz r
x
0 0
-0.5 -0.5
-1 -1
0 0.5 1 1.5 2 0 0.5 1 1.5 2
x x
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
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
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)
Definiciones:
Ei = r xi : Error de truncamiento en la iteracin i
Ei+1 = r xi+1: Error de truncamiento en la iteracin i + 1
Demostracin
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]
Usaremos la primera
Elegir un valor inicial x0 = 0.6 (cercano a la primera raz, tomado del grfico)
El valor inicial elegido es x0 = 1.7 (cercano a la segunda raz, tomado del grfico)
...
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:
x
0.6
0.59
0.58
0.57
0.56
0.55
x
0.54
0.53
0.52 g(x)
0.51
0.5
0.5 0.52 0.54 0.56 0.58 0.6 0.62
x
Ecuacin equivalente:
x = g(x) = ex/
Con lo que se concluye que la segunda raz no se puede calcular con esta frmula.
Ejemplo. Calcule una raz real de la misma ecuacin f(x) = ex - x = 0 con el mtodo del
punto fijo con otra forma de la ecuacin de recurrencia x=g(x).
0.4
verificar numricamente.
0.2
>> syms x
>> g=inline(log(pi*x));
>> ezplot(x,[0,2]),grid on,hold on Graficar x vs. g(x)
>> ezplot(g,[0,2]) Produce el grfico de la pgina anterior
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
convergencia. Si la magnitud de g'(z) permanece mayor a 1, el mtodo no converge.
47
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:
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! + . . .
Finalmente se obtiene:
Ei+ 1 = Ei g(r) + Ei2 g(r)/2! + . . .
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
Con lo que h(x) queda especificada para que la convergencia sea cuadrtica.
f(xi )
xi + 1 =
xi , f '(xi ) 0 , i = 0, 1, 2, . . .
f '(xi )
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
Un grfico de f nos muestra que la ecuacin tiene dos races reales en el intervalo [0, 2]
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:
f(xi ) e xi xi
xi + 1 =
g(xi ) =
xi =
xi
f '(xi ) e xi
1.8
1.6
g(x)
1.4
1.2
0.8
x
0.6
0.4
0.2
0
0 0.5 1 1.5 2
x
Se observa que en la vecindad de cada raz, |g(x)|<1 y g(x) toma valores cercanos a
cero en la regin muy cercana a la raz, por lo cual la convergencia es segura, es muy
rpida y se puede llegar tan cerca de la raz como se desee.
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.
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 ) f(x 0 )
tan(0 ) = f '(x 0 ) = x1 = x 0
x 0 x1 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 ) f(x1 )
tan(1 ) = f '(x1 ) = x 2 = x1
x1 x 2 f '(x1 )
f(xi )
xi + 1 =
xi , i=
0,1,2,...
f '(xi )
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
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.
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:
Demostracin
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
Este resultado define una sucesin numrica decreciente que tiende a r y prueba la
convergencia de la frmula iterativa de Newton: xi r
i
54
Si f tiene otra forma, igualmente se pueden enunciar y demostrar las condiciones para que
se produzca la convergencia en cada caso.
Solucin
2 () (() 1) 4()(2 () 2)
() = () = =0
2(2 () 2)2 + (() 1)2
55
() = () (() 1) 4 () (() 1) = 0
= 3() cos() 4() + cos() = 0
-1
Grfico de f(t)
Frmula de Newton
( )
+1 = ( ) , = 0,1,2,3,
Sustitur las frmulas anteriores en la frmula de Newton y calcular:
0 = 0.5 (Estimacin tomada del grfico)
1 = 0.5938
2 = 0.5873
3 = 0.5872
4 = 0.5872
Ejemplo.- Si un crculo de radio a rueda en el plano a lo largo del eje horizontal, un punto
P de la circunferencia trazar una curva denominada cicloide. Esta curva puede expresarse
mediante las siguientes ecuaciones paramtricas
x(t) = a(t sen t), y(t) = a(1 cos t)
Grfico de la cicloide
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 f(t) = (1 cost)2 + (sent)2 0.25 = 0
Mtodo de Newton
f(ti ) (1 cos ti )2 + (senti )2 0.25
ti+ 1 =
ti =
ti (frmula iterativa)
f '(ti ) 2(1 cos ti )(senti ) + 2(senti )(cos ti )
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.
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.
>> x = x - eval(f)/eval(diff(f))
Ejemplo. Calcule con MATLAB las races reales de f(x) = ex - x = 0 con la frmula de
Newton.
>> syms x;
>> f=exp(x)-pi*x;
>> ezplot(f,[0,2]),grid on
58
>> eval(f)
ans =
0
59
=
La ecuacin a resolver es: f(x) 20x e 0.075x
= 80 0
>> syms x;
>> f=20*x*exp(-0.075*x)-80;
(20 x)/exp((3 x)/40) - 80
>> ezplot(f,[0,50]),grid on
20
>> x=5;
>> x=x - eval(f)/eval(diff(f)) 0
x=
-20
6.311945053556490
>> x=x - eval(f)/eval(diff(f)) -40
x=
6.520455024943885 -60
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
0
0 0.5 1 1.5 2 2.5 3
>> 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 (tiempo para la menor distancia)
>> eval(d)
ans =
0.794004939848305 (es la menor distancia)
61
r = 2+cos(3*t), r = 2- et
150 30
1
180 0
210 330
240 300
270
>> syms t;
>> f=2+cos(3*t)-(2-exp(t));
>> t=-1; (valor inicial)
>> 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
62
Para evitar iterar desde la ventana de comandos, se puede instrumentar una funcin que
reciba la ecuacin a resolver f, la variable independiente v entre comillas y el valor inicial
x. Adicionalmente se debe enviar un parmetro E para controlar la precisin requerida y
otro parmetro m para el mximo de iteraciones.
function [r,k]=newton(f,v,x,E,m)
% f: Ecuacin a resolver
% v: Variable independiente
% x: Valor inicial
% E: Error esperado en la respuesta
% m: Mximo de iteraciones permitido
% r: Valor aproximado para la raz
% k: Cantidad de iteraciones realizadas
r=x;
for k=1:m
x=x-subs(f,v,x)/subs(diff(f,v),v,x);
if abs(r-x)<E
return
end
r=eval(x);
end
r=[ ];
k=m;
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
0.8
0.6
0.4
0.2
-0.2
-0.4
La funcin fzero
>> f='exp(x)-pi*x';
>> r=fzero(f, [0.4, 0.8]) (Para usar como el mtodo de la biseccin
r= se especifica el intervalo que contiene a la raz)
0.55382703664451
>> f='exp(x)-pi*x';
64
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.
>> f='exp(x)-pi*x';
>> r=eval(solve(f))
r=
0.553827036644514 (Raz real en forma numrica decimal)
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
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.
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.
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
14. Un ingeniero desea tener una cantidad de dlares acumulada en su cuenta de ahorros
para su retiro luego de una cantidad de aos de trabajo. Para este objetivo planea depositar
un valor mensualmente. Suponga que el banco acumula el capital mensualmente mediante
la siguiente frmula:
(1 + x)n 1 , en donde
A = P
x
A: Valor acumulado, P: Valor de cada depsito mensual
n: Cantidad de depsitos mensuales, x: Tasa de inters mensual
Determine la tasa de inters anual que debe pagarle el banco si desea reunir 200000 en 25
aos depositando cuotas mensuales de 350
15. Una empresa compra una mquina en 20000 dlares pagando 5000 dlares cada ao
durante los prximos 5 aos. La siguiente frmula relaciona el costo de la mquina P, el
x(1 + x)n
pago anual A, el nmero de aos n y el inters anual x: A =P
(1 + x)n 1
Determine la tasa de inters anual x que se debe pagar.
16. Una empresa vende un vehculo en P=$34000 con una entrada de E=$7000 y pagos
mensuales de M=$800 durante cinco aos. Determine el inters mensual x que la empresa
est cobrando. Use la siguiente frmula:
M 1
P =+
E [1 ], en donde n es el nmero total de pagos mensuales
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.
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.
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
24. Los polinomios de Chebyshev Tn(x) son utilizados en algunos mtodos numricos.
Estos polinomios estn definidos recursivamente por la siguiente formulacin:
To(x) = 1, T1(x) = x
Tn(x) = 2.x.Tn-1(x)-Tn-2(x), n= 0, 1, 2, 3,
Calcule todas las races reales positivas de T7(x).
68
26. Una partcula se mueve en el plano XY (la escala est en metros) con una trayectoria
( )
descrita por la funcin u(t) = (x(t), y(t)) = 2t e t + 4 t , 2t 3 , t[0,1], t medido en horas.
a) Grafique la trayectoria u(t)
b) Encuentre la posicin de la partcula cuando x=3.
c) En que el instante la partcula se encuentra a una distancia de 4 metros del origen.
28. En una regin se instalan 100 personas y su tasa de crecimiento es e0.2x, en donde x es
tiempo en aos. La cantidad inicial de recursos disponibles abastece a 120 personas. El
incremento de recursos disponibles puede abastecer a una tasa de 10x personas, en donde
x es tiempo en aos. Se desea conocer cuando los recursos no sern suficientes para
abastecer a toda la poblacin. Calcule la solucin con cuatro dgitos de precisin y
determine el ao, mes y da en que se producir este evento.
29. Suponga que el precio de un producto f(x) depende del tiempo x en el que se lo ofrece
al mercado con la siguiente relacin f(x) = 25x exp(-0.1x), 0x12, en donde x es tiempo
en meses. Se desea determinar el da en el que el precio sube a 80.
a) Evale f con x en meses hasta que localice una raz real (cambio de signo) y trace la
forma aproximada de f(x)
b) Calcule la respuesta (mes) con E=10-4. Exprese esta respuesta en das (1mes = 30 das)
c) Encuentre el da en el cual el precio ser mximo. E=10-4
2
30. Determine de ser posible, el valor del parmetro > 0 , tal que 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.
33. Se desea dividir un pastel circular de 35 cm. de dimetro, mediante dos cortes paralelos,
de tal manera que las tres porciones obtenidas tengan igual cantidad. Formule el modelo
matemtico (una ecuacin no lineal con una incgnita: altura de la perpendicular del centro
a cada lnea de corte) y obtenga el ancho de cada uno de los tres cortes.
34. Una esfera de densidad 0.4 y radio 5 flota parcialmente sumergida en el agua.
Encuentre la profundidad h que se encuentra sumergida la esfera.
Nota: requiere conocer la densidad del agua y el volumen de un segmento esfrico.
3.5.1 Frmula iterativa de segundo orden para calcular races reales de sistemas de
ecuaciones no-lineales
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:
+ 1) df (k) 1 (k)
x (k= x (k) (
) f , k=0, 1, 2, (iteraciones)
dx
Si F contiene n ecuaciones, la frmula se puede extender, siempre que las derivadas
existan:
F(k) 1 (k)
X (k + 1) =
X (k) ( ) F = X (k) (J(k) )1F(k)
X
En donde:
f1(k) f1(k) f1(k)
...
x1(k + 1) x1(k) f1(k) x 1 x 2 x n
(k + 1) (k) (k) f (k) f2(k) f2(k)
x2 x2 f 2 ...
X (k + 1) = , X =
(k)
, F = 2 , J(k)
(k)
= x 1 x 2 x n
... ... ...
(k + 1) (k) (k) ... ... ... ...
xn xn fn
fn(k) fn(k) fn(k)
...
x 1 x 2 x n
J es la matriz jacobiana
71
En forma general la convergencia de este mtodo para sistemas no lineales requiere que:
En el caso de dos ecuaciones con dos variables, sus grficos pueden visualizarse en el
plano. Las races reales son las intersecciones.
La siguiente figura obtenida con MATLAB muestra las dos ecuaciones en el plano X-Y
72
y e p( y) 3 0
4
1
y
-1
-2
0 0.5 1 1.5 2 2.5 3 3.5 4
x
>> syms x y;
>> f1=(x-2)^2 + (y-1)^2+x*y-3;
>> f2=x*exp(x+y)+y-3;
>> ezplot(f1,[0,4,-2,4]),grid on,hold on
>> ezplot(f2,[0,4,-2,4])
No es posible reducir el sistema a una ecuacin, por lo que se debe utilizar un mtodo para
resolverlo simultneamente con la frmula propuesta:
f1 f1
x y 2x + y 4 x + 2y 2
=J =
f2 f2 e x + y (1 + x) xe x + y + 1
x
y
x f1 (x 2)2 + (y 1)2 + xy 3
X= =
, F =
y f2 xe x + y + y 3
Ecuacin de recurrencia
+ 1)
X (k= X (k) (J(k) )1F(k)
73
X=
(1)
X (0) (J(0) )1F(0)
1
x (1) 0.5 2(0.5) + 1 4 0.5 + 2(1) 2 (0.5 2)2 + (1 1)2 + 0.5(1) 3
= (1) 0.5 + 1 (1 + 0.5) 0.5e0.5 + 1 + 1
y 1.0 e 0.5e0.5 + 1 + 1 3
1
x (1) 0.5 2 0.5 0.25
= (1) 1.0 6.7225 3.2408 0.2408
y
x (1) 0.5 0.3293 0.0508 0.25 0.4055
(1) = =
y 1.0 0.6830 0.2032 0.2408 1.1218
Obtencin de las races de las ecuaciones para el ejemplo anterior mediante comandos de
MATLAB. Se usarn variables de tipo simblico
+ 1)
Ecuacin de recurrencia: 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]; Vector con las ecuaciones
>> X=[x; y]; Vector con las variables
>> U=[0.5; 1.0]; Vector inicial (del grfico)
>> J=[diff(f1,x) diff(f1,y); diff(f2,x) diff(f2,y)] Matriz jacobiana
J=
[ 2*x + y - 4, x + 2*y - 2]
[ exp(x + y) + x*exp(x + y), x*exp(x + y) + 1]
Sea F: f1, f2, , fn ecuaciones con variables independientes X: x1, x2, , xn.
Ecuacin de recurrencia:
+ 1)
X (k= X (k) (J(k) )1F(k) , k=0, 1, 2,
Entrada
F: Vector con las ecuaciones
X: Vector con las variables independientes
U: Vector con valores iniciales para las variables
Salida
U: Vector con los nuevos valores calculados para las variables
Las derivadas parciales se obtienen con la funcin diff y la sustitucin de los valores de U
en las variables se realiza con la funcin subs. La solucin se la obtiene con la inversa de la
matriz de las derivadas parciales J.
75
for i=1:n
for j=1:n
F(i)=subs(F(i), X(j), U(j)); %Sustitucin del vector U en el vector F
end
end
U=U-inv(eval(J))*eval(F); %Obtencin de la nueva aproximacin U
Ejemplo. Use la funcin snewton para encontrar una raz real del sistema
f1 (x, y) = (x 2)2 + (y 1)2 + xy 3 = 0
y) xe x + y + y =
f 2 (x,= 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
>> 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=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
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 Obtencin de la frmula iterativa de segundo orden para calcular races reales
de sistemas de ecuaciones no lineales
Sean 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
(x1(k + 1) , x (k
2
+ 1)
)
f1(k) f (k)
f1(k + 1) =
f1(k) + (x1(k + 1) x1(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) f (k)
f2(k + 1) =
f2(k) + (x1(k + 1) x1(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
Por simplicidad se ha usado la notacin: f1(k) = f1 (x1(k) , x 2(k) ) , f1(k + 1) = f1 (x1(k + 1) , x (k
2
+ 1)
) , etc.
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):
(x1(k ) , x (k
2 )
)
cercano a la raz (r1, r2)
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 )
2 ) es cercano a (x 1 , x (k
2 ) , las diferencias sern pequeas y
al elevarse al cuadrado se obtendrn valores ms pequeos y se los omite.
79
f1(k) f (k)
f1(k) + (x1(k + 1) x1(k) )
0= + (x 2(k + 1) x 2(k) ) 1
x 1 x 2
f2(k) f (k)
f2(k) + (x1(k + 1) x1(k) )
0= + (x 2(k + 1) x 2(k) ) 2
x 1 x 2
En notacin matricial:
+ 1)
X (k= X (k) (J(k) )1F(k) , | J(k) | 0
a) Grafique las ecuaciones en el intervalo [-6, 6, -6, 6] y observe que hay dos races reales.
Elija del grfico, valores aproximados para cada raz.
b) Use iterativamente la funcin snewton:
c) Compruebe que las soluciones calculadas satisfacen a las ecuaciones
d) Calcule las soluciones con la funcin solve de MATLAB y compare
3. Dada la funcin f(x, y) = (x2 - y) sen(2x+y) se desea localizar y calcular las coordenadas
de un mximo local.
Plantee un sistema de dos ecuaciones no lineales con las derivadas parciales de f igualadas
a cero. Grafique las ecuaciones en el plano X,Y. Elija un punto inicial y use iterativamente la
funcin snewton para calcular una solucin.
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
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 notacin matricial:
a1,1 a1,2 ... a1,n x1 b1
a a2,2 ... a2,n x 2 b2
2,1 =
... ... ... ...
an,1 an,1 ... an,n xn bn
83
Simblicamente
AX = B
Siendo
a1,1 a1,2 ... a1,n b1 x1
a a2,2 ... a2,n b x
A =
2,1 2 2
= = ; B ; X
... ... ... ...
an,1 an,1 ... an,n bn xn
B A 1AX =
AX = A 1B X A 1B =
= X A 1B
En caso de que esta solucin exista, el procedimiento debe transformar las ecuaciones
mediante operaciones lineales que no modifiquen la solucin del sistema original:
a) Intercambiar ecuaciones
b) Multiplicar ecuaciones por alguna constante no nula
c) Sumar alguna ecuacin a otra ecuacin
84
4 2 5 18.00
A | B = 2 5 8 27.30
2 4 3 16.20
1.0000 0 0 1.2000
0 1.0000 0 2.1000
0 0 1.0000 1.8000
1.2
X = 2.1
1.8
4 2 5 1.2 18.0
A * X 2 5 8 =
= 2.1
=
27.3 B
2 4 3 1.8 16.2
Si es posible realizar esta transformacin, entonces los valores que quedan en la ltima
columna constituirn el vector solucin X
86
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 a1,n+ 1
0 1 ... 0 a2,n+ 1
... ... ... ... ...
0 0 ... 1 an,n+ 1
Etapa 1
Etapa n
Etapa 2
Etapa 1
Normalizar la fila 1: (transformar el elemento a 1,1 a 1)
t a1,1 , a1,j a1,j / t , j=1, 2, ..., n+1; suponer que a1,1 0
Valores
transformados
Etapa 2
Valores
1 a1,2 ... a1,n a1,n+ 1 1 0 ... a1,n a1,n+ 1
transformados
0 a2,2 ... a2,n a2,n+1 0 1 ... a2,n a2,n+1
... ... ... ... ... ...
0 an,1 ... an,n an,n+1 0 0 ... an,n an,n+1
87
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 )
Para e = 1, 2, . . ., n
t a e,e
Para j=e, e+1, ..., n+1
a e,j a e,j / t Normalizar la fila e ( a e,e 0 )
Fin
Para i=1, 2, , n; i e
t ai,e
Para j=e, e+1, ..., n+1
ai,j ai,j t a e,j Reducir las otras filas
Fin
Fin
Fin
Para i=1,2,...,n
xi ai,n+ 1 La ltima columna contendr la solucin
Fin
88
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)
En la reduccin: T(n) = O(n3) (Tres ciclos anidados)
Mediante un conteo recorriendo los ciclos del algoritmo, se puede determinar la funcin de
eficiencia para este mtodo directo, considerando solamente la seccin crtica que incluye
los tres ciclos:
e i j
1 n-1 n+1
2 n-1 n
. . .
. . .
. . .
n-1 n-1 3
n n-1 2
Ejemplo. Una funcin en MATLAB para conteo de los ciclos del mtodo de Gauss-Jordan
Tambin se puede obtener computacionalmente T(n) mediante una funcin que realice el
conteo de ciclos. Por la estructura del algoritmo T(n) debe ser un polinomio cbico, por lo
tanto se necesitan cuatro puntos y con estos cuatro puntos se puede construir el polinomio
cbico.
function c=conteogaussj(n)
c=0;
for e=1:n
for i=1:n
if i~=e
for j=e:n+1
c=c+1; %Conteo de los ciclos en la seccin crtica
end
end
end
end
89
(n, c): (10, 585), (20, 4370), (30, 14355), (40, 33540)
function x=gaussjordan(a,b)
n=length(b);
a=[a,b]; %matriz aumentada
for e=1:n
a(e,e:n+1)=a(e,e:n+1)/a(e,e); %normalizar fila 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); %reducir otras filas
end
end
end
x=a(1:n,n+1); %vector solucin
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:
t m t m-1 . . . t 2 t1 A = I
Para aplicar este algoritmo, suponiendo que se desea conocer la matriz A 1 , se debe
aumentar la matriz anterior con la matriz I: A | B | I
4x1 + 2x 2 + 5x 3 =
18.00
2x1 + 5x 2 + 8x 3 =
27.30
2x1 + 4x 2 + 3x 3 =
16.20
4 2 5 18.00 1 0 0
A | B = 2 5 8 27.30 0 1 1
2 4 3 16.20 0 0 1
Clculos
Matriz inversa
0.2931 0.2414 0.1552
A 1 0.1724 0.0345 0.3793
=
0.0345 0.2069 0.2759
Ejemplo. Con el Mtodo de Gauss resuelva el sistema de ecuaciones lineales del problema
planteado al inicio de este captulo
4x1 + 2x 2 + 5x 3 =
18.00
2x1 + 5x 2 + 8x 3 =
27.30
2x1 + 4x 2 + 3x 3 =
16.20
4 2 5 18.00
A | B = 2 5 8 27.30
2 4 3 16.20
Las transformaciones sucesivas de la matriz aumentada se describen en los siguientes
cuadros
De este sistema se obtiene la solucin mediante una sustitucin directa comenzando por el
final:
x 3 = 1.8
x2 =
4.575 1.375(1.8) =
2.1
x1 =
4.5 0.5(2.1) 1.25(1.8) =
1.2
xn an, n+ 1
xn1 an1, n+ 1 an1, n xn
xn 2 an 2, n+ 1 (an 2, n1xn1 an 2, n xn )
. . . etc
Para e = 1, 2, . . ., n
t a e,e
Para j = e, e+1, ..., n+1
a e,j a e,j / t Normalizar la fila e ( a e,e 0 )
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 Reducir las filas debajo de la diagonal
Fin
Fin
Fin
xn an, n+ 1 Resolver el sistema triangular superior
Para i = n-1, n-2, ..., 1
s0
Para j = i+1, i+2, ..., n
s s + ai,j x j
Fin
xi ai,n+ 1 s
Fin
98
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)
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
(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)
function x=gaussbasico(a,b)
n=length(b);
a=[a,b]; %Matriz aumentada
for e=1:n
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
Etapa 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 )
Etapa e: Columna e
Transformaciones
Una estrategia para disminuir el error de redondeo consiste en reducir el valor de los
operandos que intervienen en la multiplicacin.
Por otra parte, si en esta estrategia de bsqueda, el valor elegido como el mayor divisor no
es diferente de cero, se concluye que en el sistema existen ecuaciones redundantes o
incompatibles, entonces el sistema no tiene solucin nica y el algoritmo debe terminar
101
Para e = 1, 2, . . ., n
pe
Para i = e+1,e+2, ..., n Buscar el pivote entre las filas e hasta n
Si |ai,e| > |ae,p|
pi
Fin
Fin
Intercambiar las filas e y p
Si ae,e = 0 La solucin no existe o no es nica
X nulo
Terminar
Fin
t a e,e
Para j = e, e+1, ..., n+1
a e,j a e,j / t Normalizar la fila e ( a e,e 0 )
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 Reducir las filas debajo de la diagonal
Fin
Fin
Fin
xn an, n+ 1 Resolver el sistema triangular superior
Para i=n-1, n-2, ..., 1
s0
Para j=i+1, i+2, ..., n
s s + ai,j x j
Fin
xi ai,n+ 1 s
Fin
102
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 la ventana de comandos de MATLAB, use la funcin Gauss para resolver
el sistema:
2 3 7 x1 3
2
5 6 x 2 = 5
8 9 4 x 3 8
103
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.
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.
Sean
A: matriz cuadrada
T: Matriz triangular superior obtenida con el algoritmo de Gauss, sin normalizar
ai,i : Elementos en la diagonal de la matriz T. Son los divisores
k: Nmero de cambios de fila realizados
det(A): Determinante de la matriz A
Entonces
n
det(A) = (1)k ai,i
i=1
function d=determinante(a)
%Determinante de una matriz cuadrada
%Mediante reduccin a una matriz triangular
[n,m]=size(a);
if n~=m %La matriz debe ser cuadrada
d=0;
return
end
signo=1; %cambios de fila
d=1;
for e=1:n
[z, p]=max(abs(a(e:n,e))); %Pivoteo por filas
p=p+e-1;
t=a(e,e:n); %Intercambio de filas
a(e,e:n)=a(p,e:n);
a(p,e:n)=t;
if e~=p %Cambio de fila = cambio de signo
signo=signo*(-1);
end
if abs(a(e,e))<1.0e-10 %Divisor cercano a 0: matriz singular
d=0;
return;
end
d=d*a(e,e); %Multiplicacin de pivotes
a(e,e:n)=a(e,e:n)/a(e,e); %Normalizar la fila e
for i=e+1:n %Reducir otras filas
a(i,e:n)=a(i,e:n)-a(i,e)*a(e,e:n);
end
end
d=d*signo; %Determinante
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
Sean x1,x 2 ,x 3 ,x 4 variables que representan al precio unitario ($/kg) de cada producto.
Entonces, se puede escribir:
En notacin matricial
Supondremos ahora que el digitador se equivoca al ingresar los datos en la matriz y registra
6.1 en lugar del valor correcto 6.0, de tal manera que el nuevo sistema es:
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.
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 max xi , i 1,2,...,n
n
X = ( x 2 )1/ 2
i=1
n
= =
A max( ai,j , i 1,2,...,n)j=1
n
= =
A max( ai,j , j 1,2,...,n)
i=1
n n
A = ( a 2 1/ 2
)
i,j
=i 1=j 1
Las dos primeras, tanto para vectores como para matrices, se denominan norma 1 y
norma infinito. La tercera es la norma euclideana.
Esta norma es el mayor valor de la suma de las magnitudes de los componentes de cada
fila
Fila 1: |5| + |-3| + |2| = 10
Fila 2: |4| + |8| + |-4| = 16
Fila 3: |2| + |6| + |1| = 9
0.010 0.005 10 5
Ejemplo. A= =
=
; B 1000A
0.025 0.032 25 32
A B
Determinante 0.000195 195
Norma1 de la matriz 0.0370 37
Norma1 de la inversa 292.3077 0.2923
Nmero de condicin 10.8154 10.8154
Este resultado muestra que la norma no es suficiente para medir el nivel de mal
condicionamiento de una matriz.
109
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.
Una matriz puede considerarse mal condicionada si una ligera perturbacin, error o cambio
en la matriz de coeficientes produce un cambio muy significativo en el vector solucin.
110
Suponer que debido a errores de medicin, la matriz A de los coeficientes tiene un error E.
Sea A= A + E , la matriz con los errores de medicin. Suponer que el vector B es exacto
X = A 1B
= A 1 ( AX )
= A 1 (A + E)X
= A 1A X + A 1EX
= I X + A 1EX
= X + A 1EX
E
X X = A 1EX X X A 1 E X X X A 1 A X
A
|| X X || || A A ||
cond(A)
|| X || || A ||
La expresin establece que la magnitud del error relativo de la solucin est relacionada con
el error relativo de la matriz del sistema, ponderada por el nmero de condicin. El nmero
de condicin es un factor que amplifica el error en la matriz A aumentando la dispersin y la
incertidumbre de la solucin calculada X
111
Ejemplo. Encuentre una cota para el error en la solucin del ejemplo inicial
0 0 0 0
0 0 0 0
Error en la matriz: EA = A - A =
0 0 0 0
0.1 0 0 0
|| E A || 0.1
|eA| = = = 0.0038 = 0.38%
|| A || 26.3
Nmero de condicin:
cond(A) = 17879.09
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
|| E X || 4.2432
|eX| = = = 0.5086 = 50.86%
|| X || 8.3432
|| E A || 0.1
|eA| = = = 0.0038 = 0.38%
|| A || 26.3
Factura A B C Total
1 2 5 4 35
2 3 9 8 k
3 2 3 1 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
2 5 4 35 1 5 / 2 2 35 / 2 1 0 4 / 3 105 5k / 3 1 0 0 457 7k
=
A | B 3 9 =
8 k 0 3 / 2 2 k 105
= / 2 0 1 4 / 3 2k / 3= 35 0 1 0 6k 387
2 3 1 17 0 2 3 18 0 0 1/ 3 4k / 3 88 0 0 1 264 4k
457 7k
X 6k 387
=
264 4k
2
X = 3
4
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 1 0 16 / 9 55 / 9 1 0 0 17
A | B 3
= 9 = 8 65 0 27 / 20 2= 25 / 2 0 1 40 / 27 =
250 / 27 0 1 0 10
2 3 1 17 0 21/ 10 3 18 0 0 1/ 9 13 / 9 0 0 1 13
17
X = 10
13
114
X X A A
|=
ex | = 3.75
= 375%, =
|e A | = 0.005
= 0.5%
X A
4 5
Ejemplo. Calcule el nmero de condicin de la matriz A =
4.1 5
Escribimos en la pantalla de comandos de MATLAB:
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.
En donde
ai,j : Coeficientes
bi : Constantes
xi : Variables cuyo valor debe determinarse
En notacin matricial:
Simblicamente: AX = B, en donde
a1,1 a1,2 ... a1,m a1,m+ 1 1 0 ... 0 a1,n+ 1 ... a1,m a1,m+ 1
a
0 1 ... 0 a2,n+ 1 ... a2,m a2,m+ 1
2,1 a 2,2
. . .
... a2,m a2,m+ 1
A |B =
... ... ... ... ... ... ... ... ... ... ... ... ...
an,1 an,2 ... an,m an,m+ 1 0 0 ... 1 an,n+ 1 ... an,m an,m+ 1
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 correspondiente, tomen el valor 0. Realizando
previamente intercambios de filas para colocar como divisor el elemento de mayor magnitud.
Esta estrategia se denomina pivoteo parcial y se usa para determinar si el sistema es
singular.
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
Para j=e, e+1, ..., n+1
a e,j a e,j / t Normalizar la fila e ( a e,e 0 )
Fin
Para i=1, 2, , n; i e
t ai,e
Para j=e, e+1, ..., n+1
ai,j ai,j t a e,j Reducir las otras filas
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.:
P1 P2 P3 P4
M1 0.2 0.5 0.4 0.2
M2 0.3 0 0.5 0.6
M3 0.5 0.5 0.1 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:
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.
x1 + 0.75x4 = 25.41
x2 - 0.50x4 = 2.83
x3 + 0.75x4 = 8.75
Dependiendo del problema se pueden afinar los rangos para las variables. En este ejemplo,
las variables no pueden tomar valores negativos:
119
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:
Ejemplo. Si se decide producir 20 Kg del producto P1, entonces para que no sobren
materiales, la produccin ser:
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.
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
>> x=slin(a,b)
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)
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.
1) Sistema consistente
x1 + 2x3 + 4x4 = 1
x2 + 2x3 =0
x1 + 2x2 + x3 =0
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
>> 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 -2
0 1 0 2 1
0 0 1 2 1
0 0 0 0 0
3) Sistema incompleto
>> [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 + 0.64x4 = -0.28
x2 - 1.92x4 = -0.16
x3 + 1.68x4 = 0.64
Sistema equivalente:
x1 - 4x4 = -2
x2 - 2x4 = 1
x3 + 2x4 = 1
0x4 = 3
125
Se puede disear un mtodo directo para resolver un sistema tridiagonal con eficiencia de
primer orden: T(n)=O(n) lo cual representa una enorme mejora respecto a los mtodos
directos generales para resolver sistemas de ecuaciones lineales, cuya eficiencia es
T(n)=O(n3).
b1 c1 x1 d1
a b c x d
2 2 2 2 2
a 3 b3 c 3 x 3 = d3
... ... ... ... ...
an bn xn dn
c1
3) Sea w=
2 b2 a 2 . Dividir la segunda fila para w2
w1
c1
1 w g1
1
c2 d2 a2 g1
0 1
w2 w2
a3 b3 d3
d2 a2 g1
4) Sea g2 = . Restar de la tercera fila, la segunda multiplicada por a3
w2
c1
1 g1
w1
c2
0 1 g2
w 2
c
0 b3 a 3 2 d3 a3 g2
w 2
c2
5) Sea w=
3 b3 a 3 . Dividir la tercera fila para w3
w2
c1
1 g1
w 1
c2
0 1 g2
w2
d3 a3 g2
0 1
w3
d3 a3 g2
6) Sea g3 = . Finalmente se obtiene:
w3
c1
1 w g1
1
c2
0 1 g2
w2
0 1 g3
(2)
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).
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 %Transformacin matricial
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 %Obtencin de la solucin
x(i) = g(i) - c(i)*x(i+1)/w(i);
end
129
7 5 x1 6
2 8 1 x 5
2 =
6 4 3 x3 7
9 8 x 4 8
X(0) es el vector inicial. A partir de este vector se obtienen los vectores X(1), X(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
function x = jacobi(a,b,x)
n=length(x);
t=x; % t es asignado con el vector X
ingresado
for i=1:n
s=a(i,1:i-1)*t(1:i-1)+a(i,i+1:n)*t(i+1:n);
x(i) = (b(i) - s)/a(i,i);
end
Etc.
133
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
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]
Sustituyendo en la ecuacin:
(L + D + U)X = B
LX + DX + UX = B
Ecuacin recurrente del mtodo de Jacobi segn el mtodo del Punto Fijo X = G(X)
En donde
1
D 1 =
ai,i nxn
Ecuacin recurrente desarrollada
X(0) es el vector inicial. A partir de este vector se obtienen sucesivamente los vectores
X(1), X(2), ...
x=
1.4500
0.8422
0.4523
Etc
i1 n
1
xi(k +1) = (bi - ai,jx(kj +1) - ai,jx(k)
j ); i = 1, 2, ..., n; k = 0, 1, 2, ...
ai,i j= 1 j= i + 1
5x1 3x2 + x3 = 5
2x1 + 4x2 x3 = 6
2x1 3x2 + 8x3 = 4
Frmula iterativa:
Comenzando con el vector inicial: x1(0) = x2(0) = x3(0) = 1, realice dos iteraciones:
function x = gaussseidel(a,b,x)
n=length(x);
for i=1:n
s=a(i,1:i-1)*x(1:i-1)+a(i,i+1:n)*x(i+1:n); %Usa el vector x actualizado
x(i) = (b(i) - s)/a(i,i);
end
>> x=gaussseidel(a,b,x)
x=
1.4412
0.8985
0.4766
Etc.
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]
LX + DX + UX = B
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), ...
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
function x = relajacion(a,b,x,w)
n=length(x);
for i=1:n
s=a(i,1:n)*x(1:n); %Usa el vector x actualizado
x(i)=x(i)+w*(b(i)-s)/a(i,i);
end
LX + DX + SX - D X = B
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
+ 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.
X(0) es el vector inicial. A partir de este vector se obtienen sucesivamente los vectores
X(1), X(2), ...
144
X - X(k+1) = T (X - X(k))
E(k) = X - X(k)
E(k+1) = X - X(k+1)
E(k+1) = T E(k)
E(k+1) = T E(k)
En donde T es la matriz de transicin
Definicin
(k + 1)
La sucesin { X(k) }k=0,1,2,.. definida con la frmula iterativa X =
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
X (k + 1) =
C + TX (k) , k =
0,1,2,...
E(k+1) = T E(k)
AX = B
Ecuacin recurrente equivalente sustituyendo A = L + D + U
E(k+1) = -D-1(L+U)E(k)
Matriz de transicin:
0 a1,2 / a1,1 a1,3 / a1,1 ... a1,n / a1,1
a / a 0 a2,3 / a2,2 ... a2,n / a2,2
D1(L + U) =
2,1 2,2
T=
: : : ... :
an,1 / an,n an,2 / an,n an,3 / an,n ... 0
E(k+1) = T E(k)
Su norma:
Esta relacin define una condicin suficiente para la convergencia del mtodo de Jacobi
mediante la norma de la matriz de transicin: || T || < 1
8x1 + 9x 2 + 2x 3 =
69
2x1 + 7x 2 + 2x 3 =
47
2x1 + 8x 2 + 6x 3 =
68
Frmula iterativa de Jacobi
Matriz de transicin T
0 9 / 8 2 / 8
T= 1
D (L + U) = 2 / 7 0 2 / 7
2 / 6 8 / 6 0
Norma de T:
|| T=
|| 5 / 3 > 1
Por lo tanto, la convergencia del mtodo de Jacobi no se puede asegurar
p( ) = det(T I) = 3 + 11/ 14 17 / 84 = 0
Por lo tanto (T) < 1 y se puede concluir que el mtodo de Jacobi si converge
>> t=[0 9/8 2/8; 2/7 0 2/7; 2/6 8/6 0]; Matriz de transicin
>> lambda=eig(t) Obtencin de los valores propios
lambda = (Eigen values)
0.9946
-0.2880
-0.7066
>> ro=max(abs(lambda)) Radio espectral
ro =
0.9946
AX = B
Ecuacin recurrente equivalente sustituyendo A = L + D + U
X = D-1B D-1LX D-1UX, Siempre que D-1 exista
Matriz de transicin:
T = (I + D-1L)-1( -D-1U)
148
AX = B
Ecuacin recurrente equivalente sustituyendo A = L + D + S D incluyendo el factor
T = (I + D-1L)-1( I - D-1S)
149
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 )
X(k) X, si k
X(k+1) X, si k
|| X(k+1) - X(k) || 0, si k
|| X (k + 1) X (k) ||
< e , en donde e puede expresarse como porcentaje
|| X (k + 1) ||
150
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); %Matriz de transicin
v=eig(T);
r=max(abs(v)); %Radio espectral
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
151
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= Vector solucin
2.0000
5.0000
4.0000
k= Cantidad de iteraciones
2096
NOTA: La gran cantidad de iteraciones requeridas demuestra lo ineficiente que puede ser
este mtodo iterativo cuando el radio espectral es cercano a 1
>> a=[9 3 7; 2 5 7; 6 2 8]
a= No es diagonal dominante
9 3 7 pero pudiera ser que converja
2 5 7
6 2 8
152
>> b=[5;6;4]
b=
5
6
4
>> d=diag(diag(a)) matriz diagonal
d=
9 0 0
0 5 0
0 0 8
>> l=tril(a)-d matriz triangular inferior
l=
0 0 0
2 0 0
6 2 0
>> u=triu(a)-d matriz triangular superior
u=
0 3 7
0 0 7
0 0 0
>> t=-inv(d)*(l+u) Mtodo de Jacobi
t= Matriz de transicin
0 -0.3333 -0.7778
-0.4000 0 -1.4000
-0.7500 -0.2500 0
>> e=eig(t) valores caractersticos
e=
-1.1937
0.5969 + 0.0458i
0.5969 - 0.0458i
>> r=norm(e,inf) mayor valor caracterstico
r=
1.1937 No converge
>> x=[1;1;1]
x=
1
1
1
>> x=jacobi(a,b,x)
x=
-0.5556
-0.6000
-0.5000
153
>> 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
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.
>> d=diag(diag(a));
>> l=tril(a)-d;
>> u=triu(a)-d;
>> s=triu(a);
>> w=0.9;
>> t=inv(eye(4)+w*inv(d)*l)*(eye(4)-w*inv(d)*s); Mtodo de Relajacin
>> rrelajacion=norm(eig(t),inf)
rrelajacion =
0.6438
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
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
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
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.
. . .
. . .
. . .
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 2 9 7 6 7 1 1
5 5 3 2 2 4 2 4
1 3 2 6 4 2 3 = 2
9 9 1 3 3 1 4 4
6 8 5 8 6 6 5 6
2 9 9 9 1 8 6 5
2 X1 X 3 =
1
15. Sea el sistema lineal de ecuaciones: X 1 + 2 X 2 X 3 =
2
X + X + X =
1 2 3 1
b) Realice 3 iteraciones del mtodo de Jacobi, con X(0) = [1, 2, 3]T usando valores de y
que aseguren la convergencia.
16. Una empresa produce semanalmente cuatro productos: A, B, C, D usando tres tipos de
materiales M1, M2, M3. Cada Kg. de producto requiere la siguiente cantidad de cada
material, en Kg.:
P1 P2 P3 P4
M1 0.1 0.3 0.6 0.4
M2 0.2 0.6 0.3 0.4
M3 0.7 0.1 0.1 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:
Cantera 1 52 30 18
Cantera 2 20 50 30
Cantera 3 25 20 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.
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
19. Con el propsito de analizar las preferencias de los consumidores una empresa ha
dividido la ciudad en 16 cuadrculas. Los resultados de las mediciones se incluyen en el
siguiente cuadro. Sin embargo, en algunas cuadrculas no se pudo realizar la medicin y sus
valores se los estimar mediante un promedio de las cuadrculas que estn inmediatamente
a su alrededor. En el clculo de cada promedio incluya tambin los valores
desconocidos adyacentes.
25 30 20
28 40 26
34 32 43
27 35 50
50 X1 30 40
45 X3 X2 25
60 X4 X5 10
55 20 15 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:
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
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
200 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.
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.
Nodo 1: V1 + F1 sen(45) = 0
H + F1 cos(45) + F2 = 0
Nodo 5: V2 + F6 sen(70) = 0
-F7 F6 cos(70) = 0
27. Se desea conocer la corriente i que fluye en un circuito que incluye una fuente de voltaje
V y resistencias R como se indica en el grfico:
Para determinar el valor de la corriente en cada uno de los ciclos cerrados se conviene que
la corriente es positiva si el sentido es opuesto al sentido del reloj.
6 INTERPOLACIN
Para introducir este captulo se analiza un problema para el cual se requiere como modelo
un polinomio de interpolacin.
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.
Dados los puntos (xi, fi), i = 0, 1, 2, . . ., n que pertenecen a alguna funcin f que
supondremos desconocida pero diferenciable, se debe encontrar alguna funcin g para
aproximarla.
x 20 x 0 1
2
D = x12 x1 1 |D|= (x j - xi ) = (x0 - x1)(x0 - x2)(x1 - x2)
x 22 x 2 1 =j 0,j< i
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.
22 2 1
D = 42 4 1 cond(D) = 341 D es una matriz mal condicionada
52 5 1
169
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:
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)]
n
pn (x) =
i=0
fi Li (x)
.
n x-x j
Li (x) =
j=0,j i xi -x j
, i = 0, 1, . . . , n
170
pn (x) = f0L0 (x) + f1L1 (x) + . . . + fi-1Li 1 (x) + fiLi (x) + fi+1Li + 1 (x) + . . . + fnLn (x) (1)
(x-x 0 )(x-x1 ) . . . (x-xi-1 )(x-xi+1 ) . . . (x-x n )
Li (x) = , i = 0,1,...,n (2)
(xi -x 0 )(xi -x1 ) . . . (xi -xi-1 )(xi -xi+1 ) . . . (xi -x n )
De la definicin (2):
Li (xi ) = 1, i=0,1,...,n (Por simplificacin directa)
Li (xk ) = 0 , k=0,1,...,n; k i , (Contiene un factor nulo para algn j = 0, 1, . . . , n; ji)
pn (x 0 ) = f0L0 (x 0 ) + f=
1L1 (x 0 ) + . . . + fnLn (x 0 ) f=
0 (1) + f1 (0) + . . . + fn (0) f0
pn (x1 ) = f0L0 (x1 ) + =
f1L1 (x1 ) + . . . + fnLn (x 1 ) f=
0 (0) + f1 (1) + . . . + fn (0) f1
...
pn (xn ) = f0L0 (xn ) + f=
1L1 (x n ) + . . . + fnLn (x n ) f=
0 (0) + f1 (0) + . . . + fn (1) fn
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.
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)
2 (x-x j )
Li (x) =
j=0,j i (xi -x j )
, i=0, 1, 2
Se puede verificar que este polinomio incluye a los tres puntos dados.
Ejemplo. Dados los siguientes puntos: (2, 5), (4, 6), (5, 3)
2 (3-x j )
Li (3) =
j=0,j i (xi -x j )
, i=0, 1, 2
La frmula de Lagrange involucra dos ciclos anidados que dependen del nmero de datos n:
n
pn (x) =
i=0
fi Li (x)
n x-x j
Li (x) =
j=0,j i x -x
, i = 0, 1, . . . , n
i j
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).
function p = lagrange(x, f, v)
n=length(x);
if nargin==2
syms t; %variable para construir el polinomio
else
t=v; %evaluar el polinomio con el valor dado
end
p=0;
for i=1:n
L=1;
for j=1:n
if i ~= j
L=L*(t-x(j))/(x(i)-x(j));
end
end
p=p+L*f(i); %entrega p(t) simblico o el valor el valor interpolado
end
if nargin==2
p=expand(p); %simplificacin algebraica (expandir factores)
end
173
>> p=lagrange(x,f)
p=
-7/6*t^2+15/2*t-16/3
174
Ejemplo. Se tienen tabulados los siguientes datos f(x,y) de una funcin f que depende de
las variables independientes x, y. Usar todos los datos disponibles para estimar mediante
interpolacin polinomial el valor de f(3,12)
y
5 10 15 20
x
2 3.7 4.2 5.8 7.1
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=0
i i 0 0 (x) + f1L1 (x) + f2L2 (x) ;
2 (x-x j )
Li (x) =
j=0,j i (xi -x j )
, i=0, 1, 2
Para completar la interpolacin en X, ahora se deben sustituir los datos de cada columna:
y 5 10 15 20
3
p3 (y) = fL (y) = f L
i=0
i i 0 0 (y) + f1L1 (y) + f2L2 (y) + f3L3 (y) ;
3 (y-y j )
Li (y) =
j=0,j i (yi -y j )
, i=0, 1, 2, 3
Resultado final:
y=12: p3 (12) = f0L0 (12) + f1L1 (12) + f2L2 (12) + f3L3 (12)
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.
>> y = [5, 10, 15, 20]; Interpolacin en y con los resultados parciales
>> f = [r1, r2, r3, r4];
>> p = lagrange(y, f, 12)
p= Resultado final
5.1121
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.
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. 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
Si se aproxima f(x) con p2(x) se introduce un error cuyo valor es f(x) p2(x)
En el caso general, se tienen los puntos (xi, fi), i=0, 1, ..., n, pero f es desconocida
pn(t)
...
f(t)
En los puntos dados el error es cero: En(xi) = f(xi) pn(xi) = 0, i=0,1,..., n, pero es
importante establecer una cota para el error en la interpolacin en cualquier punto t: En(t) =
f(t) pn(t)
179
n
Sean g(x) = (x x ) = (x-x0)(x-x1) ... (x-xn),
i=0
i
g es un polinomio de grado n+1
La n+1 derivada de h:
h(n+1)(x) = f(n+1)(x) 0 (n+1)! En(t)/g(t)
Se obtiene finalmente:
En(t) = g(t) f(n+1)(z)/(n+1)!, txi, z[x0, xn]
En el siguiente captulo se introduce una tcnica para estimar f(n+1)(z) con los puntos de f.
180
Suponer que se tienen los puntos (xi, fi), i=0, 1, ..., n, tales que las abscisas estn
espaciadas regularmente en una distancia h: xi+1 - xi = h, i=0, 1, ..., n-1
...
Definiciones
1f0 = f1 - f0
1f1 = f2 - f1, etc
Cada diferencia finita se obtiene restando los dos valores consecutivos de la columna
anterior.
La funcin diff de MATLAB entrega la derivada de una funcin, pero si la funcin est
definida mediante puntos, diff proporciona las diferencias finitas de orden sucesivo:
De donde:
f1 f 0 1f0
=
f '(z) = , 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
n f0
f (n) (z) = , para algn z en el intervalo [x0, xn].
hn
n f0
es una aproximacin para f(n) en el intervalo [x0, xn].
hn
Si se usa esta aproximacin para acotar el error, se debera tomar el mayor valor de la
diferencia finita tabulada respectiva. En general, esta aproximacin es aceptable si los
valores de las diferencias finitas en cada columna no cambian significactivamente y tienden
a reducirse.
Demostracin:
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
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:
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)
a0 = f0
f1 f0 f0
=a1 =
x1 x 0 h
f0
p 1(x) =
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:
a0 = f0
f1 f0 f0
=a1 =
x1 x 0 h
f2 f1 f f f1 f0
1 0
x 2 x1 x 1 x 0 h h f1 f0 2 f0
=a2 = = =
x2 x0 2h 2h2 2h2
f0 2 f0
p2 (x) =f0 + (x x 0 ) + (x x 0 )(x x1 )
h 2h2
f0 2 f0 3 f0
pn (x) =f0 + (x x 0 ) + (x x 0 )(x x 1 ) + (x x 0 )(x x1 )(x x 2 ) + ...
h 2!h2 3!h3
n f0
+ (x x 0 )(x x1 )...(x xn1 )
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):
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
i xi fi fi 2fi 3fi
0 2 5 1 -4 6
1 3 6 -3 2
2 4 3 -1
3 5 2
f0 2 f0 3 f0
p3 (x) =+
f0 (x x 0 ) + (x x 0 )(x x 1 ) + (x x 0 )(x x1 )(x x 2 )
h 2!h2 3!h3
>> d1=diff(f)
d1 =
1 -3 -1
>> d2=diff(d1)
d2 =
-4 2
>> d3=diff(d2)
d3 =
6
>> syms t
>> p = 5+1/1*(t-2) + (-4)/(2*1^2)*(t-2)*(t-3) + 6/(6*1^3)*(t-2)*(t-3)*(t-4)
p=
t - (2*t - 4)*(t - 3) + (t - 2)*(t - 3)*(t - 4) + 3
Simplificacin algebraica
>> p = expand(p)
p=
t^3 - 11*t^2 + 37*t 33
( )( ) ( )( )( )
7
0
0 1 2 3 4 5 6
t
>> q=inline(p);
>> y=q(2.5)
y=
6.3750
(x x 0 ) (x x1 ) (x x 2 ) (x xn 2 ) n1 (x xn 1 )
pn (x) = f0 + ( f0 + ( f0 + ( f0 + ... + ( f0 + f0 )...)))
2 3 n
h 2h 3h (n 1)h nh
Ejemplo. Dados los siguientes puntos: (1.2, 5), (1.4, 6), (1.6, 3), (1.8, 2), use el algoritmo
recursivo anterior para evaluar en x=1.5 el polinomio de interpolacin que incluye a los
cuatro datos.
p 0 = 3 f0 p0 = 6
(x x 2 ) (1.5 1.6)
p1 = 2 f0 + p0 p1 =4 + 6 =5
3h 3(0.2)
(x x 1 )
p2 = 1f0 + p1 (1.5 1.4)
2h p2 =1+ ( 5) =0.25
2(0.2)
(x x 0 )
p3 = 0 f0 + p2 (1.5 1.2)
h p3 =
5+ ( 0.25) =
4.625
0.2
189
f (n+1) (z)
En (x) = g(x) , xxi, z[x0, xn ], siendo g(x) = (x-x0)(x-x1) ... (x-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:
n f0
f (n) (t) = , para algn t en el dominio de los datos dados
hn
Se usa como una aproximacin para la derivada si no cambia significativamente y h es
pequeo.
n+ 1f0
En (x) (x x 0 )(x x1 )...(x xn )
hn+ 1(n + 1)!
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
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.
f0 2 f0
f(x) p2 (x) =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
E2 (x) (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
El error exacto es
El valor calculado con el polinomio de interpolacin de segundo grado concuerda muy bien
con el valor exacto.
191
S S S S n
S
pn (S) =f0 + f0 + 2 f0 + 3 f0 + ... + n f0 =
1 2 3 n
i i f0
i= 0
n+ 1f0
En (x) (x x 0 )(x x1 )...(x xn )
hn+ 1(n + 1)!
x x0
Sustituyendo la definicin S =
h
n+1f0
En (S) S(S 1)(S 2)...(S n)
(n + 1)!
192
S n+ 1 x x0
En (S) =f0 , S , x xi
n + 1 h
S S + 1 2 S + 2 3 S + n 1 n
pn (x) = pn (S) =+fi fi1 + fi 2 + fi 3 + ... + fin
1 2 3 n
S + n n+ 1 (n+ 1) x xi
=E = h y (z), s
n + 1 h
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
1 2 3 n
S + n n+ 1 (n+ 1) x xi + 1
=E = h y (z), s
n + 1 h
193
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.
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)
a=
0 f=
0 f[x 0 ]
f1 f0
=a1 = f[x 0:1 ]
x1 x 0
p1(x) =
f[x 0 ] + f[x 0:1 ](x x 0 )
f1 f0 f[x1 ] f[x 0 ]
=
f[x 0:1 ] = 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:
a=
0 f=
0 f[x 0 ]
f1 f0 f[x1 ] f[x 0 ]
=a1 = = f[x 0:1 ]
x1 x 0 x1 x 0
f2 f1 f f
1 0
x 2 x1 x 1 x 0 f[x1:2 ] f[x 0:1 ]
=a2 = = f[x 0:2 ]
x2 x0 x2 x0
p2 (x)= f[x 0 ] + f[x 0:1 ](x x 0 ) + f[x 0:2 ](x x 0 )(x x1 )
194
Al extender la recurrencia y generalizar al conjunto de puntos (xi, fi), i=0, 1,, n se tiene:
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 )
Los coeficientes del polinomio de interpolacin sern los valores resultantes colocados en la
primera fila del cuadro tabulado (fila sombreada):
3 x3 f[x3] f[x3:4]
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:
5 / 6 (7 / 6) 2
65 1 3 1/ 2 7 =
0 2 5 = = 72 5
42 2 52 6
36 1/ 2 (3) 5
1 4 6 = 3 =
54 74 6
23 1
2 5 3 =
75 2
3 7 2
p3 (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 )
p3 (x) =+
5 (1/ 2)(x 2) + (7 / 6)(x 2)(x 4) + (2 / 5)(x 2)(x 4)(x 5)
2 167 2 227 64
= x3 x + x
5 30 10 3
0
0 1 2 3 4 5 6 7 8
x
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 )
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.
n n n
Minimizar S= 2
i e = (f p(x )) = (f a
=i 1=i 1
i i
2
=i 1
i 1 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:
S n n n
( fi a1 a2 xi ) =0 na1 + a2 xi = fi
2
=0:
a 1 a 1 i 1
= =i 1=i 1
S n n n n
( fi a1 a2 xi ) =0 a1 xi + a2 xi2 = xi fi
2
= 0:
a 2 a 2 i 1
= =i 1 =i 1=i 1
p(x) = a1 + a2 x
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.
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)
s(k) = 13 + 23 + 33 + . . . + k3, k = 1, 2, 3, 4,
a) Use los cuatro datos para construir un polinomio para expresar esta relacin
b) Con el polinomio determine el porcentaje de ingreso econmico que le corresponde al
60% de la poblacin
c) Con el polinomio determine a que porcentaje de la poblacin le corresponde el 60% de
ingreso econmico global. Resuelva la ecuacin resultante con el mtodo de Newton
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)
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.
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
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 100 91 83
1.1 110 100 92
Q 1.2 120 109 100
1.3 130 118 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
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.
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)
2
2 3 4 5 6 7 8
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
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.
p(x) = ai (x xi )3 + bi (x xi )2 + ci (x xi ) + di (0)
x i x x i+ 1, =i 1,2,...,n 1
Los puntos no necesariamente estn espaciados en forma regular por lo que conviene
asignar un nombre a cada una de las distancias entre puntos consecutivos:
El siguiente desarrollo basado en las condiciones requeridas para p(x) permite obtener los
coeficientes del polinomio.
Si + 1 Si
De donde se obtiene ai = (6)
6hi
Si + 1 Si 3 Si 2
yi+1 = hi + hi + ci hi + yi
6hi 2
De donde se obtiene:
yi + 1 yi 2hi Si + hi Si + 1
ci = (7)
hi 6
Con lo que los coeficientes de p(x) quedan expresados mediante los datos dados y los
valores de las segundas derivadas S
208
Si + 1 Si
ai =
6hi
Si
bi = (8)
2
y yi 2hi Si + hi Si + 1
ci = i + 1
hi 6
di = yi i = 1, 2, ..., n-1
En el punto intermedio entre dos intervalos adyacentes, la pendiente de los polinomios debe
ser igual:
x=xi: yi = 3ai-1(xi xi-1)2 + 2bi-1(xi xi-1) + ci-1 = 3ai-1 hi-12 + 2bi-1 hi-1 + ci-1
yi + 1 yi yi yi 1
hi-1Si-1 + 2(hi-1 + hi)Si + hiSi+1 = 6 ( ) , i = 2, 3, ..., n-1 (9)
hi hi 1
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
hi-1Si-1 + 2(hi-1 + hi)Si + hiSi+1 = 6 ( ) , i = 2, 3, ..., n-1 (9)
hi hi 1
S1 = 0, Sn = 0 (10)
Si + 1 Si
ai =
6hi
Si
bi = (8)
2
yi + 1 yi 2hi Si + hi Si + 1
ci =
hi 6
di = yi i = 1, 2, ..., n-1
y = p(x) = ai (x xi )3 + bi (x xi )2 + ci (x xi ) + di (0)
x i x x i+ 1, =i 1,2,...,n 1
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
yi + 1 yi yi yi 1
hi-1Si-1 + 2(hi-1 + hi)Si + hiSi+1 = 6 ( ) , i = 2, 3, 4
hi hi 1
y3 y2 y2 y1
i = 2: h1S1 + 2(h1 + h2)S2 + h2S3 = 6 ( )
h2 h1
96 65
2(0) + 2(2 + 1)S2 + 1S3 = 6 ( ) 6S2 + S3 = 15
1 2
y y3 y3 y2
i = 3: h2S2 + 2(h2 + h3)S3 + h3S4 = 6 ( 4 )
h3 h2
59 96
1S2 + 2(1 + 3)S3 + 3S4 = 6 ( ) S2 + 8S3 + 3S4 = -26
3 1
y y 4 y 4 y3
i = 4: h3S3 + 2(h3 + h4)S4 + h4S5 = 6 ( 5 )
h4 h3
59 96
3S3 + 2(3 + 2)S4 + 2(0) = 6 ( ) S3 + 10S4 = 5
3 1
6 1 0 S2 15 S2 3.2212
1 8 3 S = 26 Resolviendo este sistema resulta S = 4.3269
3 3
0 3 10 S4 5 S 4 1.7981
ai bi ci di
0.2684 0 -0.5737 5
-1.2580 1.6106 2.6474 6
0.3403 -2.1635 2.0946 9
-0.1498 0.8990 -1.6987 5
211
Los coeficientes corresponden a los cuatro polinomios segmentarios del trazador cbico
natural segn la definicin inicial en la ecuacin (0):
Debido a que el sistema resultante es de tipo tridiagonal, se usa un mtodo especfico muy
eficiente para resolver estos sistemas. Debe haber por lo menos 3 puntos datos.
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
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
>> f=p{1};
>> ezplot(f,[2,4]), grid on
>> 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
Trazador cbico
7 natural
Polinomio de interpolacin
3
2
2 3 4 5 6 7 8
t
Puede observarse la notable mejora en el modelo para representar a los datos dados.
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
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
y2 y1 2h1S1 + h1S2
u=
h1 6
215
De donde se obtiene:
1 1 y y1
h1S1 h1S2 =
u 2 (11)
3 6 h1
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
1 1 y yn 1
hn 1Sn 1 + hn 1Sn =
v n (12)
6 3 hn 1
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
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 (11)
3 6 h1
yi + 1 yi yi yi 1
hi-1Si-1 + 2(hi-1 + hi)Si + hiSi+1 = 6 ( ) , i = 2, 3, ..., n-1 (9)
hi hi 1
1 1 y yn 1
hn 1Sn 1 + hn 1Sn = v n (12)
6 3 hn 1
Si + 1 Si
ai =
6hi
Si
bi = (8)
2
yi + 1 yi 2hi Si + hi Si + 1
ci =
hi 6
di = yi i = 1, 2, ..., n-1
y = p(x) = ai (x xi )3 + bi (x xi )2 + ci (x xi ) + di
(0)
x i x x i+ 1, =i 1,2,...,n 1
217
Debido a que el sistema resultante es de tipo tridiagonal, se usa un mtodo especfico muy
eficiente para resolver estos sistemas. Debe haber por lo menos 3 puntos datos.
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:
>> 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
>> f=p{1};
>> ezplot(f,[2,4]), grid on
>> 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
7
Trazador cbico
natural
6
Polinomio de
4 interpolacin
3 Trazador cbico
sujeto
2
2 3 4 5 6 7 8
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.
7
Trazador cbico
natural
6
Polinomio de
4 interpolacin
3 Trazador cbico
Trazador cbico sujeto
spline
2
2 3 4 5 6 7 8
t
Se puede concluir que para los datos dados en este ejemplo, el modelo ms conveniente es
el que proporciona el trazador cbico sujeto con pendiente horizontal en los extremos.
221
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)
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
(2, 3), (4, 5), (5, 8), (7, 3), (8, 1), (9, 1)
7 INTEGRACIN NUMRICA
Introducimos este captulo mediante un problema de inters prctico en el que el modelo
matemtico resultante es la evaluacin de un integral. El objetivo es evaluar numricamente
un integral y estimar la precisin del resultado.
Problema.
La siguiente funcin es bsica en estudios estadsticos y se
1
denomina funcin de densidad de la distribucin Normal 1 z2
f(z) = e 2
Estndar: Esta funcin permite calcular la probabilidad, P, 2
que la variable Z pueda tomar algn valor en un intervalo [a, b] z
segn la siguiente definicin:
b
P(a Z b) = f(z)dz
a
Sea f una funcin integrable y acotada definida en un intervalo [a, b] con a<bR.
En ambos casos se trata de sustituir f(x) por alguna funcin ms simple, siendo importante
adems estimar la precisin del resultado obtenido.
223
f(x) p1(s) = f0 + f0 s
En general, la aproximacin mediante una sola recta en el intervalo [a, b] tendra poca
precisin por lo que conviene dividir el intervalo [a, b] en m sub-intervalos y colocar en cada
uno, una recta cuyos extremos coinciden con f(x).
La figura geomtrica en cada intervalo es un trapecio. Sea Ai el rea del trapecio i y sea Ti
el error de truncamiento respectivo, es decir la diferencia entre el rea debajo de f(x) y el
rea de cada trapecio i, i = 1, 2, 3, , m. El rea se puede aproximar con:
b m
A = f(x)dx A1 + A2 + A3 + . . .+ Am = A
i=1
i
a
Mientras que el error de truncamiento total ser:
T = T1 + T2 + T3 + . . . + T m
A = A1 + A2 + . . . + Am
ba
m: cantidad de franjas espaciadas regularmente en h, siendo h =
m
Para obtener la frmula es suficiente encontrar el valor del rea de un trapecio y luego
extender este resultado a las dems, como se indica a continuacin.
[ ]
1 1
1 1
A1 = (f0 + f0 s)hds = h f0s +
2
f0s2
0
= h [f0 +
2
(f1 f0)]
0
h
A1 = [f0 + f1], es la conocida frmula de la geometra para el rea de un trapecio
2
m-1
h h
A [f0 + 2f1 + 2f2 + .. + 2fm-1 + fm] = [f0 + 2 fi + fm],
2 2 i=1
m es la cantidad de trapecios.
Sin embargo, es necesario poder contestar una pregunta fundamental: Cul es la precisin
del resultado calculado?
s
E1(s) = h2f(2)(z1), x0<z1<x1
2
Clculo del rea correspondiente al error en el uso del polinomio para aproximar a f
x1 x1 x1
s 2 (2) 1
E1(s)dx = 2 h f (z1)dx = 2 s(s 1)h
2 (2)
T1 = f (z1 )dx
x0 x0 x0
s = (x x0)/h
x = x0 S = 0
x = x1 S = 1
dx = h ds
1
h3
T1 =
2 s(s 1)f ''(z1)ds ,
0
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
T1 = f(z1) s(s 1)ds , x0<z1<x1
2 0
Luego de integrar se obtiene
h3
T1 = - f(z1), x0<z1<x1
12
h2
T= (b a) f(z), a z b
12
Siendo z desconocido, para acotar el error se puede usar un criterio conservador tomando el
mayor valor de |f(z)|, azb. Este criterio no proporciona una medida muy precisa para el
error y su aplicacin puede ser un problema ms complicado que la misma integracin, por
lo cual se puede intentar usar como criterio para estimar el error, la definicin de
convergencia indicada al inicio de esta seccin, siempre que f sea una funcin integrable y
acotada:
m
m A
i=1
i A
m m'
Sean Am = A
i=1
i , Am' = A
i=1
i dos aproximaciones sucesivas con m' > m trapecios
T |Am - Am'|
| Am Am' |
t
| 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.
h2
T=- (b a) f(z), a z b
12
2 fi
f(z)
h2
(b-a)
T |- | max(| fi |)
2
12
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
max | f(z) | = 1
h2
| (2 0) (1)| < 0.0001
12
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
cos(z) sen(z)
f=
''(z) zsen(z) , 0<z<2
z 4 z3
Problema demasiado complicado para estimar el mayor valor de la derivada y acotar el
error.
En esta situacin, se puede estimar el error comparando resultados con valores sucesivos
de m hasta que la diferencia sea suficientemente pequea. Para los clculos conviene
instrumentar una funcin en MATLAB.
En este ejemplo no se pueden tabular las diferencias finitas para estimar f''(x) con 2f(x)
pues m no est especificado
En este caso, se tabulan los cinco puntos de f(x) para estimar el error, aproximando la
derivada con la diferencia finita respectiva:
X f f 2f
0.0 0.0000 0.3390 0.1635
0.5 0.3390 0.5025 -0.1223
1.0 0.8415 0.3802 -0.3159
1.5 1.2217 0.0643
2.0 1.2859
(b-a) (2-0)
T |- | max(| fi |) =
2
(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)
0.1
A= [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
X f f 2f
0.1 1.8 0.8 -0.4
0.2 2.6 0.4 -0.6
0.3 3.0 -0.2 -0.7
0.4 2.8 -0.9
0.5 1.9
(b-a) (0.5-0.1)
T |- | max(| fi |) =
2
(0.7) = 0.0233
12 12
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.
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
>> syms x;
>> f = sin(x);
>> t = trapecios(f, 0, 2, 5)
t=
1.397214...
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.
2
Ejemplo. La siguiente funcin no es integrable analticamente: S= 0 x s en(x)dx
Use la frmula de los trapecios para obtener la respuesta aproximada y estimar el error.
>> r=trapecios(f,0,2,10) 1
r= 0.8
1.5313 0.6
r= 0.2
1.5323 0
>> r=trapecios(f,0,2,40)
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
r= x
1.5326
>> r=trapecios(f,0,2,50)
r=
1.5326
Esta frmula usa como aproximacin para f un polinomio de segundo grado, o parbola:
1 2
f(x) p2(s) = f0 + f0 s + f0 s(s-1)
2
b x2 x4 xm
A= f(x)dx p2 (s)dx + p2 (s)dx + . + p 2 (s)dx
a x0 x2 x m 2
A A1 + A2 + . + Am/2
h=(b-a)/m
Para obtener la frmula se debe encontrar el valor del rea para una parbola:
x2 x2
1
p2 (s)dx = [f0 + fs s + 2 f0 s(s 1)] dx
2
A1 =
x0 x0
A = A1 + A2 + . + Am/2
h
A= [f0 + 4f1 + 2f2 + 4f3 +.. + 2fm-2 + 4fm-1 + fm]
3
m es un parmetro para la frmula (debe ser un nmero par)
h 180
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)
La suma del rea debajo de las dos parbolas, con la frmula anterior:
233
h
A= [f0 + 4f1 + 2f2 + 4f3 + f4]
3
0.1
A= (1.8 + 4(2.6) + 2(3.0) + 4(2.8) + 1.9) = 1.0433
3
Este resultado es aproximadamente igual al rea debajo de f.
X f f 2f 3f 4f
0.1 1.8 0.8 -0.4 -0.2 0.1
0.2 2.6 0.4 -0.6 -0.1
0.3 3.0 -0.2 -0.7
0.4 2.8 -0.9
0.5 1.9
h4
T= (b a) f(4)(z), a<z<b
180
(b-a) (0.5-0.1)
T |- | max| fi | =
4
(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
b
=
Longitud del arco: S a
1 + [f '(x)]2 dx
2 2
=s
0
=
g(x)dx 0
1 + cos2 (x)dx
ba 20
=h = = 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
Dado que m est especificado, se usa una aproximacin de diferencias finitas para
aproximar la derivada en la frmula del error de truncamiento
h4
T= (b a) f(4)(z), a<z<b
180
X f f 2f 3f 4f
0.0 1.4142 -0.0837 -0.1101 0.1698 -0.0148
0.5 1.3305 -0.1938 0.0597 0.1551
1.0 1.1366 -0.1341 0.2148
1.5 1.0025 0.0806
2.0 1.0831
(b-a) (2-0)
T|- | max( fi )=
4
(0.0148) = 0.00016
180 180
function r = simpson(f, a, b, m)
f=inline(f);
h=(b-a)/m;
s=0;
for i=1:m-1
s=s+2*(mod(i,2)+1)*f(a+i*h); %Sumar trminos con coeficientes 4,2,4,2,...,4
end
r=h/3*(f(a) + s + f(b));
Ejemplo. Integrar f ( x=
) 1 + cos 2 ( x ) 0x2, con la frmula de Simpson iterativamente
hasta que el error de truncamiento sea menor que 0.0001
>> syms x
>> f = sqrt(1+(cos(x))^2);
>> r=simpson(f,0,2,4)
r=
2.3504
>> r=simpson(f,0,2,8)
r=
2.3516
>> r=simpson(f,0,2,12)
235
r=
2.3517
>> r=simpson(f,0,2,16)
r=
2.3517
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
ba
Siendo m = , cuando h 0 m R puede crecer
h
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
-2
-4
-6
>> h=f - g;
>> a=biseccion(h, 1, 1.5, 0.0001)
a=
1.2337
>> b=biseccion(h, 3, 3.2, 0.0001)
b=
3.0407
Finalmente se integra:
El ejemplo usa este mtodo para obtener una frmula de tres puntos espaciados en h:
Frmula propuesta
2h
A= f(x)dx = c0 f(0) + c1f(h) + c2 f(2h)
0
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 = 2h = c0 f(0) + c1f(h) + c2 f(2h) = c0 (1) + c1(1) + c2 (1) c0 + c1 + c2 = 2h
0
2) f(x) = x,
2h
A= xdx = 2h2 = c0 f(0) + c1f(h) + c2 f(2h) = c0 (0) + c1(h) + c2 (2h) c1 + 2c2 = 2h
0
3) f(x) = x2,
2h
8 3 8
A= x dx= h = c0 f(0) + c1f(h) + c2 f(2h)= c0 (0) + c1(h2 ) + c2 (4h2 ) c1 + 4c2=
2
h
0
3 3
h 4h h
=
Resolviendo las tres ecuaciones resultantes se obtienen: c0 =, c1 =, c2
3 3 3
Reemplazando en la frmula propuesta se llega a la conocida frmula de Simpson
h
A= (f(0) + 4f(h) + f(2h))
3
238
Si se elimina la restriccin de que los puntos sean fijos y equidistantes, entonces las
frmulas de integracin contendrn incgnitas adicionales.
La cuadratura de Gauss propone una frmula general en la que los puntos incluidos no son
fijos como en las frmulas de Newton-Cotes:
b
=
A f(x)dx
= c0 f(t 0 ) + c1f(t1 ) + ... + cm f(t m )
a
Los puntos t0, t1, ..., tm, son desconocidos. Adicionalmente tambin deben determinarse los
coeficientes c0, c1, ..., cm
Frmula propuesta
b
=A f(x)dx
= c0 f(t 0 ) + c1f(t1 )
a
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 )
1
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 = (1)dt = 2 = c0 f(t0 ) + c1f(t1) =c0 (1) + c1(1) 2 = c0 + c1
1
1
2) f(t)=t, A = tdt = 0 = c0 f(t0 ) + c1f(t1) =c0 t0 + c1t1 0 = c0 t0 + c1t1
1
1
2 2
3) f(t)=t2, A = t dt = = c0 f(t 0 ) + c1f(t1 ) =c0 t 02 + c1t12 = c0 t 20 + c1t12
2
1
3 3
1
4) f(t)=t3, A = t dt = 0 = c0 f(t 0 ) + c1f(t1 ) =c0 t 30 + c1t13 0 = c0 t 30 + c1t13
3
1
239
Se genera un sistema de cuatro ecuaciones no-lineales. Una solucin para este sistema se
obtiene con facilidad mediante simple sustitucin:
1
1 1
A= f(t)dt =c0 f(t 0 ) + c1f(t1 ) =
f(
3
) + f(
3
)
1
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
Ejemplo. Calcule = (2t + t 2 1)dt
3
A
1
1
1 1 1 3 1 2 1 1
f(t)dt =
A= f(
3
) + f( ) =
3
[2(
3
) + (
3
) 1] + [2( )3 + ( )2 1] =
3 3
-4/3
1
ba b+a
=
Sea x t+
2 2
ba
Se tiene que t = 1 x = b, t = -1 x = a, dx = dt
2
Sustituyendo se tiene
2
Ejemplo. Calcule A = xe x dx con la frmula de la Cuadratura de Gauss con dos puntos
1
(m=1)
b 1
ba ba b+a ba
A = f(x)dx = f( t+ )dt [f(t 0 ) + f(t1 )],
a
2 1 2 2 2
ba 1 b+a ba 1 b+a
t0 =
+ , t1 = +
2 3 2 2 3 2
21 1 2+1 1 3
t0 = + = + =1.2113
2 3 2 2 3 2
21 1 2+1 1 3
=
t1 + = += 1.7886
2 3 2 2 3 2
1
A [ 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
5
Ejemplo. Calcule el valor del integral A = 1 + 5u + u du
0
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
5 5
A= 1 + 5u + u du ,
0
2
f(u) =
1 + 5u + u2
b
ba ba 1 b+a ba 1 b+a
A= f(x)dx= 2
f(
2 3
+
2
) + f(
2 3
+ )
2
a
1/ 2
1/ 2 0 1/ 2 0 1 1/ 2 + 0 1/ 2 0 1 1/ 2 + 0
m=1: A f(u)du =
2 f(
2 3
+
2
) + f(
2 3
+
2
)
0
= 0.25(3.2479 + 1.598) = 1.2117
1/ 4 1/ 2
m=2 : A f(u)du + f(u)du
0 1/ 4
1/ 4 0 1/ 4 0 1 1/ 4 + 0 1/ 4 0 1 1/ 4 + 0
= f( 2 + ) + f( + )
2 3 2 2 3 2
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 3 2 2 3 2
= 1.2237
241
1/ 6 2/6 3/6
m=3 : A f(u)du + f(u)du + f(u)du
0 1/ 6 2/6
= 1.2251
function s = cgauss(f, a, b)
f=inline(f);
t1=-(b-a)/2*1/sqrt(3)+(b+a)/2;
t2= (b-a)/2*1/sqrt(3)+(b+a)/2;
s = (b-a)/2*(f(t1) + f(t2));
2
Ejemplo. Use la funcin cgauss para calcular A = xe x dx
1
>> 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.
>> syms x;
>> f=x*exp(x);
>> s=cgauss(f,1,1.5) + cgauss(f,1.5,2)
s = 7.3886
242
m es la cantidad de sub-intervalos
function t=cgaussm(f, a, b, m)
h=(b-a)/m;
t=0;
x=a;
for i=1:m
a=x+(i-1)*h;
b=x+i*h;
s=cgauss(f,a,b);
t=t+s;
end
>> 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
Ocasionalmente puede ser de inters calcular integrales cuyos lmites no estn acotados,
por lo tanto no se pueden aplicar directamente las frmulas de integracin . Mediante alguna
sustitucin deben reducirse a una forma simple eliminando estos lmites impropios.
dx
Ejemplo. Calcule A = (1 + x2 )3 con la Cuadratura de Gauss, m = 1, 2, 4
0
Antes de la sustitucin conviene separar el integral en dos sub-intervalos
1
dx dx dx
(1 + x2 )3 =
A= (1 + x2 )3 + (1 + x2 )3 =
A1 + A 2
0 0 1
Resultados calculados:
1
sen(x)
Ejemplo. Calcule A = (x 1)2 / 3 dx con la frmula de Simpson, m = 4, y estimar el error
0
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 0 0 0
sen(x) sen(u3 + 1)
=
A (x 1)2 / 3=
dx u2
(3u2=
du) 3sen(u3 + 1)du
= f(u)du
0 1 1 1
Regla de Simpson, m = 4
h
A = [f0 + 4f1 + 2f2 + 4f3 + f4]
3
m = 4 h = 0.25
A = 0.25/3(f(-1)+4f(-0.75)+2f(-0.5)+4f(-0.25)+f(0)) = 1.9735...
X f f 2f 3f 4f
-1 0 1.6394 -0.9761 0.5090 -0.2124
-0.75 1.6394 0.6633 -0.4671 0.2966
-0.5 2.3026 0.1961 -0.1705
-0.25 2.4988 0.0256
0 2.5244
(b-a) (0 - (-1))
T|- | max(| fi |) =
4
(-0.2124) = -0.0012
180 180
1
sen(x)
Ejemplo. Calcule A = x
dx con la Cuadratura de Gauss con m = 1, 2
0
La frmula de la Cuadratura de Gauss no requiere evaluar f en los extremos, por lo tanto se
puede aplicar directamente:
b
ba ba 1 b+a ba 1 b+a
A= f(x)dx= 2
f(
2 3
+
2
) + f(
2 3
+ )
2
a
Aplicando la frmula una vez en cada uno de los intervalos [0, 0.5] y [0.5, 1] y sumando:
A = 0.94608
NOTA: Para calcular el integral no se puede aplicar la frmula de Simpson pues sta
requiere evaluar f(x) en los extremos. En este ejemplo, se tendra un resultado
indeterminado al evaluar en x = 0
e1/ x
Ejemplo. Calcule S = 2 x 5 / 3 dx con la frmula de Simpson, m=4.
Esta expresin no es integrable ni analtica, ni numricamente.
h t3
S= [f0 + 4f1 + 2f2 + 4f3 + f4], f(t) = 3te
3
(1/2)1/3
m=4 h= = 0.198425
4
y
b b b b b
V
3 f(x,y 0 )dx + 4 f(x,y1 )dx + 2 f(x,y 2 )dx + 4 f(x,y 3 )dx + . . .+ f(x,ym )dx
a a a a a
b
x
f(x, y0 )dx ( f(x0 , y0 ) + 4f(x1, y0 ) + 2f(x2 , y0 ) + 4f(x3 , y0 ) + . . . + f(xm , y0 ) )
a
3
b
x
f(x, y1)dx ( f(x0 , y1 ) + 4f(x1, y1) + 2f(x2 , y1) + 4f(x3 , y1) + . . . + f(xm , y1 ) )
a
3
b
x
f(x, y2 )dx ( f(x0 , y2 ) + 4f(x1, y2 ) + 2f(x2 , y2 ) + 4f(x3 , y2 ) + . . . + f (xm , y2 ) )
a
3
b
x
f(x, y3 )dx ( f(x0 , y3 ) + 4f(x1, y3 ) + 2f(x2 , y3 ) + 4f(x3 , y3 ) + . . . + f(xm , y3 ) )
a
3
. . .
b
x
f(x, ym )dx ( f(x0 , ym ) + 4f(x1, ym ) + 2f(x2 , ym ) + 4f(x3 , ym ) + . . . + f(xm , ym ) )
a
3
247
3 1 3 1
=V sen(x + y)dxdy = sen(x + y)dx dy, x =y =0.5
=
y 2=
x 0 20
0.5
1 1 1
V sen(x+2)dx + 4 sen(x+2.5)dx + sen(x+3)dx
3 0 0 0
1
0.5
sen(x + 2)dx ( sen(0 + 2) + 4sen(0.5 + 2) + sen(1 + 2) ) =
0.5741
0
3
1
0.5
sen(x + 2.5)dx ( sen(0 + 2.5) + 4sen(0.5 + 2.5) + sen(1 + 2.5) ) =
0.1354
0
3
1
0.5
sen(x + 3)dx ( sen(0 + 3) + 4sen(0.5 + 3) + sen(1 + 3) ) =
-0.3365
0
3
0.5
V [ 0.5741+ 4(0.1354) +(-0.3365)] =
0.1299
3
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
x y
= f(x 0 , y0 ) + 4f(x 0 , y1 ) + 2f(x 0 , y2 ) + 4f(x 0 , y3 ) + f(x 0 , y4 )
3 3
V
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
100 50
=V [ 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
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.
1 1
=
Ejemplo. Calcule V cos(x 2 + y)(x + y)dxdy con la regla de Simpson instrumentada
=
y 0=
x 0
Se observa que el integral entre el plano X-Y debajo de la superficie existe y est acotado.
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
1 2x 1 2x
=V
=
x 0=
y x
f(x,=
y)dydx
=
x 0=
y x
(x 2 + y3 )dydx ,
Frmula de Simpson con una parbola en cada direccin (m=2): x = 0.5: x = 0, 0.5, 1
x
2(0) 2(0.5) 2(1)
V f(0,y)dy + 4 f(0.5,y)dy + f(1,y)dy
3 0 0.5 1
Los lmites para integrar en Y as como la longitud y de los intervalos, cambian segn X:
0.5 0
=V { [ 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
Ejemplo. Calcule el valor del integral con la frmula de Simpson con m = 4 en cada
direccin.
e y x
0.5 0.5
V=
=
x0 x1/ 3 dx dy
y 0=
3u e y u du dy
3
V=
0 0
Esta funcin aunque es acotada, no es integrable analticamente, por lo que ahora se puede
integrar numricamente
2 y
sen(x + y)
Ejemplo. Calcule el valor del integral f(x, y) dx dy con f(x, y) =
2x
aproximada
= = 1
y 1x
Sea =
u 2 x : x = 1 u = 1, x = y =
u 2 y , x = 2 u2, dx = -2udu
2 y
sen(2 u2 + y)
2 2 1
=V u
(2udu)
= dy 2sen(2 u2 + y)du dy
1 1 1 2 y
y
1 1 1
V 2sen(2-u2 +1)du + 4 2sen(2-u2 +1.5)du +
2
2sen(2-u +2)du
3
2-1 2-1.5 2-2
0.5
1 1 1
3 1
V 2sen(2-u2 +1)du + 4 2sen(2-u2
+1.5)du + 2sen(2-u2
+2)du
0.5 0
252
2sen(2-u +1)du = 0
2
1
1
2sen(2-u
2
+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
0.5
2sen(2-u 2sen(2 02 + 2) + 4(2sen(2 0.52 + 2)) + 2sen(2 12 + 2) =
2
+2)du= -0.9673
0
3
0.5
V [ 0 + 4(0.2133)+(-0.9673)] =
0.0190
3
2
1. Se desea calcular numricamente A = ln(x)dx con la Regla de los Trapecios. Use la
1
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.
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
Con la frmula de Simpson, encuentre en forma aproximada el rea total cubierta por el
derrame de petrleo.
1 x
e t dt
2
5. La siguiente definicin se denomina funcin error: erf(x) =
0
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
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
a
(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]
1
11. Calcule el valor del integral A = dx . Use la Cuadratura de Gauss con dos
2 3x + 2
2
puntos.
1
dx
12. Calcule A = 1)1/ 3
.
1/ 2 (2x
a) Use directamente la Cuadratura de Gauss de dos puntos
b) Use la Regla de Simpson con m=4. Previamente debe usar una transformacin: t3 = 2x -1
dx
13. Calcule A = 1 + x4 Use la regla de Simpson, m=1,2,4 y estime el error
0
14. Calcule A = x 2 e x Use la Regla de Simpson con m=4 y estime el error
2
0
dx
15. Calcule A = x2 + x 2 . Aplique dos veces la cuadratura de Gauss de dos puntos
2
16. De una funcin contnua y diferenciable se conocen los siguientes puntos:
(x, f(x)): (3, 5.1), (4, 6.4), (6, 6.8), (7, 6.9), (8, 6.7)
Coloque el trazador cbico sobre los puntos y calcule el rea en el primer intervalo
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 1.2 1.4 1.6 1.8
x
1.8 2.5
=
18. Calcule A (x + y) sin(x)dxdy . Use la regla de Simpson en ambas direcciones,
1 0.5
con m=4
1 x
20. La funcin () = x e dx se denomina Funcin Gamma y es usada en algunos
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.
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
=
la velocidad de escape v est dada por: gR z 2dz; z
v 2 2=
1
R
Donde R = 6371 km. es el radio promedio de la tierra, g = 9.81 m/s2 es la constante
gravitacional. Utilice cuadratura Gaussiana para hallar v.
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)
0 x
dx
Aplique la Cuadratura de Gauss con uno, dos y tres subintervalos. Con estos resultados
estime la precisin del resultado de la integracin.
sin(x)1
25. Encuentre un valor aproximado del siguiente integral
1 x
0
dx
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
2y
sen(x y)
27. Se requiere calcular el valor del integral 2x
dxdy usando dos parbolas en
11
sen(x + y)
cada direccin para aproximar a f(x, y) =
2x
a) Escriba la formulacin matemtica del mtodo numrico que utilizar
b) Realice los clculos con cuatro decimales.
NOTA: No olvide transformar previamente el integral con alguna sustitucin que permita
eliminar el punto singular que se produce al evaluar f(x,y) en el lmite superior.
28. En el techado de las casas se utilizan planchas corrugadas con perfil ondulado. Cada
onda tiene la forma f(x) = sen(x), con un periodo de 2 pulgadas
El perfil de la plancha tiene 8 ondas y la longitud de cada onda se la puede calcular con
la siguiente integral: = + ( ())
Este integral no puede ser calculado por mtodos analticos.
30. Para que una funcin pueda usarse como un modelo matemtico para clcular probabilidad
debe cumplirse que el valor del integral en el dominio de la funcin sea igual a 1.
Determine el valor de la constante k para que esta funcin cumpla la definicin anterior.
Obtenga la respuesta con la frmula de Simpson usando una parbola en cada direccin.
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.
h2 hn hn + 1 (n+1)
(1) fi+1 = fi + hf i + f i + ... + f (n)i + f (z), xi z xi+1
2! n! (n + 1)!
h2 hn (n) hn + 1 (n+1)
(2) fi-1 = fi - hf i + f i - ... + f i- f (z), xi-1 z xi
2! n! (n + 1)!
fi + 1 fi fi
f i =
h h
h
E = - f (z) = O(h), xi z xi+1
2
259
h
h0 E = f (z) 0
2
Sin embargo, si h es demasiado pequeo, puede introducirse el error de redondeo como se
describe a continuacin. Este error se debe a la imprecisin en los clculos aritmticos o a
la limitada capacidad de representacin de los dispositivos de memoria de almacenamiento
de los nmeros reales.
Resultados obtenidos
Se observa que la precisin mejora cuando se reduce h, pero a partir de cierto valor de h el
resultado pierde precisin.
fi + 1 fi 1 h2
f i , E=- f (z) = O(h2), xi-1 z xi+1
2h 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
f 1 = = 6.7950, E=O(h)=O(0.1)
h 0.1
f f 3.9841 2.7183
f 1 2 0 = = 6.3293, E=O(h2)=O(0.01)
2h 2(0.1)
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)
f2 f1 3.9841 3.3046
f 1 = = 6.7950,
h 0.1
h h 2 fi 2 fi 0.1066
E = - f (z) =
=
=
0.5325
2 2 h2 2h 2(0.1)
f2 f0 3.9841 2.7183
f 1 = = 6.3293,
2h 2(0.1)
h2 h2 3 fi 3 fi 0.0133
E=- f (z) 3
=
=
=
0.0222
6 6 h 6h 6(0.1)
fi 1 2fi + fi + 1
f i
h2
h2 iv
E=- 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)
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, j {i, i+1, i+2, ..., i+m}
La derivada debe evaluarse en el punto j que debe ser alguno de los puntos que intervienen
en la frmula.
263
fi = cofi + c1fi+1 + E
.
264
f(xi + h) f(xi h)
=f '(xi ) + O(h2 ) El error de truncamiento es de segundo orden
2h
Si se define el operador D:
f(xi + h) f(xi h)
D(h) =
2h
=
f '(x i) D(h) + O(h2 )
6
Si se puede evaluar en h/2:
h2
D(h / 2) = fi(1) + A + O(h4 )
4
Para eliminar A se combinan estas dos expresiones:
D(h) 4D(h / 2) =+
fi(1) Ah2 + O(h4 ) 4fi(1) Ah2 + O(h2 ) =
3fi(1) + 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.
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;
4D(h / 2) D(h)
f '(xi ) =
1.7551
3
Para comparacin, estos datos fueron tomados de la funcin f(x)=x ex
Valor exacto f'(0.3) = 1.7548.... Se verifica que usando resultados con precisin limitada, se
obtuvo un resultado con mayor precisin.
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
2. La frmula de segundo orden f i 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:
Los mtodos numricos son una opcin importante para resolver estas ecuaciones cuando
la solucin analtica es muy complicada o no se puede obtener. Estos mtodos
instrumentados computacionalmente proporcionan soluciones aproximadas para analizar el
comportamiento de la solucin con respecto al problema propuesto. Adicionalmente se
puede experimentar numricamente con algunos aspectos de convergencia y estabilidad del
mtodo.
Un problema importante es determinar las condiciones para que la solucin exista y sea
nica, y conocer el dominio en el que la solucin tiene validez. Otros temas relacionados
son la sensibilidad de la solucin a los cambios en la ecuacin o en la condicin inicial y la
estabilidad de la solucin calculada, es decir el estudio de la propagacin de los errores en
el clculo numrico. Sin embargo, el objetivo principal es resolver la ecuacin.
En una EDO la incgnita es la funcin y(x) que satisface a la ecuacin en cierto dominio y a
las condiciones que normalmente se suministran para particularizar la ecuacin. Los
mtodos numricos proporcionan puntos de la funcin como una aproximacin a la solucin
analtica, y con una estimacin para la precisin.
267
ma = Fx = cv kx
Con los siguientes datos: m=5, c=0.25, k=0.8, x(0)=1, x'(0)=0. Graficar la solucin en el
intervalo 0 t 50
Para usar la funcin dsolve, se escribe la ecuacin diferencial y la condicin inicial entre
comillas. La primera derivada se escribe D la segunda derivada se escribe D2, etc..
Tambin se debe especificar cual es la variable independiente. El resultado es la solucin
analtica:
>> x=dsolve('D2x+0.25/5*Dx+0.8/5*x=0','x(0)=1,Dx(0)=0','t')
x=
cos((255^(1/2)*t)/40)/exp(t/40) + 55^(1/2)*sin((255^(1/2)*t)/40))/(255*exp(t/40))
Grfico de la solucin
d2 x c dx k
2
+ (x 1) + x=0
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')
Este mensaje indica que no se puede obtener la solucin analtica. En estas situaciones
toma inters el estudio de los mtodos numricos.
En la notacin de derivada:
dy
= f(x, y) , y(x0) = y0
dx
Su solucin es una funcin y(x) definida en algn intervalo, que satisface a la ecuacin e
incluye a la condicin inicial. La solucin de esta ecuacin se puede expresar integrando:
x x x
x0
dy = f(x, y)dx
x0
y(x) =y(x 0 ) + f(x, y(x))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
Condicin de Lipschitz
Sea la funcin f : A R, A R. Si existe una constante kR+ tal que
| f(a) f(b) | k | a b | , para a,b A, entonces f satisface la condicin de Lipschitz en A
Sea una ecuacin diferencial de primer orden con una condicin inicial:
y'(x)=f(x,y), y(x0)=y0, x0xxn
Solucin
h2 h3
yi+1 = yi + hy i + yi, E= y(z) = O(h3) = O(0.001) (Error de truncamiento)
2! 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
Puntos de la solucin:
h2
i=0: y1 = y0 + h(y0 - x20 + x0 + 1) + ( y0 - x20 - x0 + 2)
2
0.12
= 1 + 0.1(1 02 + 0 + 1) + ( 1 - 02 0 + 2) = 1.2150
2
x1 = x0 + h = 0 + 0.1 = 0.1
h2
i=1: y2 = y1 + h(y1 - x21 + x1 + 1) + ( y1 - x21 - x1 + 2)
2
0.12
= 1.2150 + 0.1(1.2150 0.12 + 0.1 + 1) + ( 1.2150 0.12 0.1 + 2) = 1.4610
2
x2 = x1 + h = 0.1 + 0.1 = 0.2
y(0.1) = 1.2152
y(0.2) = 1.4614
El error est en el orden de los diezmilsimos y concuerda con el orden del error de
truncamiento para esta frmula
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.
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); u, v contienen los puntos calculados
>> plot(u, v, 'o'); Grfico de los puntos calculados
>> g=dsolve('Dy-y-x+x^2-1=0','y(0)=1','x') Obtencin de la solucin analtica.
g = x+x^2+exp(x)
>> hold on;
>> grid on;
>> ezplot(g, [0,2]); Grfico de la solucin analtica
p( )
14
12
10
0
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
En la siguiente seccin se decribe una funcin para obtener las derivadas de y(x) = f(x,y)
computacionalmente.
273
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
>> 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
>> x=1.5;
>> y=2.3;
>> r=eval(d)
r=
-2.395803456310137
275
9.1.5 Instrumentacin de un algoritmo general para resolver una E.D.O con la serie
de Taylor
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:
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, ...
E = O(hk+2)
function [u,v]=taylorg(f,x,y,h,m,k)
f=char(f);
for j=1:k
d=char(derive(f,j));
d=[d,'+0*x+0*y'];
df{j}=inline(d);
end
f=[f,'+0*x+0*y'];
f=inline(f);
u=[ ];
v=[ ];
for i=1:m
t=y+h*f(x,y);
for j=1:k
t=t+h^(j+1)/factorial(j+1)*df{j}(x,y);
end
y=t;
x=x+h;
u(i)=x;
v(i)=y;
end
276
y= f(x,y) = y + x - x2 + 1 = 0, y(0)=1
>> f=y+x-x^2+1;
>> [u,v]=taylorg(f, 0, 1, 0.1, 5, 3)
u=
0.1000 0.2000 0.3000 0.4000 0.5000
v=
1.2152 1.4614 1.7399 2.0518 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
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
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:
Algoritmo para calcular puntos de la solucin de una EDO de primer orden con la
frmula de Euler
Ecuacin diferencial
y = f(x, y) = y + x - x2 + 1, x0 = 0, y0 = 1, h = 0.1
278
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
El error es significativo. Para reducirlo se pudiera reducir h. Esto hara que el error de
truncamiento se reduzca pero si la cantidad de clculos es muy grande, pudiera acumular
error de redondeo. Una mejor estrategia es usar mtodos ms precisos que no requieran
que h sea muy pequeo.
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.
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
y1 = y0 + h f(x0, y0) + E1
y2 = y1 + h f(x1, y1) + E2 = y0 + hf(x0, y0) + hf(x1, y1) + E1 + E2
y3 = y2 + h f(x2, y2) + E3 = y0 + hf(x0, y0) + hf(x1, y1) + hf(x2, y2) + E1 + E2 + E3
...
ym = y0 + hf(x0, y0) + hf(x1, y1) + hf(x2, y2) + . . . + hf(xm-1, ym-1) + E1 + E2 + E3 + ... + Em
h2
Siendo Ei = y(zi )
2
El error de truncamiento acumulado es:
xf x0 2
E = E1 + E2 + E3 + ... + Em = mh2( D ) = h ( D ) = h[( x f x 0 ) D ]
h
y"(zi )
En donde suponemos que existe un valor promedio D de los valores de ,
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 = R1 + R2 + R3 + . . . + Rm = m ( R ) = f ( R ) = [( x f x 0 ) R ]
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.
resultados con alta precisin. Esto retardar tambin el efecto del error de redondeo
acumulado R.
9.1.8 Instrumentacin computacional de la frmula de Euler
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).
function [u,v]=euler(f, x, y, h, m)
f=[f, '+0*x+0*y']; %Previene que f no tenga ambas variables
f=inline(f); %Se producira un error al evaluar f
u=[ ];
v=[ ];
for i=1:m
y=y + h*f(x,y);
x=x+h;
u(i)=x;
v(i)=y;
end
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]= euler(f, 0, 1, 0.1, 20); u, v contienen los puntos calculados
>> plot(u, v, 'o');
>> g=dsolve('Dy-y-x+x^2-1=0','y(0)=1','x') Obtencin de la solucin analtica.
g=
x+x^2+exp(x)
>> hold on;
>> grid on;
>> ezplot(g,[0,2]);
281
Para evaluar fi+1 = f(xi+1, yi+1) se usa yi+1 calculado con la frmula de Euler como
aproximacin inicial:
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, ...
h3
E= y(z) = O(h3), xi z xi+1 (Error de truncamiento en cada paso)
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.
Algoritmo para resolver una EDO de primer orden con la frmula de Heun
y = f(x, y) = x - x2 + y + 1, x0 = 0, y0 = 1, h = 0.1
Clculos
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
Una funcin en MATLAB para obtener puntos de la solucin de una EDO de primer orden
con una frmula aproximada equivalente a usar tres trminos de la Serie de Taylor pero sin
describir la derivada f(x,y). La funcin requiere nicamente f(x,y), el punto inicial (x0, y0) y
los parmetros h (paso o distancia entre puntos), y m (cantidad de puntos).
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, ...
function [u,v]=heun(f, x, y, h, m)
f=[f, '+0*x+0*y']; %Previene que f no tenga ambas variables
f=inline(f); %Se producira un error al evaluar f
u=[ ];
v=[ ];
for i=1:m
k1=h*f(x,y);
k2=h*f(x+h, y+k1);
y=y+0.5*(k1+k2);
x=x+h;
u(i)=x;
v(i)=y;
end
284
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); u, v contienen los puntos calculados
>> plot(u, v, 'o');
>> g=dsolve('Dy-y-x+x^2-1=0','y(0)=1','x') Obtencin de la solucin analtica.
g=
x+x^2+exp(x)
>> hold on;
>> grid on;
>> ezplot(g,[0,2]);
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:
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, ...
h5 (5)
E= y (z) = O(h5), xi z xi+1 (Error de truncamiento en cada paso)
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
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
y(0.1) = 1.2152
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).
function [u,v]=rk4(f, x, y, h, m)
f=[f, '+0*x+0*y']; %Previene que f no tenga ambas variables
f=inline(f); %Se producira un error al evaluar 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
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]= rk4(f, 0, 1, 0.1, 20); u, v contienen los puntos calculados
>> plot(u, v, 'o');
288
14
12
10
Solucin analtica
8
Solucin numrica
4
0
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
x
Los mtodos numricos desarrollados para una ecuacin diferencial ordinaria de primer
orden pueden extenderse directamente a sistemas de ecuaciones diferenciales de primer
orden.
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:
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
290
i=1: K1,y = hf(x1, y1, z1) = 0.1 f(0.1, 1.3150, 1.9150) = 0.333
K1,z = hg(x1, y1, z1) = 0.1 g(0.1, 1.3150, 1.9150) = -0.07
K2,y = hf(x1+h, y1+K1,y, z1+K1,z) = 0.1 f(0.2, 1.648, 1.845) = 0.3693
K2,z = hg(x1+h, y1+K1,y, z1+K1,z) = 0.1 f(0.2, 1.648, 1.845) = -0.0397
1
y2 = y1 + (K1,y + K2,y) = 1.6662
2
1
z2= z1+ (K1,z + K2,z) = 1.8602
2
x2= x1+ h = 0.1 + 0.1 = 0.2
Los resultados calculados con la frmula de Heun tienen al menos dos decimales exactos, y
coinciden aproximadamente con E=O(h3)
291
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 u, v, w contienen los puntos calculados
>> plot(u, w, 'o');
292
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
>> f=x + y + z;
>> g=-x + y - z;
>> [u, v, w]=rk42(f, g, 0, 1, 2, 0.1, 20);
>> plot(u, v, 'o'); hold on u, v, w contienen los puntos calculados
>> plot(u, w, 'o');
295
Analizamos el caso de una ecuacin diferencial ordinaria de segundo orden con condiciones
en el inicio, en la que y(x) y y(x) aparecen en forma explcita
Mediante la sustitucin
z = y
Se tiene
G(x, y, z, z) = 0
y y x + y + 1 = 0, y(0) = 1, y(0) = 2
i=0:
x0 = 0, y0 = 1, z0 = 2
1 1
y1 = y0 + (K1,y + 2K2,y + 2K3,y + K4,y) = 1 + [0.2+2(0.2)+2(0.1998)+0.1995] = 1.1998
6 6
1 1
z1 = z0 + (K1,z + 2K2,z + 2K3,z + K4,z) = 2 + [0+2(-0.005)+2(-0.0052)-0.0105]=1.9948
6 6
x1 = x0 + h = 0 + 0.1 = 0.1
297
>> f='z';
>> g='x - y + z - 1';
>> [u, v] = rk42(f, g, 0, 1, 2, 0.1, 20);
>> plot(u, v, 'o'), hold on u, v contienen los puntos calculados
>> y = dsolve('D2y-Dy-x+y+1=0','y(0)=1,Dy(0)=2','x') Solucin analtica
y=
x+1/3*3^(1/2)*exp(1/2*x)*sin(1/2*3^(1/2)*x)+exp(1/2*x)*cos(1/2*3^(1/2)*x)
>> ezplot(y, [0,2]); Superponer la solucin analtica
Calcular 20 puntos espaciados en una distancia 0.1 del ejercicio anterior usando la frmula
de Runge-Kutta de cuarto orden.
La sintaxis de MATLAB requiere que las funciones que sern evaluadas tengan todas las
variables. Por esto se colocan las variables faltantes multiplicadas por cero:
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.
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:
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.
>> f='z';
>> g='2*exp(x) - y + z+3';
>> x=0;
>> y=1;
>> z=1; Este valor es modificado en cada intento
>> [u,v] = rk42(f, g, x, y, z, 0.05, 20);
>> plot(u, v, 'o'), grid on, hold on u, v contienen los puntos calculados
301
Para sistematizar la eleccin del valor inicial es preferible usar una interpolacin para
asignar el siguiente valor de y(0) en los siguientes intentos.
Este mtodo tambin se puede usar para resolver ecuaciones diferenciales ordinarias no
lineales con condiciones en los bordes.
302
Es importante usar en la sustitucin aproximaciones del mismo orden para las derivadas, de
tal manera que la ecuacin de diferencias tenga consistencia en el error de truncamiento.
Ejemplo. Sustituya las derivadas por diferencias finitas en la EDO del ejemplo anterior
y - y + y - 2ex - 3 = 0, y(0) = 1, y(1) = 5
h2 2h
Siendo n la cantidad de divisiones espaciadas en h en que se ha dividido el intervalo 0x1
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
Se obtiene un sistema de 19 ecuaciones lineales cuyas incgnitas son los puntos interiores.
Se observa que los resultados tienen una aproximacin aceptable
9.6.3 Instrumentacin computacional del mtodo de diferencias finitas para una EDO.
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.
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'); %Solucin analtica
>> hold on, ezplot(y,[0,1])
Luego de sustituir las derivadas y simplificar se tiene la ecuacin de diferencias como antes:
3.875 4 0 0 y0 1.1875
2.25
3.875 1.75 0 y1 0.6960
=
0 2.25 3.875 1.75 y2 0.7872
0 0 2.25 3.875 y3 7.8475
El sistema resultante tiene forma tridiagonal, y por lo tanto se puede usar un algoritmo
especfico muy eficiente para resolverlo.
Se conocen los datos en los bordes: (x0, y0) y (xn, yn), n es la cantidad de sub intervalos
espaciados a una distancia h.
(P)yi-1 + (Q)yi + (R)yi+1 = (S), i = 1, 2, 3, . . . , n-1, con los datos (x0, y0), (xn, yn)
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
>> P='2+h';
>> Q='2*h^2-4';
>> R='2-h';
>> S='4*h^2*exp(x)+6*h^2';
>> [u,v]=edodifdi (P,Q,R,S,0,0.5,1,5,20);
>> plot(u,v,'o');
>> y=dsolve('D2y-Dy+y-2*exp(x)-3=0','Dy(0)=0.5','y(1)=5','x');
>> hold on, ezplot(y, [0,1])
dy dy dt 1 dy 1
=
y'(x) = = = y'(t)
dx dt dx b a dt b a
d2 y d dy d dy dt d 1 dy dt 1 d2 y 1
=
y ''(x) = (= ) ( )= ( )= = y ''(t)
dx 2
dx dx dt dx dx dt b a dt dx (b a) dt 2
2
(b a)2
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.
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-1 yi
yi-2 yi+1
yi-3
y0 y1
Dada la E. D. O.
Reescribir como
dy = f(x,y) dx = y(x) dx
S S + 1 2 S + 2 3 S + n 1 n
y'(x) = pn (x) = pn (S) =+ fi fi1 + fi 2 + fi 3 + ... + fin
1 2 3 n
S + n n+ 1 (n+ 1) x xi
E = h y (z), s
n + 1 h
313
xi+ 1 1
yi k + pn (x)dx =
yi + 1 = yi k + h pn (s)ds
x ik k
1
y=
i+1 yi k + h pn (s)ds
k
Ejemplos:
1
n =0, k =0 : yi + 1 = yi + h fids = yi + hfi = yi + hf(xi , yi ) Es la frmula de Euler
0
1 s(s 1) 2
n = 2, k = 0 : yi + 1 = yi + h [fi + sfi 1 + fi 2 ]ds
0 2
fi 1 5 2
= yi + h[fi + + 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:
h
yi + 1 =+
yi [23fi 16fi 1 + 5fi 2 ], E=
O(h2 )
12
Observaciones importantes
Dada la E. D. O.
Reescribir como
dy = f(x,y) dx = y(x) dx
S S + 1 2 S + 2 3 S + n 1 n
pn (x)= pn (S)= fi+ 1 + fi + fi1 + fi 2 + ... + fin+ 1
1 2 3 n
S + n n+ 1 (n+ 1) x xi + 1
E = h y (z), s
n + 1 h
0
y=
i+1 yi k + h p (s)ds
k 1 n
Ejemplos:
h
n=1, k =0 : yi + 1 =yi + [fi + fi + 1 ] Es la frmula mejorada de Euler o Heun
2
315
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.
h 251
yi + 1 =+
yi [55fi 59fi 1 + 37fi 2 + 9fi 3 ], E = h5 y v (z)
24 720
h 19 5 v
yi + 1 =
yi + [9fi + 1 + 19fi 5fi 1 + fi 2 ], E=
h y (z)
24 720
Sean
Ep Ec
| yi + 1,c yi + 1 | Ec 19 / 720 1
=
| yi + 1,p yi + 1 | + | yi + 1,c yi + 1 | | yi + 1,c yi + 1,p | 251/ 720 + 19 / 729 14
Suponiendo que los valores de las derivadas en los trminos del error son similares
| 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:
Si no se cumple, debe entenderse que el valor de h tendra que reducirse para mejorar la
exactitud.
316
y- 2y + 2x2 x + 3 = 0, y(0)=1.2
Compare con la solucin analtica y(x) = 2x/5 + 47/25 e-5x +3/25. Observe que el error de
truncamiento tiende a reducirse. Explique este comportamiento.
Con la frmula de Heun (Euler Mejorado) calcule x(t), t=0.1, 0.2, 0.3. ..., 1.0
9. La distribucin de temperatura u(x) en estado estable de una barra de longitud L con una
fuente de calor Q(x), temperatura constante en el extremo derecho y aislada en el extremo
izquierdo, est dada por
u''+ Q(x) = 0 , u'(0) = 0 , u(L) = T
Resuelva para T=100, Q(x)=x2, L=1. Use el mtodo de diferencias finitas, h=0.2
Tabule los resultados obtenidos junto con los valores calculados con la solucin exacta
y(x) = arc cot(x/2). Comente el resultado de esta comparacin.
318
d 2w S qx
La ecuacin que describe esta situacin fsica es: 2
= w+ ( x L)
dx EI 2 EI
Siendo w(x): deflexin a una distancia x desde el extremo izquierdo.
q: intensidad de carga por unidad de longitud. E: mdulo de elasticidad.
S: tensin en los puntos extremos. I: momento principal de inercia. L: longitud de la viga.
13. Al integrar una ecuacin diferencial de primer orden y(x) = f(x,y) entre xi-1 y xi+1
xi +1 xi +1
se obtiene la expresin: yi+1 =
yi1 +
f(x,y) dx =
x i 1
yi1 +
y '(x) dx ,
x i 1
(s + 1)s 2
a) Use la aproximacin: y '(x) p2 (s) = fi + sfi1 + fi2
2
x xi
en donde s = .
h
Obtenga una frmula aproximada con la cual pueda obtener puntos de la solucin.
u u 2 u 2 u 2 u
u(x,y): F(x, y, u, , , , , )=0
x y x 2 y 2 xy
Una forma de clasificar estas ecuaciones es por su tipo: parablicas, elpticas e hiperblicas,
Ejemplo. Resolver la ecuacin de difusin en una dimensin con los datos suministrados
2u u
u(x,t): =k
x 2
t
Suponer que u es una funcin que depende de x, t, en donde u representa valores de
temperatura, x representa posicin, mientras que t es tiempo,
Esta ecuacin se puede asociar al flujo de calor en una barra muy delgada aislada
transversalmente y sometida en los extremos a alguna fuente de calor. La constante k
depende del material de la barra. La solucin representa la distribucin de temperaturas en
cada punto x de la barra y en cada instante t
u(x, t)
Ta Tb
To
L
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.
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:
Para el primer intento elegimos las frmulas (8.6) y (8.2) para sustituir las derivadas de la
ecuacin diferencial:
2u u ui + 1,j 2u i,j +ui 1,j ui,j+ 1 u i,j
=k + O(x)2 = k + O(t)
x 2
t (x) 2
t
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.
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.
La forma final de la ecuacin de diferencias se obtiene sustituyendo los datos del ejemplo:
t 0.1
== = 0.4
2
k(x)
2
4(0.25)
La solucin se debe calcular sucesivamente para cada nivel tj hasta donde sea de inters
analizar la solucin de la ecuacin diferencial. Calculemos dos niveles de la solucin:
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.
Existen diferentes mtodos para determinar la estabilidad del mtodo de diferencias finitas
en el proceso de clculo de la solucin. Si el mtodo es estable, entonces la solucin de la
ecuacin de diferencias ser estable, es decir no se degenera en el proceso de clculo.
Ei, j+ 1 e 1xi + (t j + t)
=
M = = e t
1 xi +t j
Ei,j e
e =
1x
cos(x) 1sen(x)
e t = (2 cos(x) 2) + 1
| (2 cos(x) 2) + 1| 1
1 t 1
2 k(x) 2
2
Desde el punto de vista del error de truncamiento x debera ser suficientemente pequeo
para que la informacin sea suficientemente precisa. Por otra parte, t debera ser
aproximadamente un orden de magnitud menor que x. Pero, desde el punto de vista del
error de redondeo x y t no deberan ser demasiado pequeos para evitar la acumulacin
del error de redondeo
325
for j=1:n
U= edpdif(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=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.
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
En un segundo intento elegimos las aproximaciones (8.6) y (8.3) para sustituir las derivadas
de la ecuacin diferencial
2u u ui + 1,j 2u i,j +ui 1,j ui,j u i,j1
=k + O(x)2 = k + O(t)
x 2
t (x) 2
t
Se obtiene la ecuacin de diferencias
ui + 1,j 2u i,j +ui 1,j ui,j u i,j1
= k
(x) 2
t
Su error de truncamiento es igualmente T = O(x)2 + O(t), debiendo cumplirse que t < x
t
Definiendo = , la ecuacin se puede escribir
k(x)2
t 0.1
Finalmente con los datos == = 0.4 , se obtiene la forma final
2
k(x) 4(0.25)2
La cual genera un sistema de ecuaciones lineales para obtener la solucin en cada nivel tj
Cuya solucin es
u1,1 33.0287
u2,1 = 26.1290
u3,1 28.5842
10.2.5 Instrumentacin computacional del mtodo implcito para una E.D.P. de tipo
parablico
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.
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
2u u
u(x,t): =k , 0 x 1, t 0
x 2
t
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
t 0.1
Finalmente se tiene la ecuacin de diferencias con los datos == = 0.4 ,
2
k(x) 4(0.25)2
Ahora la ecuacin es aplicada en cada punto desconocido, incluyendo el borde izquierdo:
La cual genera un sistema de ecuaciones lineales para obtener la solucin en cada nivel tj
j = 1,
i = 0: 0.4u-1,1 1.8u0,1 + 0.4u1,1 = -u1,0 0.4u-1,1 1.8u0,1 + 0.4u1,1 = 0 (1)
i = 1: 0.4u0,1 1.8u1,1 + 0.4u2,1 = -u1,0 0.4u0,1 1.8u1,1 + 0.4u2,1 = -10 (2)
i = 2: 0.4u1,1 1.8u2,1 + 0.4u3,1 = -u2,0 0.4u1,1 1.8u2,1 + 0.4u3,1 = -20 (3)
i = 3: 0.4u2,1 1.8u3,1 + 0.4u4,1 = -u3,0
0.4u2,1 1.8u3,1 + 0.4(20.99) = -30 0.4u2,1 1.8 u3,1 = -38.4 (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
u(0,t)
El dato adicional conocido: = 5 es aproximado ahora mediante una frmula de
x
diferencias finitas central:
De donde se obtiene u-1,j = u1,j + 5(2x) para sustituir en la ecuacin (1) anterior:
En notacin matricial:
Cuya solucin es: u0,1 = 5.4667, u1,1 = 11.0500, u2,1 = 19.2584, u3,1 = 25.6130
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
Reemplazo de la derivada:
60
U (temperatura)
55
50
45
40
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
X (distancia)
u u 2u
u(x,t): =
u k 2
t x x
Sustituyendo en la EDP
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.
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.
Para el ejemplo supondremos los siguientes datos, en las unidades que correspondan
Ta = 60, Tb = 40
Tc = 50, Td = 80
L1 = 2, L2 = 1.5
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
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
x 2
(x) 2
Para que esta sustitucin sea consistente, x debe ser muy cercano a y en magnitud.
339
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.
4 1 0 1 0 0 u1,1 110
1 4 1 0
1 0 u2,2 50
0 1 4 0 0 1 u3,2 90
=
1 0 0 4 1 0 u1,2 140
0 1 0 1 4 1 u2,2 80
0 0 1 0 1 4 u3,2 120
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
Ecuacin de diferencias
ui 1,j + ui + 1,j + ui,j1 + ui,j+ 1 4ui,j =
0 , i = 1, 2, 3, ; j = 1, 2, 3,
Frmula iterativa
(k + 1) 1 (k)
ui,j = (ui 1,j + ui(k)
+ 1,j + ui,j 1 + ui,j + 1 ) , k = 0, 1, 2, ...
(k) (k)
(iteraciones)
4
60.0000 60.0000 60.0000 60.0000 60.0000 60.0000 60.0000 60.0000 60.0000 60.0000 60.0000 60.0000
50.0000 55.0555 57.1094 58.1502 58.8179 59.3552 59.8800 60.4789 61.2649 62.4714 64.7253 70.0000
50.0000 53.1504 55.2931 56.7522 57.8553 58.8149 59.7729 60.8462 62.1676 63.9325 66.4446 70.0000
50.0000 52.3140 54.2564 55.8324 57.1733 58.4166 59.6826 61.0788 62.7133 64.7007 67.1404 70.0000
50.0000 51.9277 53.7079 55.3016 56.7603 58.1708 59.6256 61.2131 63.0120 65.0824 67.4393 70.0000
50.0000 51.7775 53.4827 55.0770 56.5863 58.0739 59.6166 61.2895 63.1550 65.2488 67.5585 70.0000
50.0000 51.7911 53.5081 55.1116 56.6271 58.1173 59.6589 61.3274 63.1856 65.2700 67.5691 70.0000
50.0000 51.9651 53.7780 55.3973 56.8731 58.2907 59.7427 61.3179 63.0965 65.1409 67.4687 70.0000
50.0000 52.3661 54.3539 55.9657 57.3301 58.5835 59.8454 61.2245 62.8308 64.7821 67.1813 70.0000
50.0000 53.2029 55.3914 56.8866 58.0135 58.9831 59.9370 60.9930 62.2860 64.0145 66.4858 70.0000
50.0000 55.0911 57.1760 58.2412 58.9249 59.4689 59.9908 60.5780 61.3448 62.5267 64.7531 70.0000
60.0000 60.0000 60.0000 60.0000 60.0000 60.0000 60.0000 60.0000 60.0000 60.0000 60.0000 60.0000
70
65
60
55
50
15
15
10
10
5
5
0 0
Ejemplo. Use el mtodo de diferencias finitas para resolver la ecuacin diferencial parcial
de tipo elptico:
2u 2u
+ + cos ( x + y ) + cos ( x y ) =
0, 0< x < 2, 0< y < 4
x 2 y 2
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
2
0.6124 0.3536
y3
0.866 U1 U2
y2 0
y3 3/12
0.9659 U3 U4
y1 0
y2 2/12
0.866 0.5
y0
0 /6 2/6 3/6
x0 x1 x2 x3
i=1, j=1:
i=2, j=1:
i=1, j=2:
i=2, j=2:
0.8350
0.7445
U =
0.8840
0.6128
346
2u 2 u
2
Ejemplo. Ecuacin de la onda en una dimensin: u(x, t): = c
t 2 x 2
Suponer que u es una funcin que depende de x, t en donde u representa el
desplazamiento vertical de la cuerda en funcin de la posicin horizontal x, y el tiempo t,
mientras que c es una constante. L es la longitud de la cuerda.
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)
Siguiendo una estrategia usada anteriormente, expresamos el dato adicional =0
t
mediante una frmula de diferencias central:
ui,0 ui,1 ui,1
= = 0 ui,-1 = ui,1 (2)
t 2(t)
Esta ecuacin incluye el punto ui,-1 entonces debe evaluarse la ecuacin (1) con t=0:
1
ui,1 = (ui + 1,0 + ui 1,0 ) , i = 1, 2, 3, 4 (3)
2
La ecuacin (3) debe aplicarse nicamente cuando t = 0, para encontrar ui,j en el nivel j=1
1 1
j = 0, i = 1: u1,1 =(u2,0 + u0,0 ) =(0.2 + 0) = 0.1
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
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
for i=2:m-1
U1(i)=0.5*(U0(i-1)+U0(i+1));
end
U1(m)=U0(m);
plot(x,U1,'r');
axis([0,1,-0.5,0.5]);
pause;
clf;
for j=1:n % Siguientes niveles
Uj(1)=U1(1);
for i=2:m-1
Uj(i)=U1(i+1)+U1(i-1)-U0(i);
end
Uj(m)=U1(m);
plot(x,Uj,'r');
351
axis([0,1,-0.5,0.5]);
pause;
clf;
U0=U1;
U1=Uj;
end
0.5
0.4
0.3
0.2
0.1
-0.1
-0.2
-0.3
-0.4
-0.5
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
x, 0 < x 0.25
u(x, 0) = 1
3 (x 1), 0.25 < x < 1
0.5
0.4
0.3
0.2
0.1
-0.1
-0.2
-0.3
-0.4
-0.5
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
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
x 2
t
t
cui1,j + (1 2c)ui,j + cui+ 1,j =ui,j1 , c=
C(x)2
2u 2u
x 2 + y 2 = x + y , 0 < x < 1 , 0 < y < 1
y2
u ( 0,=
y ) 0 , u (1,= y) , 0 y 1
6
1 3
u ( x=, 0 ) u ( x=
,1)
6
x , 0 x 1
BIBLIOGRAFA
4. Carnahan B., Luther H. Wilkes J., Applied Numerical Methods, John Wiley & Sons, Inc
7. Prez Lpez C. MATLAB y sus Aplicaciones a las Ciencias y la Ingeniera, Pearson Ed.