MÉTODOS NUMÉRICOS
realizados por el
Objetivo
computadoras y su cada vez más fácil accesibilidad, aumenta a igual velocidad como la
tratan con problemas que requieren del uso de estos métodos. El presente curso pretende
usando los métodos numéricos y se obtienen los algoritmos correspondientes. El curso pro-
porciona material que debe ser conocido por todo cientı́fico o ingeniero.
les, normas y matrices. Al término del curso el estudiante dominará los puntos esenciales
Propósito
un algoritmo.
punto fijo;
ca;
marlas usando los diferentes criterios estudiados: a saber, mı́nimos cuadrados por polino-
compuesta.
Dominar los métodos de Euler, Taylor; Runge-Kutta, los basados en integración numéri-
Conocer y ser capaz de aplicar los métodos directos para la solución de sistemas de
ecuaciones lineales; las estrategias de pivoteo; y los métodos iterativos. Ası́ también los
LISTA DE FIGURAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix
1. INTRODUCCION 1
4. Aproximación e interpolación 41
4.2. Interpolación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
valores iniciales 55
6. Ejercicios resultos 71
BIBLIOGRAFIA xi
Lista de Tablas
Tabla 1.1 Cinco pasos necesarios para producir y dar soporte a programas de alta ....... 12
Tabla 2.1: Ilustración de los dı́gitos retenidos y descartados de un número con cinco .... 18
vii
Lista de Figuras
ix
Bibliografı́a
[2] Hamming, R.W. (1987). Numerical Methods for Scientists and Engineers. Dover Pu-
[3] Burden, R.L., Faires, J. D. (2002). Anlisis Numrico. Mxico: International Thomson
[5] Carnahan, B., Luther, H. A., Wilkes, J.O. (1969). Applied Numerical Methods. Wiley,
1st edition.
[6] Kincaid, D.R., Cheney, E.W. (2001). Numerical Analysis: Mathematics of Scientific
[7] Gibbs, W.R. (2001). Computation in Modern Physics. USA: World Scientific Publis-
xi
Capı́tulo 1
Introducción
de Chiapas.
F = ma (1.1)
donde F es la fuerza neta que actúa sobre el cuerpo, m es la masa del objeto, y a es su
aceleración.
de predicción.
a = F/m (1.2)
esta ecuación puede usarse para calcular la velocidad final de un cuerpo en caı́da libre
Figura 1.1: Representación de las fuerzas que actúan sobre un paracaı́dista en descenso.
FD es la fuerza hacia abajo debido a la atracción de la gravedad. FU es la fuerza hacia
arriba debido a la resistencia del aire.
dv
m· =F (1.3)
dt
donde v es la velocidad.
3
Para un cuerpo que cae dentro del perı́metro de la Tierra, la fuerza total está compuesta
por dos fuerzas contrarias. La atracción hacia abajo debida a la gravedad FD y la fuerza
F = FD + FU (1.4)
Si a la fuerza hacia abajo se les asiga un signo positivo, se puede usar la segunda ley para
FD = mg (1.5)
La resistencia del aire puede formularse de varias maneras, una es suponer que es
FU = −cv (1.6)
donde c es una constante llamada el coeficiente de arrastre (en gramos por segundo o
kg/s).
dv
m = mg − cv (1.7)
dt
dv c
=g− v (1.8)
dt m
dv
c = dt,
(g − m v)
4
haciendo
c
u=g− v
m
c
du = − dv
m
dv = − m
c du y − m du
c u = dt
du c
= − dt
u m
Integrando
du c
! !
=− dt
u m
(en reposo v = 0 en t = 0)
c ""t
ln(u)|v0 = − t"
m 0
c ""v c
ln(g − v)" = − t
m 0 m
c c
ln(g − v) − ln(g) = − t
m m
c
g−m v c
ln( )=− t
g m
c c
ln(1 − v) = − t
mg m
5
c c
(1 − v) = e− m t
mg
c c
v = (1 − e( m )t )
mg
mg c
−→ v(t) = [1 − e− m t ](1.9)
c
Un paracaidista con una masa de 68, 100 gramos salta de un aeroplano. Aplı́quese la
t(s) v(cm/s)
0 0
2 1640.5
4 2776.9
6 3564.2
8 4109.5
6
10 4487.3
12 4749.0
∞ 5339.0
la ecuación se tiene que usar una solución numérica que se aproxime a la solución exacta,
dv ∆v v(ti+1 ) − v(ti )
≈ = (1.10)
dt ∆t ti+1 − ti
Figura 1.3: Uso de una diferencia finita para aproximar la primera derivada de V con
respecto a t.
más tarde ti+1 . La ecuación (1.10) es una diferencia finita dividida en el tiempo ti . Al
v(ti+1 ) − v(ti ) c
= g − v(ti ) (1.11)
ti+1 − ti m
c
v(ti+1 ) = v(ti ) + [g − v(ti )](ti+1 − ti ) (1.12)
m
i = 1 : t1 = 0 y v(t1 ) = 0
12500
v(t2 ) = v(t1 ) + [980 − v(t1 )(t2 − t1 )
68100
t2 = 2s
cm
v(t2 ) = (980)(2 − 0) = 1960
s
i=2:
12500
v(t3 ) = v(t2 ) + [980 − v(t2 )](t3 − t2 )
65100
t3 = 4s
12500
v(4) = 1960 + [980 − (1960)](4 − 2)
68100
cm
v(4) = 3200.5
s
i=3:
9
12500
v(t4 ) = V (t3 ) + [980 − v(t3 )](t4 − t3 )
68100
t4 = 6s
12500
v(6) = 3200.5 + [980 − 3200.5](6 − 4)
68100
cm
v(6) = 3985.6
s
v(8) = 4482.5
v(10) = 4796.9
v(12) = 4995.9
∞ = 5339.0
t(s) v(cm/s)
0 0
2 1960.0
4 3200.5
6 3985.6
8 4482.5
10 4796.9
10
12 4995.9
∞ 5339.0
Un algoritmo es una secuencia lógica de pasos necesarios para ejecutar una tarea
especı́fica tal como la solución de un problema. Los buenos algoritmos tienen ciertas ca-
racterı́sticas. Siempre deben terminar después de una cantidad finita de pasos y deben ser
c Version en FORTRAN
A=25
B=15
C=A+B
WRITE(6,1) C
1 FORMAT(’ ’,F10.3)
STOP
END
↑ Columna 7
↑ Columna 5
↑ Columna 1
11
1.2.3. FORTRAN
decáda de 1950. Debido a que fue expresamente diseñado para cálculos, ha sido el lenguaje
Después de escribir el código del programa, se debe probar para buscar los errores, a
los que se les llama bugs. Al proceso de localizar y corregir los errores se les conoce como
rastreo.
1.2.5. Documentación
Después del rastreo y probado del programa, éste se debe documentar. La documen-
más fácilmente.
Los pasos finales del programa son el almacenamiento y mantenimiento del mismo. El
posterior.
Compilación en fortran:
Tabla 1.1: Cinco pasos necesarios para producir y dar soporte a programas de alta
calidad.
Capı́tulo 2
Los errores asociados con los cálculos y medidas se pueden caracterizar observando su
das.
Los errores númericos se originan con el uso de aproximaciones. Estos incluyen errores
de truncamiento y los errores de redondeo, el primer caso se generan por representar apro-
exactos.
Una manera de medir las magnitudes de las cantidades que se están evaluando es norma-
error
Error : relativo : f uncional =
valor : verdadero
El error relativo también se puede multiplicar por el 100 % para expresarlo como:
error : verdadero
!v = × 100 %
valor : verdadero
Normalizar el error es una alternativa, usando la mejor estimación posible del valor
error : aproximado
!a = × 100 %
valor : aproximado
Ciertos métodos numéricos usan un esquema iterativo para calcular resultados. Se hace
una aproximación anterior, esto se repite varias veces, en tales casos, el error a menudo se
calcula como la diferencia entre la aproximación previa y la actual. Por lo tanto, el error
a menudo no importa el signo del error, si no que su valor absoluto sea menor a una
tolerancia prefijada !s .
| !a |< !s
!s =(0.5×102−n ) %
A menudo se pueden representar las funciones mediante una serie infinita. La función
x2 x3 x4
ex = 1 + x + + + + ...
2 3 4
de e0.5 . Después que se agregue cada término, calcúlesen los errores relativos porcentuales
real y aproximado. El valor real de e0.5 = 1.648721271. Agregar términos hasta que el valor
absoluto del error aproximado ea sea menor al criterio preestablecido, es que contempla
Solución:
16
!s =(0.5×102−3 ) % = 0.005 %
(primer estimación)
ex ≈ 1
(segunda estimación)
ex ≈ 1 + x
para x = 0.5
1.648721271 − 1.5
!v = × 100 % = 9.02 %
1.648721271
1.5 − 1
!a = × 100 % = 33.3 %
1.5
!a no es menor al valor prefijado, !s ; ası́ que se continúa agregando más términos y calcu-
(tercera estimación)
0.512
ex ≈ 1 + 0.5 + ( = 1.625
2
1.648721271 − 1.6525
!v = × 100 % = 1.438 %
1.648721271
17
1.625 − 1.5
!a = × 100 % = 7.69 %
1.625
impar.
2. En la suma y en las restas, el redondeo se lleva a cabo de forma tal que el último
números que están sumando o restando. Nótese que un dı́gito en la columna de las
o también se pueden multiplicar o dividir los resultados de las sumas y las restas:
Tabla 2.1: Ilustración de los dı́gitos retenidos y descartados de un número con cinco
cifras significativas.
19
1. Errores de redondeo
2. Sumas y restas
3. Multiplicación y división
4. Combinaciones
Capı́tulo 3
Resolución de ecuaciones no
lineales
para obtener:
Agregando a la serie un término de 2do orden para obtener algo sobre la curvatura de la
21
22
f "" (xi )
f (xi+1 ) ≈ f (xi ) + f " (xi )(xi+1 − xi ) + (xi+1 − xi )2 (3.3)
2!
se incluye un término residual para considerar todos los términos desde (n + 1) hasta el
infinito:
f (n+1) (ξ)
Rn = (xi+1 − xi )n+1 (3.5)
(n + 1)!
h = xi+1 − xi
en donde
Ejemplo:
Usense términos en la serie de Taylor de cero a cuarto orden para aproximar la función:
sitúandola en el punto medio del subintervalo dentro del cual ocurre un cambio de signo.
Pasos:
1. Escójanse los valores iniciales xl y xu de forma tal que la función cambie de signo
sobre el intervalo. Esto se puede verificar asegurándose de que f (xl )f (xu ) < 0.
xl +xu
2. La primera aproximación a la raı́z xl se determina como: xr = 2
a) Si f (xl )f (xr ) < 0, entonces la raı́z se encuentra dentro del primer subintervalo.
24
b) Si f (xl )f (xr ) > 0, entonces la raı́z se encuentra dentro del segundo subintervalo.
xl + xu
xr =
2
Ejemplo (bisección):
xl = 0 y xu = 1
xl + xu 0+1 1
xr = = = = 0.5
2 2 2
xu = 0.625
0.5 + 0.625
xr = = 0.5625 y | !v |= 0.819 %
2
xnueva
r − xanterior
r
| !a |=| | ×100 %
xnueva
r
xnueva
r : es la raı́z de la iteración actual.
xanterior
r : es el valor de la raı́z de la iteración anterior.
cuando | !a | es menor que un valor previamente fijado, que define el criterio de paro, !s ,
el programa se detiene.
F(X)=EXP(-X)-X
OPEN(5,FILE=’biseccion.dat’)
READ(5,*)XL,XU,ES,IM
1 FORMAT(3F10.0,I5)
AA=F(XL)*F(XU)
XR=(XL+XU)/2
DO 240 NI=2,IM
AA=F(XL)+f(XR)
IF (AA.LT.0.0)XU=XR
IF (AA.GT.0.0)XL=XR
26
XN=(XL+XU)/2
EA=ABS((XN-XR)/XN)*100
230 XR=XN
240 CONTINUE
OPEN(6,FILE=’biseccion.out’)
WRITE(6,2)
WRITE(6,3)XR,EA
3 FORMAT(’ ’,2F10.5)
GOTO 310
280 WRITE(6,4)XN,EA,NI
4 FORMAT(’ ’,2F10.5,I5)
GOTO 310
300 WRITE(6,5)XR
310 STOP
END
27
está mucho más cerca de cero que f (xu ), es lógico que la raı́z se encuentra más cerca de
f (xl ) que de f (xu ). Este método alternativo aprovecha la idea de unir los puntos con una
lı́nea recta. La intersección de esta lı́nea con el eje x proporciona una mejor estimación de
la raı́z. El reemplazamiento de la curva por una lı́nea recta da una posición f alsa de la
raı́z, de aquı́ el nombre de método de la regla falsa o en latı́n, Regla falsi. Tambı́en se le
f (xl ) f (xu )
=
xr − xl xr − xu
Resolviéndose para xr
f (xu )(xl − xu )
xr = xu −
f (xl ) − f (xu )
F(X)=EXP(-X)-X
OPEN(5,FILE=’rfalsa.dat’)
READ(5,*)XL,XU,ES,IM
1 FORMAT(3F10.0,I5)
AA=F(XL)*F(XU)
Figura 3.1: Esquema gráfico del método de la regla falsa. La fórmula se deriva de los
triángulos semejantes (áreas sombreadas).
XR=(XL+XU)/2
XR=XU-(F(XU)*(XL-XU))/(F(XL)-F(XU))
DO 240 NI=2,IM
AA=F(XL)+F(XR)
IF (AA.LT.0.0)XU=XR
IF (AA.GT.0.0)XL=XR
XN=(XL+XU)/2
XN=XU-(F(XU)*(XL-XU))/(F(XL)-F(XU))
29
EA=ABS((XN-XR)/XN)*100
230 XR=XN
240 CONTINUE
OPEN(6,FILE=’rfalsa.out’)
WRITE(6,2)
WRITE(6,3)XR,EA
3 FORMAT(’ ’,2F10.5)
GOTO 310
280 WRITE(6,4)XN,EA,NI
4 FORMAT(’ ’,2F10.5,I5)
GOTO 310
300 WRITE(6,5)XR
310 STOP
END
30
par de ellos pero no necesariamente encierran la raı́z, algunas veces divergen o se alejan
Se emplea una fórmula que se puede desarrollar para la iteración de punto fijo o real
usando la ecuación f (x) = 0 de tal forma que x quede del lado requerido de la ecuación:
x = g(x)
Dada una aproximación inicial de la raı́z, xi , se puede obtener una nueva aproximación
xi+1 = g(xi )
implicit real*8(a-h,o-z)
F(X)=EXP(-X)-X
OPEN(5,FILE=’iteracion.dat’)
READ(5,*) XR,ES,IM
PRINT *, XR,ES,IM
1 FORMAT(2F10.0,I5)
DO 180 NI=1,IM
XN=F(XR)
31
IF(XN.EQ.0.0)GOTO 170
EA=ABS((XN-XR)/XN)*100
170 XR=XN
180 CONTINUE
OPEN(6,FILE=’iteracion.out’)
WRITE(6,2)
NI=NI-1
3 FORMAT(’ ’,2F15.5,I5)
STOP
END
32
inicial de la raı́z es xi , entonces se puede extender una tangente desde el punto [xi , f (xi )].
El punto donde esta tangente cruza al eje x representa una aproximación mejorada a la
raı́z.
f (xi ) − 0
f " (xi ) =
xi − xi+1
ordenando se obtiene:
f (xi )
xi+1 = xi −
f " (xi )
Ei+1 = 0(Ei )2 . De esta forma, el error debe ser casi proporcional al cuadrado del error
anterior.
f "" (ξ)
f (xi+1 ) = f (xi ) + f " (xi )(xi+1 − xi ) + (xi+1 − xi )2
2
ξ ! [xi , xi+1 ]
en x intersectado
f (xi+1 ) = 0, y
f (xi )
xi+1 = xi −
f " (xi )
f "" (ξ)
f (xr ) = f (xi ) + f " (xi )(xr − xi ) + (xτ − xi )2 (∗∗)
2
f "" (ξ)
0 = f " (xi )(xr − xi+1 ) + (xr − xi )2 (∗ ∗ ∗)
2
Ev,i+1 = xr − xi+1
f "" (ξ) 2
0 = f " (xi )Ev.i+1 + Ev,i
2
f "" (xr ) 2
Ev,i+1 ≈ − E
2f " (xr ) v,i
implicit real*8(a-h,o-z)
F(X)=EXP(-X)-X
FD(X)=-EXP(-X)-1
OPEN(5,FILE=’nraphson.dat’)
READ(5,*) XR,ES,IM
1 FORMAT(2F10.0,I5)
DO 180 NI=1,IM
XN=XR-F(XR)/FD(XR)
35
IF(XN.EQ.0.0)GOTO 170
EA=ABS((XN-XR)/XN)*100
170 XR=XN
180 CONTINUE
OPEN(6,FILE=’nraphson.out’)
WRITE(6,2)
NI=NI-1
3 FORMAT(’ ’,2F12.5,I5)
STOP
END
36
f (xi−1 ) − f (xi )
f " (xi ) ≈
xi−1 − xi
f (xi )
xi+1 = xi −
f " (xi )
f (xi )(xi−1 − xi )
xi+1 = xi −
f (xi−1 ) − f (xi )
No requiere que f (x) cambie de signo entre estos valores, a este método no se le clasifica
Ejemplo: Úsese el método de la secante para calcular la raı́z de f (x) = e−x −x. Empiécese
implicit real*8(a-h,o-z)
F(X)=EXP(-X)-X
OPEN(5,FILE=’secante.dat’)
READ(5,*) XR,XI,IM
1 FORMAT(2F10.0,I5)
DO 180 NI=1,IM
XN=XR-(F(XR)*(XI-XR))/(F(XI)-F(XR))
IF(XN.EQ.0.0)GOTO 170
37
EA=ABS((XN-XR)/XN)*100
170 XR=XN
180 CONTINUE
OPEN(6,FILE=’secante.out’)
WRITE(6,2)
NI=NI-1
3 FORMAT(’ ’,3F12.5)
STOP
END
38
Una raı́z multiple corresponde a un punto donde una función es tangencial al eje x.
2. Otro posible problema se relaciona con el hecho de que no solo f (x) se aproxima a
respectivas fórmulas.
propuesto,
f (xi )
xi+1 = xi − m
f " (xi )
Otra alternativa, sugerida por Ralston y Rabinowitz (1978), es proponer una función
f (x)
u(x) =
f " (x)
39
u(xi )
xi+1 = xi − (∗)
u" (xi )
f (xi )
f " (xi )
xi+1 = xi − f " (xi )f " (xi )−f (xi )f "" (xi )
[f " (xi )]2
Aproximación e interpolación
Se ajustará una lı́nea recta a un conjunto de datos observados (x1 , y1 ), ..., (xn , yn ). La
y = a0 + a1 x + E
a1 : es la pendiente.
E = y − a0 − a1 x
y: valor real.
n
# n
#
(inadecuado) Ei = (yi − a0 − a1 xi )
i=1 i=1
n
# n
#
(inadecuado) | Ei |= | yi − a 0 − a 1 x i |
i=1 i=1
n
# n
#
Sr = Ei2 = (yi − a0 − a1 xi )2
i=1 i=1
Para determinar las constantes a0 y a1 se deriva la ecuación Sr con respecto a sus coefi-
cientes:
∂Sr #
= −2 (yi − a0 − a1 xi )
∂ao
43
∂Sr #
= −2 [(yi − a0 − a1 xi )xi ]
∂a1
# # #
0= yi − a0 − a1 xi
# # #
0= yi x i − a0 xi − a1 x2i
#
a0 = na0
Ecuaciones normales:
# #
na0 + a1 xi = yi
# # #
a0 xi + x2i a1 = x i yi
Resolviendo para a0 y a1 :
$ $ $
n x i y i − x i yi
a1 =
n x2i − ( xi )2
$ $
a0 = ȳ − a1 x̄
$ xi
x̄: medida de x ( n )
$ yi
ȳ: medida de y ( n)
%
Sr
Sy =
x n−2
y
x: indica que el error es para un valor predicho de y correspondiente a un valor particular
de x.
implicit real*8(a-h,o-z)
OPEN(5,FILE=”mcuadrados.dat”)
READ(5,*) N
1 FORMAT(I5)
DO 170 I=1,N
READ(5,*) X,Y
2 FORMAT(2F10.0)
45
SX=SX+X
SY=SY+Y
X2=X2+X*X
XY=XY+X*Y
170 CONTINUE
XM=SX/N
YM=SY/N
A1=(N*XY-SX*SY)/(N*X2-SX*SX)
A0=YM-A1*XM
OPEN(6,FILE=”mcuadrados.out”)
WRITE(6,3) A0, A1
3 FORMAT(’ ’,2F10.7)
STOP
END
46
4.2. Interpolación
La forma más simple de interpolación es la de conectar dos puntos con una lı́nea recta,
Reordenando:
f (x1 ) − f (x0 )
f1 (x) = f (x0 ) + (x − x0 ) −→ Interpolación lineal
x1 − x0
orden es:
se requiere encontrar los b0 , ..., bn ; (n+1) puntos se requieren para obtener un polinomio de
n-ésimo orden: x0 , x1 , ..., xn . Usando estos datos, con las ecuaciones siguientes se evalúan
los coeficientes:
b0 = f (x0 )
b1 = f [x1 , x0 ]
b2 = f [x2 , x1 , x0 ]
las evaluaciones entre corchetes son diferencias divididas finitas. La primera diferencia di-
f (xi ) − f (xj )
f [xi , xj ] =
xi − xj
f [xi , xj ] − f [xj , xk ]
f [xi , xj , xk ] =
xi − xk
x f(x)=ln(x)
0 0
2 1960.0
4 3200.5
6 3985.6
8 4482.5
10 4796.9
12 4995.9
∞ 5339.0
Este polinomio es una reformulación del polinomio de Newton que evita los cálculos
n
#
fn (x) = Li (x)f (xi )
i=0
en donde
n
& x − xi
Li (x) =
xi − xj
j=0,j=i
x − x1 x − x0
f1 (x) = f (x0 ) + f (x1 )
x0 − x1 x1 − x0
n
&
Rn = f [x, xn , xn−1 , ..., x0 ] (x − xi )
i=0
50
Las fórmulas de integración de Newton-Cotes son los esquemas más comunes dentro de
o un conjunto de datos tabulares con una función aproximada que sea más fácil de integrar:
! b ! b
I= f (x)dx ≈ fn (x)dx (∗)
a a
orden.
! b ! b
I= f (x)dx ≈ f1 (x)dx
a a
f (b) − f (a)
f1 (x) = f (a) + (x − a)
b−a
El área bajo la lı́nea recta es una aproximación de la integral de f (x) entre los lı́mites a
y b:
b
f (b) − f (a)
!
I≈ [f (a) + (x − a)]dx
a b−a
f (a) + f (b)
I ≈ (b − a)
2
1 ""
Et = − f (ξ)(b − a)3
12
implicit real*8(a-h,o-z)
REAL IN
COMMON N,A,B
READ (5,1) N
1 FORMAT(I5)
52
NI=N-1
READ(5,2) A,B
2 FORMAT(2F10.0)
H=(B-A)/NI
DO 170 I=1,N
READ(5,3) Y(I)
3 FORMAT(F10.0)
170 CONTINUE
CALL TRAP(Y,IN)
WRITE(6,4)IN
4 FORMAT(’ ’,F10.3)
STOP
53
END
SUBROUTINE TRAP(Y,IN)
DIMENSION Y(20)
REAL IN
COMMON N,A,B
NI=N-1
SU=Y(1)
DO 1030 I=2,NI
SU=SU+2*Y(1)
1030 CONTINUE
HT=(SU+Y(N))/(2*NI)
IN=(B-A)/HT
RETURN
END
54
1
4.5.1. Regla de Simpson de 3
! b ! b
I≈ f (x)dx ≈ f2 (x)dx
a a
x2
(x − x1 )(x − x2 ) (x − x0 )(x − x2 ) (x − x0 )(x − x1 )
!
I≈ [ f (x0 )+ f (x1 )+ f (x2 )]dx
x0 (x0 − x1 )(x0 − x2 ) (x1 − x0 )(x1 − x2 ) (x2 − x0 )(x2 − x1 )
Integrando,
h
I≈ [f (x0 ) + 4f (x1 ) + f (x2 )]
3
1
Regla de Simpson de 3
(b−a)
donde h = 2 .
1 5 4
Ev = − h f (ξ) Error : de : truncamiento.
90
o en términos matemáticos:
yi+1 = yi + φh (∗∗)
para obtener:
Agregando a la serie un término de 2do orden para obtener algo sobre la curvatura de la
f "" (xi )
f (xi+1 ) ≈ f (xi ) + f " (xi )(xi+1 − xi ) + (xi+1 − xi )2 (5.3)
2!
se incluye un término residual para considerar todos los términos desde (n + 1) hasta el
infinito:
f (n+1) (ξ)
Rn = (xi+1 − xi )n+1 (5.5)
(n + 1)!
h = xi+1 − xi
en donde
Ejemplo:
58
Usense términos en la serie de Taylor de cero a cuarto orden para aproximar la función:
0 = f (xi , yi )
en la ecuación (∗∗):
yi+1 = yi + f (xi , yi )h
y(0) = 1
Por lo tanto:
El error es:
En el segundo paso:
IMPLICIT REAL*8(A-H,O-Z)
F(X,Y)=4*EXP(0.8*X)-0.5*Y
OPEN(5,FILE=’meuler.dat’)
READ(5,*) X0,X1
1 FORMAT(2F10.0)
READ(5,*) Y0
2 FORMAT(F10.0)
READ(5,*) H
READ(5,*) PI
NP=(X1-X0)/PI
NC=PI/H
X=X0
61
Y=Y0
OPEN(6,FILE=’meuler.out’)
WRITE(6,3) X,Y
3 FORMAT(’ ’,2F20.3)
DO 270 I=1,NP
DO 250 J=1,NC
CALL EUL(SL)
Y=Y+SL*H
X=X+H
250 CONTINUE
WRITE(6,3) X,Y
270 CONTINUE
62
STOP
END
SUBROUTINE EUL(SL)
COMMON X,Y
F(X,Y)=4*EXP(0.8*X)-0.5*Y
SL=F(X,Y)
RETURN
END
63
Los métodos de Runge-Kutta tienen la exactitud del esquema de la serie de Taylor sin
necesitar del cálculo de derivadas superiores. Existen muchas variaciones pero todas ellas
donde
sobre el intervalo.
φ = a1 k1 + a2 k2 + ... + an kn
k1 = f (xi , yi )
k2 = f (xi + p1 h, yi + q11 k1 h)
φ = a 1 k1 + a 2 k2
k1 = f (xi , yi )
k2 = f (xi + p1 h, yi + q11 k1 h)
Recordando que la serie de Taylor de segundo orden para yi y f (xi , yi ) se escribe como,
h2
yi+1 = yi + f (xi , yi )h + f " (xi , yi )
2
∂f ∂f dy
f " (xi , yi ) = +
∂x ∂y dx
∂f ∂f dy h2
yi+1 = yi + f (xi , yi )h + ( + )
∂x ∂y dx 2
yi+1 = yi + [a1 k1 + a2 k2 ]h
65
expandiendo
k2 = f (xi + pi h, yi + q11 k1 h)
∂f ∂f
f (xi + p1 h, yi + q11 k1 h) = f (xi , yi ) + p1 h + q11 k1 h + 0(h2 )
∂x ∂y
∂f ∂f
yi+1 = yi + a1 f (xi , yi )h + a2 h[f (xi , yi ) + p1 h + q11 k1 h ]
∂x ∂y
∂f ∂f
yi+1 = yi + [a1 f (xi , yi ) + a2 f (xi , yi )]h + [a2 p1 + a2 q11 f (xi , yi ) ]h2 + 0(h3 )
∂x ∂y
a1 + a2 = 1
1
a 2 p1 =
2
1
a2 q11 =
2
Por lo que tenemos 4 incóngnitas y 3 ecuaciones, se tiene que tener el valor de una incógni-
a1 = 1 − a2
66
1
p1 =
2a2
1
q11 =
2a2
c Eliminacion de Gauss
y(1) = 0.468
y(2) = 0.695
y(3) = 0.398
y(4) = 0.913
y(5) = 0.483
a(1,1) = 0.546
a(1,2) = 0.447
a(1,3) = 0.242
a(1,4) = 0.194
a(1,5) = 0.795
a(2,1) = 0.380
a(2,2) = 0.276
a(2,3) = 0.581
a(2,4) = 0.108
a(2,5) = 0.416
67
a(3,1) = 0.721
a(3,2) = 0.022
a(3,3) = 0.853
a(3,4) = 0.068
a(3,5) = 0.312
a(4,1) = 0.151
a(4,2) = 0.759
a(4,3) = 0.186
a(4,4) = 0.597
a(4,5) = 0.757
a(5,1) = 0.192
a(5,2) = 0.509
a(5,3) = 0.041
a(5,4) = 0.411
a(5,5) = 0.632
a(1,6) = y(1)
a(2,6) = y(2)
a(3,6) = y(3)
a(4,6) = y(4)
a(5,6) = y(5)
open(55,file=’egauss.out’,status=’unknown’)
call gauss(a, 5, 6, 5)
call md isplay(a, 5, 6)
stop
end
68
subroutine gauss(a,n,m,ldim)
dimension t(1000),a(ldim,1)
do 10 i=1,n-1
con=1./a(i,i)
do 5 k=1,m+1-i
5 t(k)=-con*a(i,k+i-1)
10 continue
return
end
subroutine elim(a,t,nn,m,ldim,con1)
dimension a(ldim,1),t(1)
do 4 i=2,nn+1
con=a(i,1)
do 3 j=1,m
3 a(i,j)=a(i,j)+con*t(j)
!a(i,1)=con1*con
4 continue
return
end
doi = 1, lr ow
10 f ormat(6F 10.3)
enddo
print *,
return
end
70
Capı́tulo 6
71
PROBLEMAS 139
f (x)
FIGURA 5.16
Casos donde las raíces
pueden pasar inadvertidas
debido a que la longitud
del incremento en el método
de búsqueda incremental
es demasiado grande. Ob-
serve que la última raíz a la
derecha es múltiple y podría x
x0 x1 x2 x3 x4 x5 x6
dejar de considerarse inde-
pendientemente de la longi-
tud del incremento.
PROBLEMAS
5.1 Determine las raíces reales de f(x) = –0.5x2 + 2.5x + 4.5: hasta que el error estimado ea se encuentre debajo de es =
10%.
a) Gráficamente
b) Empleando la fórmula cuadrática 5.3 Determine las raíces reales de f(x) = −25 1 82x − 90x2 + 44x3
c) Usando el método de bisección con tres iteraciones para – 8x4 + 0.7x5:
determinar la raíz más grande. Emplee como valores inicia-
les xl = 5 y xu = 10. Calcule el error estimado ea y el error a) Gráficamente
verdadero et para cada iteración. b) Usando el método de bisección para localizar la raíz más
grande con es = 10%. Utilice como valores iniciales xl = 0.5
5.2 Determine las raíces reales de f(x) = 5x3 – 5x2 + 6x – 2: y xu = 1.0.
c) Realice el mismo cálculo que en b), pero con el método de
a) Gráficamente la falsa posición y es = 0.2%.
b) Utilizando el método de bisección para localizar la raíz más
pequeña. Use los valores iniciales xl = 0 y xu = 1 iterando 5.4 Calcule las raíces reales de f(x) = –12 – 21x + 18x2 – 2.75x3:
a) Gráficamente lice iteraciones hasta que el error relativo aproximado sea menor
b) Empleando el método de la falsa posición con un valor es que 5%.
correspondiente a tres cifras significativas para determinar 5.13 La velocidad v de un paracaidista que cae está dada por
la raíz más pequeña.
gm
v=
c
(1 − e − (c / m )t )
5.5 Localice la primera raíz no trivial de sen x = x2, donde x está
en radianes. Use una técnica gráfica y bisección con un interva- donde g = 9.8 m/s2. Para un paracaidista con coeficiente de
lo inicial de 0.5 a 1. Haga el cálculo hasta que ea sea menor que arrastre de c = 15 kg/s, calcule la masa m de modo que la velo-
es = 2%. Realice también una prueba de error sustituyendo la cidad sea v = 35 m/s en t = 9s. Utilice el método de la falsa po-
respuesta final en la ecuación original. sición para determinar m a un nivel de es = 0.1%.
5.6 Determine la raíz real de ln x2 = 0.7: 5.14 Se carga una viga de la manera que se aprecia en la figura
P5.14. Emplee el método de bisección para resolver la posición
a) Gráficamente dentro de la viga donde no hay momento.
b) Empleando tres iteraciones en el método de bisección con
los valores iniciales xl = 0.5 y xu = 2.
c) Usando tres iteraciones del método de la falsa posición, con 100 lb/ft 100 lb
los mismos valores iniciales de b).
a) Analíticamente
b) Gráficamente
c) Empleando tres iteraciones en el método de la falsa posición, 3’ 3’ 4’ 2’
con valores iniciales de 1 a 3. Calcule el error aproximado
ea y el error verdadero et en cada iteración. Figura P5.14
donde V = volumen [m3], h = profundidad del agua en el tanque a) Si los valores iniciales son de 0 y 40ºC, con el método de
[m], y R = radio del tanque [m]. la bisección, ¿cuántas iteraciones se requerirían para deter-
minar la temperatura con un error absoluto de 0.05ºC.
b) Desarrolle y pruebe un programa para el método de bisec-
ción a fin de determinar T como función de una concen-
tración dada de oxígeno, con un error absoluto preespecifi-
cado como en el inciso a). Dadas elecciones iniciales de 0 y
40ºC, pruebe su programa para un error absoluto de 0.05ºC
R
para los casos siguientes: osf = 8, 10 y 12 mg/L. Compruebe
sus resultados.
verdadera. Mientras que para el caso de una sola ecuación los métodos gráficos son
útiles para obtener un buen valor inicial, ningún procedimiento tan simple está disponi-
ble para el caso de múltiples ecuaciones. Aunque existen algunos métodos avanzados
para obtener una primer aproximación aceptable, los valores iniciales a menudo deben
obtenerse mediante prueba y error, con el conocimiento del sistema físico que se está
modelando.
El método de Newton-Raphson para dos ecuaciones puede generalizarse para re-
solver n ecuaciones simultáneas. Debido a que el camino más eficiente para esto impli-
ca el álgebra matricial y la solución de ecuaciones lineales simultáneas, se pospondrá su
estudio para la parte tres.
PROBLEMAS
6.1 Utilice la iteración simple de punto fijo para localizar la raíz nes iniciales de a) 4.52, y b) 4.54. Estudie y use métodos gráfi-
de cos y analíticos para explicar cualquier peculiaridad en sus
resultados.
f(x) = 2 sen ( x)– x 6.6 Determine la raíz real más pequeña de f(x) = –12 – 21x +
18x2 – 2.4x3: a) en forma gráfica, y b) con el empleo del método
Haga una elección inicial de x0 = 0.5 e itere hasta que ea ≤ 0.001%. de la secante para un valor de es que corresponda a tres cifras
Compruebe que el proceso converge en forma lineal según se significativas.
describió en el recuadro 6.1. 6.7 Localice la primera raíz positiva de
6.2 Determine la raíz real más grande de
f(x) = sen x + cos(1 + x2) – 1
3 2
f(x) = 2x – 11.7x + 17.7x – 5
donde x está en radianes. Para localizar la raíz, use cuatro itera-
a) En forma gráfica. ciones del método de la secante con valores iniciales de a) xi–1
b) Con el método de iteración simple de punto fijo (tres itera- = 1.0 y xi = 3.0; y b) xi – 1 = 1.5 y xi = 2.5, y c) xi–1 = 1.5 y
ciones, x0 = 3). Nota: asegúrese de haber desarrollado una xi = 2.25.
solución que converja a la raíz. 6.8 Determine la raíz real de x3.5 = 80, con el método de la se-
c) Con el método de Newton-Raphson (tres iteraciones, x0 = 3, cante modificado dentro de es = 0.1%, con el uso de una elección
d = 0.001). inicial de x0 = 3.5 y d = 0.01.
d) Con el método de la secante (tres iteraciones x–1 = 3, 6.9 Determine la raíz real más grande de f(x) = 0.95x3 – 5.9x2 +
x0 = 4). 10.9x – 6:
e) Con el método de la secante modificado (tres iteraciones,
x0 = 3, d = 0.01). Calcule el porcentaje aproximado de a) En forma gráfica.
errores relativos para sus soluciones. b) Con el uso del método de Newton-Raphson (tres iteraciones,
xi = 3.5).
6.3 Utilice los métodos de a) iteración de punto fijo, y b) Newton- c) Con el método de la secante (tres iteraciones, xi–1 = 2.5 y
Raphson, para determinar una raíz de f(x) = –x2 + 1.8x + 2.5 con xi = 3.5).
el uso de x0 = 5. Haga el cálculo hasta que ea sea menor que d) Por medio del método de la secante modificado (tres itera-
es = 0.05%. Asimismo, realice una comprobación del error de su ciones, xi = 3.5, d = 0.01).
respuesta final.
6.4 Determine las raíces reales de f(x) = –1 + 5.5x – 4x2 + 0.5x3: 6.10 Determine la menor raíz positiva de f(x) = 8 sen(x)e–x – 1:
a) en forma gráfica, y b) con el método de Newton-Raphson
dentro de es = 0.01%. a) En forma gráfica.
6.5 Emplee el método de Newton-Raphson para determinar una b) Con el uso del método de Newton-Raphson (tres iteraciones,
raíz real de f(x) = –1 + 5.5x – 4x2 + 0.5x3 con el uso de eleccio- xi = 0.3).
xi = 0.3). c=
kV
d) Por medio del método de la secante modificado (cinco
iteraciones xi = 0.3, d = 0.01).
o bien como
6.11 La función x3 + 2x2 – 4x + 8 tiene una raíz doble en x = 2.
Emplee a) el método estándar de Newton-Raphson [ec. (6.6)], W – kV c
b) el método de Newton-Raphson modificado [ec. (6.9a)], y c) c=
Q
el método de Newton-Raphson modificado [ec. (6.13)] para re-
solver para la raíz en x = 2. Compare y analice la tasa de conver- De las que solo una convergerá para valores iniciales de 2 < c < 6.
gencia con un valor inicial x0 = 1.2. Seleccione la que sea correcta y demuestre por qué siempre lo será.
6.12 Determine las raíces de las siguientes ecuaciones no linea- 6.17 Desarrolle un programa amigable para el usuario para el
les simultáneas, por medio de los métodos de a) iteración de método de Newton-Raphson, con base en la figura 6.4 y la
punto fijo, y b) Newton-Raphson: sección 6.2.3. Pruébelo por medio de repetir el cálculo del
ejemplo 6.3.
y = – x2 + x + 0.75 6.18 Desarrolle un programa amigable para el usuario para el
método de la secante, con base en la figura 6.4 y la sección 6.3.2.
y + 5xy = x2
Pruébelo con la repetición de los cálculos del ejemplo 6.6.
Utilice valores iniciales de x = y = 1.2, y analice los resultados. 6.19 Haga un programa amigable para el usuario para el método
de la secante modificado, con base en la figura 6.4 y la sección
6.13 Encuentre las raíces de las ecuaciones simultáneas que
6.3.2. Pruébelo con la repetición del cálculo del ejemplo 6.8.
siguen:
6.20 Desarrolle un programa amigable para el usuario para el
método de Newton-Raphson para dos ecuaciones, con base en
(x – 4)2 + (y – 4)2 = 5
la sección 6.5. Pruébelo con la solución del ejemplo 6.10.
x2 + y2 = 16 6.21 Use el programa que desarrolló en el problema 6.20 para
resolver los problemas 6.12 y 6.13, con una tolerancia de
Use un enfoque gráfico para obtener los valores iniciales. En- es = 0.01%.
cuentre estimaciones refinadas con el método de Newton-Raph- 6.22 El antiguo método de dividir y promediar, para obtener una
son para dos ecuaciones, que se describe en la sección 6.5.2. apoximación de la raíz cuadrada de cualquier número positivo,
6.14 Repita el problema 6.13, excepto que a, se formula del modo siguiente:
y = x2 + 1 x+a/ x
x=
2
y = 2 cos x
Demuestre que éste es equivalente al algoritmo de Newton-Ra-
6.15 El balance de masa de un contaminante en un lago bien phson.
mezclado se expresa así: 6.23 a) Aplique el método de Newton-Raphson a la función f(x)
= tanh (x2 – 9) para evaluar su raíz real conocida en x = 3. Use
dc un valor inicial de x0 = 3.2 y haga un mínimo de cuatro iteracio-
V = W – Qc – kV c
dt nes. b) ¿Converge el método a su raíz real? Bosqueja la gráfica
con los resultados para cada iteración que obtenga.
Dados los valores de parámetros V = 1 × 106 m3, Q = l × 105 6.24 El polinomio f(x) = 0.0074x4 – 0.284x3 + 3.355x2 – 12.183x
m3/año y W = l × 106 g/año, y k = 0.25 m0.5/año, use el método + 5 tiene una raíz real entre 15 y 20. Aplique el método de
de la secante modificado para resolver para la concentración de Newton-Raphson a dicha función con valor inicial x0 = 16.15.
estado estable. Emplee un valor inicial c = 4 g/m3 y d = 0.5. Explique sus resultados.
Realice tres iteraciones y determine el error relativo porcentual 6.25 Emplee el método de la secante con la función del círculo
después de la tercera iteración. (x + 1)2 + (y – 2)2 = 16, a fin de encontrar una raíz real positiva.
6.16 Para el problema 6.15, la raíz puede localizarse con iteración Haga que el valor inicial sea xi = 3 y xi–1 = 0.5. Aproxímese a la
de punto fijo como solución del primer y cuarto cuadrantes. Cuando resuelva para
[3 R − h]
V = π h2
3
V h
donde V = volumen [pie3], h = profundidad del agua en el tanque
[pies], y R = radio del tanque [pies].
Si R = 3 m, ¿a qué profundidad debe llenarse el tanque de modo
que contenga 30 m3? Haga tres iteraciones del método de Newton-
Raphson para determinar la respuesta. Encuentre el error relati-
vo aproximado después de cada iteración. Observe que el valor Figura P6.26
inicial de R convergerá siempre.
c version fortran
implicit real*8(a-h,o-z)
A= -0.5
B=2.5
C=4.5
R=(B*B)-(4*A*C)
if(R .le. 0) then
write(*,*)"elrecultado es real"
else
D=(sqrt(R))
35 X1=(-B+D)/(2*A)
X2=(-B-D)/(2*A)
40 print*,X1
print*,X2
end if
stop
end
problema5.1c
implicit real*8 (a-h,o-z)
f(x)=-0.5*x**2+2.5*x+4.5
open(5,file='programa1c.dat')
read(5,1)XL,XU,ES,IM
1 format(3f10.0,I5)
AA=f(XL)*f(XU)
AA=f(XL)+f(XR)
if(AA.EQ.0.0) GOTO 300
if(AA.LT.0.0)XU=XR
if(AA.Gt.0.0) XL=XR
XN=(XL+XU)/2
if(XN.EQ.0.0) GOTO 230
EA=ABS((XN-XR)/XN)*100
if(EA.LT.ES) GOTO 280
230 XR=XN
240 continue
open(6,FILE='programa1c.out')
write(6,2)
2 format(' ','no se encontro la raiz')
write(6,3)XR,EA
3 format(' ',2f10.3)
GOTO 310
280 write(6,4)XN,EA,NI
4 format(' ',2f10.3,I5)
GOTO 310
300 write(6,5)XR
5 format(' ','la raiz exacta es=',f10.3)
310 stop
end
problema5.2b
implicit real*8 (a-h,o-z)
f(x)=5*x**3-5*x**2+6*x-2
open(5,file='programa2b.dat')
read(5,*)XL,XU,ES,IM
1 format(3f10.0,I5)
AA=f(XL)*f(XU)
AA=f(XL)+f(XR)
if(AA.EQ.0.0) GOTO 300
if(AA.LT.0.0)XU=XR
if(AA.Gt.0.0) XL=XR
XN=(XL+XU)/2
if(XN.EQ.0.0) GOTO 230
EA=ABS((XN-XR)/XN)*100
if(EA.LT.ES) GOTO 280
230 XR=XN
240 continue
open(6,FILE='programa2b.out')
write(6,2)
2 format(' ','no se encontro la raiz')
write(6,3)XR,EA
3 format(' ',2f10.3)
GOTO 310
280 write(6,4)XN,EA,NI
4 format(' ',2f10.3,I5)
GOTO 310
300 write(6,5)XR
5 format(' ','la raiz exacta es=',f10.3)
310 stop
end
problema5.3b
implicit real*8 (a-h,o-z)
f(x)=-25+82*x-90*x**2+44*x**3
open(5,file='programa3b.dat')
read(5,*)XL,XU,ES,IM
1 format(3f10.0,I5)
AA=f(XL)*f(XU)
AA=f(XL)+f(XR)
if(AA.EQ.0.0) GOTO 300
if(AA.LT.0.0)XU=XR
if(AA.Gt.0.0) XL=XR
XN=(XL+XU)/2
if(XN.EQ.0.0) GOTO 230
EA=ABS((XN-XR)/XN)*100
if(EA.LT.ES) GOTO 280
230 XR=XN
240 continue
open(6,FILE='programa3b.out')
write(6,2)
2 format(' ','no se encontro la raiz')
write(6,3)XR,EA
3 format(' ',2f10.3)
GOTO 310
280 write(6,4)XN,EA,NI
4 format(' ',2f10.3,I5)
GOTO 310
300 write(6,5)XR
5 format(' ','la raiz exacta es=',f10.3)
310 stop
end
problema5.3c
implicit real*8 (a-h,o-z)
F(X)=-25+82*x-90*x**2+44*x**3
OPEN(5,FILE='programa3c.dat')
READ(5,*)XL,XU,ES,IM
1 FORMAT(3F10.0,I5)
AA=F(XL)*F(XU)
AA=F(XL)+F(XR)
IF (ABS(AA).EQ.0.01) GOTO 300
IF (AA.LT.0.0)XU=XR
IF (AA.GT.0.0)XL=XR
C XN=(XL+XU)/2
XN=XU-(F(XU)*(XL-XU))/(F(XL)-F(XU))
IF (XN.EQ.0.0) GOTO 230
EA=ABS((XN-XR)/XN)*100
IF (EA.LT.ES) GOTO 280
230 XR=XN
240 CONTINUE
OPEN(6,FILE='programa3c.out')
WRITE(6,2)
2 FORMAT(' ','NO SE ENCONTRO LA RAIZ')
WRITE(6,3)XR,EA
3 FORMAT(' ',2F10.5)
GOTO 310
280 WRITE(6,4)XN,EA,NI
4 FORMAT(' ',2F10.5,I5)
GOTO 310
300 WRITE(6,5)XR
5 FORMAT(' ','LA RAIZ EXACTA ES =',F10.5)
310 STOP
END
problema5.4b
implicit real*8 (a-h,o-z)
F(X)=-12-21*x+18*x**2-2.75*x**3
OPEN(5,FILE='programa4b.dat')
READ(5,*)XL,XU,ES,IM
1 FORMAT(3F10.0,I5)
AA=F(XL)*F(XU)
AA=F(XL)+F(XR)
IF (ABS(AA).EQ.0.01) GOTO 300
IF (AA.LT.0.0)XU=XR
IF (AA.GT.0.0)XL=XR
C XN=(XL+XU)/2
XN=XU-(F(XU)*(XL-XU))/(F(XL)-F(XU))
IF (XN.EQ.0.0) GOTO 230
EA=ABS((XN-XR)/XN)*100
IF (EA.LT.ES) GOTO 280
230 XR=XN
240 CONTINUE
OPEN(6,FILE='programa4b.out')
WRITE(6,2)
2 FORMAT(' ','NO SE ENCONTRO LA RAIZ')
WRITE(6,3)XR,EA
3 FORMAT(' ',2F10.5)
GOTO 310
280 WRITE(6,4)XN,EA,NI
4 FORMAT(' ',2F10.5,I5)
GOTO 310
300 WRITE(6,5)XR
5 FORMAT(' ','LA RAIZ EXACTA ES =',F10.5)
310 STOP
END
problema5.5
implicit real*8 (a-h,o-z)
f(x)=sin(x)-x**2
open(5,file='programa5.dat')
read(5,*)XL,XU,ES,IM
1 format(3f10.0,I5)
AA=f(XL)*f(XU)
AA=f(XL)+f(XR)
if(AA.EQ.0.0) GOTO 300
if(AA.LT.0.0)XU=XR
if(AA.Gt.0.0) XL=XR
XN=(XL+XU)/2
if(XN.EQ.0.0) GOTO 230
EA=ABS((XN-XR)/XN)*100
if(EA.LT.ES) GOTO 280
230 XR=XN
240 continue
open(6,FILE='programa5.out')
write(6,2)
2 format(' ','no se encontro la raiz')
write(6,3)XR,EA
3 format(' ',2f10.3)
GOTO 310
280 write(6,4)XN,EA,NI
4 format(' ',2f10.3,I5)
GOTO 310
300 write(6,5)XR
5 format(' ','la raiz exacta es=',f10.3)
310 stop
end
problema5.6b
implicit real*8 (a-h,o-z)
f(x)=log(x**2) -0.7
open(5,file='programa6b.dat')
read(5,*)XL,XU,ES,IM
1 format(3f10.0,I5)
AA=f(XL)*f(XU)
AA=f(XL)+f(XR)
if(AA.EQ.0.0) GOTO 300
if(AA.LT.0.0)XU=XR
if(AA.Gt.0.0) XL=XR
XN=(XL+XU)/2
if(XN.EQ.0.0) GOTO 230
EA=ABS((XN-XR)/XN)*100
if(EA.LT.ES) GOTO 280
230 XR=XN
240 continue
open(6,FILE='programa6b.out')
write(6,2)
2 format(' ','no se encontro la raiz')
write(6,3)XR,EA
3 format(' ',2f10.3)
GOTO 310
280 write(6,4)XN,EA,NI
4 format(' ',2f10.3,I5)
GOTO 310
300 write(6,5)XR
5 format(' ','la raiz exacta es=',f10.3)
310 stop
end
problema5.6c
implicit real*8 (a-h,o-z)
F(X)=log(x**2) -0.7
OPEN(5,FILE='programa6c.dat')
READ(5,*)XL,XU,ES,IM
1 FORMAT(3F10.0,I5)
AA=F(XL)*F(XU)
AA=F(XL)+F(XR)
IF (ABS(AA).EQ.0.01) GOTO 300
IF (AA.LT.0.0)XU=XR
IF (AA.GT.0.0)XL=XR
C XN=(XL+XU)/2
XN=XU-(F(XU)*(XL-XU))/(F(XL)-F(XU))
IF (XN.EQ.0.0) GOTO 230
EA=ABS((XN-XR)/XN)*100
IF (EA.LT.ES) GOTO 280
230 XR=XN
240 CONTINUE
OPEN(6,FILE='programa6c.out')
WRITE(6,2)
2 FORMAT(' ','NO SE ENCONTRO LA RAIZ')
WRITE(6,3)XR,EA
3 FORMAT(' ',2F10.5)
GOTO 310
280 WRITE(6,4)XN,EA,NI
4 FORMAT(' ',2F10.5,I5)
GOTO 310
300 WRITE(6,5)XR
5 FORMAT(' ','LA RAIZ EXACTA ES =',F10.5)
310 STOP
END
problema5.7b
implicit real*8 (a-h,o-z)
F(X)=(0.8-0.3*x)/x
OPEN(5,FILE='programa7c.dat')
READ(5,*)XL,XU,ES,IM
1 FORMAT(3F10.0,I5)
AA=F(XL)*F(XU)
AA=F(XL)+F(XR)
IF (ABS(AA).EQ.0.01) GOTO 300
IF (AA.LT.0.0)XU=XR
IF (AA.GT.0.0)XL=XR
C XN=(XL+XU)/2
XN=XU-(F(XU)*(XL-XU))/(F(XL)-F(XU))
IF (XN.EQ.0.0) GOTO 230
EA=ABS((XN-XR)/XN)*100
IF (EA.LT.ES) GOTO 280
230 XR=XN
240 CONTINUE
OPEN(6,FILE='programa7c.out')
WRITE(6,2)
2 FORMAT(' ','NO SE ENCONTRO LA RAIZ')
WRITE(6,3)XR,EA
3 FORMAT(' ',2F10.5)
GOTO 310
280 WRITE(6,4)XN,EA,NI
4 FORMAT(' ',2F10.5,I5)
GOTO 310
300 WRITE(6,5)XR
5 FORMAT(' ','LA RAIZ EXACTA ES =',F10.5)
310 STOP
END
problema5.10
AA=F(XL)*F(XU)
AA=F(XL)+F(XR)
IF (ABS(AA).EQ.0.01) GOTO 300
IF (AA.LT.0.0)XU=XR
IF (AA.GT.0.0)XL=XR
C XN=(XL+XU)/2
XN=XU-(F(XU)*(XL-XU))/(F(XL)-F(XU))
IF (XN.EQ.0.0) GOTO 230
EA=ABS((XN-XR)/XN)*100
IF (EA.LT.ES) GOTO 280
230 XR=XN
240 CONTINUE
OPEN(6,FILE='programa8.out')
WRITE(6,2)
2 FORMAT(' ','NO SE ENCONTRO LA RAIZ')
WRITE(6,3)XR,EA
3 FORMAT(' ',2F10.5)
GOTO 310
280 WRITE(6,4)XN,EA,NI
4 FORMAT(' ',2F10.5,I5)
GOTO 310
300 WRITE(6,5)XR
5 FORMAT(' ','LA RAIZ EXACTA ES =',F10.5)
310 STOP
END
problema5.11b
implicit real*8 (a-h,o-z)
F(X)=X**3.5 -80
OPEN(5,FILE='programa9.dat')
READ(5,*)XL,XU,ES,IM
1 FORMAT(3F10.0,I5)
AA=F(XL)*F(XU)
AA=F(XL)+F(XR)
IF (ABS(AA).EQ.0.01) GOTO 300
IF (AA.LT.0.0)XU=XR
IF (AA.GT.0.0)XL=XR
C XN=(XL+XU)/2
XN=XU-(F(XU)*(XL-XU))/(F(XL)-F(XU))
IF (XN.EQ.0.0) GOTO 230
EA=ABS((XN-XR)/XN)*100
IF (EA.LT.ES) GOTO 280
230 XR=XN
240 CONTINUE
OPEN(6,FILE='programa9.out')
WRITE(6,2)
2 FORMAT(' ','NO SE ENCONTRO LA RAIZ')
WRITE(6,3)XR,EA
3 FORMAT(' ',2F10.5)
GOTO 310
280 WRITE(6,4)XN,EA,NI
4 FORMAT(' ',2F10.5,I5)
GOTO 310
300 WRITE(6,5)XR
5 FORMAT(' ','LA RAIZ EXACTA ES =',F10.5)
310 STOP
END
implicit real*8 (a-h,o-z)
f(x)=-12*x**5-6*x**3+10
open(5,file='programa10.dat')
read(5,*)XL,XU,ES,IM
1 format(3f10.0,I5)
AA=f(XL)*f(XU)
AA=f(XL)+f(XR)
if(AA.EQ.0.0) GOTO 300
if(AA.LT.0.0)XU=XR
if(AA.Gt.0.0) XL=XR
XN=(XL+XU)/2
if(XN.EQ.0.0) GOTO 230
EA=ABS((XN-XR)/XN)*100
if(EA.LT.ES) GOTO 280
230 XR=XN
240 continue
open(6,FILE='programa10.out')
write(6,2)
2 format(' ','no se encontro la raiz')
write(6,3)XR,EA
3 format(' ',2f10.3)
GOTO 310
280 write(6,4)XN,EA,NI
4 format(' ',2f10.3,I5)
GOTO 310
300 write(6,5)XR
5 format(' ','la raiz exacta es=',f10.3)
310 stop
end
problema6.1
implicit real*8(a-h,o-z)
F(X)=2*sin(sqrt(x)) -x
OPEN(5,FILE='programa11.dat')
READ(5,*) XR,ES,IM
PRINT *, XR,ES,IM
1 FORMAT(2F10.0,I5)
DO 180 NI=1,IM
XN=F(XR)
IF(XN.EQ.0.0)GOTO 170
EA=ABS((XN-XR)/XN)*100
IF (EA.LE.ES) GOTO 210
170 XR=XN
180 CONTINUE
OPEN(6,FILE='programa11.out')
WRITE(6,2)
2 FORMAT(' ','NO SE ENCONTRO LA RAIZ')
NI=NI-1
210 WRITE(6,3) XN,EA,NI
3 FORMAT(' ',2F15.5,I5)
STOP
END
problema6.2b
implicit real*8(a-h,o-z)
F(X)=2*x**3-11.7*x**2+17.7*x-5
OPEN(5,FILE='programa12b.dat')
READ(5,*) XR,ES,IM
PRINT *, XR,ES,IM
1 FORMAT(2F10.0,I5)
DO 180 NI=1,IM
XN=F(XR)
IF(XN.EQ.0.0)GOTO 170
EA=ABS((XN-XR)/XN)*100
IF (EA.LE.ES) GOTO 210
170 XR=XN
180 CONTINUE
OPEN(6,FILE='programa12b.out')
WRITE(6,2)
2 FORMAT(' ','NO SE ENCONTRO LA RAIZ')
NI=NI-1
210 WRITE(6,3) XN,EA,NI
3 FORMAT(' ',2F15.5,I5)
STOP
END
implicit real*8(a-h,o-z)
F(X)=x**3+2*x**2-4*x+8
FD(X)=3*x**2+4*x-4
FD2(X)=6*X+4
OPEN(5,FILE='programa21b.dat')
READ(5,*) XR,ES,IM
1 FORMAT(2F10.0,I5)
DO 180 NI=1,IM
XN=XR-(F(XR)*FD(XR))/(FD(XR)*FD(XR)-F(XR)*FD2(XR))
IF(XN.EQ.0.0)GOTO 170
EA=ABS((XN-XR)/XN)*100
IF (EA.LE.ES) GOTO 210
170 XR=XN
180 CONTINUE
OPEN(6,FILE='programa21b.out')
WRITE(6,2)
2 FORMAT(' ','NO SE ENCONTRO LA RAIZ')
NI=NI-1
210 WRITE(6,3) XN,EA,NI
3 FORMAT(' ',2F12.5,I5)
STOP
END
problema6.2d
implicit real*8(a-h,o-z)
F(X)=2*x**3-11.7*x**2+17.7*x-5
OPEN(5,FILE='programa12d.dat')
READ(5,*) XR,XI,IM
1 FORMAT(2F10.0,I5)
DO 180 NI=1,IM
XN=XR-(F(XR)*(XI-XR))/(F(XI)-F(XR))
IF(XN.EQ.0.0)GOTO 170
EA=ABS((XN-XR)/XN)*100
IF (EA.LE.ES) GOTO 210
170 XR=XN
180 CONTINUE
OPEN(6,FILE='programa12d.out')
WRITE(6,2)
2 FORMAT(' ','NO SE ENCONTRO LA RAIZ')
NI=NI-1
210 WRITE(6,3) XN,F(XR),F(XI)
3 FORMAT(' ',3F12.5)
STOP
END
problema6.2e
implicit real*8(a-h,o-z)
F(X)=2*x**3-11.7*x**2+17.7*x-5
OPEN(5,FILE='programa12e.dat')
READ(5,*) A,XR,XI,IM
1 FORMAT(2F10.0,I5)
DO 180 NI=1,IM
XN=XR-(A*XR*F(XR)/(F(XR+A*XR)-F(XR)))
IF(XN.EQ.0.0)GOTO 170
EA=ABS((XN-XR)/XN)*100
IF (EA.LE.ES) GOTO 210
170 XR=XN
180 CONTINUE
OPEN(6,FILE='programa12e.out')
WRITE(6,2)
2 FORMAT(' ','NO SE ENCONTRO LA RAIZ')
NI=NI-1
210 WRITE(6,3) XN,F(XR),F(XI)
3 FORMAT(' ',3F12.5)
STOP
END
problema6.3
implicit real*8(a-h,o-z)
F(X)=-x**2+1.8*x+2.5
FD(X)=-2*x+1.8
OPEN(5,FILE='programa13b.dat')
READ(5,*) XR,ES,IM
1 FORMAT(2F10.0,I5)
DO 180 NI=1,IM
XN=XR-F(XR)/FD(XR)
IF(XN.EQ.0.0)GOTO 170
EA=ABS((XN-XR)/XN)*100
IF (EA.LE.ES) GOTO 210
170 XR=XN
180 CONTINUE
OPEN(6,FILE='programa13b.out')
WRITE(6,2)
2 FORMAT(' ','NO SE ENCONTRO LA RAIZ')
NI=NI-1
210 WRITE(6,3) XN,EA,NI
3 FORMAT(' ',2F12.5,I5)
STOP
END
problema6.4b
implicit real*8(a-h,o-z)
F(X)=-1+5.5*x-4*x**2+0.5*x**3
FD(X)=5.5-8*x+3*0.5*x**2
OPEN(5,FILE='programa14b.dat')
READ(5,*) XR,ES,IM
1 FORMAT(2F10.0,I5)
DO 180 NI=1,IM
XN=XR-F(XR)/FD(XR)
IF(XN.EQ.0.0)GOTO 170
EA=ABS((XN-XR)/XN)*100
IF (EA.LE.ES) GOTO 210
170 XR=XN
180 CONTINUE
OPEN(6,FILE='programa14b.out')
WRITE(6,2)
2 FORMAT(' ','NO SE ENCONTRO LA RAIZ')
NI=NI-1
210 WRITE(6,3) XN,EA,NI
3 FORMAT(' ',2F12.5,I5)
STOP
END
problema6.5a
implicit real*8(a-h,o-z)
F(X)=-1+5.5*x-4*x**2+0.5*x**3
FD(X)=5.5-8*x+3*0.5*x**2
OPEN(5,FILE='programa15a.dat')
READ(5,*) XR,ES,IM
1 FORMAT(2F10.0,I5)
DO 180 NI=1,IM
XN=XR-F(XR)/FD(XR)
IF(XN.EQ.0.0)GOTO 170
EA=ABS((XN-XR)/XN)*100
IF (EA.LE.ES) GOTO 210
170 XR=XN
180 CONTINUE
OPEN(6,FILE='programa15a.out')
WRITE(6,2)
2 FORMAT(' ','NO SE ENCONTRO LA RAIZ')
NI=NI-1
210 WRITE(6,3) XN,EA,NI
3 FORMAT(' ',2F12.5,I5)
STOP
END
problema6.5b
implicit real*8(a-h,o-z)
F(X)=-1+5.5*x-4*x**2+0.5*x**3
FD(X)=5.5-8*x+3*0.5*x**2
OPEN(5,FILE='programa15b.dat')
READ(5,*) XR,ES,IM
1 FORMAT(2F10.0,I5)
DO 180 NI=1,IM
XN=XR-F(XR)/FD(XR)
IF(XN.EQ.0.0)GOTO 170
EA=ABS((XN-XR)/XN)*100
IF (EA.LE.ES) GOTO 210
170 XR=XN
180 CONTINUE
OPEN(6,FILE='programa15b.out')
WRITE(6,2)
2 FORMAT(' ','NO SE ENCONTRO LA RAIZ')
NI=NI-1
210 WRITE(6,3) XN,EA,NI
3 FORMAT(' ',2F12.5,I5)
STOP
END
problema6.6b
implicit real*8(a-h,o-z)
F(X)=-12-21*x+18*x**2-2.4*x**3
OPEN(5,FILE='programa16b.dat')
READ(5,*) XR,XI,IM
1 FORMAT(2F10.0,I5)
DO 180 NI=1,IM
XN=XR-(F(XR)*(XI-XR))/(F(XI)-F(XR))
IF(XN.EQ.0.0)GOTO 170
EA=ABS((XN-XR)/XN)*100
IF (EA.LE.ES) GOTO 210
170 XR=XN
180 CONTINUE
OPEN(6,FILE='programa16b.out')
WRITE(6,2)
2 FORMAT(' ','NO SE ENCONTRO LA RAIZ')
NI=NI-1
210 WRITE(6,3) XN,F(XR),F(XI)
3 FORMAT(' ',3F12.5)
STOP
END
problema6.7a
implicit real*8(a-h,o-z)
F(X)=sin(x)+cos(1+x**2)-1
OPEN(5,FILE='programa17a.dat')
READ(5,*) XR,XI,IM
1 FORMAT(2F10.0,I5)
DO 180 NI=1,IM
XN=XR-(F(XR)*(XI-XR))/(F(XI)-F(XR))
IF(XN.EQ.0.0)GOTO 170
EA=ABS((XN-XR)/XN)*100
IF (EA.LE.ES) GOTO 210
170 XR=XN
180 CONTINUE
OPEN(6,FILE='programa17a.out')
WRITE(6,2)
2 FORMAT(' ','NO SE ENCONTRO LA RAIZ')
NI=NI-1
210 WRITE(6,3) XN,F(XR),F(XI)
3 FORMAT(' ',3F12.5)
STOP
END
problema6.7b
implicit real*8(a-h,o-z)
F(X)=sin(x)+cos(1+x**2)-1
OPEN(5,FILE='programa17b.dat')
READ(5,*) XR,XI,IM
1 FORMAT(2F10.0,I5)
DO 180 NI=1,IM
XN=XR-(F(XR)*(XI-XR))/(F(XI)-F(XR))
IF(XN.EQ.0.0)GOTO 170
EA=ABS((XN-XR)/XN)*100
IF (EA.LE.ES) GOTO 210
170 XR=XN
180 CONTINUE
OPEN(6,FILE='programa17b.out')
WRITE(6,2)
2 FORMAT(' ','NO SE ENCONTRO LA RAIZ')
NI=NI-1
210 WRITE(6,3) XN,F(XR),F(XI)
3 FORMAT(' ',3F12.5)
STOP
END
problema6.7c
implicit real*8(a-h,o-z)
F(X)=sin(x)+cos(1+x**2)-1
OPEN(5,FILE='programa17c.dat')
READ(5,*) XR,XI,IM
1 FORMAT(2F10.0,I5)
DO 180 NI=1,IM
XN=XR-(F(XR)*(XI-XR))/(F(XI)-F(XR))
IF(XN.EQ.0.0)GOTO 170
EA=ABS((XN-XR)/XN)*100
IF (EA.LE.ES) GOTO 210
170 XR=XN
180 CONTINUE
OPEN(6,FILE='programa17c.out')
WRITE(6,2)
2 FORMAT(' ','NO SE ENCONTRO LA RAIZ')
NI=NI-1
210 WRITE(6,3) XN,F(XR),F(XI)
3 FORMAT(' ',3F12.5)
STOP
END
problema6.8
implicit real*8(a-h,o-z)
F(X)=x**(7/2) -80
OPEN(5,FILE='programa18.dat')
READ(5,*) A,XR,XI,IM
1 FORMAT(2F10.0,I5)
DO 180 NI=1,IM
XN=XR-(A*XR*F(XR)/(F(XR+A*XR)-F(XR)))
IF(XN.EQ.0.0)GOTO 170
EA=ABS((XN-XR)/XN)*100
IF (EA.LE.ES) GOTO 210
170 XR=XN
180 CONTINUE
OPEN(6,FILE='programa18.out')
WRITE(6,2)
2 FORMAT(' ','NO SE ENCONTRO LA RAIZ')
NI=NI-1
210 WRITE(6,3) XN,F(XR),F(XI)
3 FORMAT(' ',3F12.5)
STOP
END
problema6.9b
implicit real*8(a-h,o-z)
F(X)=0.95*x**3-5.9*x**2+10.9*x-6
FD(X)=3*0.95*x**2-5.9*2*x+10.9
OPEN(5,FILE='programa19b.dat')
READ(5,*) XR,ES,IM
1 FORMAT(2F10.0,I5)
DO 180 NI=1,IM
XN=XR-F(XR)/FD(XR)
IF(XN.EQ.0.0)GOTO 170
EA=ABS((XN-XR)/XN)*100
IF (EA.LE.ES) GOTO 210
170 XR=XN
180 CONTINUE
OPEN(6,FILE='programa19b.out')
WRITE(6,2)
2 FORMAT(' ','NO SE ENCONTRO LA RAIZ')
NI=NI-1
210 WRITE(6,3) XN,EA,NI
3 FORMAT(' ',2F12.5,I5)
STOP
END
problema6.9c
implicit real*8(a-h,o-z)
F(X)=0.95*x**3-5.9*x**2+10.9*x-6
OPEN(5,FILE='programa19c.dat')
READ(5,*) XR,XI,IM
1 FORMAT(2F10.0,I5)
DO 180 NI=1,IM
XN=XR-(F(XR)*(XI-XR))/(F(XI)-F(XR))
IF(XN.EQ.0.0)GOTO 170
EA=ABS((XN-XR)/XN)*100
IF (EA.LE.ES) GOTO 210
170 XR=XN
180 CONTINUE
OPEN(6,FILE='programa19c.out')
WRITE(6,2)
2 FORMAT(' ','NO SE ENCONTRO LA RAIZ')
NI=NI-1
210 WRITE(6,3) XN,F(XR),F(XI)
3 FORMAT(' ',3F12.5)
STOP
END
problema6.9d
implicit real*8(a-h,o-z)
F(X)=0.95*x**3-5.9*x**2+10.9*x-6
OPEN(5,FILE='programa19d.dat')
READ(5,*) A,XR,XI,IM
1 FORMAT(2F10.0,I5)
DO 180 NI=1,IM
XN=XR-(A*XR*F(XR)/(F(XR+A*XR)-F(XR)))
IF(XN.EQ.0.0)GOTO 170
EA=ABS((XN-XR)/XN)*100
IF (EA.LE.ES) GOTO 210
170 XR=XN
180 CONTINUE
OPEN(6,FILE='programa19d.out')
WRITE(6,2)
2 FORMAT(' ','NO SE ENCONTRO LA RAIZ')
NI=NI-1
210 WRITE(6,3) XN,F(XR),F(XI)
3 FORMAT(' ',3F12.5)
STOP
END
problema6.10b
implicit real*8(a-h,o-z)
F(X)=8*sin(x)*exp(-x)-1
FD(X)=8*(-1*sin(x)*exp(-x)+cos(x)*exp(-x))
OPEN(5,FILE='programa20b.dat')
READ(5,*) XR,ES,IM
1 FORMAT(2F10.0,I5)
DO 180 NI=1,IM
XN=XR-F(XR)/FD(XR)
IF(XN.EQ.0.0)GOTO 170
EA=ABS((XN-XR)/XN)*100
IF (EA.LE.ES) GOTO 210
170 XR=XN
180 CONTINUE
OPEN(6,FILE='programa20b.out')
WRITE(6,2)
2 FORMAT(' ','NO SE ENCONTRO LA RAIZ')
NI=NI-1
210 WRITE(6,3) XN,EA,NI
3 FORMAT(' ',2F12.5,I5)
STOP
END
problema6.10c
implicit real*8(a-h,o-z)
F(X)=8*sin(x)*exp(-x)-1
OPEN(5,FILE='programa20c.dat')
READ(5,*) XR,XI,IM
1 FORMAT(2F10.0,I5)
DO 180 NI=1,IM
XN=XR-(F(XR)*(XI-XR))/(F(XI)-F(XR))
IF(XN.EQ.0.0)GOTO 170
EA=ABS((XN-XR)/XN)*100
IF (EA.LE.ES) GOTO 210
170 XR=XN
180 CONTINUE
OPEN(6,FILE='programa20c.out')
WRITE(6,2)
2 FORMAT(' ','NO SE ENCONTRO LA RAIZ')
NI=NI-1
210 WRITE(6,3) XN,F(XR),F(XI)
3 FORMAT(' ',3F12.5)
STOP
END
problema6.10d
implicit real*8(a-h,o-z)
F(X)=8*sin(x)*exp(-x)-1
OPEN(5,FILE='programa20d.dat')
READ(5,*) A,XR,XI,IM
1 FORMAT(2F10.0,I5)
DO 180 NI=1,IM
XN=XR-(A*XR*F(XR)/(F(XR+A*XR)-F(XR)))
IF(XN.EQ.0.0)GOTO 170
EA=ABS((XN-XR)/XN)*100
IF (EA.LE.ES) GOTO 210
170 XR=XN
180 CONTINUE
OPEN(6,FILE='programa20d.out')
WRITE(6,2)
2 FORMAT(' ','NO SE ENCONTRO LA RAIZ')
NI=NI-1
210 WRITE(6,3) XN,F(XR),F(XI)
3 FORMAT(' ',3F12.5)
STOP
END
problema6.11a
implicit real*8(a-h,o-z)
F(X)=x**3+2*x**2-4*x+8
FD(X)=3*x**2+4*x-4
OPEN(5,FILE='programa21a.dat')
READ(5,*) XR,ES,IM
1 FORMAT(2F10.0,I5)
DO 180 NI=1,IM
XN=XR-F(XR)/FD(XR)
IF(XN.EQ.0.0)GOTO 170
EA=ABS((XN-XR)/XN)*100
IF (EA.LE.ES) GOTO 210
170 XR=XN
180 CONTINUE
OPEN(6,FILE='programa21a.out')
WRITE(6,2)
2 FORMAT(' ','NO SE ENCONTRO LA RAIZ')
NI=NI-1
210 WRITE(6,3) XN,EA,NI
3 FORMAT(' ',2F12.5,I5)
STOP
END
problema6.11b
implicit real*8(a-h,o-z)
F(X)=x**3+2*x**2-4*x+8
FD(X)=3*x**2+4*x-4
FD2(X)=6*X+4
OPEN(5,FILE='programa21b.dat')
READ(5,*) XR,ES,IM
1 FORMAT(2F10.0,I5)
DO 180 NI=1,IM
XN=XR-(F(XR)*FD(XR))/(FD(XR)*FD(XR)-F(XR)*FD2(XR))
IF(XN.EQ.0.0)GOTO 170
EA=ABS((XN-XR)/XN)*100
IF (EA.LE.ES) GOTO 210
170 XR=XN
180 CONTINUE
OPEN(6,FILE='programa21b.out')
WRITE(6,2)
2 FORMAT(' ','NO SE ENCONTRO LA RAIZ')
NI=NI-1
210 WRITE(6,3) XN,EA,NI
3 FORMAT(' ',2F12.5,I5)
STOP
END
problema6.12a
implicit real*8(a-h,o-z)
F(X)=-1*x**2+x+0.75
OPEN(5,FILE='programa22a1.dat')
READ(5,*) XR,ES,IM
PRINT *, XR,ES,IM
1 FORMAT(2F10.0,I5)
DO 180 NI=1,IM
XN=F(XR)
IF(XN.EQ.0.0)GOTO 170
EA=ABS((XN-XR)/XN)*100
IF (EA.LE.ES) GOTO 210
170 XR=XN
180 CONTINUE
OPEN(6,FILE='programa22a1.out')
WRITE(6,2)
2 FORMAT(' ','NO SE ENCONTRO LA RAIZ')
NI=NI-1
210 WRITE(6,3) XN,EA,NI
3 FORMAT(' ',2F15.5,I5)
STOP
END
problema6.12b
implicit real*8(a-h,o-z)
F(X)=(x**2)/(5*x+1)
OPEN(5,FILE='programa22a1.dat')
READ(5,*) XR,ES,IM
PRINT *, XR,ES,IM
1 FORMAT(2F10.0,I5)
DO 180 NI=1,IM
XN=F(XR)
IF(XN.EQ.0.0)GOTO 170
EA=ABS((XN-XR)/XN)*100
IF (EA.LE.ES) GOTO 210
170 XR=XN
180 CONTINUE
OPEN(6,FILE='programa22a2.out')
WRITE(6,2)
2 FORMAT(' ','NO SE ENCONTRO LA RAIZ')
NI=NI-1
210 WRITE(6,3) XN,EA,NI
3 FORMAT(' ',2F15.5,I5)
STOP
END
problema6.12a
implicit real*8(a-h,o-z)
F(X)=-1*x**2+x+0.75
FD(X)=-2*x+1
OPEN(5,FILE='programa22a1.dat')
READ(5,*) XR,ES,IM
1 FORMAT(2F10.0,I5)
DO 180 NI=1,IM
XN=XR-F(XR)/FD(XR)
IF(XN.EQ.0.0)GOTO 170
EA=ABS((XN-XR)/XN)*100
IF (EA.LE.ES) GOTO 210
170 XR=XN
180 CONTINUE
OPEN(6,FILE='programa22b1.out')
WRITE(6,2)
2 FORMAT(' ','NO SE ENCONTRO LA RAIZ')
NI=NI-1
210 WRITE(6,3) XN,EA,NI
3 FORMAT(' ',2F12.5,I5)
STOP
END
problema6.12b
implicit real*8(a-h,o-z)
F(X)=(x**2)/(5*x+1)
FD(X)=(5*x**2+2*x)/(25*x**2+10*x+1)
OPEN(5,FILE='programa22a1.dat')
READ(5,*) XR,ES,IM
1 FORMAT(2F10.0,I5)
DO 180 NI=1,IM
XN=XR-F(XR)/FD(XR)
IF(XN.EQ.0.0)GOTO 170
EA=ABS((XN-XR)/XN)*100
IF (EA.LE.ES) GOTO 210
170 XR=XN
180 CONTINUE
OPEN(6,FILE='programa22b2.out')
WRITE(6,2)
2 FORMAT(' ','NO SE ENCONTRO LA RAIZ')
NI=NI-1
210 WRITE(6,3) XN,EA,NI
3 FORMAT(' ',2F12.5,I5)
STOP
END
problema6.13a
implicit real*8(a-h,o-z)
F(X)=sqrt(5-(x-4)**2)+4
FD(X)=-(x-4)/sqrt(5-(x-4)**2)
OPEN(5,FILE='programa23a.dat')
READ(5,*) XR,ES,IM
1 FORMAT(2F10.0,I5)
DO 180 NI=1,IM
XN=XR-F(XR)/FD(XR)
IF(XN.EQ.0.0)GOTO 170
EA=ABS((XN-XR)/XN)*100
IF (EA.LE.ES) GOTO 210
170 XR=XN
180 CONTINUE
OPEN(6,FILE='programa23a.out')
WRITE(6,2)
2 FORMAT(' ','NO SE ENCONTRO LA RAIZ')
NI=NI-1
210 WRITE(6,3) XN,EA,NI
3 FORMAT(' ',2F12.5,I5)
STOP
END
problema6.13b
implicit real*8(a-h,o-z)
F(X)=sqrt(16-x**2)
FD(X)=-1*x/sqrt(16-x**2)
OPEN(5,FILE='programa23b.dat')
READ(5,*) XR,ES,IM
1 FORMAT(2F10.0,I5)
DO 180 NI=1,IM
XN=XR-F(XR)/FD(XR)
IF(XN.EQ.0.0)GOTO 170
EA=ABS((XN-XR)/XN)*100
IF (EA.LE.ES) GOTO 210
170 XR=XN
180 CONTINUE
OPEN(6,FILE='programa23b.out')
WRITE(6,2)
2 FORMAT(' ','NO SE ENCONTRO LA RAIZ')
NI=NI-1
210 WRITE(6,3) XN,EA,NI
3 FORMAT(' ',2F12.5,I5)
STOP
END
problema6.23a
implicit real*8(a-h,o-z)
F(X)=tanh(x**2-9)
FD(X)=-1*tanh(x**2-9)/x
OPEN(5,FILE='programa24a.dat')
READ(5,*) XR,ES,IM
1 FORMAT(2F10.0,I5)
DO 180 NI=1,IM
XN=XR-F(XR)/FD(XR)
IF(XN.EQ.0.0)GOTO 170
EA=ABS((XN-XR)/XN)*100
IF (EA.LE.ES) GOTO 210
170 XR=XN
180 CONTINUE
OPEN(6,FILE='programa24a.out')
WRITE(6,2)
2 FORMAT(' ','NO SE ENCONTRO LA RAIZ')
NI=NI-1
210 WRITE(6,3) XN,EA,NI
3 FORMAT(' ',2F12.5,I5)
STOP
END
problema6.24
implicit real*8(a-h,o-z)
F(X)=0.0074*x**4-0.284*x**3+3.355*x**2-12.183*x+5
FD(X)=4*0.0074*x**3-3*0.284*x**2+2*3.355*x-12.183
OPEN(5,FILE='programa25.dat')
READ(5,*) XR,ES,IM
1 FORMAT(2F10.0,I5)
DO 180 NI=1,IM
XN=XR-F(XR)/FD(XR)
IF(XN.EQ.0.0)GOTO 170
EA=ABS((XN-XR)/XN)*100
IF (EA.LE.ES) GOTO 210
170 XR=XN
180 CONTINUE
OPEN(6,FILE='programa25.out')
WRITE(6,2)
2 FORMAT(' ','NO SE ENCONTRO LA RAIZ')
NI=NI-1
210 WRITE(6,3) XN,EA,NI
3 FORMAT(' ',2F12.5,I5)
STOP
END