Documente Academic
Documente Profesional
Documente Cultură
Captulo 23
Algoritmos numricos.
23.1. Solucin de sistema simultneo de ecuaciones lineales.
Si se aplica mtodo nodal con modificaciones, para tratar fuentes de voltajes controladas e
independientes, se obtiene un sistema de ecuaciones, del tipo:
A x
L U
Donde L es una matriz triangular inferior (lower), y U es una matriz triangular superior (upper).
El sistema original de ecuaciones, queda:
L U x
20-01-2010
L d
U x
Los dos sistemas anteriores son sencillos de resolver, como se ver ms adelante. El sistema con
matriz L, puede ser resuelto por substituciones hacia adelante; el sistema con matriz U se
resuelve por substituciones hacia atrs.
El procedimiento est basado en obtener las matrices L y U, a partir de A; luego en obtener el
vector d; y finalmente en calcular la solucin en el vector x.
Existen varias formas de efectuar la descomposicin, el mtodo de Doolittle asigna unos a los
elementos de la diagonal principal de L.
Veremos a travs de un ejemplo, las principales ideas, intentando obtener un algoritmo para el
clculo.
Se tiene la matriz A de 4x4 y se desea obtener L y U.
a11 a12
a21 a22
a13
a23
a14
a24
1
l21
0
1
0 0
0 0
a31
a32
a33
a34
l31 l32
1 0
a41 a42
a43
a44
l41 l42
l43
u11 u12
0 u22
u13 u14
u23 u24
0 u33
u34
0 u44
u11 u12
l21u11 l21u12 u22
u13
l21u13 u23
u14
l21u14 u24
l41u11 l41u12 l42u22 l41u13 l42u23 l43u33 l41u14 l42u24 l43u34 u44
El primer rengln de A permite, por comparacin, determinar el primer rengln de U.
u11
a11; u12
a12 ; u13
a13 ; u14
a14
Una vez conocido u11, la primera columna de A permite determinar el primer rengln de L, se
obtienen:
l21
20-01-2010
a41 / u11
Algoritmos numricos
El segundo rengln de A, permite calcular el segundo rengln de U, una vez conocidos los
elementos del primer rengln de U, se tienen:
l21u12 u22
a24
u22
a22 l21u12
u23
a23 l21u13
u24
a24 l21u14
l31u12 l32u22
a42
l32
l42
a34
u33
u34
l43
u44
Si bien se ha desarrollado para una matriz de 4x4, de las expresiones obtenidas puede inducirse
relaciones generales, como veremos a continuacin:
Con N es el nmero de renglones y columnas de A.
20-01-2010
Para: n 1,..., N ;
ln, n
un,i
an,i
ln, k uk ,i
k 1
Para: i
n,..., N ;
l j,n
a j,n
l j , k uk , n / un, n
k 1
Para: j
n 1,..., N
L d
l11 0
l21 l22
0
0
l31 l32
l33
0 d1
0 d2
0 d3
l41 l42
l43 l44
Se obtiene:
d4
b1
b2
b3
b4
l11d1
l21d1 l22 d 2
b1
b2
b3
b4
20-01-2010
Algoritmos numricos
d1
b1 / l11
d2
d3
d4
Una vez obtenido d1, se substituye en la expresin siguiente para calcular d2; con d1 y d2, se
puede calcular d3; y as sucesivamente. Por esta razn, al procedimiento se lo denomina
substitucin hacia adelante (forward).
El vector d, puede recalcularse para diferentes valores del vector b, que es la situacin que se
produce en un barrido DC. Debido a que en el mtodo de Gauss se ocupa, desde el inicio de las
operaciones, los valores de b; el efectuar clculos con b variable lo realiza con ventajas el
mtodo de descomposicin triangular.
La relacin anterior, permite deducir una expresin para calcular los d i, en una matriz de orden
N.
i l
di
(bi
lij d j ) / lii
j 1
Para: i 1, 2,
,N
U x
Se tiene:
u11 u12
0 u22
u13 u14
u23 u24
x1
x2
d1
d2
u33
u34
x3
d3
u44
x4
d4
d1
d2
u33 x3 u34 x4
d3
u44 x4
d4
20-01-2010
x4
d 4 / u44
x3
x2
x1
Que entrega la solucin del sistema de ecuaciones. Ntese que primero se obtiene x4; y luego x3,
que se calcula en trminos de x4; y as sucesivamente. Por esta razn a este algoritmo se lo
denomina substitucin hacia atrs (back).
En general:
xN
d N / u NN
N
di
xi
Para: i
( N 1), ( N 2),
uij x j
j i 1
uii
,3, 2,1
u11 u12
l21 u22
u13 u14
u23 u24
l31
l32
u33
l41
l42
l43 u44
u34
20-01-2010
n 1
un,i
an,i
ln, k uk ,i
k 1
Algoritmos numricos
n 1
l j,n
a j,n
l j , k uk , n / un, n
k 1
}
}
/*Realiza substituciones hacia adelante y hacia atrs.
a[1..N][1..N] es de entrada y debe contener la descomposicin L y U.
b[1..N] el vector de excitacin.
Retorna en b la solucin.
a no es modificada y pueden realizarse sucesivos llamados
con diferentes valores de b.
*/
void lufwbksb(float **a, int N, float b[])
{ int i,j;
float sum;
for (i=1; i<=N; i++)
{ sum=0;
i l
for (j=1; j<=(i-1); j++) sum += a[i][j]*b[j];
di (bi
lij d j ) / lii
b[i]-=sum; //l[i][i]=1.
j 1
}
//se genera vector d en el espacio ocupado por b.
b[N]/=a[N][N];
xN d N / u NN
for (i=(N-1); i>=1; i--)
N
{ sum=0;
di
uij x j
for (j=(i+1); j<=N; j++) sum += a[i][j]*b[j];
j i 1
xi
b[i]=(b[i]-sum)/a[i][i];
uii
}
//se almacena solucin x en el espacio ocupado por b.
}
Ejemplo de uso.
//Resuelve el sistema de ecuaciones lineales aX = b.
ludcmp(a, n);
lufwbksb(a, n, b);
23.1.2. Mtodos iterativos.
Para deducir expresiones generales que permitan escribir algoritmos iterativos, consideremos el
sistema lineal de tres ecuaciones:
a11 a12
a21 a22
a31 a32
a13 x1
a23 x2
a33 x3
20-01-2010
b1
b2
b3
x1
x2
x3
Si consideramos conocidos los valores de las variables del lado derecho, podremos estimar un
nuevo valor para las variables del lado izquierdo de las ecuaciones. Podemos anotar lo anterior,
mediante:
| xi [n 1] xi [n] |
tolerancia
Si el error es menor que la exactitud requerida el proceso termina; en caso contrario se realiza
una nueva iteracin.
Si se tienen N variables, pueden generalizarse las iteraciones segn:
j i 1
xi [n 1] (bi
j N
aij x j [n]
j 1
20-01-2010
Algoritmos numricos
9
j i 1
xi [n 1] (bi
j N
aij x j [n 1]
j 1
xi [n 1] axi [n 1] (1 a) xi [n]
Con: 0
a 2
Si a es 1, se tiene la frmula de Gauss Seidel. Con a>1, el nuevo valor, en la iteracin (n+1),
tiene mayor importancia. Con a<1, se tiene subrelajacin. La eleccin de este valor, y su
influencia en la convergencia debera aclararse en un curso de anlisis numrico.
La recurrencia para encontrar el nuevo valor por el mtodo SOR:
j i 1
xi [n 1] (1 a) xi [n] a(bi
j N
aij x j [n 1]
j 1
Comienza iteraciones
j i 1
j N
aij y j [n]
j 1
end for i
yi
xi
for j = 1,.. N do
xj
yj
end for i
tol ) stop
if (
end for n
20-01-2010
10
dr (t )
dt
F (t )
Entonces:
t
r (t )
r (0)
F ( )d
0
20-01-2010
Algoritmos numricos
11
Una manera simple y aproximada de realizar la integracin es calcular el rea mediante la suma
de rectngulos, que estudiaremos como el mtodo de Euler.
Una mejor aproximacin se logra sumando trapecios, si se desea mayor precisin se emplea
aproximacin por segmentos parablicos, con la regla de Simpson. Para disminuir la
acumulacin de errores se emplea el mtodo de Runge-Kutta.
23.2.1. Formulacin de ecuaciones de estado.
La formulacin de las ecuaciones de una red elctrica en trminos de las variables de estado
permite encontrar la solucin de un sistema de ecuaciones diferenciales de primer orden en el
dominio del tiempo. La solucin numrica, que veremos a continuacin, puede extenderse a
sistemas no lineales.
La representacin se logra con un sistema de ecuaciones diferenciales de primer orden:
dx
dt
Ax Bu
y Cx Du
Donde y es el vector de salida.
A se denomina matriz de estado del sistema, B es la matriz de entrada, C es la matriz de salida, y
D se denomina matriz de alimentaciones directas (feedforward).
23.2.2. Mtodo de Euler.
A partir de la expansin en serie de Taylor, para una variable escalar x, se tiene:
x(t
t)
x(t )
dx(t )
t
dt
1 dx 2 (t ) 2
t ....
2 dt 2
xi [k 1] xi [k ]
dxi (tk )
t
dt
20-01-2010
12
xi [k 1]
xi [k ] (
j n
aij x j [k ]
j 1
Para: i
1, 2,
bij u j [k ]) t
j 1
,n
20-01-2010
Algoritmos numricos
13
}
Ejemplo de uso:
n=2;npuntos=20;
a=matrix(1, n, 1, n); //pide espacio
a[1][1]=0.; a[1][2]=1.;
a[2][1]=-3.; a[2][2]=-2.;
ic=vector(1, n);
ic[1]=1.;ic[2]=0.;
x=matrix(1, n, 1, npuntos); //pide espacio
//Resuelve sistema ecuaciones diferenciales.
euler(a,n,x,ic,npuntos,0.1);
genseq(a,n,x,npuntos,0.1,1);
La ltima invocacin genera para la variable x1 :
Seq:=[[0,1],[0.1,1],[0.2,0.97],[0.3,0.916],[0.4,0.8437],[0.5,0.75838],[0.6,0.664813]
,[0.7,0.567208],[0.8,0.46918],[0.9,0.373741],[1,0.283314],[1.1,0.199761]
,[1.2,0.124418],[1.3,0.0581519],[1.4,0.00140604],[1.5,-0.0457352]
,[1.6,-0.0834903],[1.7,-0.112322],[1.8,-0.132883],[1.9,-0.145962]
]
Debido a la acumulacin de errores no suele emplearse el algoritmo de Euler.
23.2.3. Algoritmo de Euler.
Para el caso de una variable, tenemos:
dy (t )
dt
f (t , y (t ))
yn
yn
hf (tn , y (tn ))
Si definimos:
k1
hf (tn , yn )
yn
yn
k1
20-01-2010
14
yn
tn
tg ( n )
1
1
yn
tn
k1
h
f (tn , yn )
yn+1
k1
yn
tn
f(tn+1,yn+1)
f(tn,yn)
tn+1
tn
tn+1
f(tn+1,yn+1)
(k1 + k2)/2
n
yn
tn
f(tn,yn)
tn+1
tn
yn
yn
h
( f (tn , yn )
2
f (tn 1 , yn 1 ))
Con:
k1
hf (tn , yn )
k2
hf (tn 1 , yn 1 )
20-01-2010
tn+1
Algoritmos numricos
15
yn
1
(k1 k2 )
2
yn
segn: yn
yn
k1
t0 h / 2 y t 2
t0
h.
f(tn+h/2, y(tn+h/2))
yn+1
f(tn+1,yn+1)
yn
tn
f(tn,yn)
tn+1
fa(t)
tn
tn+1
f a (t )
at 2 bt c
Se tienen:
f0
at0 2 bt0 c
f1
at12 bt1 c
f2
at2 2 bt2 c
f a (t )dt
t t0
20-01-2010
16
Aplicando que t1
t0 h / 2 y t 2
t0
h , se obtiene:
h
A
( f 0 4 f1 f 2 )
6
Con:
k0
hf (tn , yn )
k1
hf (tn
h / 2, y (tn
k2
hf (tn
h, y (tn
h / 2))
h))
yn
yn
1
(k0 4k1 k2 )
6
y (tn
h / 2)
y (tn
h)
yn
yn
k0 h / 2
k0 h
Area
1
1
(k0 4k1 k2 )
(k2 4k3 k4 )
6
6
1
(k0 4k1 2k2 4k3 k4 )
6
Con 2n+1 puntos en total, se tiene en general:
Area
Area
h
( f 0 4 f1 2 f 2 4 f3 ...... 2 f 2 n
6
20-01-2010
4 f2n
f2n )
Algoritmos numricos
17
}
for(int i=2, sumai=0; i<n; i+=2){
sumai+=f(a+i*h);
//acumula pares.
}
return ((suma+4*sumap+2*sumai)*h/3);
}
23.4.6. Mtodos multietapas.
Existen mtodos ms elaborados para efectuar un paso de integracin, En stos la funcin se
evala en varias etapas entre dos puntos. Los puntos de las etapas slo se emplean para el
clculo del nuevo valor.
Consisten en definir una funcin en la cual se escogen los parmetros de tal modo de minimizar
los errores.
Sea la funcin
yn , t n ; h
yn
yn , t n ; h
f ( yn , t n )
k1
f yn , t n
k2
f yn
hk1 , tn
yn
h ak1 bk2
yn
Con:
y tn , tn
af y(tn ), tn
bf y(tn )
hf y(tn ), tn , tn
Tn
y tn h
y tn
y tn , tn
y tn
y tn
dy (tn )
dt
h 2 d 2 y (tn )
2! dt 2
Como se tiene:
Profesor Leopoldo Silva Bijit
20-01-2010
h3 d 3 y (tn )
O(h 4 )
3
3! dt
18
dy
dt
f y t ,t
d2y
dt 2
d
f y t ,t
dt
f
t
f dy
y dt
f
t
f
f
y
ft
fy f
d3y
dt 3
d
dt
f
t
f
f
y
d f
d f
( )
( )f
dt t
dt y
f df
y dt
d3y
dt 3
f
f
t y
f
y t
f
y
f
t
f
f
y
d3y
dt 3
ftt
f yt f
( f yt
f yy f ) f
f y ( ft
fy f )
y tn
y tn
hf
Donde se ha empleado: f
h2
( ft
2!
fy f )
h3
( ftt
3!
2 f ty f
f yy f 2
f y ft
f y 2 f ) O (h 4 )
f y tn , tn
Para el segundo trmino de Tn, se requiere expandir el trmino que est multiplicado por b. Para
y, tn
t ,
esto se emplea la expansin de Taylor de dos variables de f yn
con: y
hf , t
h . Como
los trminos de segundo orden.
Entonces;
20-01-2010
Algoritmos numricos
f y
19
y, t
f ( y, t )
y
y
f y, t
f ( y, t )
t
t
1 f 2 ( y, t ) 2
y
2
y2
f 2 ( y, t )
y t
y t
1 f 2 ( y, t ) 2
t
2
t2
f yn
y, tn
f y ( hf )
f t ( h)
f yn , t n
1
f yy ( hf ) 2
2
f yt ( hf )( h)
1
f tt ( h) 2 O(h 3 )
2
y tn , tn
af y(tn ), tn
bf y(tn )
hf y(tn ), tn , tn
Se obtiene:
y tn , tn
af
b( f
f y hf
1
f yy ( hf )2
2
ft h
f yt ( hf ) h
1
f tt
2
2 2
h ) O h3
Tn
h f
h af
h
ft
2
b f
h2
ftt
3!
ff y
( fy f
Los parmetros: a, b, ,
f yy f 2
2 fty f
f yy
f t )h
f y ft
fy f
f yt
fh 2
h2
ftt 2 2
h
2
O (h 4 )
hacerse cero los coeficientes de h y h 2 , pero no es posible eliminar la parte que depende de
h3 .
Para eliminar la parte proporcional a h , se debe cumplir: f
af bf 0
Para eliminar la parte proporcional a h , se debe cumplir: ( ft ff y ) / 2 bf y f
2
bf t
De la primera se obtiene: a b 1
De la segunda, debe cumplirse: ft (
1
b )
2
b
1
b ) 0 , de la que se desprenden:
2
1
b
2
ff y (
20-01-2010
20
Con a 1, b 0 se tiene el mtodo de Euler. No pueden ajustarse , . Por esta razn puede
decirse que el algoritmo de Euler pertenece a la familia Runge-Kutta de segundo orden.
23.4.6.1. Mtodo de Heun.
Considera:
1
que satisfacen las dos relaciones anteriores.
2
0, a b
1,
yn
h
k1 k2
2
yn
Con:
k1
k2
f yn , t n
f yn
k1h, tn
1
, a 0, b 1 que satisfacen las dos relaciones anteriores.
2
Considera:
yn
yn
hk2
Con:
k1
k2
f yn , t n
f yn
k1h
, tn
2
h
2
La pendiente de y est dada ahora por el valor de f en el punto medio del intervalo.
yn+1
hk2
yn
tn
f(tn+h/2,yn+k1h/2)
tn+1
f(tn+1,yn+1)
f(tn,yn)
tn
tn+1
3
a
4
1
, b
3
2
que satisfacen las dos relaciones anteriores.
3
20-01-2010
Algoritmos numricos
21
Se integra mediante:
yn
h
(k1 2k2 )
3
yn
Con:
k1
k2
f yn , t n
f yn
3k1h
, tn
4
3h
4
En los algoritmos del mtodo de Runge-Kutta de segundo orden, debe evaluarse dos veces la
funcin: f y (t ), t , para obtener el siguiente punto de la funcin.
23.4.7. Mtodos de Runge-Kutta de cuarto orden.
Para derivar el algoritmo de cuarto orden de Runge Kutta, se definen los 10 parmetros:
a1 , b1 , a2 , b2 , a3 , b3 , w1 , w2 , w3 , w4 . Los cuales deben elegirse de tal modo de eliminar los errores
proporcionales hasta la cuarta potencia del intervalo temporal h.
k1
hf yn , tn
k2
hf yn b1k1 , tn
a1h
k3
hf yn b2 k2 , tn
a2 h
k4
hf yn b3k3 , tn
a3h
yn
w3k3 w4 k4
yn
w1k1 w2 k2
Con:
y tn , tn
w1 f yn , tn
w3 f yn b2 k2 , tn
a2 h
w2 f yn b1k1 , tn
a1h
w4 f yn b3k3 , tn a3h
Tn
yn
yn h
y tn , tn
Antes se obtuvieron las tres primeras derivadas de y. Se requiere calcular la cuarta derivada de
y, se tiene:
d4y
dt 4
d
( ftt
dt
2 fty f
f yy f 2
Derivando, se obtiene:
20-01-2010
f y ft
f y2 f )
22
d4y
dt 4
2( f yy
dy
dy
d2y
dy
dy
f yyt )
f yy 2 f yyt
f ytt )
dt
dt
dt
dt
dt
2
3
d y
d y
dy
dy
d2y
f yt ) 2 f y 3 ( f yyt
f ytt )
f yt 2
dt
dt
dt
dt
dt
(( f yyy
dy
dt
f ytt
dy
dt
f ttt
d4y
dt 4
(( f yyy f
2( f yy f
f yt )
f yyt ) f
d2y
dt 2
fy
f yy
d2y
dt 2
f yyt f
d3y
( f yyt f
dt 3
f ytt ) f
f ytt ) f
f yt
d2y
dt 2
f ytt f
f ttt
d4y
dt 4
(( f yyy f
2( f yy f
f yt )( f t
f yyt ) f
fy f )
f yy ( f t
fy
fy f )
f yyt f
d3y
( f yyt f
dt 3
f ytt ) f
f ytt ) f
f yt ( f t
fy f )
f ytt f
f ttt
d4y
(( f yyy f f yyt ) f f yy ( ft
dt 4
2( f yy f f yt )( ft f y f ) f y ( f tt
f y ( ft
f y f )) ( f yyt f
f ytt ) f
fy f )
f ty f
f yt ( ft
f yyt f
( f yt
fy f )
f ytt ) f
f yy f ) f
f ytt f
fttt
y tn
y tn
hf
h2
( ft
2!
fy f )
h3
( f tt
3!
h4
( f yyy f 3 3 f yyt f 2 4 f yy f y f 2 3 f yy f t f
4!
3 f yt f t f y 3 f f y 2 f t f y f tt f ttt ) O (h5 )
Donde se ha empleado: f
2 f ty f
3 f yyt f
f y tn , tn
20-01-2010
f yy f 2
5 f yt f y f
f y ft
f y2 f )
Algoritmos numricos
23
y tn , tn
f yn
y, tn
t , con los
Entonces;
f yn
y , tn
fy y
ft t
1
f yyy y 3
6
f yn , t n
1
f yy y 2
2
1
f yyt y 2 t
2
1
f tt t 2
2
1
y t2
f ttt t 3
6
f yt y t
1
f ytt
2
k1
hf
1 3 3
1 2 2
1
1 3
b1 f fyyy
b1 f fyyt a1
b1 f a1 2 fytt
a1 fttt h 4
6
2
2
6
1
1
fyy b1 2 f 2 b1 f fyt a1
ftt a1 2 h 3 ( fy b1 f ft a1 ) h 2
2
2
k2 =
hf
k3 =
fyy b1 2 f 2
2
fy b2
b2 ( fy b1 f
h4
b1 f fyt a1
fyy b2 2 f ( fy b1 f
ft a1 )
ft a1 ) fyt a2
fy b2 ( fy b1 f
( fy b2 f
ftt a1 2
2
ft a2 ) h 2
hf
k4 =
hf
a3 3 fttt
6
fyy b3 2 f ( fy b2 f
fy b3 fy b2 ( fy b1 f
ft a1 )
ft a2 )
b3 3 f 3 fyyy
6
ftt a2 2
2
20-01-2010
fyy b2 2 f 2
2
b3 f a3 2 fytt
2
b2 f fyt a2
a2 3 fttt
6
24
b3 ( fy b2 f
ft a2 ) fyt a3
fyy b3 2 f 2 ftt a3 2
2
2
2
( fy b3 f ft a3 ) h
b3 2 f 2 fyyt a3
h4
2
fy b3 ( fy b2 f
ft a2 )
b3 f fyt a3 h 3
y tn , tn
Se obtiene:
y tn , tn
b1 3 f 3 fyyy
w2
6
b1 2 f 2 fyyt a1
2
fyy b3 2 f ( fy b2 f
b3 3 f 3 fyyy
6
ftt a2 2
ft a1 )
2
ft a2 )
fy b3 fy b2 ( fy b1 f
b3 ( fy b2 f
fy b2
fyy b1 2 f 2
2
w2
w4
a1 3 fttt
6
a3 3 fttt
w4
6
b3 f a3 2 fytt
2
fyy b2 2 f 2
b2 f fyt a2
2
b3 2 f 2 fyyt a3
w3
2
ftt a1 2
b1 f fyt a1
fyy b2 2 f ( fy b1 f
2
ft a2 ) fyt a3
b2 ( fy b1 f
h4
b1 f a1 2 fytt
2
ft a1 )
ft a1 ) fyt a2
fyy b3 2 f 2
2
fyy b1 2 f 2
2
b1 f fyt a1
w3 fy b2 ( fy b1 f
( w4 ( fy b3 f
( w1 f w2 f
ft a1 )
ftt a1 2
2
ftt a2 2 fyy b2 2 f 2
2
2
ft a3 ) w2 ( fy b1 f
w4 f w3 f ) h
ft a1 )
b2 f fyt a2
w3 ( fy b2 f
a2 3 fttt
6
h3
ft a2 ) ) h 2
20-01-2010
Algoritmos numricos
La generacin automtica de la funcin
25
, se logra con el segmento:
> restart;
> tmv:=mtaylor(f(y,t),[y=yn,t=tn],4):
> sus1:={D[1,1](f)(yn,tn)=fyy,D[1,2](f)(yn,tn)=fyt,D[2](f)(yn,tn)=ft,
D[1](f)(yn,tn)=fy,D[2,2](f)(yn,tn)=ftt,f(yn,tn)=f,
D[1,1,2](f)(yn,tn)=fyyt,D[1,2,2](f)(yn,tn)=fytt,
D[2,2,2](f)(yn,tn)=fttt,D[1,1,1](f)(yn,tn)=fyyy}:
> tmv:=subs(sus1,tmv):
> k1:=h*f:
> k2:=h*eval(tmv,{y-yn=b1*k1,t-tn=a1*h}):collect(k2,h):
> k3:=h*eval(tmv,{y-yn=b2*k2,t-tn=a2*h}):k3:=collect(k3,h):
> temp3:=k3:
for i from 5 to 13 do
temp3:=eval(temp3,h^i=0)
od:
collect(temp3,h):
> k4:=h*eval(tmv,{y-yn=b3*k3,t-tn=a3*h}):
k4:=collect(k4,h):
temp4:=k4:
for i from 5 to 40 do
temp4:=eval(temp4,h^i=0)
od:
> temp:=collect(w1*k1+w2*k2+w3*k3+w4*k4,h):
> for i from 5 to 40 do
temp:=eval(temp,h^i=0)
od:
Phi:=collect(temp,h):
La generacin del primer trmino del error, puede generarse automticamente con:
> restart;
> y1:=taylor(y(t),t=tn,5):y1:=subs({t-tn=h},y1):
>
sus0:={y(tn)=0,D(y)(tn)=f,`@@`(D,2)(y)(tn)=d2,`@@`(D,3)(y)(tn)=d3,`@@`
(D,4)(y)(tn)=d4}:
F:=subs(sus0,y1):
> d2:=diff(f(y(t),t),t):
> d3:=diff(d2,t):
> d4:=diff(d3,t):
>
sus1:={D[1,1](f)(y(t),t)=fyy,D[1,2](f)(y(t),t)=fyt,D[2](f)(y(t),t)=ft,
D[1](f)(y(t),t)=fy,
D[2,2](f)(y(t),t)=ftt,f(y(t),t)=f,D[1,1,1](f)(y(t),t)=fyyy,D[1,1,2](f)
(y(t),t)=fyyt,
D[1,2,2](f)(y(t),t)=fytt,D[2,2,2](f)(y(t),t)=fttt}:
sus2:={diff(y(t),t)=f}:
sus3:={diff(y(t),`$`(t,2))=fy*f+ft}:
sus4:={diff(y(t),`$`(t,3))=(fyy*f+fyt)*f+fy*(fy*f+ft)+fyt*f+ftt}:
> d2:=subs(sus1,d2):d2:=subs(sus2,d2):
d3:=subs(sus1,d3):d3:=subs(sus3,d3):d3:=subs(sus2,d3):d3:=expand(d3):
20-01-2010
26
d4:=subs(sus1,d4):d4:=subs(sus4,d4):d4:=subs(sus3,d4):d4:=subs(sus2,d4
):d4:=expand(d4):
> F;
Efectuando la comparacin de los coeficientes del error, de tal forma de anular hasta la potencia
cuarta de h, se obtienen 19 ecuaciones:
Para eliminar el trmino del error proporcional a h:
e1 := w1
w2
w3
w4
e2 := w4 b3
w2 b1
w3 b2
1
2
e3 := w4 a3
w2 a1
w3 a2
1
2
e4 :=
w2 b1 2
2
e5 := w4 b3 a3
w4 b3 2
2
w2 b1 a1
w3 b2 2
2
w3 b2 b1
e7 := w4 b3 a2
w3 b2 a1
w4 a3 2
2
w2 a1 2
2
1
3
w3 b2 a2
e6 := w4 b3 b2
e8 :=
1
6
1
6
1
6
w3 a2 2
2
1
6
w2 b1 3
6
2
w2 b1 a1
ec10 :=
2
ec9 :=
w4 b3 3 w3 b2 3 1
6
6
24
2
2
w4 b3 a3 w3 b2 a2
2
2
1
b2 b1 2 b2 2 b1
2
1
ec12 := w4 b3 2 a2 w3 b2 2 a1
8
2
2
w2 b1 a1
w4 b3 a3
w3 b2 a2 2 1
ec13 :=
2
2
2
8
ec11 := w4 b3 2 b2
1
b3 b2 2
2
1
8
w3
20-01-2010
1
6
Algoritmos numricos
27
ec14 := w4 ( b3 b2 a2
b3 b2 a3 )
w3 ( b2 b1 a1
b2 b1 a2 )
ec15 := w4 b3 a2 a3
w3 b2 a1 a2
1
8
5
24
1
24
1
ec17 := w4 b3 b2 a1
24
2
w4 b3 a2
w3 b2 a1 2 1
ec18 :=
2
2
24
3
3
3
w2 a1
w4 a3
w3 a2
1
ec19 :=
6
6
6
24
ec16 := w4 b3 b2 b1
{ b1
1
, a2
2
1
, w1
2
1
, a3
6
1, b3
1, a1
1
, w3
2
1
, w2
3
1
, b2
3
1
, w4
2
1
}
6
Puede comprobarse que la solucin satisface las 19 ecuaciones, y que el error queda:
Profesor Leopoldo Silva Bijit
20-01-2010
28
O(h5 )
Tn
k1
hf yn , tn
k2
hf yn
k1
, tn
2
h
2
k3
hf yn
k2
, tn
2
h
2
k4
hf yn
k3 , t n
yn
1
k1 2k2
6
yn
2 k3 k 4
f ( x)
f ( xs )
df
( xs )( x xs )
dx
20-01-2010
Algoritmos numricos
29
f ( xk 1 )
Efectuando: f ( xk 1 )
f ( xk )
df
( xk )( xk
dx
xk )
despejando xk 1 :
xk
xk
f ( xk )
df
( xk )
dx
x2
x1
x0
df
( x0 )
dx
tg ( 0 )
f ( x0 )
x0 x1
x1
x0
df
( x0 )
dx
f ( x0 )
Ntese que f ( x1 ) no es cero, lo cual implica que x1 es una aproximacin de xs . Tambin debe
notarse que para calcular la siguiente aproximacin deben calcularse la funcin y la derivada en
el punto anterior.
El proceso debe repetirse hasta que: xk
xk
tolerancia
Donde el valor de tolerancia debe ser un valor lo suficientemente pequeo, para que la solucin
se considere aceptable. Con nmeros reales de precisin simple (float en C), un valor razonable
Profesor Leopoldo Silva Bijit
20-01-2010
30
de tolerancia es 10-6, que es el valor del nmero real ms pequeo representable, en el formato
interno normalizado IEEE754.
Si el valor inicial es adecuado conviene limitar el nmero mximo de iteraciones, de este modo
si no existe convergencia se asegura que el algoritmo termine.
Tambin puede verificarse que la ordenada en los puntos sucesivos est dentro de cierto rango:
f ( xk 1 )
tolerancia
20-01-2010
Algoritmos numricos
31
20-01-2010
32
Figura 23.8.
Empleando la funcin NewtonRaphson, pueden obtenerse las races mediante:
printf("Valor de la raz = %f\n", NewtonRaphson(fun2,1,2,1e-6 ));
printf("Valor de la raz = %f\n", NewtonRaphson(fun2,9,11,1e-6 ));
23.3.2. Generalizacin para sistemas de ecuaciones no lineales.
Para un sistema de ecuaciones no lineales, se emplea la expansin de Taylor para varias
variables.
La expansin es una linealizacin en torno a la solucin:
F ( x)
Las cantidades F ( x) y ( x
denominada Jacobiano.
F ( xs ) J ( xs )( x xs )
F ( xk 1 )
F ( xk ) J ( xk )( xk
xk )
Para entender la relacin anterior se ilustra la forma que ella toma para dos funciones de dos
variables x1 y x2, se tiene:
F1 ( x1k , x 2 k )
F1 ( x1k , x 2 k )
F1 ( x1k 1 , x 2 k 1 )
F1 ( x1k , x 2 k )
x1
x2
x1k
x1k
F2 ( x1k 1 , x 2 k 1 )
F2 ( x1k , x 2 k )
F2 ( x1k , x 2 k )
F2 ( x1k , x 2 k )
x2k
x2k
x1
x2
Una explicacin del cambio de la funcin de dos variables, puede efectuarse considerando el
plano tangente a la superficie, en el punto (x10, x20) que pasa tambin por el punto (x11, x21).
Profesor Leopoldo Silva Bijit
20-01-2010
Algoritmos numricos
33
F1x2
x21
x1
x2
x20
tg (
x1
F1 ( x10 , x 20 )
x1
F1x1
x10 x11
tg (
x2
F1 ( x10 , x 20 )
x2
F1x 2
x 20 x 21
F1x1
F1x 2
F1 ( x10 , x20 )
( x10
x1
x11 )
F1 ( x10 , x20 )
( x 20
x2
x21 )
Aplicando el mtodo de Newton-Raphson, que consiste en asumir que el plano tangente pasa
por el punto que es una aproximacin a la solucin. Esto equivale a efectuar:
F1 ( x1k 1 , x 2k 1 )
F2 ( x1k 1 , x 2k 1 )
F1 ( x1k , x 2 k )
F1 ( x1k , x 2 k )
x1
x2
x1k
x1k
F1 ( x1k , x 2 k )
F2 ( x1k , x 2 k )
F2 ( x1k , x 2 k )
x 2k
x 2k
F2 ( x1k , x 2 k )
x1
x2
20-01-2010
34
x1k
x1k
x 2k
x 2k
F1 ( x1k , x 2k )
F1 ( x1k , x 2k )
x1
F2 ( x1k , x 2k )
x2
F2 ( x1k , x 2k )
x1
x2
1
F1 ( x1k , x 2k )
F2 ( x1k , x 2k )
La que expresada en trminos de vectores y la matriz inversa del Jacobiano, resulta en general,
para n variables:
xk
J ( xk ) 1 F ( xk )
xk
Una mejor visualizacin de la suma de los incrementos, se logra observando los tringulos
semejantes en la Figura 23.10.
Por el punto inicial (2, 2, 10) se pasa el plano z=2x+3y que tambin pasa por el punto (0, 0, 0).
Se han dibujado adems los planos de z constante, z=4 y z=6.
z
x
z
y
2,
z
x
x
4,
z
y
y
a b
c d
x
y
by dx
ad bc cx ay
1
F1 (k )
F2 (k )
x2
F1 (k ) F2 (k )
x1
x2
(
x1k
x1k
20-01-2010
F2 (k )
F1 (k ))
x2
F1 (k ) F2 (k )
x2
x1
Algoritmos numricos
35
F2 (k )
F1 (k )
x2
F1 (k ) F2 (k )
x1
x2
F1 (k )
F2 (k ))
x1
F1 (k ) F2 (k )
x2
x1
(
x 2k
x 2k
J ( xk )( xk
xk )
F ( xk )
Referencias.
Numerical Recipes In C: The Art of Scientific Computing. Cambridge University Press. 1992.
20-01-2010
36
ndice general.
CAPTULO 23 ............................................................................................................................................1
ALGORITMOS NUMRICOS.................................................................................................................1
23.1. SOLUCIN DE SISTEMA SIMULTNEO DE ECUACIONES LINEALES. .....................................................1
23.1.1. Descomposicin LU. ................................................................................................................1
23.1.2. Mtodos iterativos. ...................................................................................................................7
23.2. SOLUCIN NUMRICA DE SISTEMAS DE ECUACIONES DIFERENCIALES. ...........................................10
23.2.1. Formulacin de ecuaciones de estado. ..................................................................................11
23.2.2. Mtodo de Euler. ....................................................................................................................11
23.2.3. Algoritmo de Euler. ................................................................................................................13
23.2.4. Algoritmo trapezoidal. ...........................................................................................................14
23.2.5. Algoritmo de Simpson. ...........................................................................................................15
23.4.6. Mtodos multietapas. .............................................................................................................17
23.4.6.1. Mtodo de Heun. ............................................................................................................................. 20
23.4.6.2. Mtodo del punto medio. ................................................................................................................ 20
23.4.6.3. Mtodo de Ralston. ......................................................................................................................... 20
20-01-2010
Algoritmos numricos
37
ndice de figuras.
FIGURA 23.1. MTODO DE EULER. .............................................................................................................. 14
FIGURA 23.2. MTODO TRAPEZOIDAL. ........................................................................................................ 14
FIGURA 23.3. MTODO DE SIMPSON. .......................................................................................................... 15
FIGURA 23.4. MTODO DEL PUNTO MEDIO. ................................................................................................. 20
FIGURA 23.5. ITERACIN NEWTON-RAPHSON. ........................................................................................... 29
FIGURA 23.6. OSCILACIN. ......................................................................................................................... 30
FIGURA 23.7. DIVERGENCIA....................................................................................................................... 30
FIGURA 23.8. .............................................................................................................................................. 32
FIGURA 23.9. INTERPRETACIN DEL JACOBIANO DE DOS VARIABLES. ........................................................ 33
FIGURA 23.10. VARIACIN TOTAL DE FUNCIN DE DOS VARIABLES. .......................................................... 34
20-01-2010