Está en la página 1de 79

2.

1 Método de Bisección

Las condiciones para aplicación del algoritmo de bisección, establecen que la


función f(x) evaluada sea continua sobre el intervalo [a, c], tal que: f(a)f(c)  0; de esto
se sabe que existe al menos una raíz de f(x) en el intervalo.

Teorema del valor intermedio

Sea f(x) continua en un intervalo [a, c] y supongamos que f(a) < f(c). Entonces
para cada z, tal que: f(a) < z < f(c), existe un x0  [a, c] tal que: f(x0) = z. La misma
conclusión se obtiene para el caso que f(a) > f(c).

Básicamente el Teorema del Valor Intermedio nos dice que toda función continua en un
intervalo cerrado, una vez que alcanzó ciertos valores en los extremos del intervalo,
entonces debe alcanzar todos los valores intermedios.

En particular, si f(a) y f(c) tienen signos opuestos, entonces un valor intermedio es


precisamente z = 0, y por lo tanto, el Teorema del Valor Intermedio nos asegura que
debe existir x0  [a, c] tal que f(x0) = 0, es decir, debe haber por lo menos una raíz de
f(x) en el intervalo [a, c].

Funcionamiento

Suponga que el intervalo entre x = a y x = c, denotado por [a, c], tiene una sola
raíz como se muestra en la figura (2.1), el método de bisección se sustenta en el hecho
de que para que en un intervalo [a, c] exista una raíz basta que los signos de f(x) en los
extremos sean opuestos o bien que se anulen f(a)f(c)  0.

Primero se divide en dos el intervalo [a, c], estas mitades son: [a, b] y [b, c], donde
b = (a + c)/2, al verificar los signos de f(a)f(b) y f(b)f(c), se localiza la mitad del intervalo
que contiene a la raíz, este intervalo se divide en dos de nuevo, y se evalúa el error
porcentual alcanzado (ea%) respecto al solicitado por el usuario (10-3≤ es% ≤10-1,
recomendado para evitar acumulación de error por redondeo y truncamiento), cuya
magnitud indica el grado de aproximación en el resultado, para calcular el error
porcentual alcanzado emplearemos la siguiente fórmula:

b actual  b previa
x100%  e a % (2.1)
b actual

El proceso iterativo debe detenerse cuando se cumpla la condición de convergencia


siguiente:
e a %  es %

Cuando la raíz buscada es cero, se debe adicionar un valor del orden de 10-3 al valor de
bactual a fin de evitar error por división entre cero.

La figura (2.1) ilustra el proceso de aproximación por bisección.


Figura (2.1). Proceso de Bisección. Tomado de: Nakamura, S. (1992); “Métodos
Numéricos Aplicados con Software”.

Algoritmo:

(i) Ingresar: a, c y es
(ii) Evaluar: f(a)*f(c)  0
 Si se cumple, Continuar al paso iii)
 Si no se cumple, regresar al paso i) (la función no tiene raíz en el intervalo)
(iii) Calcular: b = (a + c)*0.5
(iv) Evaluar: f(a)*f(b)  0
 Si se cumple, hacer: c = b
 Si no se cumple, hacer: a = b
(v) Calcular ea
(vi) Evaluar: ea  es
 Si se cumple, la raíz es b
 Si no se cumple, volver al paso iii)

Limitaciones:

 El método de Bisección se satisface siempre que el intervalo tenga un


número impar de raíces, por lo cual presenta dificultades para encontrar una
pareja de raíces dobles debido a que la función toca al eje x de manera
tangencial en las raíces dobles.
 El método puede confundir una singularidad como si fuera una raíz, para
evitar este problema se debe verificar si |f(c) – f(a)| converge a cero cuando
se ejecuta la bisección, si esta cantidad diverge se trata de una singularidad.
 El programa funciona siempre que se conozca el intervalo que contiene a la
raíz.

Ejemplo:
Calcular la raíz de la función sen(x), en el intervalo [2.5, 4.0] con una
aproximación del 0.1%.

Figura (2.1a). Grafica de la función Seno(x) desde 0.0 hasta 5.0 con espaciamiento de
0.1 unidades.

Aplicando el método de Bisección se obtienen los resultados mostrados en la a


continuación:

METODO BISECCION

INGRESE A, C Y ES
2.5 4.0 0.1

RESULTADOS BISECCION

N A F(A) C F(C) B F(B) EA


1 2.5000 0.5985 4.0000 -0.7568 3.2500 -0.1082 100.0000
2 2.5000 0.5985 3.2500 -0.1082 2.8750 0.2634 13.0435
3 2.8750 0.2634 3.2500 -0.1082 3.0625 0.0790 6.1224
4 3.0625 0.0790 3.2500 -0.1082 3.1563 -0.0147 2.9703
5 3.0625 0.0790 3.1563 -0.0147 3.1094 0.0322 1.5075

6 3.1094 0.0322 3.1563 -0.0147 3.1328 0.0088 0.7481


7 3.1328 0.0088 3.1563 -0.0147 3.1445 -0.0029 0.3727
8 3.1328 0.0088 3.1445 -0.0029 3.1387 0.0029 0.1867
9 3.1387 0.0029 3.1445 -0.0029 3.1416 -0.0000 0.0933

APROXIMACION FINAL AL 0.0933 % = 3.1416

Codificación:

La codificación utilizada para generar los resultados mostrados es la siguiente:

PROGRAM BISECCION

REAL(4) A,B,BP,C,EA,ES

10 WRITE(*,*)' METODO BISECCION '


WRITE(*,*)''
WRITE(*,*)'INGRESE A, C Y ES'
READ(*,*)A,C,ES
IF (F(A)*F(C).LE.0)THEN
ELSE
WRITE(*,*)'RAIZ NO EXISTE EN INTERVALO'
GOTO 10
END IF
WRITE(*,*)' RESULTADOS BISECCION'
WRITE(*,*)''
WRITE(*,*)' N A F(A) C F(C) B
F(B) EA'
BP=0
N=0
15 N=N+1
B=(A+C)*0.5
EA=ABS((B-BP)/B)*100
WRITE (*,16)N,A,F(A),C,F(C),B,F(B),EA
IF (F(A)*F(B).LE.0)THEN
C=B
ELSE
A=B
END IF
IF(EA.LE.ES)THEN
WRITE(*,17)EA,B
ELSE
BP=B
GOTO 15
END IF
16 FORMAT (I3,7(F9.4,1X))
17 FORMAT (1X,' APROXIMACION FINAL AL ',F9.4,' % =',F9.4)
END
FUNCTION F(X)
F=SIN(X)
RETURN
END
Método de Falsa Posición

Este método es análogo al método de bisección, puesto que el tamaño del


intervalo que contiene la raíz se reduce mediante iteración; sin embargo, se utiliza una
interpolación lineal ajustada a dos puntos extremos para encontrar una aproximación de
la raíz.

Funcionamiento:

Dado un intervalo [a, c], que contenga a la raíz de la función lineal que pasa por
(a, f(a)) y (c, f(c)), la ordenada en un punto se escribe como:

f(c)  f(a)
y  f(a)  (x  a) (2.2)
ca
Despejando x, se tiene:
ca
xa (y  f(a)) (2.3)
f(c)  f(a)
La coordenada b, en donde la línea intercepta al eje x, se determina al hacer
y = 0, en la ecuación (2.3), así:

ca af(c)  cf(a)


ba f(a)  (2.4)
f(c)  f(a) f(c)  f(a)

Después de encontrar b, el intervalo [a, c] se divide en [a, b] y [b, c], si: f(a)f(b)  0, la
raíz se encuentra en [a, b], en caso contrario, está en [b, c]. Los extremos del nuevo
intervalo que contiene a la raíz se renombran a y c. y se evalúa el error porcentual
alcanzado (ea%) respecto al solicitado por el usuario como tolerancia (es%), cuya
magnitud indica el grado de aproximación en el resultado.
Figura (2.2). Método de falsa posición. Tomado de: Nakamura, S. (1992); “Métodos
Numéricos Aplicados con Software”.

Algoritmo:

(i) Ingresar: a, c y es
(ii) Evaluar: f(a)*f(c)  0
 Si se cumple, Continuar al paso iii)
 Si no se cumple, regresar al paso i) (la función no tiene raíz en el intervalo)
(iii) Calcular b usando (2.4)
(iv) Evaluar: f(a)*f(b)  0
 Si se cumple, hacer: c = b
 Si no se cumple, hacer: a = b
(v) Calcular ea
(vi) Evaluar: ea  es
 Si se cumple, la raíz es b
 Si no se cumple, volver al paso iii)

Limitaciones:

 Pueden aparecer extremos fijos, en donde uno de los extremos de la


sucesión de intervalos no se mueve del punto original; esto hace más lenta
la convergencia en particular cuando el intervalo inicial es muy grande, ver
figura.

Ejemplo:

Calcular la raíz del polinomio -10x3+5x2+3x+10, en el intervalo [0, 2], con un error
aproximado de 0.1%.
Figura (2.2a). Grafica de la función y = -10x3+5x2+3x+10, en el intervalo [0, 2], con un
avance de 0.1.

Los resultados computacionales proporcionan los siguientes resultados:

METODO FALSA POSICION

INGRESE A,C Y ES

0.0 2.0 0.1

RESULTADOS FALSA POSICION

N A F(A) C F(C) B F(B) EA


1 0.0000 10.0000 2.0000 -40.0000 0.4000 12.1600 100.0000
2 0.4000 12.1600 2.0000 -40.0000 0.7730 12.2337 48.2540
3 0.7730 12.2337 2.0000 -40.0000 1.0604 9.0009 27.1011
4 1.0604 9.0009 2.0000 -40.0000 1.2330 5.0219 13.9984
5 1.2330 5.0219 2.0000 -40.0000 1.3185 2.3622 6.4887
6 1.3185 2.3622 2.0000 -40.0000 1.3565 1.0209 2.8012
7 1.3565 1.0209 2.0000 -40.0000 1.3725 0.4249 1.1667
8 1.3725 0.4249 2.0000 -40.0000 1.3791 0.1741 0.4782
9 1.3791 0.1741 2.0000 -40.0000 1.3818 0.0709 0.1947
10 1.3818 0.0709 2.0000 -40.0000 1.3829 0.0288 0.0791

APROXIMACION FINAL AL 0.0791 % = 1.3829

Codificación:

La codificación empleada para obtener los resultados mostrados es la siguiente:

PROGRAM FALSA_POSICION

REAL(4) A,C,ES,EA,B,BP

10 WRITE(*,*)' METODO FALSA POSICION '


WRITE(*,*)''
WRITE(*,*)'INGRESE A,C Y ES'
READ(*,*)A,C,ES
IF (F(A)*F(C).LE.0)THEN
ELSE
WRITE(*,*)'RAIZ NO EXISTE EN INTERVALO'
GOTO 10
END IF
WRITE(*,*)' RESULTADOS FALSA POSICION'
WRITE(*,*)''
WRITE(*,*)' N A F(A) C F(C) B
F(B) EA'
N=0
BP=0
15 N=N+1
B=A-((C-A)/(F(C)-F(A)))*F(A)
EA=ABS((B-BP)/B)*100
WRITE (*,16)N,A,F(A),C,F(C),B,F(B),EA
IF (F(A)*F(B).LE.0)THEN
C=B
ELSE
A=B
END IF
IF(EA.LE.ES)THEN
WRITE(*,17)EA,B
ELSE
BP=B
GOTO 15
END IF
16 FORMAT (I3,7(F9.4,1X))
17 FORMAT (1X,' APROXIMACION FINAL AL ',F9.4,' % =',F9.4)
END

FUNCTION F(X)
F=-10*X**3+5*X**2+5*X+10
RETURN
END
Método de Newton-Raphson

Se encuentra la raíz partiendo de una estimación inicial, utilizando las rectas


tangentes que se evalúan analíticamente. El método de Newton se puede aplicar a partir
del desarrollo de Taylor.

Funcionamiento:

Supongamos que el problema es encontrar la raíz de f(x) = 0, el desarrollo de


Taylor en torno a una estimación x0 truncado en términos de orden superior, es:

f(x)  0  f(x 0 )  f' (x 0 )(x  x 0 )  O(h 2 ) (2.5)

Dónde: h = x - x0, es el intervalo de avance.


x0, es una estimación inicial para la raíz.

Al despejar x en la ecuación (2.5) no se obtiene el valor exacto debido al error por


truncamiento, pero la solución se aproxima a el valor exacto de x si utilizamos el valor
obtenido como aproximación mejorada de x0; por ello, lo siguiente es obtener la función
lineal que pasa por (x0, y0) y aproximar por iteración.

La intersección de la recta tangente con el eje x, se denota como x1 y se


considera una segunda aproximación de la raíz. Se repite el mismo procedimiento
utilizando el valor actualizado para el siguiente ciclo de iteración.
La recta tangente que pasa por (x0, f(x0)), es:

g(x)  f' (x 0 )(x  x 0 )  f(x 0 ) (2.6)

La raíz de g(x), denotada por x1, satisface:

f' (x 0 )(x 1  x 0 )  f(x 0 )  0 (2.7)

Despejando x1, se tiene:

f(x 0 )
x1  x 0  (2.8)
f' (x 0 )

Por lo tanto las aproximaciones sucesivas a la raíz, se pueden escribir como:

f(x i 1 )
x i  x i 1  (2.9)
f' (x i 1 )

El proceso de aproximación, puede observarse en la figura (2.3).


Figura (2.3). Aproximación iterativa en el método de Newton. Tomado de: Nakamura,
S. (1992); “Métodos Numéricos Aplicados con Software”.

La primera derivada de la función puede obtenerse, usando una aproximación por


diferencias centrales de segundo orden.
f(x 0  h)  f(x 0 - h)
f' (x 0 )  (2.10)
2h

En el proceso iterativo la ecuación (2.10), puede escribirse como:

f(x i 1  h)  f(x i 1  h)
f' (x i 1 )  (2.11)
2h

Dónde: h, es un número real que cumple lo siguiente: 10-3 ≤ h ≤ 10-1, y se define


de antemano.

En este caso se ha optado por utilizar como elemento de convergencia un valor


de tolerancia (TOL), el cual define la máxima diferencia en valor absoluto que se
permitirá entre los valores evaluados funcionalmente para x0 y x1; mientras menor sea
esta diferencia mayor será la aproximación al valor de raíz buscado. Generalmente se
emplea un valor para TOL que cumple lo siguiente: 10-3 ≤ TOL ≤ 10-1
Algoritmo:

(i) Ingresar x0 y Tol


(ii) Evaluar f’(x0) usando la ecuación (2.10)
(iii) Calcular x1 usando (2.8)
(iv) Evaluar |f(x0) - f(x1)|  Tol
 Si se cumple entonces, x1 es la raíz aproximada
 Si no se cumple entonces hacer x0 = x1 y volver al paso ii)

Limitaciones:

 El método de Newton requiere una buena estimación inicial de la raíz. De


otro modo la solución puede divergir o converger a una solución irrelevante.
 El método puede encontrar raíces complejas si las variables se definen como
complejas.

Ejemplo:

Calcular la raíz más próxima a 0.1 de la función y = -x + cos(x2), con una


tolerancia de 0.01, mostrando 5 decimales de aproximación.

Figura (2.3a). Grafica de la función y = -x + cos(x2), desde 0 hasta 2 con un avance de


0.1 unidades.

Los resultados computacionales para este ejemplo son:


RAIZ DE UNA FUNCION (METODO DE NEWTON_RAPHSON)
==============================================

INGRESO DE DATOS
==================================
INGRESE X0 Y TOL
0.1 0.01

RESULTADOS NEWTON-RAPHSON

N X0 X1 DFX ABS(F(X0)-F(X1))
1 0.10000 0.99814 -1.00202 1.35465
2 0.99814 0.82820 -2.67578 0.40034
3 0.82820 0.80167 -2.04922 0.05319
4 0.80167 0.80107 -1.96104 0.00118

LA RAIZ HALLADA ES: 0.80107 APROXIMACION = 0.00118

La raíz obtenida luego de 4 iteraciones, con una diferencia en valor absoluto de .00118
y una aproximación de cinco decimales fue: 0.80107

Codificación:

La codificación empleada para obtener estos resultados fue la siguiente:

PROGRAM NEWTON_RAPHSON

REAL(4) X0,X1,TOL,DFX,E

5 WRITE(*,*)''
WRITE(*,*)' RAIZ DE UNA FUNCION (METODO DE NEWTON_RAPHSON)'
WRITE(*,*)' =============================================='
WRITE(*,*)''
WRITE(*,*)' INGRESO DE DATOS'
WRITE(*,*)' =================================='
WRITE(*,*)' INGRESE X0 Y TOL'
READ(*,*)X0,TOL
WRITE(*,*)'RESULTADOS NEWTON-RAPHSON'
WRITE(*,*)' N X0 X1 DFX ABS(F(X0)-F(X1))'
H=0.01
N=0
10 N=N+1
DFX=(F(X0+H)-F(X0-H))/(2*H)
X1=X0-F(X0)/DFX
E=ABS(F(X0)-F(X1))
IF(E.GT.TOL)THEN
WRITE(*,22)N,X0,X1,DFX,E
X0=X1
GOTO 10
ELSE
WRITE(*,22)N,X0,X1,DFX,E
WRITE(*,20)X1,E
END IF
20 FORMAT(' LA RAIZ HALLADA ES: ',F9.5,1x,'APROXIMACION = ',F9.5)
22 FORMAT(1X,I2,4(F9.5,1X))
END

FUNCTION F(X)
F=-x+cos(x**2)
RETURN
END

En el caso de que f’(xi) = 0, el método no se puede aplicar. De hecho,


geométricamente que esto significa que la recta tangente es horizontal y por lo tanto no
intersecta al eje x en ningún punto, a menos que coincida con éste, en cuyo caso xi
mismo es una raíz de f(x).
Método de la Secante

Este método se diferencia al de Newton en que f’ se aproxima usando los valores


de iteraciones consecutivas de f.
Esto elimina la necesidad de evaluar tanto a f como a f’ en cada iteración. Otra
diferencia es que la técnica se basa en el método de falsa posición dado que se utiliza
la fórmula de interpolación lineal.

Funcionamiento:

El principal inconveniente del método de Newton estriba en que requiere conocer


el valor de la primera derivada de la función en el punto. Sin embargo, la forma funcional
de f(x) dificulta en ocasiones el cálculo de la derivada. En estos casos es más útil
emplear el método de la secante.
El método de la secante parte de dos puntos (y no sólo uno como el método de
Newton) y estima la tangente (es decir, la pendiente de la recta) por una aproximación
de acuerdo con la expresión:

f (x 1 )  f (x 0 )
f ' (x 0 ) 
x1  x 0

Sustituyendo esta expresión en la ecuación (2.8) del método de Newton-


Raphson, obtenemos la expresión del método de la secante que nos proporciona el
siguiente punto de iteración:

x1  x 0
x2  x0  f (x 0 ) (2.12)
f (x 1 )  f (x 0 )

Dónde: x0 y x1, son dos suposiciones iniciales para comenzar la iteración.

En la siguiente iteración se utilizan x1 y x2 como nuevas suposiciones; el proceso


iterativo utiliza como elemento de convergencia un valor de tolerancia (TOL), el cual
define la máxima diferencia en valor absoluto que se permitirá entre los valores
obtenidos para x2 y x1; mientras menor sea esta diferencia mayor será la aproximación
al valor de raíz buscado.

El esquema geométrico de aproximación puede observarse en la figura (2.4).

Figura (2.4). Aproximación por el método de la secante. Tomado de: Nakamura, S.


(1992); “Métodos Numéricos Aplicados con Software”.
Algoritmo:

(i) Ingresar los valores de x0 , x1 y Tol


(ii) Calcular f(x0) y f(x1)
(iii) Calcular x2 usando (2.12)
(iv) Evaluar: |x2 - x1|  Tol
 Si se cumple: la raíz es x2
 Si no se cumple, hacer: x0 = x1 y x1 = x2, volver al paso ii)

Limitaciones:

 El método de la secante puede converger a una raíz no deseada ó puede no


converger del todo si la estimación inicial no es buena.
 Es una variación del método de Newton y desde el punto de vista
computacional es más eficiente, pero conlleva sus mismas limitaciones.
 Cuando dos aproximaciones sucesivas están demasiado cercanas, pueden
aparecer errores de redondeo.

Ejemplo:

Calcular usando el método de la secante la raíz de: -10x5+5cos(x2), más próxima


a 0.5, con 5 decimales de aproximación y tolerancia de 0.001.

Figura (2.4a). Grafica de la función y = -10x5+5cos(x2), en el intervalo de 0 a 2


con un avance de 0.1 unidades.

Los resultados computacionales para este ejemplo son:


METODO DE LA SECANTE

INGRESAR LOS PUNTOS DE APROXIMACION X0, X1 y TOL


0.5 0.6 0.001

RESULTADOS

N X0 X1 X2 ABS(X2-X1)
1 0.50000 0.60000 1.21917 0.61917
2 0.60000 1.21917 0.67943 0.53974
3 1.21917 0.67943 0.73477 0.05534
4 0.67943 0.73477 0.86954 0.13478
5 0.73477 0.86954 0.81791 0.05164
6 0.86954 0.81791 0.82639 0.00848
7 0.81791 0.82639 0.82727 0.00088

LA RAIZ HALLADA ES: 0.82727 APROXIMACION = 0.00088

La raíz obtenida luego de 7 iteraciones, con una tolerancia de 0.001 y una


aproximación de cinco decimales fue: 0.82727

Codificación:

La codificación empleada para obtener estos resultados fue la siguiente:

PROGRAM SECANTE

REAL(4) X0,X1,TOL,E
WRITE(*,*)'METODO DE LA SECANTE'
WRITE(*,*)''
WRITE(*,*)'INGRESAR LOS PUNTOS DE APROXIMACION X0, X1 y TOL'
READ(*,*)X0,X1,TOL
WRITE(*,*)'RESULTADOS '
WRITE(*,*)' N X0 X1 X2 ABS(X2-X1)'
N=0
10 N=N+1
X2=X0-F(X0)*((X1-X0)/(F(X1)-F(X0)))
E=ABS(X2-X1)
WRITE(*,22)N,X0,X1,X2,E
IF(E.LE.TOL)THEN
WRITE(*,20)X2,E
ELSE
X0=X1
X1=X2
GOTO 10
END IF
20 FORMAT(' LA RAIZ HALLADA ES: ',F9.5,1x,'APROXIMACION = ',F9.5)
22 FORMAT(1X,I2,4(F9.5,1X))
END

FUNCTION F(X)
F=-10*x**5+5*cos(x**2)
RETURN
END
3. Método de eliminación de Gauss y sustitución regresiva

Sean A una matriz cuadrada dada de orden N, y B un vector dado de orden N;


se desea, resolver la ecuación matricial:

AX = B (3.4)

El vector solución X puede obtenerse sin dificultad en caso de que A sea


triangular superior con todas la entradas diagonales no nulas. Como generalmente no
se presenta este caso, nuestro trabajo será convertir la matriz A y B en A’ y B’, tal que
se cumpla lo siguiente:

A’X= B’, donde: A’ es una matriz triangular superior.

Para lograr esto utilizamos la matriz ampliada [A: b], que es la unión de términos
de A y B; así, para el caso de un sistema de 3 ecuaciones lineales con 3 incógnitas, en
orden cero la representación es:
[E1 ]0   a 11 a 12 a 13 b1 
 
[A : B] 0  [E 2 ]0   a 21 a 22 a 23 b 2  (3.5)
[E 3 ]0   a 31 a 32 a 33 b 3 

Dónde: [E1]0, es la representación de la primera fila de la matriz ampliada en


orden cero.

Por eliminaciones sucesivas, convertimos esta matriz ampliada a otra nueva, de


modo que al final se obtenga [A: B]N-1 , es decir una matriz ampliada en orden N-1,
entonces:

[A:B]0 [A: B]1............[A : B]N-2  [A: B]N-1 (3.6)

El método consiste en sustituir los vectores fila [Ei]m secuencialmente en dos pasos:

i) [E j ]m  [E j ]m 1 ; (j = 1, 2,….., m)
m1
aim
ii) [ Ei ]m  [ Ei ]m1  m1
[ Em ]m1 ; (i = m+1,……,N) (3.7)
amm

Donde m, es el orden de eliminación y el valor amm es el elemento pivote por


aplicaciones sucesivas de los pasos (3.7), se llega a una matriz ampliada [A: B] N-1, que
es una matriz triangular superior de la forma:

 a11 N 1 a12
N 1
a13
N 1

b1
N 1
 N 1 N 1
 N 1
[ A : B] N 1  0 a22 a 23 b2  (3.8)
 N 1 
a33 b3 
N 1
 0 0
En este punto podemos resolver el sistema, acomodando la ecuación (3.8) en la
siguiente forma:

 a11N 1 a12
N 1
a13  x  x1   b1N 1 
N 1
 N 1

N 1    N 1 
 0 a 22 a 23  y  x 2    b 2  (3.9)
 N 1   N 1 
 0 0 a 33  z  x 3   b3 

El proceso de sustitución regresiva tiene dos partes:

a) Dado que la última ecuación solo involucra a z (x3) y siendo que aNNN-1  0,
debemos tener:
b NN 1 b'3
xN  ó z  (3.10)
a NNN1 a'33

b) El segundo paso nos permitirá conocer el valor de las incógnitas restantes:

 N
 1
x i  biN 1   a itN 1x t  N 1 ; (i = N-1,……, 1) (3.11)
 t  i 1  a ii

Ejemplo:

Resolver mediante el método de Eliminación de Gauss y Sustitución Regresiva


el siguiente sistema de ecuaciones lineales:

-1x + 1y - 4z = 0
2x + 2y = 1
3x + 3y + 2z = 1/2

En notación matricial, tenemos:

 - 1 1 - 4  x   0 
    
 2 2 0  y    1   A.X  B
 3 3 2  z  1/2 
    

Calculamos la matriz ampliada [A: B]0, en orden cero.

 -1 1 - 4 0 
 
[A : B]   2 2 0 1 
0

 3 3 2 1/2 
 

Llevamos [A: b]0 [A: b]1; el elemento pivote es el primer valor de la diagonal, entonces,
como es la primera eliminación m = 1.

- Se mantiene fijo el primer vector fila, es decir: [E1]0 = [E1]1


- El cálculo se inicia para [E2]1
a   2 
[E 2 ]1  [E 2 ]0   21 [E 1 ]0  2 2 0 1    1 1  4 0  0 4 - 8 1
 a 11   1
a   3 
[E 3 ]1  [E 3 ]0   31 [E 1 ]0  3 3 2 1/2     1 1  4 0   0 6 - 10 1/2 
 a 11   1

La nueva matriz ampliada [A: B]1

[E1 ]1   - 1 1 - 4 0 
 
[A : B]1  [E 2 ]1   0 4 - 8 1 
[E 3 ]1   0 6 - 101/2 

Como [A: B]1 no es una matriz triangular superior, es necesario repetir el proceso a partir
del vector fila por reducir.

Llevamos [A: B]1 [A: B]2; el elemento pivote es el segundo valor de la diagonal, para
este caso m = 2.

- Fijo el primer y segundo vector fila, es decir: [E1]2 = [E1]1 y [E2]2 = [E2]1
- El cálculo se inicia para [E3] 2
-
 a 1 32  6
[E 3 ] 2  [E 3 ]1   1 [E 2 ]1  0 6 - 10 1/2    0 4 - 8 1  0 0 2 - 1
 a 22  4

La nueva matriz ampliada [A: B]2 es:


[E1 ]2   - 1 1 - 4 0 
 
[A : B] 2  [E 2 ]2   0 4 - 8 1 
[E 3 ]2   0 0 2 - 1

Esta matriz es triangular superior. Nótese que se emplearon N-1 matrices ampliadas.
En este punto procedemos a efectuar la sustitución regresiva:

 - 1 1 - 4  x   0 
    
 0 4 - 8  y    1   A .X  B
2 2

 0 0 2  z   - 1
    

El proceso de sustitución regresiva tiene dos partes:

a) Operando con la ecuación (3.10) se tiene:


b32 -1
x3  2
 z 
a 33 2
b) El segundo paso nos permitirá conocer el valor de las incógnitas restantes:

i =2
 3
 1
x2  b22   a 22t xt  2
 t  2 1  a 22

x2 = y = -0.75
i =1
 3
 1
x1  b12   a12t xt  2
 t 11  a11
x1 = x = 1.25

Las soluciones del Sistema son: x = 1.25; y = -0.75 y z = -0.5

Los resultados computacionales para este problema empleando Fortran son los
siguientes:

SOLUCION DE SISTEMAS DE ECUACIONES LINEALES ELIMINACION


GAUSS Y SUSTITUCION REGRESIVA
============================================================
INGRESO DE DATOS (SOLUCION SISTEMA DE N EC.CON N INCOGNITAS
============================================================

INGRESE DIMENSION DE LA MATRIZ DE COEFICIENTES


3

INGRESE ELEMENTOS DE MATRIZ A

-1.0 1.0 -4.0


2.0 2.0 0.0
3.0 3.0 2.0

INGRESE VECTOR DE TERMINOS INDEPENDIENTES

0.0
1.0
0.5

MATRIZ TRIANGULAR SUPERIOR PRELIMINAR


=====================================
-1.00000 1.00000 -4.00000 .00000
.00000 4.00000 -8.00000 1.00000
.00000 6.00000 -10.00000 .50000

MATRIZ TRIANGULAR SUPERIOR PRELIMINAR


=====================================
-1.00000 1.00000 -4.00000 .00000
.00000 4.00000 -8.00000 1.00000
.00000 .00000 2.00000 -1.00000

MATRIZ INGRESADA
================
-1.00000 1.00000 -4.00000
2.00000 2.00000 .00000
3.00000 3.00000 2.00000
MATRIZ TRIANGULAR SUPERIOR FINAL
================================
-1.00000 1.00000 -4.00000
.00000 4.00000 -8.00000
.00000 .00000 2.00000

SOLUCIONES
==========
X 1= 1.25000
X 2= -.75000
X 3= -.50000

Codificación:

La codificación elaborada que genera los resultados mostrados es la siguiente:

PROGRAM SOLUCION_SIST_EC_LINEALES

REAL(4) A(100,100),A1(100,100),XSOL(100)

10 WRITE (*,*)''
WRITE (*,*)' SOLUCION DE ECUACIONES LINEALES SIMULTANEAS ELIMINACION DE'
WRITE (*,*)' GAUSS Y SUSTITUCION REGRESIVA'
WRITE (*,*)' =========================================================='
WRITE (*,*)''
WRITE (*,*)' INGRESO DE DATOS (SOLUCION SISTEMA DE N CON N INCOGNITAS)'
WRITE (*,*)' =========================================================='
WRITE (*,*)''
WRITE (*,*)' INGRESE DIMENSION DE LA MATRIZ DE COEFICIENTES '
READ (*,*)M1
WRITE (*,*)''
WRITE (*,*)' INGRESE ELEMENTOS DE MATRIZ A '
DO I=1,M1
READ(*,*)(A(I,J),J=1,M1)
END DO
DO I=1,M1
WRITE (*,*)' INGRESE VECTOR DE TERMINOS INDEPENDIENTES'
READ(*,*)A(I,M1+1)
END DO
! COPIANDO EN LA MATRIZ DE PASO
20 LP=2
LN=LP-1
DO I=1,M1
DO J=1,M1+1
A1(I,J)=A(I,J)
END DO
END DO
! FIN DEL COPIADO
! HACIENDO LA ELIMINACION
21 DO I=LP,M1
WPASO1=A1(I,LN)
WPASO2=A1(LN,LN)
DO J=1,M1+1

A1(I,J)=A1(I,J)-(WPASO1/WPASO2)*A1(LN,J)
END DO
END DO
! FIN DE LA ELIMINACION
! REPITIENDO EL PROCESO
WRITE(*,*)''
WRITE(*,*)' MATRIZ TRIANGULAR SUPERIOR PRELIMINAR'
WRITE(*,*)' ====================================='
DO MI=1,M1
WRITE(*,100)(A1(MI,MJ),MJ=1,M1+1)
END DO
WRITE(*,*)''
LP=LP+1
LN=LP-1
IF (LP.GT.M1)THEN
NK=M1
GOTO 27
ELSE
GOTO 21
END IF
! SUSTITUCION REGRESIVA
27 SUMA=0
DO J=1,M1
SUMA=SUMA+A1(NK,J)*XSOL(J)
END DO
XSOL(NK)=(A1(NK,M1+1)-SUMA)/A1(NK,NK)
NK=NK-1
IF (NK.LE.0) THEN
GOTO 28
ELSE
GOTO 27
END IF
! FIN DE SUSTITUCION REGRESIVA
! PRESENTACION DE RESULTADOS
28 WRITE (*,*)''
WRITE(*,*)' MATRIZ INGRESADA'
WRITE(*,*)' ================'
DO I=1,M1
WRITE(*,100)(A(I,J),J=1,M1)
END DO
WRITE(*,*)''
WRITE(*,*)' MATRIZ TRIANGULAR SUPERIOR'
WRITE(*,*)' =========================='
DO I=1,M1
WRITE(*,100)(A1(I,J),J=1,M1)
END DO
WRITE(*,*)''
WRITE(*,*)' SOLUCIONES'
WRITE(*,*)' =========='
DO I=1,M1
WRITE(*,29)I,XSOL(I)
END DO
! FIN DE PRESENTACION
WRITE(*,*)''
WRITE(*,*)''
WRITE(*,*)''
29 FORMAT (1X,' X',I3,'=',F11.5)
100 FORMAT (15(3X,F11.5))
WRITE(*,*)''
WRITE(*,*)''
END
Método de descomposición LU (Lower-Upper)

Nuevamente el problema es resolver la ecuación matricial AX = B, vale decir la


solución del sistema de ecuaciones lineales.

Pero en este caso definimos A como: A=L.U, ó sea el producto de dos matrices
L y U, donde:

 l11 0 0............ 0  u11 u12 u13......... u1n 


   
l l 0............ 0   0 u 22 u 23......... u 2n 
L   21 22 y U (3.12)
. .  . . 
   
l l n3.......... l nn   0 0........... u nn 
 n1 l n2  0

Además podemos definir las siguientes operaciones:

L.(U.X) = B
L .Y = B (3.13)
U. X = Y

Donde y es una matriz columna accesoria, que puede obtenerse de la relación:

 u11 u12 u13......... u1n  x1   y1 


    
 0 u 22 u 23......... u 2n  x 2   y 2 
 .  (3.14)
.  .   . 
    
 0 0........... u nn  x n   y n 
 0

Ahora por definición sabemos que LU = A, entonces:

 l11 0 0............ 0  u11 u12 u13......... u1n   a11 a12 a13......... a1n 
     
 l21 l22 0............ 0   0 u 22 u 23......... u 2n   a 21 a 22 a 23........ a 2n 
 . 
.   . .   . . ............ . 
     
l ln3.......... lnn   0   a n3........ a nn 
 n1 ln2  0 0........... u nn   a n1 a n2

(3.15)

Por lo cual es posible definir:


N

l
k 1
ik u kj  a ij donde : (i  1,2,3,4,....., N) y (j  1,2,3,4,....., N) (3.16)

Por conveniencia hacemos: lii = 1, donde: (i = 1, 2, 3, 4,......, N), es decir todos los
elementos de la diagonal principal de L son iguales a 1. También u1i = a1i, de modo que
podemos simplificar los cálculos, quedando por determinar elementos en un triángulo
más pequeño.
Para nuestra matriz A, podemos diferenciar los elementos para los cuales (i > j) y los
elementos donde (i  j), así:

Para los elementos donde (i > j)


j

l
k 1
ik u kj  a ij (3.17)

Para los elementos donde (i  j)


i

l
k 1
ik u kj  a ij (3.18)

Esto nos permite hacer la evaluación de los uij y los lij, restantes:

i 1
u ij  a ij   lik u kj (i  2,3,....., j)
k 1
i 1
(3.19)
1
lij  (a ij   lik u kj ) (i  j  1,....., N)
a jj k 1

Calculados los valores de L y U, debemos resolver primero L.Y = B, para obtener los
valores de la matriz accesoria y, lo cual nos permitirá calcular los valores de x,
resolviendo U.X = Y.

Nota: en el primer caso será necesario realizar una sustitución progresiva (Upper) y en
el segundo una sustitución regresiva (Lower).

Ejemplo:

Resolver el siguiente sistema de ecuaciones lineales con el método de


descomposición LU.
2x + 5y + 7z = 10
5x + 8y – 3z = 15
3x - 9y + 6z = -8

En notación matricial, tenemos:


 2 5 7  x  10 
    
 5 8 - 3  y   15   A.X  B
 3 - 9 6  z   - 8 
    

Iniciamos la descomposición recordando que: u1i = a1i , lii = 1 y A = L.U, entonces:

 1 0 0 2 5 7  2 5 7 
     
 l 21 1 0   0 u 22 u 23    5 8  3 
l  0 0 u  3  9 6 
 31 l32 1   33   
Triangular: inferior superior
Calculamos los valores de l y u intercalando las formulas (3.17) y (3.18)

1
l 21  a 21   l 2k u k1  l 21 u 11  a 21  l 21  2.5
(?) (2) (5)

k 1
2
u 22  a 22   l 2k u k2  l 21  l 22 u 22  a 22  u 22  4.5
(5/2) (5) (1) (?) (8)
u 12
k 1
1
l 31  a 31   l 3k u k1  l 31 u 11  a 31  l 31  1.5
(?) (2) (3)

k 1
2
u 23  a 23   l 2k u k3  l 21  l 22 u 23  a 23  u 23  20.5
(5/2) (7) (1) (?) (-3)
u 13
k 1
2
l 32  a 32   l 3k u k2  l 31  l 32 u 22  a 32  l 32  3.7
(3/2) (5) (?) (-4.5) (-9)
u 12
k 1
3
u 33  a 33   l 3k u k3  l 31  l 32  l 33 u 33  a 33  u 33  70.7
(3/2) (7) (3.7) (-20.5) (1) (?) (6)
u 13 u 23
k 1

Usamos la relación LY = B, para calcular el vector accesorio por sustitución


progresiva, así:

 1 0 0  y1  10 
    
 2.5 1 0  y 2   15   L.Y  B
 1.5 3.7 1  y   - 8 
  3   

El proceso de sustitución progresiva tiene dos partes:

a) Dado que la primera ecuación solo involucra a y1 y siendo que l11  0, debemos
tener:
b1
y1 
l11
b) El segundo paso nos permitirá conocer el valor de las incógnitas restantes:
 i 1
1
yi  bi   lit yt  ; (i = 2, 3,……, N)
 t 1  lii

10
y1  = 10,
1

 1
 1
y2  b2   l2t yt 
 t 1  l22

y2  b2  l21 y1
1
l22

 15  (2.5)(10)  10
1
1
 2
 1
y3  b3   l3t yt 
 t 1  l33

y3  b3  l31 y1  l32 y2 l1   8  (1.5)(10)  (3.7)(10)11  14
33
Luego calculamos el vector X, de la relación: U.X = Y, por sustitución regresiva, así:

2 5 7  x   10 
    
 0 - 4.5 - 20.5  y    - 10 
0 70.7  z   14 
 0

El proceso de sustitución regresiva tiene dos partes:

a) Dado que la última ecuación solo involucra a x3 y siendo que uNN  0, debemos
tener:
yN
xN 
u NN

b) El segundo paso nos permitirá conocer el valor de las incógnitas restantes:

 N
 1
xi   yi   u it xt  ; (i = N-1,……, 1)
 t i 1  u ii

Finalmente aplicando una sustitución regresiva se obtiene:

y3
z  x3 
u33
14
z  x3   0.198
70.7

 3
 1
x2   y2   u2t xt 
 t  2 1  u22

y  x2  y2  u23 x3 
1
u22
  10  (20.5)(0.198)
1
 4.5
 1.342

 3
 1
x1   y1   u1t xt 
 t 11  u11

x  x1  y1  u12 x2  u13 x3 u1  10  (5)(1.342)  (7)(0.198) 12  0.9701
11
Los resultados computacionales con el programa en Fortran son:

DESCOMPOSICION LU (LOWER UPER)


==============================
INGRESO DE DATOS
=============================================
INGRESE DIMENSION DE LA MATRIZ DE COEFICIENTES
3
INGRESE ELEMENTOS DE MATRIZ A

2.0 5.0 7.0


5.0 8.0 -3.0
3.0 -9.0 6.0

INGRESE VECTOR DE TERMINOS INDEPENDIENTES

10.0
15.0
-8.0

MATRIZ A
========
2.0000 5.0000 7.0000
5.0000 8.0000 -3.0000
3.0000 -9.0000 6.0000

MATRIZ L
========
1.0000 .0000 .0000
2.5000 1.0000 .0000
1.5000 3.6667 1.0000

MATRIZ U
========
2.0000 5.0000 7.0000
.0000 -4.5000 -20.5000
.0000 .0000 70.6667

SOLUCIONES
==========
X: 1 .9701
X: 2 1.3412
X: 3 .1934
Codificación:

La codificación que genera los resultados mostrados del ejemplo anterior es la


siguiente:

PROGRAM DESCOMP_LU

REAL(4) A(100,100),WL(100,100),U(100,100),B(100),X(100),C(100)

10 WRITE (*,*)''
WRITE (*,*)' DESCOMPOSICION LU (LOWER UPPER)'
WRITE (*,*)' ================================'
WRITE (*,*)''
WRITE (*,*)' INGRESO DE DATOS'
WRITE (*,*)' ============================================='
WRITE (*,*)''
WRITE (*,*)' INGRESE DIMENSION DE LA MATRIZ DE COEFICIENTES '
READ (*,*)M1
WRITE (*,*)''
WRITE (*,*)' INGRESE ELEMENTOS DE MATRIZ A '
DO I=1,M1
READ(*,*)(A(I,J),J=1,M1)
END DO
WRITE (*,*)' INGRESE VECTOR DE TERMINOS INDEPENDIENTES'
DO I=1,M1
READ(*,*)B(I)
END DO
WRITE (*,*)''
20 DO J=1,M1
U(1,J)=A(1,J)
END DO
DO J=1,M1
WL(J,J)=1
END DO
SUMA3=0
SUMA4=0
DO J=1,M1
SUMA3=0
DO I=2,J
SUMA3=0
DO K=1,I-1
SUMA3=SUMA3+WL(I,K)*U(K,J)
END DO
U(I,J)=A(I,J)-SUMA3
END DO
SUMA4=0
DO I=1,M1
SUMA4=0
DO K=1,J-1
SUMA4=SUMA4+WL(I,K)*U(K,J)
END DO
WL(I,J)=(A(I,J)-SUMA4)/U(J,J)
END DO
END DO
WRITE(*,*)' MATRIZ A'
WRITE(*,*)' ========'
DO J=1,M1
WRITE(*,30)(A(J,I),I=1,M1)
END DO
WRITE(*,*)' MATRIZ L'
WRITE(*,*)' ========'
DO I=1,M1
WRITE(*,30)(WL(I,J),J=1,M1)
END DO
WRITE(*,*)' MATRIZ U'
WRITE(*,*)' ========'
DO I=1,M1
WRITE(*,30)(U(I,J),J=1,M1)
END DO
NK=1
26 SUMA=0
DO J=M1,1,-1
SUMA=SUMA+WL(NK,J)*C(J)
END DO
C(NK)=(B(NK)-SUMA)/WL(NK,NK)
NK=NK+1
IF (NK.GT.M1) THEN
NK=M1
GOTO 27
ELSE
GOTO 26
END IF
27 SUMA=0
DO J=1,M1
SUMA=SUMA+U(NK,J)*X(J)
END DO
X(NK)=(C(NK)-SUMA)/U(NK,NK)
NK=NK-1
IF (NK.LE.0) THEN
GOTO 28
ELSE
GOTO 27
END IF
28 WRITE(*,*)' SOLUCIONES'
WRITE(*,*)' =========='
DO I=1,M1
WRITE(*,35)I,X(I)
END DO
30 FORMAT (7(F8.4))
35 FORMAT (' X:',I3,F8.4)
END
Regresión lineal

El ejemplo más simple de una aproximación por mínimos cuadrados es mediante el


ajuste de un conjunto de pares de observaciones; así, sea Yi un valor experimental, y
sea yi un valor de la ecuación:
y i  ax i  b (4.1)

Donde xi es un valor particular de la variable que se supone libre de error. Quiere


determinarse los mejores valores para a y b de modo que las y predigan los valores de
la función que corresponden a los valores de x. Sea ei = Yi – yi. El criterio de mínimos
cuadrados requiere que:

N N
S  e12  e 22  .......  e 2N   e i2   Yi  ax i  b 
2
(4.2)
i 1 i 1

La ecuación (4.2), sea mínima. N es el numero de pares (x,Y). Se alcanza el mínimo al


elegir adecuadamente los parámetros a y b, de modo que sean las “variables” del
problema. En el mínimo para S, ambas derivadas parciales S/a y S/b son cero.
Por tanto, recordando que las xi y las Yi son puntos de datos no afectados por la elección
de los valores de a y b, se tiene:

S N
 0   2Yi  ax i  b  x i 
a i 1
(4.3)
S N
 0   2Yi  ax i  b  1
b i 1

Al dividir entre -2 cada una de estas ecuaciones y desarrollar la sumatoria, se obtienen


las denominadas ecuaciones normales.

N N N
a  x i2  b x i   x i Yi
i 1 i 1 i 1
N N (4.4a)
a  x i  bN   Yi
i 1 i 1

Al resolver simultáneamente estas ecuaciones se obtienen los valores para la pendiente


y la ordenada al origen a y b, respectivamente. Para ello emplearemos las siguientes
ecuaciones:
N N

N x Y i i

 x i Yi 
i 1
i 1

N
i 1

a 2
 N 
 xi 
 i 1 
N


i 1
x i2 
N
(4.4b)

N N

 Yi  a  x i
i 1 i 1
b
N
Para los datos mostrados en la figura (4.1), se encuentra que:

N  5;  Ti  273.1;  Ti2  18607.27;  R i  4438,


T Ri i  254932.5

Luego las ecuaciones normales son:


18607.27a  273.1b  254932.5
273.1a  5b  4438
A partir de lo anterior se encuentra a = 3.395, b = 702.2 y así, la ecuación se escribe
como:
R  702  3.39T
De esta ecuación que relaciona las variables resistencia y temperatura, es
posible predecir datos más allá de los obtenidos experimentalmente.

Ejemplo:

Usando el método de mínimos cuadrados para regresión lineal, ajuste la


siguiente tabla de datos experimentales, y determine la relación entre las dos variables.

x f(x)
0.10 5.30 9.00
0.20 5.30
8.00
0.30 5.60
0.40 5.76 7.00
0.50 6.00
6.00
0.60 6.32
0.70 6.61 5.00
0.80 6.60
0.90 6.80 4.00
1.00 7.00 3.00
1.10 6.20
1.20 7.76 2.00
1.30 7.60 1.00
1.40 7.80
1.50 8.30 0.00
0.00 0.20 0.40 0.60 0.80 1.00 1.20 1.40 1.60

La solución computacional arroja los siguientes resultados:


AJUSTE LINEAL MÍNIMOS CUADRADOS

INGRESE NUMERO DE PARES PARA AJUSTE (MAX (100))


15
INGRESE PARES UNO POR UNO
INGRESE PAR NRO. 1 X E Y
0.1 5.3
INGRESE PAR NRO. 2 X E Y
0.2 5.3
INGRESE PAR NRO. 3 X E Y
0.3 5.6
INGRESE PAR NRO. 4 X E Y
0.4 5.76
INGRESE PAR NRO. 5 X E Y
0.5 6
INGRESE PAR NRO. 6 X E Y
0.6 6.32
INGRESE PAR NRO. 7 X E Y
0.7 6.61
INGRESE PAR NRO. 8 X E Y
0.8 6.6
INGRESE PAR NRO. 9 X E Y
0.9 6.8
INGRESE PAR NRO. 10 X E Y
1 7
INGRESE PAR NRO. 11 X E Y
1.1 6.2
INGRESE PAR NRO. 12 X E Y
1.2 7.76
INGRESE PAR NRO. 13 X E Y
1.3 7.6
INGRESE PAR NRO. 14 X E Y
1.4 7.8
INGRESE PAR NRO. 15 X E Y
1.5 8.3

RESULTADOS

PENDIENTE = 2.0054
INTERSECCION CON EL EJE Y = 4.9924

N X Y(AJUSTADO) 9
1 .1000 5.1929 8
2 .2000 5.3935 7
3 .3000 5.5940
6
4 .4000 5.7945
5
5 .5000 5.9951
4
6 .6000 6.1956
3
7 .7000 6.3961
2
8 .8000 6.5967
1
9 .9000 6.7972
0
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6
10 1.0000 6.9977
11 1.1000 7.1983
12 1.2000 7.3988
13 1.3000 7.5993
14 1.4000 7.7999
15 1.5000 8.0004

Por lo tanto la relación entre las dos variables según el ajuste es:

y = 2x + 5

Codificación:

La codificación que genera los resultados mostrados es la siguiente:

PROGRAM REGRESION_LINEAL

REAL(4) X(100),Y(100),N,Y2(100)

WRITE(*,*)' AJUSTE LINEAL MINIMOS CUADRADOS'


WRITE(*,*)''
WRITE(*,*)' INGRESE NUMERO DE PARES PARA AJUSTE (MAX (100))'
READ(*,*)N
WRITE(*,*)' INGRESE PARES UNO POR UNO'
DO I=1,N
WRITE(*,*)'INGRESE PAR NRO.',I,' X E Y'
READ(*,*)X(I),Y(I)
END DO
SUMA1=0
SUMA2=0
SUMA3=0
SUMA4=0
DO I=1,N
SUMA1=SUMA1+X(I)
SUMA2=SUMA2+Y(I)
SUMA3=SUMA3+X(I)*X(I)
SUMA4=SUMA4+X(I)*Y(I)
END DO
A=(SUMA4-(SUMA1*SUMA2)/N)/(SUMA3-(SUMA1*SUMA1)/N)
B=(SUMA2-A*SUMA1)/(N)
WRITE(*,*) ' RESULTADOS'
WRITE(*,15)A
WRITE(*,16)B
WRITE(*,*) ' N X Y(AJUSTADO)'
!REEVALUACION DE LA FUNCION
OPEN (1,FILE='REGLIN.TXT')
DO I=1,N
Y2(I)=A*X(I)+B
WRITE(*,10)I,X(I),Y2(I)
WRITE(1,10)I,X(I),Y2(I)
END DO

10 FORMAT(1X,I3,2(F8.4,1X))
15 FORMAT(1X,' PENDIENTE =',F8.4)
16 FORMAT(1X,' INTERSECCION CON EL EJE Y =',F8.4)
END

2.1 Ajuste polinomial

Si consideramos el caso de datos cuya tendencia no es lineal, es necesario


determinar parámetros de ajuste correspondientes a funciones no lineales; sin embargo,
el método de mínimos cuadrados sigue siendo aplicable dado que para esta situación
las ecuaciones normales siguen siendo lineales. En el desarrollo, n se usa como el
grado del polinomio, y N como el número de pares de datos. Resulta evidente que
cuando tenemos que N = n +1, entonces el polinomio pasa exactamente por cada punto,
de modo que en lo sucesivo siempre se tendrá que N > n+1. Se supone la relación
funcional:
y  a0  a1 xi  a2 xi  .........  an xi
2 n
(4.5)

Con errores definidos como:

ei  Yi  yi  Yi  a0  a1 xi  a2 xi  ..........  an xi
2 n
(4.6)

Nuevamente se usa Yi para representar el valor observado o experimental


correspondiente a xi con xi libre de error. Se minimiza la suma de los cuadrados.

 
N N
S  e12  e22  .......  e N2   ei2   Yi  a0  a1 xi  a2 xi  .......  an xi
2 n 2
(4.7)
i 1 i 1

En el mínimo, todas las derivadas parciales S/a0, S/a1, S/a2,………., S/an son
iguales a cero; al escribir, las ecuaciones para lo anterior se obtienen n+1 ecuaciones:

S
 
N
 0   2 Yi  a0  a1 xi  .........  a n xi  1
n

a0 i 1

S
 
N
 0   2 Yi  a0  a1 xi  .........  a n xi  xi 
n

a1 i 1

. (4.8)
.
S
  
N
 0   2 Yi  a0  a1 xi  .........  a n xi  xin
n

a n i 1
Al dividir entre -2 y reordenando se obtienen n + 1 ecuaciones normales a resolver
simultáneamente:

a 0 N  a 1  x i  a 2  x i2  .........  a n  x in   Yi
a 0  x i  a 1  x i2  a 2  x 3i  .........  a n  x in 1   x i Yi
a 0  x i2  a 1  x 3i  a 2  x i4  .........  a n  x in  2   x i2 Yi
(4.9)
.
.
a 0  x in  a 1  x in 1  a 2  x in  2  .........  a n  x i2 n   x in Yi

Al expresar tales ecuaciones en forma matricial se observa un patrón interesante en la


matriz de coeficientes.

 N x i x 2
i x 3
i ....... x n
i
 a 0    Yi 
    
  xi x x x x   a1    x i Yi 
2 3 4 n 1
i i i ....... i
 x i2 x 3
x 4
x 5
....... x n2  a 2    x i2 Yi  (4.10)
    
i i i i

        
 xn  a   x n Y 
 i x x x x   n   i i 
n 1 n2 n 3 2n
i i i ....... i

Estas ecuaciones particulares presentan una dificultad adicional en el sentido de


que tienen la propiedad indeseable denominada mal condicionamiento. Su resultado es
que los errores por redondeo al resolverlas provocan errores grandes en las soluciones.
La matriz de la ecuación (4.10) se denomina matriz normal para el problema de
mínimos cuadrados; para resolver el sistema puede aplicarse eliminación Gaussiana.

Ejemplo:

Usando el método de mínimos cuadrados para regresión cuadrática, ajuste la


siguiente tabla de datos experimentales, y determine la relación entre las dos variables.
Se emplea en este caso la eliminación de Gauss y sustitución regresiva, ya que
se trata de un sistema de tres ecuaciones con tres incógnitas.

x y
20.00
0.10 3.73 18.00
0.20 4.40
0.30 6.40 16.00
0.40 6.60 14.00
0.50 7.00 12.00
0.60 9.60
0.70 11.40 10.00
0.80 14.10 8.00
0.90 15.60 6.00
1.00 18.30
4.00
2.00
0.00
0.00 0.20 0.40 0.60 0.80 1.00 1.20
Los resultados obtenidos con el programa en Fortran son los siguientes:
AJUSTE CUADRATICO MINIMOS CUADRADOS

INGRESE NUMERO DE PARES PARA AJUSTE (MAX (100))


10
INGRESE PARES UNO POR UNO
INGRESE PAR NRO. 1 X E Y
0.1 3.73
INGRESE PAR NRO. 2 X E Y
0.2 4.4
INGRESE PAR NRO. 3 X E Y
0.3 6.4
INGRESE PAR NRO. 4 X E Y
0.4 6.6
INGRESE PAR NRO. 5 X E Y
0.5 7
INGRESE PAR NRO. 6 X E Y
0.6 9.6
INGRESE PAR NRO. 7 X E Y
0.7 11.4
INGRESE PAR NRO. 8 X E Y
0.8 14.1
INGRESE PAR NRO. 9 X E Y
0.9 15.6
INGRESE PAR NRO. 10 X E Y
1.0 18.3

RESULTADOS

SUMATORIAS

SUMA1 = EX(I) 5.500000


SUMA2 = EX(I)**2 3.850000
SUMA3 = EX(I)**3 3.025000
SUMA4 = EX(I)**4 2.533300
SUMA5 = EY(I) 97.130000
SUMA6 = EY(I)*X(I) 66.673000
SUMA7 = EY(I)*X(I)**2 52.597300

MATRIZ NORMAL

10.0000 5.5000 3.8500 97.1300


5.5000 3.8500 3.0250 66.6730
3.8500 3.0250 2.5333 52.5973

A = 11.8484 20
B = 3.0292 18
C = 3.4853 16
14
12
N X Y(AJUSTADO) 10
1 .1000 3.9067 8
2 .2000 4.5651 6

3 .3000 5.4604 4
2
4 .4000 6.5927 0
0 0.2 0.4 0.6 0.8 1 1.2

5 .5000 7.9620
6 .6000 9.5683
7 .7000 11.4115
8 .8000 13.4916
9 .9000 15.8088
10 1.0000 18.3629

Codificación:

La codificación que genera estos resultados es la siguiente:

PROGRAM REGRESION_CUADRATICA

REAL(4) X(100),Y(100),N,Y2(100),A(100,100),A1(100,100),XSOL(100)

WRITE(*,*)' AJUSTE CUADRATICO MINIMOS CUADRADOS'


WRITE(*,*)''
WRITE(*,*)' INGRESE NUMERO DE PARES PARA AJUSTE (MAX (100))'
READ(*,*)N
WRITE(*,*)' INGRESE PARES UNO POR UNO'
DO I=1,N
WRITE(*,*)' INGRESE PAR NRO.',I,' X E Y'
READ(*,*)X(I),Y(I)
END DO
SUMA1=0
SUMA2=0
SUMA3=0
SUMA4=0
SUMA5=0
SUMA6=0
SUMA7=0
! CALCULANDO SUMAS
DO I=1,N
SUMA1=SUMA1+X(I)
SUMA2=SUMA2+X(I)*X(I)
SUMA3=SUMA3+X(I)*X(I)*X(I)
SUMA4=SUMA4+X(I)*X(I)*X(I)*X(I)
SUMA5=SUMA5+Y(I)
SUMA6=SUMA6+X(I)*Y(I)
SUMA7=SUMA7+X(I)*X(I)*Y(I)
END DO
WRITE(*,*) ' RESULTADOS'
WRITE(*,*)''
WRITE(*,*) ' SUMATORIAS'
WRITE(*,*)'SUMA1 = EX(I) ',SUMA1
WRITE(*,*)'SUMA2 = EX(I)**2 ',SUMA2
WRITE(*,*)'SUMA3 = EX(I)**3 ',SUMA3
WRITE(*,*)'SUMA4 = EX(I)**4 ',SUMA4
WRITE(*,*)'SUMA5 = EY(I) ',SUMA5
WRITE(*,*)'SUMA6 = EY(I)*X(I) ',SUMA6
WRITE(*,*)'SUMA7 = EY(I)*X(I)**2',SUMA7

! INGRESANDO EN MATRIZ
M1=3
A(1,1)=N
A(1,2)=SUMA1
A(1,3)=SUMA2
A(1,4)=SUMA5
A(2,1)=SUMA1
A(2,2)=SUMA2
A(2,3)=SUMA3
A(2,4)=SUMA6
A(3,1)=SUMA2
A(3,2)=SUMA3
A(3,3)=SUMA4
A(3,4)=SUMA7
WRITE(*,*)''
WRITE(*,*) ' MATRIZ NORMAL'
WRITE(*,*)''
DO I=1,3
WRITE(*,30)(A(I,J),J=1,4)
END DO
! COPIANDO EN LA MATRIZ DE PASO
20 LP=2
LN=LP-1
DO I=1,M1
DO J=1,M1+1
A1(I,J)=A(I,J)
END DO
END DO
! FIN DEL COPIADO
! HACIENDO LA ELIMINACION
21 DO I=LP,M1
WPASO1=A1(I,LN)
WPASO2=A1(LN,LN)
DO J=1,M1+1
A1(I,J)=A1(I,J)-(WPASO1/WPASO2)*A1(LN,J)
END DO
END DO
! FIN DE LA ELIMINACION
! REPITIENDO EL PROCESO
LP=LP+1
LN=LP-1
IF (LP.GT.M1)THEN
NK=M1
GOTO 27
ELSE
GOTO 21
END IF
! FIN DE REPETICION
! SUSTITUCION REGRESIVA
27 SUMA=0
DO J=1,M1
SUMA=SUMA+A1(NK,J)*XSOL(J)
END DO

XSOL(NK)=(A1(NK,M1+1)-SUMA)/A1(NK,NK)
NK=NK-1
IF (NK.LE.0) THEN
GOTO 28
ELSE
GOTO 27
END IF
! FIN DE SUSTITUCION REGRESIVA
28 C=XSOL(1)
B=XSOL(2)
AA=XSOL(3)
!PRESENTANDO
WRITE(*,15)AA
WRITE(*,16)B
WRITE(*,17)C
WRITE(*,*) ' N X Y(AJUSTADO)'
! REEVALUACION DE LA FUNCION Y SALIDA POR ARCHIVO
OPEN (1,FILE='REGCUA.TXT')
DO I=1,N
Y2(I)=AA*X(I)**2+B*X(I)+C
WRITE(*,10)I,X(I),Y2(I)
WRITE(1,10)I,X(I),Y2(I)
END DO
30 FORMAT (1X,4(F8.4,1X))
10 FORMAT(1X,I3,2(F8.4,1X))
15 FORMAT(1X,' A =',F8.4)
16 FORMAT(1X,' B =',F8.4)
17 FORMAT(1X,' C =',F8.4)
END
Linearización de funciones

Las técnicas de regresión no lineal, son apropiadas para ajustar ecuaciones a


datos experimentales de manera directa. Sin embargo, una alternativa simple es usar
manipulaciones matemáticas para transformar las ecuaciones a una forma lineal.
Después, se puede emplear la regresión lineal simple para ajustar las ecuaciones a
datos reales; en esta ocasión, nos centraremos en la linearización de las funciones
exponenciales y potenciales.

Funciones potenciales y exponenciales

La función potencial, es aquella en que la variable dependiente está relacionada


con la variable independiente, mediante una potencia de ésta. Muchas leyes en física
trabajan con este tipo de funciones, su ecuación matemática es:

y  kx n (4.11)

Se pueden considerar algunos casos especiales:

a. Si n = 1, se obtiene: y = kx, que viene a ser la ecuación de una recta que pasa
por el origen.
b. Si n = 2, se obtiene: y = kx2, llamada función cuadrática, correspondiendo su
grafica a una parábola.

c. Si n = 3, se obtiene y = kx3, llamada función cúbica.


d. Si n = -1, se obtiene y = k/x, llamada función hiperbólica, correspondiendo su
gráfica a una hipérbola.
e. Si n = -2, se obtiene y = k/x2, que también es una función hiperbólica,
denominándose su gráfica hiperbólica cuadrática.

La función exponencial, es aquella en que la variable dependiente se relaciona


exponencialmente con la variable independiente. La ecuación matemática que rige esta
función es:

y  Ka nx (4.12)

Técnica de linearización

La forma científica de relacionar las variables en estudio es expresándolas


mediante una ecuación matemática. Para determinar esta ecuación debemos
considerar lo siguiente:

1. En la toma de datos respecto a algún fenómeno obtenemos pares de datos con


cierta variabilidad (grande ó pequeña), estos conforman la nube de puntos, en
primera instancia una inspección visual sugiere una posible relación entre x e y.

2. La estrategia apropiada es derivar una función aproximada que ajuste la


tendencia general de los datos sin ajustar necesariamente con los puntos
individuales.

Para demostrar la linearización de una ecuación potencial, usaremos como ejemplo la


gráfica de la ecuación (4.12), cuando n > 1.
Ecuacion Potencial [y=2x**2]

250.0

200.0

150.0
Y

100.0

50.0

0.0
0.0 2.0 4.0 6.0 8.0 10.0 12.0

Figura (4.3). Grafica de la función y = 2x2.

El proceso requiere aplicar el log10 en ambos lados de la ecuación (4.11), así:

log 10 y  log 10 (kx n )

Aplicando las propiedades del logaritmo, queda:

log 10 y  n log 10 x  log 10 k (4.13)

Evaluar esta ecuación y realizar un ajuste sobre los datos linearizados permitirá conocer
los valores desconocidos de n y k en la ecuación potencial. La grafica de la ecuación
(4.13), es una línea recta, tal como se ve en la figura (4.4).

Linearizacion logy=2logx+log2

2.50

2.00

1.50
log(y)

1.00

0.50

0.00
0 0.2 0.4 0.6 0.8 1 1.2

log(x)

Figura (4.4). Grafica de la función potencial linearizada.


Aquí la pendiente nos proporciona el valor de n y la intersección con el eje y corresponde
al logaritmo de k.
Para demostrar la linearización de una ecuación exponencial, usaremos como ejemplo
la gráfica de la ecuación (4.12), cuando a = e (base del logaritmo neperiano).

ecuacion exponencial y=2.5 e**0.5x

400.0
350.0
300.0
250.0
200.0
Y

150.0
100.0
50.0
0.0
0.0 2.0 4.0 6.0 8.0 10.0 12.0

Figura (4.5). Grafica de la función y = 2.5e0.5x.

El proceso para este tipo de ecuaciones, requiere aplicar el logaritmo en base a = e, es


decir el logaritmo natural a ambos lados de la ecuación (4.12), así:

log e y  log e (ke nx )  ln y  ln( ke nx ) (4.14)

Aplicando las propiedades del logaritmo, queda:

ln y  nx  ln k (4.15)

Evaluar esta ecuación y realizar un ajuste sobre los datos linearizados nos permitirá
conocer los valores desconocidos de n y k en la ecuación exponencial. La grafica de la
ecuación (4.15), es una línea recta, tal como se ve en la figura (4.6).
Linearizacion lny=nx+lnk

7.0

6.0

5.0

4.0
lnY

3.0

2.0

1.0

0.0
0.0 2.0 4.0 6.0 8.0 10.0 12.0

Figura (4.6). Grafica de la función exponencial linearizada.

Aquí la pendiente nos proporciona el valor de n y la intersección con el eje y corresponde


al logaritmo natural de k.

Ejemplo a:

Linearizar y ajustar para obtener la relación entre las variables registradas en la


siguiente tabla, si se observa tendencia exponencial:

x y
0.100 12.214
500.000
0.300 18.221
0.500 27.183 450.000
0.700 40.552 400.000
0.900 60.496 350.000
1.100 90.250
300.000
1.300 134.637
250.000
1.500 200.855
200.000
1.700 299.641
1.900 447.012 150.000
100.000
50.000
0.000
Los resultados obtenidos 0.000
con 0.500en Fortran1.000
el programa 1.500
son los siguientes: 2.000

LINEARIZACION EXPONENCIAL Y=K*EXP(NX)

INGRESE NUMERO DE PARES PARA AJUSTE (MAX (100))


10
INGRESE PARES UNO POR UNO

INGRESE PAR NRO. 1 X E Y


0.1 12.214
INGRESE PAR NRO. 2 X E Y
0.3 18.221
INGRESE PAR NRO. 3 X E Y
0.5 27.183
INGRESE PAR NRO. 4 X E Y
0.7 40.552
INGRESE PAR NRO. 5 X E Y
0.9 60.496
INGRESE PAR NRO. 6 X E Y
1.1 90.25
INGRESE PAR NRO. 7 X E Y
1.3 134.637
INGRESE PAR NRO. 8 X E Y
1.5 200.855
INGRESE PAR NRO. 9 X E Y
1.7 299.641
INGRESE PAR NRO. 10 X E Y
1.9 447.012

RESULTADOS

EXPONENTE N = 2.0000
COEFICIENTE K = 10.0000

N X Y (LINEARIZADO Y AJUSTADO)
1 .1000 2.5026
2 .3000 2.9026
3 .5000 3.3026 7.00

4 .7000 3.7026 6.00


5 .9000 4.1026
5.00
6 1.1000 4.5026
7 1.3000 4.9026 4.00

8 1.5000 5.3026 3.00


9 1.7000 5.7026
2.00
10 1.9000 6.1026
1.00

0.00
0.00 0.50 1.00 1.50 2.00
Integración Numérica

Los problemas de integración numérica, ó cuadratura numérica, consisten en


estimar el número I, tal que:
b
I   f(x)dx (7.1)
a

Este problema surge cuando la integración no se puede realizar exactamente ó


cuando f(x) solo es conocida en un numero finito de puntos. En ingeniería se presenta
con frecuencia este tipo de problemas dada la necesidad de integrar una función que
sería, en general, de una de las tres formas siguientes:

 Una función simple y continua tal como un polinomio, una función exponencial
o una función trigonométrica.
 Una función complicada y continua que es difícil o imposible de integrar
directamente.
 Una función tabulada en donde los valores de x y f(x) se dan en un conjunto de
puntos discretos, como es el caso a menudo, de datos experimentales.

En el primer caso, la integral simplemente es una función que se puede evaluar


fácilmente usando métodos analíticos aprendidos en el cálculo. En los dos últimos
casos, sin embargo, se deben emplear métodos aproximados como los que a
continuación se muestran.

2.1 Regla del trapecio y trapecio extendida

La regla del trapecio es un método de integración numérica que se obtiene al


integrar la fórmula de interpolación lineal, En esencia, la técnica consiste en dividir el
intervalo total en intervalos pequeños y aproximar la curva en los diversos intervalos
pequeños mediante alguna curva más simple cuya integral puede calcularse utilizando
solamente las ordenadas de los puntos extremos de los intervalos.

Se puede escribir de la siguiente manera:

b ba
I   f(x)dx  [f(a)  f(b)]  E (7.2)
a 2

Dónde: E, representa el error respecto al valor exacto.

La figura (7.1), muestra gráficamente la integración numérica, denotándola como un


área sombreada debajo de la recta de interpolación, en el caso de un intervalo [a, b], de
separación h.
Figura (7.1). Integración con método del trapecio para un intervalo.

La ecuación (7.2), se puede extender a varios intervalos y se puede aplicar al caso de


N intervalos con una separación uniforme h. Supongamos el caso de un intervalo [a, b]
dividido en N = 4 sub-intervalos de ancho h, ver figura (7.2).

Figura (7.2). Integración con regla del trapecio, extendida a varios intervalos.

En este caso a = x0 y b = x4, el área total será la suma de las áreas de cada sub-intervalo,
es decir:
A tot  A1  A 2  A3  A 4

Donde, al aplicar la regla del trapecio a cada sub-intervalo tenemos:

A1 
h
f (a )  f (x 1 )
2
A 2  f ( x 1 )  f ( x 2 )
h
2
A 3  f ( x 2 )  f ( x 3 )
h
2
A 4  f ( x 3 )  f (b)
h
2

Resolviendo para el área total se tiene:

A tot  A 1  A 2  A 3  A 4 
h
f (a )  f (b)  2f ( x 1 )  2f ( x 2 )  2f ( x 3 )
2
Pero dado que: x1 = a + h, x2 = a + 2h y x3 = a + 3h, y siendo que está usándose
un ancho de paso constante h, la Regla extendida del Trapecio puede escribirse como:

N 1
h
[f(a)  2 f(a  jh)  f(b)]  E
b
A tot  
a
f(x)dx 
2 j 1
(7.3)

Dónde: h, es el intervalo de paso y numéricamente igual a (b-a)/N

El error en la regla del trapecio decrece en forma proporcional a h3, siendo el resultado
de la suma de los errores en todos los intervalos.

Ejemplo:

Calcular desde 7 hasta 9 la integral de la función: y  xsen 3 ( x ) , emplee un total


de N = 200 sub-intervalos para división del dominio.

Los resultados computacionales arrojan lo siguiente:

INTEGRALES METODO DEL TRAPECIO EXTENDIDO


========================================

INGRESO DE DATOS
---------------------------------------------------
INGRESE EL LIMITE INF.; LIMITE SUP. [A,B]
7.0 9.0
NUMERO DE INTERVALOS N
200
----------------------------------------------------

RESULTADOS
-----------------------
LIM INF: 7.0 LIM SUP: 9.0 ANCHO DE PASO H: 0.01
EL VALOR DE LA INTEGRAL
10.021450
-----------------------
Codificación

La codificación que genera los resultados mostrados anteriormente es la


siguiente:

PROGRAM TRAPECIO_EXTENDIDO

REAL(4) A,B,H,AINTEG

5 WRITE (*,*)''
WRITE (*,*)' PROGRAMA METODO DEL TRAPECIO EXTENDIDO'
WRITE (*,*)' ==========================================='
WRITE (*,*)''
WRITE (*,*)' INGRESO DE DATOS'
WRITE (*,*)' --------------------------------------------'
WRITE (*,*)' INGRESE EL LIMITE INF.; LIMITE SUP. [A,B]'

READ (*,*)A,B
WRITE (*,*)' NUMERO DE INTERVALOS N '
READ (*,*)N
WRITE (*,*)' ---------------------------------------------'
WRITE (*,*)''
H=(B-A)/N
FA=F(A)
FB=F(B)
A1=0
DO J=1,(N-1)
A1=A1+F(A+H*J)
END DO
AINTEG=(0.5*H)*(FA+FB+(2*A1))
WRITE(*,*)' RESULTADOS'
WRITE(*,*)' -----------------------'
WRITE(*,15)A,B,H
WRITE(*,*)' EL VALOR DE LA INTEGRAL'
WRITE(*,12)AINTEG
12 FORMAT(9X,F9.6)
15 FORMAT(9X,'LIM INF: ',F9.6,' LIM SUP: ',F9.6,' ANCHO DE PASO
H:',F9.4)
WRITE(*,*)' -----------------------'
END

FUNCTION F(X)
F=x*(SIN(X))**3
RETURN
END
2.1 Regla 1/3 de Simpson

La regla 1/3 de Simpson se basa en la fórmula de interpolación polinomial de


Newton desarrollada para m = 2, y dada por la ecuación:

(s 2  s)
F2 (s)  f k  s(f k 1  f k )  (f k  2  2f k 1  f k )
2

Y ajustada a un intervalo [a, b], subdividido en dos sub-intervalos de ancho h, tal como
se muestra en la figura (7.3).

Figura (7.3). Integración con Regla 1/3 de Simpson para dos sub-intervalos.

Para la deducción de la Regla 1/3, asumiremos un ancho de sub-intervalo igual


a la unidad (h = 1) con a = 0 y b = 2, es decir que: xk = a = 0, xk+1 = 1 y, xk+2 = 2, para k
= 0; luego, considerando que s = (x – xk)/h se puede hacer lo siguiente:

1
ds  d( x  x k )  hds  dx
h
Por lo cual:
b 2 2 (s 2  s)

a
f ( x )dx  h  F2 (s)ds  h  (f k  s(f k 1
0 0
 fk ) 
2
(f k  2  2f k 1  f k ))ds

Resolviendo:
2 2 2 2 (s 2  s)
h  F2 (s)ds  hf k  ds  (f k 1  f k )h  sds  (f k  2  2f k 1  f k )h  ds
0 0 0 0 2
 1 
 h 2f k  2(f k 1  f k )  (f k  2  2f k 1  f k )
 3 
 6f k  6f k 1  6f k  f k  2  2f k 1  f k 
h
3
 f k  4f k 1  f k  2   f (0)  4f (1)  f (2)
h h
3 3

Como se demuestra, la integración de la fórmula de interpolación de Newton


hacia adelante ajustado a tres puntos x0, x1 y x2, nos proporciona la Regla de Simpson
1/3, que podemos escribir como sigue:
b h
I   f(x)dx  [f(a)  4f(  x )  f(b)]  E (7.4)
a 3

Dónde: h, es el intervalo de avance numéricamente igual a (b-a)/2

<x>, es el punto medio del intervalo e igual a (a+b)/2; según esto, es posible extender
la regla 1/3 de Simpson, para N sub-intervalos (donde N es par).

Sea un intervalo [a, b], dividido en N = 6 sub-intervalos de ancho h = (b-a)/N, tal


como se muestra en la figura (7.4).

Figura (7.4). Integración con Regla 1/3 de Simpson para N = 6 sub-intervalos.

Aquí: a = x0 y b = x6, el área total será la suma de las áreas de cada par de sub-intervalos,
es decir:
A tot  A1  A2  A3

Al aplicar la Regla 1/3 de Simpson a cada par de sub-intervalos tenemos:

A1 
h
f (a )  4f ( x 1 )  f ( x 2 )
3
A 2  f ( x 2 )  4f ( x 3 )  f ( x 4 )
h
3
A 3  f ( x 4 )  4f ( x 5 )  f (b)
h
3

Resolviendo para el área total se tiene:

A tot  A1  A 2  A 3 
h
f (a )  f (b)  4f ( x1 )  4f (x 3 )  4f ( x 5 )  2f ( x 2 )  2f ( x 4 )
3

Pero dado que: x1 = a + h, x2 = a + 2h, x3 = a + 3h,….. y siendo que está usándose un


ancho de paso constante h, la fórmula recursiva queda como:

N 1 N2
h
A tot  [f(a)  4
3
i 1
f(a  ih)  2  f(a  jh)  f(b)]  E
j 2
(7.5)
( impares ) ( pares )
El error en la regla 1/3 de Simpson decrece en forma proporcional a h5, donde
nuevamente el error es la suma de los errores en todos los intervalos y puede ser
aproximado por:
 1 5 (iv)
E h f ( x  )
90
Dónde: <x> = (b-a)/N

Ejemplo:

Hallar el centroide de la región R limitada por las gráficas de: y = x2, y = 4,


mostrada en la siguiente gráfica:

Figura (7.5). Región plana entre dos curvas.

Se sabe que el centroide tiene coordenadas definidas por las ecuaciones:

b d

x

a
xC ( x )dx
; y

c
yC ( y)dy
Area de R Area de R

Dónde: C(x) y C(y) son secciones transversales de la Región R y toman valores no


negativos.

Además, el área de una región limitada por dos curvas está dada por la fórmula:

b
Area   (f (x)  g(x))dx
a

En este caso tenemos que la integral del área es:

2
Area   (4  x 2 )dx  10.66666
2

Las coordenadas se calculan resolviendo:

4
 y(2 y )dy  25.6  2.4
2

x
 2
x (4  x 2 )dx

0
0 y y 0
2

2
(4  x 2 )dx 10.66666  (4  x )dx 10.66666
2
2 2
Finalmente las coordenadas del centroide son: (0, 2.4)

Los resultados computacionales con la Regla 1/3 de Simpson extendido para N = 400
son:
METODO DE SIMPSON UN TERCIO EXTENDIDO
=====================================
INGRESO DE DATOS
--------------------------------------
INGRESE LOS LIMITES DE OPERACION [A,B]
-2 2
NUMERO DE SUB INTERVALOS
400
RESULTADOS
-----------------------
EL VALOR DE LA INTEGRAL
10.666560 NOTA, FUNCION: F=4-x**2
--------------------------------------
INGRESE LOS LIMITES DE OPERACION [A,B]
-2 2
NUMERO DE SUB INTERVALOS
400
RESULTADOS
-----------------------
EL VALOR DE LA INTEGRAL
.000000 NOTA, FUNCION: F=4*x-x**3
--------------------------------------

INGRESE LOS LIMITES DE OPERACION [A,B]


0 4
NUMERO DE SUB INTERVALOS
400
RESULTADOS
EL VALOR DE LA INTEGRAL
25.5997 NOTA, FUNCION: F=y*2*SQRT(y)
-----------------------

Codificación:

La codificación que genera los resultados mostrados es la siguiente:

PROGRAM SIMPSON_UN_TERCIO_EXTENDIDO

REAL(4) H,A,B,AREAT

WRITE (*,*)''
WRITE (*,*)' METODO DE SIMPSON UN TERCIO EXTENDIDO'
WRITE(*,*)' ====================================='
WRITE (*,*)''
WRITE (*,*)' INGRESO DE DATOS'
WRITE (*,*)' -------------------------------------------'
WRITE (*,*)' INGRESE LOS LIMITES DE OPERACION [A,B]'
READ (*,*)A,B
WRITE (*,*)' NUMERO DE SUB INTERVALOS'
READ(*,*)N
WRITE (*,*)' -----------------------------------------'
WRITE (*,*)''
WRITE (*,*)''
H=(B-A)/N
FA=F(A)
FB=F(B)
AREA1=0
AREA2=0
DO J=1,N-1,2
AREA1=AREA1+F(A+J*H)
END DO
DO I=2,N-2,2
AREA2=AREA2+F(A+I*H)
END DO
AREAT=(H*0.33333)*(FA+FB+(4*AREA1)+(2*AREA2))
WRITE (*,*)N
WRITE (*,*)' RESULTADOS'
WRITE (*,*)' -----------------------'
WRITE (*,*)' EL VALOR DE LA INTEGRAL'
WRITE (*,12)AREAT
12 FORMAT (9X,F9.6)
WRITE (*,*)' -----------------------'
WRITE (*,*)''
WRITE (*,*)''
WRITE (*,*)''
END

FUNCTION F(X)
!F=4-X**2
!F=4*X-X**3
F=X*2*SQRT(X)
RETURN
END
Regla 3/8 de Simpson

En este caso a diferencia de la Regla 1/3, se integra la fórmula de interpolación


polinomial de Newton desarrollada para m = 3, y dada por la ecuación:

s(s  1) s(s  1)(s  2)


F3 (s)  f k  s(f k 1  f k )  (f k  2  2f k 1  f k )  (f k  3  3f k  2  3f k 1  f k )
2 6

Y ajustada a un intervalo [a, b], subdividido en tres sub-intervalos de ancho h, tal como
se muestra en la figura (7.6).

Figura (7.6). Integración con Regla 3/8 de Simpson para tres sub-intervalos.

Para la deducción de la Regla 3/8, asumiremos condiciones similares a las


usadas para la deducción de la Regla 1/3, es decir: el ancho de sub-intervalo igual a la
unidad (h = 1) con a = 0 y b = 3, lo cual hace que: xk = a = 0, xk+1 = 1, xk+2 = 2 y xk+3 = 3
= b, para k = 0; luego, considerando que s = (x – xk)/h se puede hacer:

1
ds  d( x  x k )  hds  dx
h
Por lo cual ahora:

b 3 3 (s 2  s)
a
f ( x )dx  h  F3 (s)ds  h  (f k  s(f k 1  f k ) 
0 0 2
(f k  2  2f k 1  f k )

s(s  1)(s  2)
 (f k  3  3f k  2  3f k 1  f k ))ds
6

Resolviendo:

3 3 3 3 (s 2  s)
h  F3 (s)ds  hf k  ds  (f k 1  f k )h  sds  (f k  2  2f k 1  f k )h  ds
0 0 0 0 2
3  s(s  1)(s  2) 
 h (f k 3  3f k  2  3f k 1  f k )   ds
0
 6 
 9 9 3 
 h 3f k  (f k 1  f k )  (f k  2  2f k 1  f k )  (f k  3  3f k  2  3f k 1  f k )
 2 4 8 
 h 8f k  12f k 1  12f k  6f k  2  12f k 1  6f k  f k  3  3f k  2  3f k 1  f k 
3
8
 h f k  3f k 1  3f k  2  f k  3   h f (0)  3f (1)  3f (2)  f (3)
3 3
8 8

La integración de la fórmula de interpolación de Newton hacia adelante ajustado


a cuatro puntos x0, x1, x2 y x3, nos proporciona la Regla de Simpson 3/8, que podemos
escribir como sigue:

A   f ( x )dx  hf (a )  f (b)  3f (a  h )  3f (b  h )


b 3
a 8

Dónde: h, es el intervalo de avance numéricamente igual a (b-a)/3

Es posible extender la regla 3/8 de Simpson, para N sub-intervalos (donde N es múltiplo


de tres), por aplicación repetida de la ecuación anterior.
Sea un intervalo [a, b], dividido en N = 9 sub-intervalos de ancho h = (b-a)/N, tal como
se muestra en la figura (7.7).

Figura (7.7). Integración con Regla 3/8 de Simpson para N = 9 sub-intervalos.

Aquí: a = x0 y b = x9, el área total será la suma de las áreas de cada tres sub-intervalos,
es decir:
A tot  A1  A2  A3

Al aplicar la Regla 3/8 de Simpson a cada tres de sub-intervalos tenemos:

A 1  hf (a )  3f ( x 1 )  3f ( x 2 )  f ( x 3 )
3
8
A 2  hf ( x 3 )  3f ( x 4 )  3f ( x 5 )  f ( x 6 )
3
8
A 3  hf ( x 6 )  3f ( x 7 )  3f ( x 8 )  f (b)
3
8
Resolviendo para el área total se tiene:

3 f (a )  f (b)  3f ( x 1 )  f ( x 4 )  f ( x 7 )   3f ( x 2 )  f ( x 5 )  f ( x 8 ) 


A tot  A1  A 2  A 3  h  
8  2f ( x 3 )  f ( x 6 )  

Sabemos que: x1 = a + h, x2 = a + 2h, x3 = a + 3h,….. y siendo que está usándose un


ancho de paso constante h, la fórmula recursiva queda como:

N 1,3 N  2,3 N 3,3


3
A tot  h[f(a)  3
8
i2
f(a  ih)  3  f(a  jh)  2
j1
 f(a  mh)  f(b)]  E
m 3
( de3en 3) ( de3en 3) ( de3en 3)
(7.6)

El error en la regla 3/8 de Simpson decrece en forma proporcional a h5, donde el error
es la suma de los errores en todos los intervalos y puede ser aproximado por:

 3 5 (iv)
E h f ( x )
80

Dónde: <x> = (b-a)/N

Ejemplo:

Calcular el área comprendida entre las curvas y = sen(x) e y = cos(x) en el


intervalo [/4, ], utilice N = 9.

Figura (7.8). Región plana entre sen(x) y cos(x).

En este caso la integral a resolver es la siguiente:



Area   (sen (x)  cos( x))dx
4
Los resultados computacionales con la regla 3/8 de Simpson son los siguientes:

CALCULO DE INTEGRALES METODO DE SIMPSON TRES OCTAVOS


====================================================

INGRESO DE DATOS
-------------------------------------------------
INGRESE LOS LIMITES DE OPERACION [A,B]
0.785398 3.141592
INGRESE EL NUMERO DE INTERVALOS MULTIPLO DE 3
9
-------------------------------------------------
H= 0.261799
RESULTADOS
-----------------------
EL VALOR DE LA INTEGRAL
2.414357
-----------------------

Codificación:

La codificación que genera los resultados mostrados es la siguiente:

PROGRAM SIMPSON_TRES_OCTAVOS

REAL(4) H,N,A,B,AREAT

WRITE (*,*)''
WRITE (*,*)' METODO DE SIMPSON TRES OCTAVOS'
WRITE (*,*)' ========================================'
WRITE (*,*)''
WRITE (*,*)' INGRESO DE DATOS'
WRITE (*,*)' -----------------------------------------'
WRITE (*,*)' INGRESE LOS LIMITES DE OPERACION [A,B]'
READ (*,*)A,B
WRITE (*,*)' INGRESE EL NUMERO DE INTERVALOS MULTIPLO DE 3'
READ(*,*)N
WRITE (*,*)' ---------------------------------------------'
WRITE (*,*)''
WRITE (*,*)''
H=(B-A)/N
FA=F(A)
FB=F(B)
AREA1=0
AREA2=0
AREA3=0
DO J=2,N-1,3
AREA1=AREA1+F(A+J*H)
END DO
DO I=1,N-2,3
AREA2=AREA2+F(A+I*H)
END DO
DO M=3,N-3,3
AREA3=AREA3+F(A+M*H)
END DO
AREAT=(H*0.375)*(FA+FB+3*AREA1+3*AREA2+2*AREA3)
WRITE (*,13)H
WRITE (*,*)' RESULTADOS'
WRITE (*,*)' -----------------------'
WRITE (*,*)' EL VALOR DE LA INTEGRAL'
WRITE (*,12)AREAT
12 FORMAT (9X,F9.6)
13 FORMAT (9X, ' H= ',F9.6)
WRITE (*,*)' -----------------------'
WRITE (*,*)''
WRITE (*,*)''
WRITE (*,*)''
END

FUNCTION F(X)
F=SIN(X)-COS(X)
RETURN
END
Solución de Ecuaciones diferenciales

Se denomina ecuación diferencial a aquella ecuación que contiene una variable


dependiente y sus derivadas con respecto a una o más variables independientes.
Muchas de las leyes generales de la naturaleza se expresan en el lenguaje de las
ecuaciones diferenciales; abundan también las aplicaciones en ingeniería, economía,
matemáticas y en muchos otros campos de la ciencia aplicada. En este capítulo
iniciamos el tratamiento computacional de las EDO, estudiando los métodos de Euler,
los cuales son adecuados para una programación rápida debido a su sencillez; sin
embargo, a pesar de su gran estabilidad, requiere un tamaño de paso muy pequeño
para alcanzar una precisión razonable por lo cual muchas veces es inútil para problemas
prácticos.

Solución de ecuaciones diferenciales ordinarias de primer orden

Si se tiene una función y = f(x); entonces, puede calcularse su derivada dy/dx, la


cual se interpreta como la razón de cambio de y con respecto a x, esto es útil dado que
en cualquier proceso natural, las variables incluidas y sus razones de cambio se
relacionan entre sí, mediante estos símbolos matemáticos que en conjunto se
denominan ecuación diferencial.

Una ecuación diferencial ordinaria (EDO), de primer orden puede escribirse como:
dy
 f(x, y) (8.1)
dx

Su solución general debe contener una constante arbitraria c, de modo que la función
solución es:
f(x, y, c)  0 (8.2)
Donde para cada valor de c, existe una solución particular, analíticamente dicha
constante se obtiene exigiendo que la solución de esa ecuación pase por algún punto
(x0, y0), es decir:
y(x 0 )  y 0 (8.3)
Esto significa que la variable y vale y0, cuando la variable x vale x0.

Dado que en la práctica gran cantidad de ecuaciones no pueden resolverse


analíticamente, se deberá recurrir a métodos numéricos. En lo que sigue veremos las
dos variantes del método de Euler para solucionar ecuaciones diferenciales ordinarias,
cuando se conocen las condiciones iniciales.

Método de Euler hacia adelante

Una gran parte de los métodos numéricos para solucionar las ecuaciones
diferenciales parciales parabólicas e hiperbólicas que son mucho más complicadas que
las ecuaciones diferenciales ordinarias se basan en los métodos de Euler y no en los
métodos Runge-Kutta o Predictor Corrector debido a su sencillez.
Este método se obtiene rescribiendo la aproximación por diferencias hacia
adelante, lo cual matemáticamente se logra dividiendo el intervalo de análisis que va de
x0 a xf en n sub-intervalos de ancho h, es decir:
xf  x0
h (8.4)
n

De manera que se obtiene un conjunto discreto de (n + 1) puntos en el intervalo de


interés [x0, xf]; así, para cualquiera de estos puntos se cumple que:

xi = x0 + ih con: 0 ≤ i ≤ n (8.5)

La condición inicial y(x0) = y0, representa el punto p0 = (x0, y0) por donde pasa la curva
solución de la ecuación diferencial. Con el punto p0 se puede evaluar la primera derivada
de f(x) en ese punto, es decir:

f' x    f x 0 , y 0 
dy
(8.6)
dx p0
Con esa información se traza una recta, aquella que pasa por p0 y de pendiente f(x0,y0),
esta recta aproxima f(x) en una vecindad de x0, tal como se muestra en la figura (8.1).

f(x)
f(x0,y0)

y1

y0 P0
h

x0 x1 x

Figura (8.1). Recta tangente en punto de la curva que aproxima f(x).

Usando la definición de la pendiente y tomando al punto p1 que pertenece a la


recta tangente a p0, escribimos:
y1  y 0
 f x 0 , y 0  (8.7)
x1  x 0
Entonces:
y1  y 0  (x 1  x 0 )f(x 0 , y 0 ) (8.8)
ó bien:
y1  y 0  hf(x 0 , y 0 ) (8.9)
Como el valor de y1 sirve para aproximar f(x) en el punto p1 = (x1, y1), es posible repetir
el proceso anterior generando la sucesión de aproximaciones siguientes:

y1  y 0  hf x 0 , y 0 
y 2  y1  hf x 1 , y1 

(8.10)
y i 1  y i  hf x i , y i 

y n  y n 1  hf x n 1 , y n 1 

El error local es proporcional a h2 y el error global es proporcional a h. De modo


que mientras más pequeño sea el intervalo de avance mayor será la exactitud del
método.

Ejemplo:

Se conoce la ecuación diferencial de movimiento de un bloque con 100 Kg. de


masa que se desliza por un plano inclinado 0.5235 radianes respecto a la horizontal;
adicionalmente, se sabe que la fuerza de rozamiento f que se opone al movimiento es
85 N y la resistencia del aire R es 0.05 veces la velocidad. La ecuación diferencial es:

dv
100  0.05v  85 - 490  0
dt

Resuelva para velocidad desde 0 hasta 10 segundos con un total de 10 ptos., considere
que v = 0 en t = 0.

Los resultados computacionales son los siguientes:

SOLUCION DE E.D.O. METODO EULER HACIA ADELANTE


================================================
INGRESO DE DATOS
----------------------------------------------
INGRESE EL NUMERO DE PUNTOS (N)
10
INGRESE LOS LIMITES DE OPERACION [A,B]
0.0 10.0
INGRESE LAS CONDICIONES INICIALES (X0, Y0)
0.0 0.0

RESULTADOS
-----------------------------
=======================
X Y(X)
=======================
.000000 .000000
1.000000 4.050000
2.000000 8.097975
3.000000 12.143930
4.000000 16.187850
5.000000 20.229760
6.000000 24.269650
7.000000 28.307510
8.000000 32.343360
9.000000 36.377190
10.000000 40.409000
=======================

Codificación:

La codificación que genera los resultados computacionales mostrados es la


siguiente:

! AUTOR: LIC. JORGE LUIS GODIER AMBURGO

PROGRAM EULER_ADELANTE

REAL (4) X0, Y0, A, B, H, XK(1000), YK(1000), N

10 WRITE(*,*)''
WRITE(*,*)' SOLUCION DE E.D.O. METODO EULER HACIA ADELANTE'
WRITE(*,*)' =============================================='
WRITE(*,*)''
WRITE(*,*)' INGRESO DE DATOS'
WRITE(*,*)' ----------------------------------------------'
WRITE(*,*)' INGRESE EL NUMERO DE PUNTOS (N)'
READ(*,*)N
WRITE(*,*)' INGRESE LOS LIMITES DE OPERACION [A,B]'
READ(*,*)A,B
WRITE(*,*)' INGRESE LAS CONDICIONES INICIALES (X0,Y0)'
READ(*,*)X0,Y0
XK(1)=X0
YK(1)=Y0
H=(B-A)/N
DO I=2,N+1
YK(I)=YK(I-1)+H*F(XK(I-1),YK(I-1))
XK(I)=XK(I-1)+H
END DO
WRITE(*,*)' RESULTADOS'
WRITE(*,*)' ----------------------'
WRITE(*,*)' ======================'
WRITE(*,*)' X Y(X)'
WRITE(*,*)' ======================'
DO J=1,N+1
WRITE(*,20)XK(J),YK(J)
END DO
20 FORMAT(2X,F10.6,4X,F10.6)
WRITE(*,*)' ======================'
END

FUNCTION F(X,Y)
F=4.05-0.0005*Y+0.0*X
RETURN
END
Método de Euler modificado

La modificación realizada al método de Euler incrementa su precisión y


estabilidad, se obtiene aplicando la Regla del Trapecio para integrar la ecuación (8.1),
desde xn hasta xn+1, es decir:

y n +1 x n +1
yn
dy = + 
xn
f(x, y)dx
x n +1
y n +1 = y n +  f(x, y)dx
xn
Lo que nos lleva a la ecuación:
h
y n +1 = y n + [f(y n +1 , x n +1 ) + f(y n , x n )] (8.11)
2

La ecuación (8.11), requiere un valor estimado de yn+1 al lado derecho; en primera


instancia este valor puede ser yn y luego reemplazarse por valores calculados de yn+1,
para refinar el resultado, así:

Para el caso de n = 0, la primera iteración se escribirá como:


h
y11  y 0 + [f(x 1 , y 0 ) + f(x 0 , y 0 )] (8.12)
2

La segunda aproximación se escribe usando el valor ya calculado en la ecuación (6.12),


el superíndice de e indica el orden de aproximación.

h
y12  y 0 + [f(x 1 , y11 ) + f(x 0 , y 0 )] (8.13)
2

Este proceso deberá repetirse hasta que se cumpla la siguiente condición de


convergencia:

y kn ++11 − y kn
*100 = e a %  e s %
y kn ++11

Donde ea% es el error porcentual relativo alcanzado y es% es el error porcentual relativo
solicitado. Luego de esto puede cambiar el subíndice n y repetir el esquema hasta
alcanzar el total de puntos requeridos.

Ejemplo:

La ecuación diferencial que permite conocer la velocidad a la que se enfría una


sustancia al aire libre, es enunciada en la “Ley de enfriamiento de Newton”, la cual afirma
que la velocidad de enfriamiento es proporcional a la diferencia entre la temperatura de
la sustancia y la del medio circundante; matemáticamente, se escribe como:
dT
+ k(T - Ta ) = 0
dt

Dónde: T, es la temperatura de la sustancia en el instante t.


Ta, es la temperatura del medio circundante.
K, es una constante de proporcionalidad (depende de la sustancia).
Resuelva la ecuación diferencial considerando Ta = 20 ºC, K = 0.7 y T = 50 ºC, para t =
0 seg. Obtenga valores para t desde 0 hasta 10 seg. con un total de 10 puntos y un error
porcentual de 0.1%.

Los resultados computacionales son los siguientes:

SOLUCION DE E.D.O. METODO EULER MODIFICADO


==========================================

INGRESO DE DATOS
-------------------------------------------
INGRESE EL TOTAL DE PUNTOS (N)
10
INGRESE LOS LIMITES DE OPERACION [A,B]
0 10
INGRESE LAS CONDICIONES INICIALES (X0,Y0)
0 50
INGRESE ERROR PORCENTUAL SOLICTADO (ES)
0.1
------------------------------------------

RESULTADOS POR ITERACION


------------------------
PUNTO NRO. 2
ITERACION NRO. 1
1.000000 29.000000 72.413800
ITERACION NRO. 2
1.000000 36.350000 20.220080
ITERACION NRO. 3
1.000000 33.777500 7.616012
ITERACION NRO. 4
1.000000 34.677880 2.596397
ITERACION NRO. 5
1.000000 34.362740 .917075
ITERACION NRO. 6
1.000000 34.473040 .319955
ITERACION NRO. 7
1.000000 34.434440 .112111
ITERACION NRO. 8
1.000000 34.447950 .039223
PUNTO NRO. 3
ITERACION NRO. 1
2.000000 24.339120 41.477770
ITERACION NRO. 2
2.000000 27.872480 12.676880
ITERACION NRO. 3
2.000000 26.635800 4.642914
ITERACION NRO. 4
2.000000 27.068640 1.599040
ITERACION NRO. 5
2.000000 26.917140 .562820
ITERACION NRO. 6
2.000000 26.970170 .196603
ITERACION NRO. 7
2.000000 26.951610 .068859
PUNTO NRO. 4
ITERACION NRO. 1
3.000000 22.078990 22.153100
ITERACION NRO. 2
3.000000 23.790900 7.195667
ITERACION NRO. 3
3.000000 23.191730 2.583553
ITERACION NRO. 4
3.000000 23.401440 .896138
ITERACION NRO. 5
3.000000 23.328040 .314629
ITERACION NRO. 6
3.000000 23.353730 .109996
ITERACION NRO. 7
3.000000 23.344740 .038515
PUNTO NRO. 5
ITERACION NRO. 1
4.000000 21.000270 11.206790
ITERACION NRO. 2
4.000000 21.823980 3.774331
ITERACION NRO. 3
4.000000 21.535690 1.338697
ITERACION NRO. 4
4.000000 21.636590 .466360
ITERACION NRO. 5
4.000000 21.601270 .163493
ITERACION NRO. 6
4.000000 21.613640 .057193
PUNTO NRO. 6
ITERACION NRO. 1
5.000000 20.488420 5.431644
ITERACION NRO. 2
5.000000 20.877920 1.865615
ITERACION NRO. 3
5.000000 20.741590 .657258
ITERACION NRO. 4
5.000000 20.789310 .229513
ITERACION NRO. 5
5.000000 20.772610 .080398
PUNTO NRO. 7
ITERACION NRO. 1
6.000000 20.225940 2.785383
ITERACION NRO. 2
6.000000 20.423120 .965474
ITERACION NRO. 3
6.000000 20.354100 .339065
ITERACION NRO. 4
6.000000 20.378260 .118532
ITERACION NRO. 5
6.000000 20.369800 .041500
PUNTO NRO. 8
ITERACION NRO. 1
7.000000 20.107980 1.344118
ITERACION NRO. 2
7.000000 20.202580 .468242
ITERACION NRO. 3
7.000000 20.169470 .164157
ITERACION NRO. 4
7.000000 20.181060 .057425
PUNTO NRO. 9
ITERACION NRO. 1
8.000000 20.058370 .553861
ITERACION NRO. 2
8.000000 20.097260 .193475
ITERACION NRO. 3
8.000000 20.083650 .067761
PUNTO NRO. 10
ITERACION NRO. 1
9.000000 20.020330 .384236
ITERACION NRO. 2
9.000000 20.047260 .134303
ITERACION NRO. 3
9.000000 20.037830 .047032
PUNTO NRO. 11
ITERACION NRO. 1
10.000000 20.008050 .195949
ITERACION NRO. 2
10.000000 20.021770 .068542

RESULTADOS
======================
X Y(X)
======================
.000000 50.000000
1.000000 34.447950
2.000000 26.951610
3.000000 23.344740
4.000000 21.613640
5.000000 20.772610
6.000000 20.369800
7.000000 20.181060
8.000000 20.083650
9.000000 20.037830
10.000000 20.021770
======================
Gráfica:
La grafica generada con los resultados mostrados es la siguiente:

60

50

40

30

20

10

0
0 2 4 6 8 10 12

Codificación:

La codificación que genera los resultados mostrados es la siguiente:

! AUTOR: LIC. JORGE LUIS GODIER AMBURGO

PROGRAM EULER_MODIFICADO

REAL(4) X0,Y0,A,B,H,N,YK(1000),XK(1000)

10 WRITE(*,*)''
WRITE(*,*)' SOLUCION DE E.D.O. METODO EULER MODIFICADO'
WRITE(*,*)' =========================================='
WRITE(*,*)''
WRITE(*,*)' INGRESO DE DATOS'
WRITE(*,*)' -------------------------------------------'
WRITE(*,*)' INGRESE EL TOTAL DE PUNTOS (N)'
READ(*,*)N
WRITE(*,*)' INGRESE LOS LIMITES DE OPERACION [A,B]'
READ(*,*)A,B
WRITE(*,*)' INGRESE LAS CONDICIONES INICIALES (X0,Y0)'
READ(*,*)X0,Y0
WRITE(*,*)' INGRESE ERROR PORCENTUAL SOLICTADO (ES)'
READ(*,*)ES
WRITE(*,*)' ------------------------------------------'
H=(B-A)/N
XK(1)=X0
YK(1)=Y0
YY=Y0
OPEN(1,FILE='EULERMOD.TXT')
WRITE(*,*)' RESULTADOS POR ITERACION'
WRITE(*,*)' ------------------------'
DO I=2,N+1
NN=1
WRITE(*,*)' PUNTO NRO. ',I
XK(I)=XK(I-1)+H
15 YK(I)=YK(I-1)+(H*0.5)*(F(XK(I-1),YK(I-1))+F(XK(I),YY))
EA=ABS((YK(I)-YY)/YK(I))*100
WRITE(*,*)' ITERACION NRO. ',NN
WRITE(*,120)XK(I),YK(I),EA
IF(EA.GT.ES)THEN
YY=YK(I)
NN=NN+1
GOTO 15
END IF
END DO
WRITE(*,*)' RESULTADOS'
WRITE(*,*)' ======================'
WRITE(*,*)' X Y(X)'
WRITE(*,*)' ======================'
DO J=1,N+1
WRITE(*,20)XK(J),YK(J)
WRITE(1,20)XK(J),YK(J)
END DO
20 FORMAT(2X,F10.6,4X,F10.6)
120 FORMAT(2X,3(1X,F10.6))
WRITE(*,*)' ======================'
END

FUNCTION F(X,Y)
F=-0.7*Y+14+0.0*X
RETURN
END
Método de Runge-Kutta de Segundo Orden

Una desventaja fundamental de los métodos de Euler consiste en que los


órdenes de precisión son bajos, esto implica que para mantener una precisión aceptable
se requiere un h pequeño, lo que aumenta el tiempo de cálculo y provoca errores de
redondeo considerables. Los métodos de Runge-Kutta tratan de obtener mayor
precisión, y al mismo tiempo evitan la necesidad de derivadas de orden superior,
calculando la función f(x,y) en puntos seleccionados de cada subintervalo. Una mayor
precisión ocasiona que los errores de redondeo decrezcan más rápido al reducir h.
Los métodos Runge-Kutta se obtienen aplicando la Regla del Trapecio para
integrar la ecuación (8.1), desde xn hasta xn+1, es decir:

y n +1 x n +1
yn
dy = + 
xn
f(x, y)dx
x n +1
y n +1 = y n +  f(x, y)dx
xn

Lo que puede escribirse como:

h
y n +1 = y n + [f(y n +1 , x n +1 ) + f(y n , x n )] (8.14)
2

En la ecuación (8.14) yn+1 es una incógnita, y aparece en el segunto termino al lado


derecho de la ecuacion por lo que lo aproximamos mediante f(xn+1,<yn+1>), donde <yn+1>
es la primera estimación de yn+1 obtenida mediante el método de Euler hacia adelante.
Este esquema se conoce como el método de Runge-Kutta de segundo orden y se
resume como:

 y n +1 = y n + hf(x n , y n )
h
y n +1 = y n + [f(x n , y n ) + f(x n +1 ,  y n +1 ) (8.15)
2
x n +1 = xn + h

En este caso el error local es proporcional a h2 y el error global proporcional a h3.

Ejemplo:

Una resistencia de 5  y un inductor de 1 Henrio se conectan en serie con un


generador de corriente alterna E = 10cos(5t) voltios. Si la corriente es 0 en t = 0; calcule
la corriente para t desde 0 hasta 1.0 segundos, considerando 15 puntos, vease la figura
(8.2).
Usando la Ley de Kirchhoff modelamos la situación anterior con el siguiente
problema de valor inicial:
di
L = E − Ri
dt
Reemplazando valores tenemos:
di
= 10 cos(5t ) − 5i
dt
Figura (8.2). Circuito RL.

Los resultados computacionales son los siguientes:

SOLUCION DE E.D.O. METODO RUNGE KUTTA 2 ORDEN


=============================================

INGRESO DE DATOS
---------------------------------------------
INGRESE EL NUMERO DE PUNTOS (N)
15
INGRESE LOS LIMITES DE OPERACION [A,B]
0.0 1.0
INGRESE LAS CONDICIONES INICIALES (X0,Y0)
0.0 0.0
---------------------------------------------

RESULTADOS
=====================
X F(X)
=====================
.0000 .000000
.0667 .537208
.1333 .859936
.2000 .975807
.2667 .903230
.3333 .672700
.4000 .325851
.4667 -.087393
.5333 -.513061
.6000 -.898170
.6667 -1.195901
.7333 -1.370285
.8000 -1.399818
.8667 -1.279581
.9333 -1.021609
1.0000 -.653432
=====================

Gráfica:
La grafica generada con los resultados mostrados es la siguiente:

1.5

0.5

0
0 0.2 0.4 0.6 0.8 1 1.2
-0.5

-1

-1.5

-2

Codificación:

La codificación que genera los resultados computacionales mostrados es la


siguiente:

! AUTOR: LIC. JORGE LUIS GODIER AMBURGO


PROGRAM RUNGEKUTTA_2ORDEN

REAL(4) N,X0,Y0,A,B,H,YK(1000),XK(1000)

10 WRITE(*,*)''
WRITE(*,*)' SOLUCION DE E.D.O. METODO RUNGE KUTTA 2 ORDEN'
WRITE(*,*)' ============================================='
WRITE(*,*)''
WRITE(*,*)' INGRESO DE DATOS'
WRITE(*,*)' ---------------------------------------------'
WRITE(*,*)' INGRESE EL NUMERO DE PUNTOS (N)'
READ(*,*)N
WRITE(*,*)' INGRESE LOS LIMITES DE OPERACION [A,B]'
READ(*,*)A,B
WRITE(*,*)' INGRESE LAS CONDICIONES INICIALES (X0,Y0)'
READ(*,*)X0,Y0
WRITE(*,*)' ---------------------------------------------'
WRITE(*,*)''
XK(1)=X0
YK(1)=Y0
H=(B-A)/N
DO I=1,N+1
XK(I+1)=XK(I)+H
YY=YK(I)+H*F(XK(I),YK(I))
YK(I+1)=YK(I)+(0.5)*H*(F(XK(I),YK(I))+F(XK(I+1),YY))
END DO

OPEN(1,FILE='RK2.TXT')
WRITE(*,*)' RESULTADOS'
WRITE(*,*)' --------------------'
WRITE(*,*)' ===================='
WRITE(*,*)' X F(X)'
WRITE(*,*)' ===================='
DO I=1,N+1
WRITE(*,20)XK(I),YK(I)
WRITE(1,20)XK(I),YK(I)
END DO
20 FORMAT(2X,F9.4,3X,F10.6)
WRITE(*,*)' ===================='
END

FUNCTION F(X,Y)
F=10*COS(5*X)-5*Y
RETURN
END
Método de Runge-Kutta de tercer orden

Es el resultado de aplicar un esquema de integración numérica de orden superior


al segundo término de la ecuación (8.1). La modificación realizada al método incrementa
su precisión y estabilidad y se obtiene aplicando la Regla 1/3 de Simpson.

b h
I =  f(x)dx = [f(a) + 4f(  x ) + f(b)]
a 3

Dónde: h, es el intervalo de avance numéricamente igual a (b-a)/2

En este caso la función a integrar es dependiente de dos variables:

y n +1 x n +1
yn
dy = + 
xn
f(x, y)dx
x n +1
y n +1 = y n +  f(x, y)dx
xn

Por lo cual se tiene que:

h
y n +1 = y n + [f(x n , y n ) + 4f(x 1 ,  y 1 ) + f(x n +1 ,  y n +1 )] (8.16)
3 n+ n+
2 2

Donde <yn+1> y <yn+1/2>, son estimaciones, que pueden obtenerse mediante el método
de Euler hacia adelante; entonces, para el caso de <yn+1/2>, se aplica la siguiente fórmula
recursiva:
h
y 1 = y n + f(x n , y n ) (8.17)
n+ 2
2

Esta fórmula considera la mitad de un intervalo normal (h/2). La aproximación para


<yn+1> es:

 y n +1 = y n + hf(x 1 y 1 ) (8.18)
n+ n+
2 2

Este esquema se denomina Método de Runge-Kutta de tercer orden.

Ejemplo:

En organismos con eventos reproductivos continuos, la tasa de recambio


poblacional se denomina tasa de crecimiento innato o capacidad innata de aumento r;
esta cantidad se puede calcular mediante la ecuación:

ln( R 0 )
r=
T

Donde, R0, es la tasa de reproducción neta de la población (constante) y T es el tiempo


de generación. Se desea calcular el crecimiento poblacional de una ciudad en un
periodo de 10 años, con intervalos de 6 meses; la ecuación diferencial de crecimiento,
está dada por:
dN
= rN
dt

Si se sabe que N = 2200 individuos para t = 1 año, con R0 = 500 individuos/año y T = 60


años. Los resultados computacionales son:

SOLUCION DE E.D.O. METODO RUNGE KUTTA 3 ORDEN


=============================================

INGRESO DE DATOS
---------------------------------------------
INGRESE EL NUMERO DE PUNTOS (N)
20
INGRESE LOS VALOR INICIAL Y FINAL DEL DOMINIO
1 10
INGRESE LAS CONDICIONES INICIALES (X0,Y0)
1.0 2200
---------------------------------------------

RESULTADOS
============================
t (años) Población en
Individuos
============================
1.000000 2200.000000
1.450000 2409.737000
1.900000 2639.470000
2.350000 2891.104000
2.800000 3166.728000
3.250000 3468.628000
3.700000 3799.311000
4.150000 4161.518000
4.600000 4558.257000
5.050000 4992.819000
5.500000 5468.810000
5.949999 5990.180000
6.399999 6561.254000
6.849999 7186.772000
7.299999 7871.924000
7.749999 8622.396000
8.199999 9444.413000
8.649999 10344.800000
9.099998 11331.020000
9.549998 12411.260000
9.999998 13594.490000
============================

Codificación:

La codificación que genera los resultados computacionales mostrados es la


siguiente:
! AUTOR: LIC. JORGE LUIS GODIER AMBURGO
PROGRAM RUNGEKUTTA_3ORDEN
REAL(4) N,X0,Y0,A,B,H,Y(1000),X(1000)

10 WRITE(*,*)''
WRITE(*,*)' SOLUCION DE E.D.O. METODO RUNGE KUTTA 3 ORDEN'
WRITE(*,*)' ============================================='
WRITE(*,*)''
WRITE(*,*)' INGRESO DE DATOS'
WRITE(*,*)' ---------------------------------------------'
WRITE(*,*)' INGRESE EL NUMERO DE PUNTOS (N)'
READ(*,*)N
WRITE(*,*)' INGRESE LOS VALOR INICIAL Y FINAL DEL DOMINIO'
READ(*,*)A,B
WRITE(*,*)' INGRESE LAS CONDICIONES INICIALES (X0,Y0)'
READ(*,*)X0,Y0
WRITE(*,*)' ---------------------------------------------'
WRITE(*,*)''
X(1)=X0
Y(1)=Y0
H=(B-A)/N
DO I=1,N+1
X(I+1)=X(I)+H
A=Y(I)+H*0.5*F(X(I),Y(I))
B=Y(I)+H*F(X(I)+H*0.5,A)
Y(I+1)=Y(I)+H*0.33333*(F(X(I),Y(I))+4*F(X(I)+0.5*H,A)+F(X(I+1),B))
END DO
WRITE(*,*)' RESULTADOS'
WRITE(*,*)' --------------------'
WRITE(*,*)' ===================='
WRITE(*,*)' X F(X)'
WRITE(*,*)' ===================='

DO J=1,N+1
WRITE(*,20)X(J),Y(J)
ENDDO
20 FORMAT(2X,F9.4,3X,F10.3)
WRITE(*,*)' ===================='
END

FUNCTION F(X,Y)
F=0.1035*Y+0.0*X
RETURN
END

8.1 Método de Runge-Kutta de cuarto orden

El método de Runge - Kutta de cuarto orden es más eficiente debido a su bajo


error local de truncamiento (h5); no obstante, su error de discretización es favorable,
requiere cuatro evaluaciones funcionales por cada paso, lo cual aumenta
considerablemente el tiempo de cálculo. Este método tiene la ventaja adicional de que
se auto inicia, es decir se requiere solo el valor de y en un punto x = xn para hallar y’ e
y. en x = xn+1.

La fórmula computacional se obtiene aplicando la regla 3/8 de Simpson para resolver la


integral al lado derecho de la ecuación (8.1). La fórmula de recursión es:

1
y n +1 = y n + (k 1 + 3k 2 + 3k 3 + k 4 ) (8.19)
8
Dónde:
k 1 = hf(x n , y n )
h 1
k 2 = hf ( x n + , y n + k1 )
3 3
2h 1 1
k 3 = hf ( x n + , y n + k1 + k 2 )
3 3 3
k 4 = hf ( x n + h , y n + k 1 − k 2 + k 3 )

Ejemplo:
Los circuitos RC son arreglos que están compuestos por una resistencia y un
condensador. Se caracteriza por que la corriente puede variar con el tiempo. Cuando
el tiempo es igual a cero, el condensador está descargado, en el momento que empieza
a correr el tiempo, el condensador comienza a cargarse ya que hay una corriente en el
circuito, ver figura (8.3).

Figura (8.3). Circuito RC.

La ecuación diferencial que determina la variación de carga respecto al tiempo para este
tipo de circuitos (durante el proceso de carga), es:

dq V q
= −
dt R RC

Determine la variación de carga para t desde 0 hasta 1 seg. Si se sabe que cuando t =
0, q = 0; además: V = 10 Voltios, C = 2200 F y R = 100. (Obtenga 15 puntos de
gráfica).

Los resultados computacionales arrojan lo siguiente:

SOLUCION DE E.D.O. METODO RUNGE KUTTA 4 ORDEN


=============================================
INGRESO DE DATOS
---------------------------------------------
INGRESE EL NUMERO DE PUNTOS (N)
15
INGRESE LOS VALOR INICIAL Y FINAL DEL DOMINIO
0.0 1.0
INGRESE LAS CONDICIONES INICIALES (X0,Y0)
0.0 0.0
---------------------------------------------

RESULTADOS

===================
X F(X)
===================
.00000 .00000
.06667 .00038
.13333 .00075
.20000 .00112
.26667 .00148
.33333 .00184
.40000 .00219
.46667 .00253
.53333 .00286
.60000 .00320
.66667 .00352
.73333 .00384
.80000 .00415
.86667 .00446
.93333 .00477
1.00000 .00506
===================

Codificación:

La codificación que genera los resultados computacionales mostrados es la


siguiente:

PROGRAM RUNGEKUTTA_4ORDEN

REAL(4) N,X0,Y0,A,B,H,Y(1000),X(1000)

10 WRITE(*,*)''
WRITE(*,*)' SOLUCION DE E.D.O. METODO RUNGE KUTTA 4 ORDEN'
WRITE(*,*)' ============================================='
WRITE(*,*)''
WRITE(*,*)' INGRESO DE DATOS'
WRITE(*,*)' ---------------------------------------------'
WRITE(*,*)' INGRESE EL NUMERO DE PUNTOS (N)'
READ(*,*)N
WRITE(*,*)' INGRESE LOS VALOR INICIAL Y FINAL DEL DOMINIO'
READ(*,*)A,B
WRITE(*,*)' INGRESE LAS CONDICIONES INICIALES (X0,Y0)'
READ(*,*)X0,Y0
WRITE(*,*)' ---------------------------------------------'
WRITE(*,*)''
X(1)=X0
Y(1)=Y0
H=(B-A)/N
DO I=1,N+1
X(I+1)=X(I)+H
A=H*F(X(I),Y(I))
B=H*F(X(I)+H*0.333333,Y(I)+A*0.333333)
C=H*F(X(I)+H*0.666666,Y(I)+A*0.333333+B*0.333333)
D=H*F(X(I)+H,Y(I)+A-B+C)
Y(I+1)=Y(I)+H*0.125*(A+3*B+3*C+D)
END DO
WRITE(*,*)' RESULTADOS'
WRITE(*,*)' --------------------'
WRITE(*,*)' ===================='
WRITE(*,*)' X F(X)'
WRITE(*,*)' ===================='
DO J=1,N+1
WRITE(*,20)X(J),Y(J)
ENDDO
20 FORMAT(2X,F9.5,3X,F9.5)
WRITE(*,*)' ===================='
END
FUNCTION F(X,Y)
F=0.0*X+0.1-Y/0.22
RETURN
END

También podría gustarte