Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Algoritmos Numericos Lu PDF
Algoritmos Numericos Lu PDF
Capítulo 23
Algoritmos numéricos.
Si se aplica método nodal con modificaciones, para tratar fuentes de voltajes controladas e
independientes, se obtiene un sistema de ecuaciones, del tipo:
A x b
Existen dos esquemas generales para resolver sistemas lineales de ecuaciones: Métodos de
eliminación directa y Métodos Iterativos. Los métodos directos, están basados en la técnica de
eliminación de Gauss, que mediante la aplicación sistemática de operaciones sobre los
renglones transforma el problema original de ecuaciones en uno más simple de resolver.
A L U
Donde L es una matriz triangular inferior (lower), y U es una matriz triangular superior (upper).
L U x b
L d b
U x d
Los dos sistemas anteriores son sencillos de resolver, como se verá más adelante. El sistema con
matriz L, puede ser resuelto por substituciones hacia adelante; el sistema con matriz U se
resuelve por substituciones hacia atrás.
Existen varias formas de efectuar la descomposición, el método de Doolittle asigna unos a los
elementos de la diagonal principal de L.
Veremos a través de un ejemplo, las principales ideas, intentando obtener un algoritmo para el
cálculo.
Una vez conocido u11, la primera columna de A permite determinar el primer renglón de L, se
obtienen:
Si bien se ha desarrollado para una matriz de 4x4, de las expresiones obtenidas puede inducirse
relaciones generales, como veremos a continuación:
De la relación:
L d b
Se obtiene:
l11 0 0 0 d1 b1
l21 l22 0 0 d2 b2
l31 l32 l33 0 d3 b3
l41 l42 l43 l44 d4 b4
l11d1 b1
l21d1 l22 d 2 b2
l31d1 l32 d 2 l33d3 b3
l41d1 l42 d 2 l43d3 l44 d 4 b4
Una vez obtenido d1, se substituye en la expresión siguiente para calcular d2; con d1 y d2, se
puede calcular d3; y así sucesivamente. Por esta razón, al procedimiento se lo denomina
substitución hacia adelante (forward).
El vector d, puede recalcularse para diferentes valores del vector b, que es la situación que se
produce en un barrido DC. Debido a que en el método de Gauss se ocupa, desde el inicio de las
operaciones, los valores de b; el efectuar cálculos con b variable lo realiza con ventajas el
método de descomposición triangular.
La relación anterior, permite deducir una expresión 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
En la descomposición de Doolittle, los lii son unos.
El algoritmo para la substitución hacia atrás se obtiene de manera similar a las anteriores.
Para la triangular superior:
U x d
Se tiene:
u11 u12 u13 u14 x1 d1
0 u22 u23 u24 x2 d2
0 0 u33 u34 x3 d3
0 0 0 u44 x4 d4
Que entrega la solución del sistema de ecuaciones. Nótese que primero se obtiene x4; y luego x3,
que se calcula en términos de x4; y así sucesivamente. Por esta razón a este algoritmo se lo
denomina substitución hacia atrás (back).
En general:
xN d N / u NN
N
di uij x j
j i 1
xi
uii
Ejemplo de uso.
//Resuelve el sistema de ecuaciones lineales a·X = b.
ludcmp(a, n);
lufwbksb(a, n, b);
Para deducir expresiones generales que permitan escribir algoritmos iterativos, consideremos el
sistema lineal de tres ecuaciones:
a11 a12 a13 x1 b1
a21 a22 a23 x2 b2
a31 a32 a33 x3 b3
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 iteración.
j i 1 j N
xi [n 1] (bi aij x j [n] aij x j [n]) / aii
j 1 j i 1
Si el cálculo de las variables se realiza en orden, desde x1 hasta xN , puede observarse que una
vez obtenido x1 puede usarse este valor para calcular x2 ; y así sucesivamente. Entonces en el
cálculo xi se pueden emplear los nuevos valores de las variables desde x1 hasta xi 1 .
Mejores resultados se logran calculando las variables en orden decreciente de los valores de la
diagonal principal.
xi [n 1] axi [n 1] (1 a) xi [n]
Con: 0 a 2
Si a es 1, se tiene la fórmula de Gauss Seidel. Con a>1, el nuevo valor, en la iteración (n+1),
tiene mayor importancia. Con a<1, se tiene subrelajación. La elección de este valor, y su
influencia en la convergencia debería aclararse en un curso de análisis numérico.
j i 1 j N
xi [n 1] (1 a) xi [n] a(bi aij x j [n 1] aij x j [n]) / aii
j 1 j i 1
En lugar de emplear errores absolutos: (fabs(y[j]-x[j]) < tol), es preferible utilizar errores
relativos: (fabs(y[j]-x[j]) < tol*(fabs(x[j]) );
Una mejor aproximación se logra sumando trapecios, si se desea mayor precisión se emplea
aproximación por segmentos parabólicos, con la regla de Simpson. Para disminuir la
acumulación de errores se emplea el método de Runge-Kutta.
La formulación de las ecuaciones de una red eléctrica en términos de las variables de estado
permite encontrar la solución de un sistema de ecuaciones diferenciales de primer orden en el
dominio del tiempo. La solución numérica, que veremos a continuación, puede extenderse a
sistemas no lineales.
dx
Ax Bu
dt
El resto de las variables del sistema puede expresarse en términos del estado, según:
y Cx Du
dx(t ) 1 dx 2 (t ) 2
x(t t) x(t ) t t ....
dt 2 dt 2
dxi (tk )
xi [k 1] xi [k ] t
dt
Para: i 1, 2, ,n
La siguiente función calcula en la matriz x, los valores de las variables de estado en npuntos
separados en intervalos de tiempo Delta.
No se considera la matriz b, ni el vector u de excitaciones. Esto equivale a resolver un sistema
de ecuaciones diferenciales lineales homogéneas y de primer orden.
void euler(float **a, int N, float **x, float *ic, int npuntos, float Delta)
/*Dados a[1..N][1..N], ic[1..N] calcula x[1..N][1..npuntos]*/
{ int i, j, k;
float sum, t=0.;
for(i=1; i<=N; i++) x[i][1]=ic[i]; //condiciones iniciales.
for (k=1; k<npuntos; k++)
{ t= t+Delta;
for(i=1; i<=N; i++)
{
sum=0; for (j=1; j<=N; j++) sum += a[i][j]*x[j][k];
x[i][k+1]= x[i][k]+sum*Delta;
}
}
}
Una alternativa de diseño es generar un archivo de datos en lugar de almacenar los puntos en
una matriz. Con el archivo de datos se pueden generar formas de ondas.
void genseq(float **a, int N, float **x, int npuntos, float Delta, int i)
/*Dados a[1..N][1..N], ic[1..N] y x[1..N][1..npuntos]
genera seq compatible para gráficos de tipo pointplot en Maple.*/
{ int k;
float t=0.;
printf("Seq:=[");
for (k=1; k<=npuntos; k++, t=t+Delta)
{ printf("[%g,%g]\n", t, x[i][k]);
if (k<npuntos) putchar(',');
}
putchar(']'); putchar('\n');
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
genseq(a,n,x,npuntos,0.1,1);
yn 1 yn hf (tn , y (tn ))
Si definimos:
k1 hf (tn , yn )
Se realiza la integración mediante:
yn 1 yn k1
n
k1
yn f(tn,yn)
tn tn+1 tn tn+1
h h
Una mejor aproximación para el área bajo la curva de f (t , y) es mediante el trapecio entre las
paralelas tn y tn 1 .
yn+1 f(tn+1,yn+1)
(k1 + k2)/2
n
yn f(tn,yn)
tn tn+1 tn tn+1
h h
Entonces:
h
yn 1 yn ( f (tn , yn ) f (tn 1 , yn 1 ))
2
Con:
k1 hf (tn , yn )
k2 hf (tn 1 , yn 1 )
Para refinar el cálculo del área, se define un punto dentro del intervalo, de este modo puede
calcularse el área bajo una parábola que pasa por los tres puntos:
tn tn+1 tn tn+1
h h
f a (t ) at 2 bt c
Se tienen:
f0 at0 2 bt0 c
f1 at12 bt1 c
f2 at2 2 bt2 c
t t2
A f a (t )dt
t t0
1
yn 1 yn (k0 4k1 k2 )
6
y (tn h / 2) yn k0 h / 2
y (tn h) yn k0 h
1 1
Area (k0 4k1 k2 ) (k2 4k3 k4 )
6 6
La cual puede simplificarse a:
1
Area (k0 4k1 2k2 4k3 k4 )
6
Con 2n+1 puntos en total, se tiene en general:
h
Area ( f 0 4 f1 2 f 2 4 f3 ...... 2 f 2 n 2 4 f2n 1 f2n )
6
Existen métodos más elaborados para efectuar un paso de integración, En éstos la función se
evalúa en varias etapas entre dos puntos. Los puntos de las etapas sólo se emplean para el
cálculo del nuevo valor.
Consisten en definir una función en la cual se escogen los parámetros de tal modo de minimizar
los errores.
k1 f yn , t n
k2 f yn hk1 , tn h
yn 1 yn h ak1 bk2
Con:
y tn , tn af y(tn ), tn bf y(tn ) hf y(tn ), tn , tn h
Tn y tn h y tn h y tn , tn
Como se tiene:
d2y d f f dy f f
f y t ,t f ft fy f
dt 2 dt t y dt t y
d3y d f f d f d f f df
f ( ) ( )f
dt 3 dt t y dt t dt y y dt
d3y 2
f f 2 2
f 2
f f f f
f f f f
dt 3 t 2
t y y t y 2
y t y
d3y
ftt f yt f ( f yt f yy f ) f f y ( ft fy f )
dt 3
h2 h3
y tn h y tn hf ( ft fy f ) ( ftt 2 f ty f f yy f 2 f y ft f y 2 f ) O (h 4 )
2! 3!
Donde se ha empleado: f f y tn , tn
Para el segundo término de Tn, se requiere expandir el término que está multiplicado por b. Para
esto se emplea la expansión de Taylor de dos variables de f yn y, tn t ,
con: y hf , t h . Como está multiplicado por h, sólo es necesario considerar hasta
los términos de segundo orden.
Entonces;
f y y, t t f y, t
f ( y, t ) f ( y, t ) 1 f 2 ( y, t ) 2 f 2 ( y, t ) 1 f 2 ( y, t ) 2
y t y y t t
y t 2 y2 y t 2 t2
h h2
Tn h f ft ff y ftt 2 fty f f yy f 2 f y ft fy f
2 3!
2
f yy f ftt 2 2
h af b f ( fy f f t )h h2 f yt fh 2 h O (h 4 )
2 2
Los parámetros: a, b, , , se escogen del tal modo de minimizar el error. En este caso pueden
hacerse cero los coeficientes de h y h 2 , pero no es posible eliminar la parte que depende de
h3 .
De la primera se obtiene: a b 1
1 1
De la segunda, debe cumplirse: ft ( b ) ff y (
b ) 0 , de la que se desprenden:
2 2
1
b b
2
Con a 1, b 0 se tiene el método de Euler. No pueden ajustarse , . Por esta razón puede
decirse que el algoritmo de Euler pertenece a la familia Runge-Kutta de segundo orden.
yn 1 yn hk2
Con:
k1 f yn , t n
k1h h
k2 f yn , tn
2 2
La pendiente de y está dada ahora por el valor de f en el punto medio del intervalo.
yn+1 f(tn+h/2,yn+k1h/2)
f(tn+1,yn+1)
n
hk2
yn f(tn,yn)
tn tn+1 tn tn+1
h h
En los algoritmos del método de Runge-Kutta de segundo orden, debe evaluarse dos veces la
función: f y (t ), t , para obtener el siguiente punto de la función.
Para derivar el algoritmo de cuarto orden de Runge Kutta, se definen los 10 parámetros:
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 1 yn w1k1 w2 k2 w3k3 w4 k4
Con:
y tn , tn w1 f yn , tn w2 f yn b1k1 , tn a1h
w3 f yn b2 k2 , tn a2 h w4 f yn b3k3 , tn a3h
Antes se obtuvieron las tres primeras derivadas de y. Se requiere calcular la cuarta derivada de
y, se tiene:
d4y d
( ftt 2 fty f f yy f 2 f y ft f y2 f )
dt 4 dt
Derivando, se obtiene:
d4y dy dy d2y dy dy
(( f yyy f yyt ) f yy 2 f yyt f ytt )
dt 4 dt dt dt dt dt
2 3
dy d y d y dy dy d2y dy
2( f yy f yt ) 2 f y 3 ( f yyt f ytt ) f yt 2 f ytt f ttt
dt dt dt dt dt dt dt
d4y d2y
(( f yyy f f yyt ) f f yy f yyt f f ytt ) f
dt 4 dt 2
d2y d3y d2y
2( f yy f f yt ) fy ( f yyt f f ytt ) f f yt f ytt f f ttt
dt 2 dt 3 dt 2
d4y
(( f yyy f f yyt ) f f yy ( f t fy f ) f yyt f f ytt ) f
dt 4
d3y
2( f yy f f yt )( f t fy f ) fy ( f yyt f f ytt ) f f yt ( f t fy f ) f ytt f f ttt
dt 3
d4y
(( f yyy f f yyt ) f f yy ( ft fy f ) f yyt f f ytt ) f
dt 4
2( f yy f f yt )( ft f y f ) f y ( f tt f ty f ( f yt f yy f ) f
f y ( ft f y f )) ( f yyt f f ytt ) f f yt ( ft fy f ) f ytt f fttt
Donde se ha empleado: f f y tn , tn
Entonces;
f yn y , tn t f yn , t n
1 1
fy y ft t f yy y 2 f yt y t f tt t 2
2 2
1 1 1 1
f yyy y 3 f yyt y 2 t f ytt y t2 f ttt t 3
6 2 2 6
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
k2 = 1 1
fyy b1 2 f 2 b1 f fyt a1 ftt a1 2 h 3 ( fy b1 f ft a1 ) h 2 hf
2 2
k3 =
fyy b1 2 f 2 ftt a1 2
fy b2 b1 f fyt a1 fyy b2 2 f ( fy b1 f ft a1 )
2 2
b2 2 f 2 fyyt a2 b2 f a2 2 fytt b2 3 f 3 fyyy a2 3 fttt
b2 ( fy b1 f ft a1 ) fyt a2
2 2 6 6
2 2 2
ftt a2 fyy b2 f
h4 fy b2 ( fy b1 f ft a1 ) b2 f fyt a2 h 3
2 2
( fy b2 f ft a2 ) h 2 hf
k4 =
a3 3 fttt b3 3 f 3 fyyy b3 f a3 2 fytt
hf fyy b3 2 f ( fy b2 f ft a2 )
6 6 2
ftt a2 2 fyy b2 2 f 2
fy b3 fy b2 ( fy b1 f ft a1 ) b2 f fyt a2
2 2
h y tn , tn
b1 3 f 3 fyyy b1 2 f 2 fyyt a1 b1 f a1 2 fytt a1 3 fttt a3 3 fttt
w2 w4
6 2 2 6 6
b3 3 f 3 fyyy b3 f a3 2 fytt
fyy b3 2 f ( fy b2 f ft a2 )
6 2
ftt a2 2 fyy b2 2 f 2
fy b3 fy b2 ( fy b1 f ft a1 ) b2 f fyt a2
2 2
b3 2 f 2 fyyt a3
b3 ( fy b2 f ft a2 ) fyt a3 w3
2
fyy b1 2 f 2 ftt a1 2
fy b2 b1 f fyt a1 fyy b2 2 f ( fy b1 f ft a1 )
2 2
b2 2 f 2 fyyt a2 b2 f a2 2 fytt b2 3 f 3 fyyy a2 3 fttt
b2 ( fy b1 f ft a1 ) fyt a2
2 2 6 6
fyy b3 2 f 2 ftt a3 2
h4 w4 fy b3 ( fy b2 f ft a2 ) b3 f fyt a3
2 2
fyy b1 2 f 2 ftt a1 2
w2 b1 f fyt a1
2 2
ftt a2 2 fyy b2 2 f 2
w3 fy b2 ( fy b1 f ft a1 ) b2 f fyt a2 h3
2 2
( w4 ( fy b3 f ft a3 ) w2 ( fy b1 f ft a1 ) w3 ( fy b2 f ft a2 ) ) h 2
( w1 f w2 f w4 f w3 f ) h
Deducir los valores de los parámetros para eliminar términos en la expresión para el error de la
aproximación resulta complejo.
La generación del primer término del error, puede generarse automáticamente 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):
Efectuando la comparación de los coeficientes del error, de tal forma de anular hasta la potencia
cuarta de h, se obtienen 19 ecuaciones:
e1 := w1 w2 w3 w4 1
w2 b1 2 w4 b3 2 w3 b2 2 1
e4 :=
2 2 2 6
1
e5 := w4 b3 a3 w2 b1 a1 w3 b2 a2
3
1
e6 := w4 b3 b2 w3 b2 b1
6
1
e7 := w4 b3 a2 w3 b2 a1
6
w4 a3 2 w2 a1 2 w3 a2 2 1
e8 :=
2 2 2 6
w2 b1 3 w4 b3 3 w3 b2 3 1
ec9 :=
6 6 6 24
2 2 2
w2 b1 a1 w4 b3 a3 w3 b2 a2 1
ec10 :=
2 2 2 8
1 1 1
ec11 := w4 b3 2 b2 b3 b2 2 b2 b1 2 b2 2 b1
w3
2 2 6
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
Las ecuaciones 12 y 15 implican, con a1 = b1, a2 = b2 que a3 = b3. Por lo tanto no se requieren
las ecuaciones 12 y 15.
Las ecuaciones 9, 10, 13 y 19, con a1 = b1, a2 = b2 y a3 = b3 son idénticas. Sólo se requiere
considerar una de ellas.
Las ecuaciones 12 y 11 implican la ecuación 18. Por lo tanto no se requiere emplear la ecuación
11.
Las ecuaciones 12 y 14 implican la ecuación 18. Por lo tanto no se requiere emplear la ecuación
14.
Lo anterior reduce el sistema a 10 ecuaciones en 10 incógnitas (a1, a2, a3, b1, b2, b3, w1, w2,
w3, w4).
> ecc:={e1,e2,e3,e6,e7,ec16,ec17,e4,ec9,ec18}:
> sol:=[solve(ecc)]:sol[1];
1 1 1 1 1 1 1 1
{ b1 , a2 , w1 , a3 1, b3 1, a1 , w3 , w2 , b2 , w4 }
2 2 6 2 3 3 2 6
Puede comprobarse que la solución satisface las 19 ecuaciones, y que el error queda:
Tn O(h5 )
k1 hf yn , tn
k1 h
k2 hf yn , tn
2 2
k2 h
k3 hf yn , tn
2 2
k4 hf yn k3 , t n h
1
yn 1 yn k1 2k2 2 k3 k 4
6
Existen numerosos algoritmos en los que se varía el intervalo de tiempo entre puntos.
df
f ( xk 1 ) f ( xk ) ( xk )( xk 1 xk )
dx
f ( xk )
xk 1 xk
df
( xk )
dx
xs 0
x2 x1 x0
Nótese que f ( x1 ) no es cero, lo cual implica que x1 es una aproximación de xs . También debe
notarse que para calcular la siguiente aproximación deben calcularse la función y la derivada en
el punto anterior.
Donde el valor de tolerancia debe ser un valor lo suficientemente pequeño, para que la solución
se considere aceptable. Con números reales de precisión simple (float en C), un valor razonable
Si el valor inicial es adecuado conviene limitar el número máximo de iteraciones, de este modo
si no existe convergencia se asegura que el algoritmo termine.
También puede verificarse que la ordenada en los puntos sucesivos esté dentro de cierto rango:
f ( xk 1 ) tolerancia
Se emplea un intervalo [x1..x2] en el cual se busca la raíz, para evitar la no convergencia debido
a máximos o mínimos dentro del intervalo. Si en una iteración se encuentra un punto con
derivada casi horizontal en el intervalo, el valor para el nuevo x se aleja de la raíz, como se
ilustra en la Figura 23.7. Para prevenir esta situación se verifica que la nueva aproximación de la
raíz permanezca dentro del intervalo.
Se detienen las iteraciones si los dos últimos valores obtenidos difieren en determinada
tolerancia.
if ((x<x1) || (x>x2))
{printf("Salta fuera del intervalo");
exit(1);
}
if (fabs(dx) < tolerancia) return (x); //Converge.
}
printf("No converge en %d iteraciones.\n", nmax);
exit(1);
return (0.0); //Para evitar warning.
}
float fun2(float x)
{ float funcion, derivada;
funcion=.2*pow(x,4)-2*pow(x,3)+x+7; //función de x, evaluada en x;
derivada=.8*pow(x,3)-6*pow(x,2)+1; //derivada de f evaluada en x;
return (funcion/derivada);
}
Figura 23.8.
F ( x) F ( xs ) J ( xs )( x xs )
F ( xk 1 ) F ( xk ) J ( xk )( xk 1 xk )
Para entender la relación 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 1
x1k
F2 ( x1k 1 , x 2 k 1 ) F2 ( x1k , x 2 k ) F2 ( x1k , x 2 k ) F2 ( x1k , x 2 k ) x2k 1
x2k
x1 x2
Una explicación del cambio de la función de dos variables, puede efectuarse considerando el
plano tangente a la superficie, en el punto (x10, x20) que pasa también por el punto (x11, x21).
x11 F1x2
x1
x21 x2
x20
F1 ( x10 , x 20 ) F1x1
tg ( x1 )
x1 x10 x11
F1 ( x10 , x 20 ) F1x 2
tg ( x2 )
x2 x 20 x 21
El cambio total de la función, resulta:
Aplicando el método de Newton-Raphson, que consiste en asumir que el plano tangente pasa
por el punto que es una aproximación a la solución. Esto equivale a efectuar:
F1 ( x1k 1 , x 2k 1 )
0
F2 ( x1k 1 , x 2k 1 )
F1 ( x1k , x 2 k ) F1 ( x1k , x 2 k )
x1 x2 x1k 1
x1k F1 ( x1k , x 2 k )
F2 ( x1k , x 2 k ) F2 ( x1k , x 2 k ) x 2k 1
x 2k F2 ( x1k , x 2 k )
x1 x2
F1 ( x1k , x 2k ) F1 ( x1k , x 2k ) 1
x1k 1 x1k x1 x2 F1 ( x1k , x 2k )
x 2k 1 x 2k F2 ( x1k , x 2k ) F2 ( x1k , x 2k ) F2 ( x1k , x 2k )
x1 x2
La que expresada en términos de vectores y la matriz inversa del Jacobiano, resulta en general,
para n variables:
xk 1 xk J ( xk ) 1 F ( xk )
Una mejor visualización de la suma de los incrementos, se logra observando los triángulos
semejantes en la Figura 23.10.
Por el punto inicial (2, 2, 10) se pasa el plano z=2x+3y que también pasa por el punto (0, 0, 0).
Se han dibujado además los planos de z constante, z=4 y z=6.
z z z z
2, 3 x 4, y 6
x y x y
F1 (k ) F2 (k )
( F2 (k ) F1 (k ))
x1k x1k x2 x2
1
F1 (k ) F2 (k ) F1 (k ) F2 (k )
x1 x2 x2 x1
F2 (k ) F1 (k )
( F1 (k ) F2 (k ))
x 2k x 2k x2 x1
1
F1 (k ) F2 (k ) F1 (k ) F2 (k )
x1 x2 x2 x1
J ( xk )( xk 1 xk ) F ( xk )
Referencias.
Numerical Recipes In C: The Art of Scientific Computing. Cambridge University Press. 1992.
Índice general.
CAPÍTULO 23 ............................................................................................................................................1
ALGORITMOS NUMÉRICOS.................................................................................................................1
23.1. SOLUCIÓN DE SISTEMA SIMULTÁNEO DE ECUACIONES LINEALES. .....................................................1
23.1.1. Descomposición LU. ................................................................................................................1
23.1.2. Métodos iterativos. ...................................................................................................................7
23.2. SOLUCIÓN NUMÉRICA DE SISTEMAS DE ECUACIONES DIFERENCIALES. ...........................................10
23.2.1. Formulación de ecuaciones de estado. ..................................................................................11
23.2.2. Método 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. Métodos multietapas. .............................................................................................................17
23.4.6.1. Método de Heun. ............................................................................................................................. 20
23.4.6.2. Método del punto medio. ................................................................................................................ 20
23.4.6.3. Método de Ralston. ......................................................................................................................... 20
23.4.7. Métodos de Runge-Kutta de cuarto orden. ............................................................................21
23.3. SOLUCIÓN DE ECUACIÓN NO LINEAL...............................................................................................28
23.3.1. Método de Newton-Raphson. .................................................................................................28
23.3.2. Generalización para sistemas de ecuaciones no lineales. .....................................................32
REFERENCIAS. .........................................................................................................................................35
ÍNDICE GENERAL. ....................................................................................................................................36
ÍNDICE DE FIGURAS. ................................................................................................................................37
Índice de figuras.