Sie sind auf Seite 1von 15

Universidad Industrial de Santander Escuela de Física.

Métodos Numéricos y probabilidad Proyecto I Grupo C2

Nombre: Laura Marcela Becerra Bayona Código: 2082692

Profesor Illia Mikhailov Fecha: 05/11/2010

1. Tarea N 1:

Consideremos la ecuación f (x) = g(x, p) p y denotaremos las raíces de esta ecuación dentro
con un parámetro
del intervalo (a, b) x(i) = 1, 2, 3, ..., n, donde n es el número de las raíces.
positivas de esta ecuación
a)Utilizando el método de bisección encuéntrese el número n de las raíces y valores de todas raíces con la
−8
precisión  = 10 para valor del parámetro p = 1
b)Presente el gráco del número de las raíces n en función del parámetro p para po < p < pf
c)Encuéntrese la raíz número n − 1 utilizando los métodos de bisección y Newton con la misma precisión
 = 10−8 y compárese la cantidad de iteraciones que requieren estos métodos para lograr la precisión sugerida

f (x) = pe−x/p , g(x) = sen2 (x), a = 0, b = 0, po = 0,5, pf = 5,0

1.1. Marco Teórico

A continuación se examinarand dos métedos, el método de bisección y el método de Newton, para encontrar
las raices reales de una función general f (x)

Método de bisección

El método de bisección es un algoritmo de búsqueda de raíces que trabaja dividiendo el intervalo a la mitad
y seleccionando el subintervalo que tiene la raíz. De antemano se debe estar seguro de la continuidad de la
función en el intervalo donde se desea encontrar la raiz. Para describir el procedimiento se considera el caso
simple en el cual la función f (x) tiene solo una raiz en el intervalo [a,b] primero se parte el intervalo en su
(a+b)
punto medio, xm = y se computan f (xm ) ∗ f (b); si el producto es negativo entonces la raiz esta el
2
intervalo xm < x < b, pues la función f (x) cambia de signo en él y cruza el eje de las x, por el contrario si el
prodcuto es positivo la raiz de la función esta en el intervalo a < x < xm . Finalmete seleccionando el intervalo
que contiene la raiz se bisecciona de nuevo y se repite el procedimiento, lo cual se realiza hasta que la raiz es
encontrada con la precisión deseada.

En el caso en que la función f (x) tenga más de una raiz en el intervalo [a, b], se divide el intervalo para aislar
la raiz que se quiere determinar, lo cual se realiza a partir de un conocimiento previo del comportamiento
de la función, el cual se puede obtener realizando la g¯aca de la función. El método de bisección no localiza
aquellos puntos donde la función es tangente al eje de las x, es decir, toca el eje pero no lo cruza, lo cual
resulta en una raiz múltiple.

Método de Newton

El método de Newton-Raphson es un método abierto, en el sentido de que su convergencia global no está


garantizada. La única manera de alcanzar la convergencia es seleccionar un valor inicial lo sucientemente

1
cercano a la raíz buscada, denominado punto de arranque o valor supuesto. La relativa cercanía del punto
inicial a la raíz depende mucho de la naturaleza de la propia función; si ésta presenta múltiples puntos de
inexión o pendientes grandes en el entorno de la raíz, entonces las probabilidades de que el algoritmo diverja
aumentan, lo cual exige seleccionar un valor supuesto cercano a la raíz. Una vez se ha hecho esto, el método
linealiza la función por la recta tangente en ese valor supuesto. La abscisa en el origen de dicha recta será,
según el método, una mejor aproximación de la raíz que el valor anterior. Se realizarán sucesivas iteraciones
hasta que el método haya convergido lo suciente.

Es decir: si f (x) es una función derivable denida en el intervalo real [a, b]. Se empienza con un valor inicial
x0 y se dene para cada número natural n

f (xn )
xn+1 = xn −
f 0 (xn )

donde n denota el valor obtenido en la enésima iteración y n+1 indica el valor a ser encontrado en la
(n + 1)-ésisma iteración.

1.2. ALGORITMOS

Todos los algoritmos que se describen a continuación fueron escritos en Fortran 95 y compilados con gfortran.
Los programas utilizados para la realización del proyecto se adjuntan al nal del documento, el programa No.1
corresponde al método de bisección y con programa No.2 se realiza una comparación entre el método de
Newton y bisección .

Método de bisección: Este método encuentra todas la raices de la función F (x) = 0 en el intervalo [a, b]
con una tolerancia eps, las cuales las organiza en un vector raiz():
Desde el programa principal se llama una subrutina, la cual va a recorrer todo el intervalo [a, b] en pasos de
longitud hraiz , buscando los intervalos, [a + n ∗ hraiz, a + (n + 1) ∗ hraiz], donde la función toma signos
opuestos en los extremos, lo cual garantiza que existe al menos una raiz en dicho intervalo, de tal forma que
con la función Raiz1 se busca la respectiva raiz de la función con la presición eps. Todas las raices de la función
son guardadas en el vector raiz() y cada vez que se encuntra un intervalo con la condición requerida se suma
1 a la variable nraiz .

Subrutina del método de bisección:


Parámetros de entrada: a, b, eps, hraiz, fun (donde fun es una función que calcula el vallor de F (x))
Parámetros de salida: raiz(),nraiz

1. Declaración de variables: xl←a, xr←a + hraiz, ←fun(xl), fr←fun(xr), nraiz←0.0

2. if(fr*<0.0) then nraiz←nraiz + 1.0, xraiz(nraiz)←Raiz1*(xl,xr,eps) end if

3. xl←xr, ←fr, xr←xl + hraiz, fr←fun(xr)

4. if (xr<b) then go to 2 end if

función Raiz1
Parámetros de entrada: xr,xl,eps,fun
Parámetro de salida: raiz

El diagrama de ujo de la función se muestra en la g.1

2
Figura 1: Diagrama de ujo: Método de bisección

Método de Newton: Este método encuentra una raiz de la función F (x) = 0 en el intervalo [a, b] con una
tolerancia eps:
Se utilizan las funciones f un, df un, ddf un, que corresponden a la función, a la derivada de la función y a la
segunda derivada de la función respectivamente.

Parámetros de entrada: a,eps,fun,dfun,ddfun


Parámetros de salida: raiz

El digrama de ujo del método de Newton se muestra en la g.3

Figura 2: Diagrama de ujo: Método de Newton

3
1.3. RESULTADOS Y DISCUSIÓN

La función F (x, p) con la cual se va a trabajar es:

F (x, p) = pe−x/p − sen2 (x)

Caso p = 1
Con el n de tener una idea del comportamiento de la función, F (x, 1), en el intervalo [a, b], se realizó su
respectiva gráca, la cual se presenta en la g.3. En dicha g¯aca se puede observar como el factor e−x se
hace rapidamente << 1, de tal manera que la función tiende al seno cuadrado de x. También se realizaron las
grácas de f (x) y g(x, 1) (g.4), en la cual se puede observar las raices de la función F (x, 1) que corresponden
a los puntos donde las funciones de intersectan.

Grafica de la funcion
1

0.8

0.6

0.4

0.2
f(x)

-0.2

-0.4

-0.6

-0.8

-1
0 5 10 15 20
x
Figura 4: Gráca de la función f (x)(roja) y
Figura 3: Gráca de la función F (x, p) g(x, 1)(verde)

Con el método de bisección se hallaron las n raices de la función F (x, 1), de tal manera que de acuerdo a
las condiciones sugeridas y con base en los anteriores grácos se establecieron los parametros de entrada, los
cuales son:
a ← 0,0 b ← 20,0 eps ← 10−8 hraiz ← 0,01

De tal forma que después de correr el programa No.1 , la función en el intervalo dado tiene nueve (n = 9)
raices, las cuales son:

Raices de la función para p= 1.0


1 0.75526571
2 2.90547593
3 3.33176102
4 6.23899148
5 6.32550698
6 9.41575394
7 9.43372133

Caso p 6= 1

4
A apartir de la función F (x, p) se puede concluir que cuando p < 1 el factor p∗e−x/p decrece más rápidamente,
de tal manera que el número de raices de la función se ve disminuido; por otro lado cuando p > 1, el mencionado
factor decrece más lentamente, y por lo tanto el número de raices se hace mayor, tal que aunque la función
F (x, p) va a tender al seno cuadrado de x, lo va a hacer para valores mayores de x a medida que el valor de p
aumenta. Igualmete se realizaron las grácas de f (x) y g(x, p) para determinados valores representativos de p
con el n de observar el comportamiento del número de raices de la función(g.5).

Figura 5: Gráca de la función f (x)(roja) y g(x, 1)(verde) para diferentes valores de p

Después de correr el programa No.1 , pero en esta ocasión utilizando el archivo gracar.dat, en el cual
se imprimieron los valores del numero de raices(nraiz ) con su respectivo valor de p, gracando los puntos
obtenidos a través de gnuplot, obteniendo la gráca de la g.6. En dicha g¯aca se observa que a cuanto mayor
es el valor de p, mayor es el número de las raices de la función; sin embargo es necesario aclarar que auque en
la graca el número de raices aumenta dentro del intervalo y luego disminuye es debido a que las demás raices
de la función se encuentran fuera del intervalo en el cual se esta trabajando

Numero de raices en funcion del parametro p


20

15
n [numero de raices]

10

0
0 1 2 3 4 5
p

Figura 6: Gráca del número de raices en función del parámetro p para F (x, p)

También el programa imprime en el archivo állraiz.dat', los valores de las raices de la funcion F (x, p), de tal
manera que a continuación se presentan algunos valores representativos, notando que a medida que el valor
de parámetro p a aumente, el valor de la primera raiz es mayor, es decir, que el punto donde la función cruz
por primera vez el eje x en el intervalo [0, 20] se va corriendo a la derecha a medida que p es más grande:

5
Raices de la función para p= 0.50 Raices de la función para p= 0.80
1 0.46181632 1 0.64200430
2 3.11005143 2 3.00437180
3 3.17126062 3 3.25855667
4 6.26536416
5 6.30061807

Raices de la función para p= 2.0 Raices de la función para p= 3.0


1 1.42750216 1 4.18213057
2 2.18022815 2 5.52159749
3 3.73160029 3 6.86726437
4 5.95869120 4 9.03006747
5 6.56100564 5 9.77152436
6 9.28554110 6 12.34314345
7 9.55489425 7 12.77389870
8 12.50426064 8 15.57849433
9 12.62660731 9 15.83204669
10 15.67989936 10 18.77368195
11 15.73563874 11 18.92355468
12 18.83681072
13 18.86222040

Raices de la función para p= 4.0 Raices de la función para p= 4.9


1 7.22786902 1 7.80100897
2 8.68307598 2 8.10871922
3 10.03214997 3 10.30857613
4 12.11062509 4 11.84419561
5 12.97262700 5 13.18108392
6 15.41237720 6 15.22051808
7 15.98266284 7 16.14810900
8 18.65406336 8 18.50807019
9 19.03582897 9 19.16798930

Finalmente con el n de comparar el método de Newton con el método de bisección, se econtró la raiz n−1
de la función F (x, 1) a través de los dos métodos, comparando el número de iteraciones que realizan así como
la precisión del valor de la raiz encontrado.

Como ya se encontraron las raices con el método de bisección, a partir de estos resultados se establecen los
parametros de entrada para la raiz n − 1:

a ← 9,41 b ← 9,42 eps ← 10−8

Y utilizando el programa No.2, el cual crea un archivo .dat, donde imprime el valor de x, f (x) y el error para
cada una de las iteraciones realizada por cada método respectivamente, lo cual se presenta a continuación:

6
Metodo de Biseccion Metodo de Newton
iteración x f(x) error iteración x f(x) error
========== === ====== ====== ========== === ====== ======
1 9.414999962 -0.141D-04 0.500D-02 1 9.41385117 -0.378D-04 0.615D-02
2 9.417500019 0.283D-04 0.250D-02 2 9.41558766 -0.301D-05 0.174D-02
3 9.416249990 0.867D-05 0.625D-03 3 9.41575241 -0.271D-07 0.165D-03
4 9.415624976 -0.233D-05 0.313D-03 4 9.41575392 -0.228D-11 0.151D-05
5 9.415937483 0.326D-05 0.313D-03 5 9.41575392 0.218D-17 0.127D-09
6 9.415781230 0.490D-06 0.781D-04
7 9.415703103 -0.916D-06 0.391D-04 el numero de iteraciones fueron: 5
8 9.415742166 -0.211D-06 0.391D-04 la raiz n-1 de la funcion es: 9.41575392
9 9.415761698 0.140D-06 0.195D-04
10 9.415751932 -0.358D-07 0.488D-05
11 9.415756815 0.520D-07 0.488D-05
12 9.415754374 0.810D-08 0.122D-05
13 9.415753153 -0.138D-07 0.610D-06
14 9.415753763 -0.287D-08 0.610D-06
15 9.415754068 0.261D-08 0.305D-06
16 9.415753916 -0.126D-09 0.763D-07
17 9.415753992 0.124D-08 0.763D-07

el numero de iteraciones fueron: 17


la raiz n-1 de la funcion es: 9.415754
Al comparar los métodos de bisección y de Newton, se peude decir el método de Newton es mucho más efectivo
y rápido pues este llegar a la raiz esperada realizando un menor número de iteraciones (solo 5) y con una mejor
presición, ya que el valor de F (x, 1) en la raiz, es más próximo a cero que el valor de la función que corresponde
a la raiz hallada con el método de bisección.

2. Tarea N 2:

Una de las características importantes para el movimiento de una partícula en un campo central con el potencial
L2
V (r) son los puntos de retorno que se encuentran como las raíces de la ecuación algebraica
2mr 2 + V (r) = E
, donde m es la masa de la partícula, L el momento angular y E es la energía de la partícula. Los dos últimos
parámetros son las integrales de movimiento y se denen a través de las condiciones iniciales. Por ejemplo,
α
para el problema de Kepler, V (r) =
r esta ecuación puede tener un punto de retorno (trayectorias hiperbólica
o parabólica) o dos (trayectoria elíptica). En el caso de los potenciales diferentes de Kepler las trayectorias
pueden ser más complicadas con el nímero de los puntos de retorno superiores a dos. En los problemas siguientes
usando las unidades adimensionales, la ecuación algebraica para los puntos de retorno (r(i), i = 1, 2, 3, ..., n))
se representa en la forma:
1
Vef f = + V (r) = E
r2
donde E es la energía adimensional de la partícula.

Presente el gráco Vef f (r)


Utilizando el programa de la tarea N1 encuéntrese el número de los puntos de retorno en función de la
energía

Descríbase el tipo de trayectoria de la partícula para cada caso particular de la energía,

7
La ecuación a analizar correspondiente al potencial efectivo es:

1
Vef f = + ((r + 2)2 − 4)2
r2

2.1. RESULTADOS Y DISCUSIÓN

La gráca del potencial efectivo (Vef f ) se presenta en la g.7, la cual se realizó siguiendo el procedimiento
descrito anteriormente.

Grafica del potencial efectivo


25
Veff
E5
20

E4
15
Veff

E3
10

E2
5 E1

0
0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
r

Figura 7: Potencial efectivo, Vef f


En la g.7 se observa que el potencial efectivo tiene dos mínimos y un máximo, que pueden ser encontrados
utilizando el criterio de la primera derivada; por tanto la derivada del potencial efectivo es:

dVef f −2
= 3
dr r + 4r(r − 2)(r − 4)
dVef f
Los puntos donde
dr = 0 corresponden a máximos y mínimos relativos de Vef f , los cuales fueron de-
terminados a partir del método de bisección, utilizando el programa No.1 con los siguientes parametros de
entrada:
a ← 0,2 b ← 5,0 eps ← 10−8 hraiz ← 1,0
Maximos y minimos del potencial efectivo
1 0.56424371
2 1.98399271
3 4.00097513
Y comparando los puntos con la g¯aca se concluye que r = 0,564 y r = 4,009 correponden a los mínimos de
la función, y r = 4,00 corresponde al máximo de la función

La ecuación Vef f = E determina los límites del movimiento de una partícula en dicho potencial, de tal manera
que en los valores de r que la satifacen, la velocidad radial se hace cero, indicando los puntos de retorno
de la trayectoria, es decir, si una partícula se mueve en este potencial, en dichos puntos esta comienza a
retroceder (r(t) comienzaa decrecer en vez de incrementarse o viceversa). Por lo tanto utilizando el método de
bisección (programa No.1) se encontraron los puntos de retorno, que corresponden a las raices de la ecuación:

8
Vef f − E = 0, para diferentes valores de E dentro del intervalo [0, 25], gracando el número de puntos de
retorno en función del valor de la energía correspondiente (g.8). Igualmente se presentan los valores de dichos
puntos (las raices de la función).

Los parametros de entrada del programa. No.1 son:

a ← 0,2 b ← 5,0 eps ← 10−8 hraiz ← 0,2

Además se modico la función fun, reemplazando en su lugar el siguiente código:


real*8 function fun(x,E)
real*8,Intent(in) :: x,E
fun=1/x**2.0+((x-2.0)**2.0-4.0)**2.0-E
return
end function fun

Energía (E ) r1 r2 r3 r4
1 3.74251514 4.22971989

5 3.33570919 4.49498975

6.89 0.56424371 3.18048234 4.57220350

7 0.512941653 0.62217017 3.17179387 4.57618162

16 0.25759280 1.80348618 2.16367815 4.82747814

16.25 0.25534130 1.98399271 4.83302796

17 0.24900923 4.87013395

Cuadro 1: Valor de los puntos de retorno para determinados valores de la energía


Puntos de retorno en funcion de la energia
5

4
n [numero de puntos de retorno]

0
0 5 10 15 20 25
E

Figura 8: Puntos de retorno en función del valor de la energía

9
A continuación se analizá la trayetoria de una partícula para cincos valores representativos de la energía, E,
los cuales se presentan en la g.7:

Para E = E1 la trayectoria de la particula tiene dos puntos de retorno, es decir que tiene dos puntos
límites (rmax yrmin ). El movimiento es nito y va a estar limitado a rmax < r < rmin . Observando
la g.7, se deduce que esto ocurre para energías tales que 0 < E < 6,2, por ejemplo para E = 5, el
movimiento se encuentra connada en la región 3,358 < r < 4,495.

E = E2 es un caso particular pues existen tres puntos de retorno por lo tanto la partícula puede tener dos
trayectorias posibles. En el primer punto la partícula realizaría una trayectoria circular pues r = rmax =
rmin . En los siguientes dos puntos la particula realizaría la trayectoria descrita anteriormente.Este caso
se da únicamente cuando la energía es E = 6,89, donde um punto de retorno (r = 0,564) constituye un
mínimo del potencial efectivo

Para E = E3 , existen cuatro puntos de retorno, los cuales forman dos pozos de potencial, en los cuales
si las partícula se mueve en ellos realizaría la trayecrotia descrita en el primer numeral. Cabe resaltar
que la particula no podrá saltar de un pozo de portencial a otro pues para ello requiere valores de
potencial más altos que la energía total, es decir, si E = 7, el movimiento esta connado en las regiones
0,513 < r < 1,803 o en 3,172 < r < 4,576 y no podrá saltar de una región a la otra. Igualmete esto
ocurre para valores de la enegía tales que 6,89 < E < 16,25

Para E = E4 exiten nuevamente tres puntos de retorno. En este caso la trayectoria de la partícula
va a estar limitada en una región entre rmin < r < rmax , es decir entre los puntos de retorno que se
encuentran en los extremos. Sin embargo cuando la particula pase por el punto de retorno de la mitad
esta podrá devolverse o podrá seguir para invertir su movimiento en el siguiente puntos de retorno. Este
caso se da únicamente cuando la energía es E = 16,25, dodne el punto de retorno de retorno donde una
partícula puede seguir su movimiento o invertirlo correponse al máximo del potencial efectivo.

nalmete para E = E5 exiten dos puntos de inversión. El moviento sera igual que el descrito en el primer
numeral. Esto ocurre para energías E > 16,25

Debe aclararce que aunque la partícula en dicho potencial realizan trayectoria nitas en la mayoría de los
casos, estas no son necesariamente cerradas. Además la particula no pueden estar en posiciones cuyo portencial
efectivo sea mayor que la energía ya que esto violaría la ley de la conservación de la energía.

Referencias

[1] Hornbeck,Robert W., Numerical methods Editorial: Prentices Hall, New Jersey, 1975, Vol.1

[2] Landau,Lifshtz, Mechanics Editorial: Pergamon Press,Oxford,London,1960. Vol 1

3. Anexos

Programa No.1: Método de bisección

Program Met_biseccion
implicit real*8 (a-h,o-z)
parameter (n=100)
dimension xraiz(n)

10
external fun
open(1,file='allraiz.dat',status='unknown')
open(2,file='graficar.dat',status='unknown')

c Generación de puntos para realizar la gráfica de la función


open(3,file='puntos.dat',status='unknown')
d=0.0
do while(d<20.0)
y=exp(-d)-sin(d)**2
write(3,'(f5.2,x,f8.5)') d,y
d=d+0.1
end do
close(3)

c Declaración de la variables
nraiz=0.0
a=0.0
b=20.0
eps=10.0d-8
hraiz=0.01
p=0.5

c Llamada a la subrutina allraiz para cada valor de p


do while(p<=5.0)
write(1,'(A29,x,g8.2)') 'Raices de la función para p=',p
call allraiz(a,b,fun,p,eps,hraiz,nraiz,xraiz)
c Impresión de las raices en el archivo allraiz.dat
do i=1,nraiz
write(1,11) i, xraiz(i)
end do
c Impresión del número de raices en funcion del pa¯ametro p en el archivo
c graficar.dat
write(2,'(f4.2,x,I2)') p,nraiz
write(1,*)
p=p+0.1
end do
11 format(4x,i2,2x,f12.8)
close(1)
close(2)
stop

end program Met_biseccion

c Función a la cual se le van a encontrar las raices


real*8 function fun(x,p)
real*8,Intent(in) :: x,p
fun=p*exp(-x/p)-(sin(x))**2
return
end function fun

c La subrutina allraiz cubre el intervalo [a,b] en pasos de longitud de hraiz,


c buscando los intervalos [a+n*hraiz,a+(n+1)*hraiz] en cuyo extremos la función
c toma signo distintos
Subroutine allraiz(a,b,fun,p,eps,hraiz,nraiz,xraiz)

11
parameter (n=100)
implicit real*8 (a-h,o-z)
dimension xraiz(n)
external fun
h=hraiz
xl=a
xr=a+h
fl=fun(xl,p)
fr=fun(xr,p)
nraiz=0
10 if(fl*fr.lt.0.0) then
nraiz=nraiz+1
xraiz(nraiz)=Raiz1(fun,xl,xr,p,eps)
end if
xl=xr
fl=fr
xr=xl+h
fr=fun(xr,p)
if(xr.lt.b) go to 10
return
end subroutine allraiz

c La función Raiz1 busca la solución de la ecuación f(x)=0 en los intervalos objetivo


c de la subrutina allraiz (observar diagrama de flujo del método de bisección)
real*8 function Raiz1(func,a,b,p,eps)
implicit real*8 (a-h,o-z)
xi=a
xd=b
10 fd=fun(xd,p)
fi=fun(xi,p)
if(fd*fi<0) then
if((xd-xi)<2.0*eps) then
x=(xi+xd)/2.0
else
temp=xi
xi=(xd+xi)/2.0
go to 10
end if
else
xd=xi
xi=temp
xi=(xd+xi)/2.0
go to 10
end if
Raiz1=x
return
end function Raiz1

Programa N.2: Comparación método bisección y método de Newton:


Program Met_biseccion
implicit real*8 (a-h,o-z)
external fun,dfun,ddfun
c Declaración de los parametros de entrada

12
a=9.41
b=9.42
eps=10.0d-8

c Impresión de la raiz hallada con el método de bisección.


open(1,file='union.dat',status='unknown')
raiz=Raiz1(fun,a,b,eps)
write(*,*)'Metodo de biseccion:', raiz

c Impresión de la raiz hallada con el método de Newton.


oraiz=Raiz2(fun,dfun,ddfun,b,eps)
write(*,*) 'Metodo de Newton:',oraiz

close(1)
stop

end program Met_biseccion

c Función a la cual se le van a hallar las raices


real*8 function fun(x)
real*8,Intent(in) :: x
fun=exp(-x)-(sin(x))**2
return
end function fun

c Derivada de la función
Real*8 function dfun(x)
real*8,intent(in)::x
dfun=-exp(-x)-2*sin(x)*cos(x)
end function dfun

c Segunda derivada de la función


Real*8 function ddfun(x)
real*8,intent(in)::x
ddfun=-exp(-x)-2*(cos(x)**2.0-sin(x)**2.0)
end function ddfun

c La function Raiz1 encuntra la raiz en el intervalo [a,b] utilizando el método de bisección.


real*8 function Raiz1(func,a,b,eps)
implicit real*8 (a-h,o-z)
iter1=0.0
xi=a
xd=b
write(1,*) 'Metodo de Biseccion'
write(1,'(2x,(A10,5x),(A6,9x),2(A6,6x))') 'iteración', 'x','f(x)','error'
write(1,'(2x,(A10,5x),(A6,9x),2(A6,6x))') '==========', '===', '======','========'
12 fd=fun(xd)
fi=fun(xi)
if(fd*fi<0) then
iter1=iter1+1
write(1,11) iter1,(xi+xd)/2.0,fun((xi+xd)/2.0),(xd-xi)/2
if((xd-xi)<2.0*eps) then
x=(xi+xd)/2.0
else

13
temp=xi
xi=(xd+xi)/2.0
go to 12
end if
else
xd=xi
xi=temp
xi=(xd+xi)/2.0
iter1=iter1+1
write(1,11) iter1,xi,fun(xi),(xd-xi)/2
go to 12
end if
Raiz1=x
write(1,*)
write(1,'(A,x,g8.1)') 'el numero de iteraciones fueron:',iter1
write(1,'(A,x,f8.6)') 'la raiz n-1 de la funcion es:',Raiz1
11 format(x,(g8.1,5x),(f12.9,3x),2(1d10.3,3x))
return
end function Raiz1

c La función Raiz2 halla la raiz en el intervalo [a,b] con el método de Newton


Real*8 function Raiz2(func,dfunc,ddfunc,a,eps)
implicit real*8(a-h,o-z)
iter=0.0
write(1,*)
write(1,*) '----------------------------------------------------------------'
write(1,*) 'Metodo de Newton'
write(1,'(2x,(A10,5x),(A6,9x),2(A6,6x))') 'iteración', 'x','f(x)','error'
write(1,'(2x,(A10,5x),(A6,9x),2(A6,6x))') '==========', '===', '======','========'
xo=a
if(fun(x)*ddfun(x)>0) then
print*, 'Cambie el punto inicial'
stop
end if
14 f=fun(xo)
df=dfun(xo)
iter=iter+1
x=xo-f/df
error=abs(x-xo)
c En el archivo union.dat se imprime el valor x, f(x9 y el error para cada iteración
c realizada
write(1,11) iter,x,fun(x),error
if(abs(error)<eps) then
Raiz2=x
else
xo=x
go to 14
end if
write(1,*)
write(1,'(A,x,g8.1)') 'el numero de iteraciones fueron:',iter
write(1,'(A,x,f12.8)') 'la raiz n-1 de la funcion es:',Raiz2
11 format(x,(g8.1,5x),(f12.8,3x),2(1d10.3,3x))

14
return
end function Raiz2

15

Das könnte Ihnen auch gefallen