Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Kevin Rivera
Escuela de sistemas informticos, Universidad de El Salvador
San Salvador, El Salvador
kevinrev26@gmail.com
Abstract En los siguientes prrafos se explora la
capacidad de los mtodos numricos para encontrar races de
ecuaciones no lineales, se experimenta tanto con mtodos
abiertos y cerrados. Se analiza el error provocado por el
almacenamiento de los nmeros en el computador y que ocurre
cuando se aplica un mtodo numrico con una tolerancia
respectiva. Ademas se muestra la eficiencia de estos algoritmos
en Scilab.
I.
INTRODUCCIN
A. Primera funcin
Fsolve
Scilab provee un mtodo numrico para la resolucin de
ecuaciones no lineales de una sola variable, esta funcin utiliza el
mtodo numrico de Powell modificado, cuyo estudio sobrepasa la
competencia de este documento. La llamada de la funcin se
consigue de la siguiente manera:
[x [,v [,info]]]=fsolve(x0,fct [,fjac] [,tol])
En donde x representa el valor de la raz, v el valor de fct
en x y la variable info establece que tan buena es la solucin para 5
valores enteros conocidos. Para apreciar la utilizacin de este funcin
se analizaran tres funciones cuya regla de asignacin se ira
presentado a lo largo de los prrafos siguientes.
Se presenta un polinomio que se especifica a continuacin:
5 3 4 + 10 8 = 0
Cuyo valor o races, podra encontrarse entre el intervalo
cerrado [0.5, 3]. Para verificar si esto es cierto, nos ayudaremos de
una graficadora.
Newton-Rahpson
Los aspectos tericos del mtodo, as como la
implementacin en Scilab no se cubren en este documento; para la
utilizacin del algoritmo es necesario establecer la tolerancia, la
aproximacin, y la derivada de la funcin.
Los nombres de las variables pueden variar, el indicar
establece 5 nmeros enteros (de 0 a 4) para mostrar que tan bien se
realiz la operacin, en nuestro caso 1 significa que el error relativo
entre la aproximacin y el valor anterior a la raz, es al menos el
valor de la tolerancia establecida. Esto asegura que nos encontramos
con una aproximacin bastante buena.
Secante
En este mtodo se aproxima, con un error aceptable, la
derivada del mtodo de Newton. As se ahora la molestia de evaluar
la derivada en cada paso del mtodo. Las aproximaciones son las
mismas al igual que la tolerancia.
Se ha hablado de la naturaleza iterativa de los mtodos
presentados, ac se presenta el primero y establece un valor de la raz
aproximado, pero Qu tan buena es la aproximacin? Dependiendo
de la tolerancia. Adems de fijar las cifras con las que se trabaja (el 1
sin decimales proviene de la salida que el script utiliza) tambin se
utiliza para mtodo de parada, ya que sin valores predefinidos, se
puede obtener un ciclo infinito no deseado. Las siguientes muestran
la aproximacin para 1.3 y 2.5. Lgicamente entre ms cercana la
aproximacin de la raz, menos iteraciones existirn.
Biseccin
Para utilizar el mtodo de biseccin, es necesario establecer
un intervalo que contiene, al menos, una raz en l. El nico
inconveniente ser cuando existan ms de una raz en un intervalo
dado, ya que este mtodo no necesita una aproximacin; es necesario
establecer el punto medio del intervalo. A medida la funcin cambia
de signo, tambin es la nueva eleccin del punto medio en cada
iteracin.
El valor de la raz con este mtodo y este ejemplo
particular siempre ser: 2.60, ya que el mtodo converge en las
cercanas del punto medio y del signo de cada valor en el intervalo de
cada iteracin.
B. Segunda funcin
La segunda funcin a analizar es la que se muestra a
continuacin:
Ahora es posible utilizar la variable x como semilla y
construir polinomios como los de nuestro ejemplo.
= 3 + 8
Una vez ms, un anlisis grafico previo a la utilizacin de
los mtodos nos permitir ingresar las aproximaciones y optimizar el
tiempo de ejecucin de nuestros algoritmos. La grfica, acotada para
el intervalo cerrado de [3, 5]:
Fsolve
Enviaremos una variable con valores entre las races como
se ha dicho anteriormente as como tambin la definicin en Scilab
de nuestro ejemplo.
Secante
Veamos que sucede con este mtodo al ingresar 3.1 y 4.1
como races aproximadas en el algoritmo.
Newton-Rahpson
Luego encontrar la derivada de la funcin ejemplo e
ingresar las aproximaciones 3.1 y luego 4.1 al script
obtenemos:
Fsolve
Utilizando un vector fila con los datos aproximados y al
invocar fsolve tenemos:
Biseccin
El mtodo de biseccin necesita evaluar la funcin en los
lmites del intervalo, al multiplicar estos valores, podemos asumir de
acuerdo al signo, si el intervalo contiene una o ms races.
C. Tercera funcin
En nuestro tercer ejemplo se muestra una funcin
trigonomtrica combinada con otro tipo de funciones. Qu pasa con
los mtodos numricos al ser aplicados a este tipo de funciones? En
primer lugar debemos estar conscientes de haber introducido bien la
funcin original con parntesis respectivos, si esto no es as, puede
ocasionar grandes errores y otros disparates en los resultados
obtenidos. Otro inconveniente es que al encontrarse una funcin
peridica, podemos encontrar ms de una raz, evento que es
importante saber manejar en los diferentes mtodos.
La ltima funcin de nuestros ejemplos viene definida as
=
2 +
cos( 1) + 2
Secante
Nos libramos de la definicin de la derivada, falta
comprobar que tan eficiente es el mtodo cuanto se presentan este
tipo de funciones.
Newton-Rahpson
Este es un claro ejemplo del porque el mtodo de Newton
puede ser complicado, la derivada tiene un aspecto complejo debido
a que tenemos un cociente de funciones f(x)/g(x) Los resultados se
muestran a continuacin:
Biseccin
Al aplicar el algoritmo de biseccin obtenemos
Funcin 3
Regula Falsi
Funcin 2
Funcin 1
Funcin 2
Funcin 3
Error Absoluto
n/a
n/a
n/a
n/a
1.3565689
n/a
n/a
2.609924
2.6099245
5E-05
5E-07
Punto fijo
n/a
3.1625234
n/a
n/a
Funcin 1
n 4.1533282
n/a
n/a
n/a
n/a
n/a
1.7390851
n/a
n/a
Funcin 2
Funcin 3
Secante
Funcin 1
Funcin 2
Funcin 3
n/a
1.739085
1.7390851
5.75015E-06
1E-07
Fsolve
Error relativo
Error Absoluto
0.999998
0.0002
2E-06
n/a
1.3565689
n/a
n/a
n/a
2.6099245
n/a
n/a
3 n/a
n/a
4 n/a
n/a
n/a
n/a
n/a
n/a
n/a
1.7390851
n/a
n/a
Fsolve
1
Error relativo
1
Error Absoluto
1.3565689
26.28461407
0.3565689
n/a
2.6099245
n/a
n/a
n/a
3.1625234
n/a
n/a
n/a
4.1533282
n/a
n/a
n/a
n/a
1.7390851
n/a
n/a
Error relativo
Error Absoluto
1.356568
1.3565689
9E-05
9E-07
2.609924
2.6099245
5E-05
5E-07
3.162523
3.1625234
4E-05
4E-07
4.153328
4.1533282
2E-05
2E-07
Newton modificado
Fsolve
Error relativo
Error Absoluto
Funcin 1
1.739085
1.7390851
1E-05
1E-07
1.356568
1.3565689
6.63438E-05
9E-07
2.609924
2.6099245
1.91576E-05
5E-07
3.162523
3.1625234
1.26481E-05
4E-07
4.153328
4.1533282
4.81542E-06
2E-07
n/a
n/a
n/a
n/a
1.7390851
n/a
n/a
Newton
Funcin 2
Fsolve
Funcin 2
Funcin 1
2E-07
.1533282
Error relativo
4.81542E-06
n/a
Fsolve
n/a
4.1533282
.1625234
/a
Funcin 3
4.153328
Fsolve
Error relativo
Error Absoluto
1.356568
1.3565689
6.63438E-05
9E-07
2.609924
2.6099245
1.91576E-05
5E-07
3.162523
3.1625234
1.26481E-05
4E-07
Funcin 3
Fsolve
Error relativo
Error Absoluto
Funcin 1
n/a
1.3565689
n/a
n/a
n/a
2.6099245
n/a
n/a
n/a
3.1625234
n/a
n/a
n/a
4.1533282
n/a
n/a
n/a
n/a
n/a
n/a
1.7390851
n/a
n/a
Funcin 2
Funcin 3
Fsolve
Error relativo
Error Absoluto
Funcin 1
1.000187
0.0187
0.000187
1.356217
1.3565689
0.025940444
0.0003519
2.610283
2.6099245
0.01373603
0.0003585
3.162597
3.1625234
0.002327256
7.36E-05
4.153794
4.1533282
0.011215102
0.0004658
0.000017
n/a
0.000017
1.73887
1.7390851
0.012368572
0.0002151
Funcin 2
Funcin 3
(3 )
3
(3 )
3
(9 )
3
Newton modificado
2.0269057
2.0269057
Punto fijo
2.0269057
2.0269057
2.026906
2.0269057
Falsa posicin
2.0269057
2.0269057
2.0269055
2.0269057
Secante
2.0269057
2.0269057
A. Qu mtodo utilizar?
Los resultados arrojan resultados con poco error relativo
para cada uno, dado estos valores no se puede determinar un mtodo
optimo por sobre otro en este caso en particular. Debemos recurrir a
otro parmetro de comparacin: Tiempo de ejecucin.
No hablara aqu sobre cun importante es ahorrar tiempo
en determinadas tareas. Se hara nfasis en cada mtodo, cada lnea de
cdigo al invocarse, en todas esas acciones se consume tiempo.
Scilab posee diferentes maneras de representar esto: Profile y tic/toc.
Raz encontrada
fsolve
Biseccin
2.0269055
2.0269057
Newton
2.0269057
2.0269057
1) Profile
Cuando se agrega a una macro (funcin, procedimiento,
script) un perfil, Scilab toma medida de cuantas veces es ejecutada
cada lnea de cdigo y cunto tarda el cpu en procesarla. Se procede
a continuacin a mostrar el uso de las funciones profile con el
mtodo de Newton Modificado.
La figura muestra, en primer lugar, la compilacin y/o
ejecucin de una macro para que sea utilizada en el entorno de Scilab
(Dicha macro debe estar en el directorio de trabajo del programa),
luego se le agrega un perfil a nuestra funcin, se ejecuta y se pide al
programa que muestre el perfil.
Una tabla aparece en donde la primera columna muestra
cuantas veces es ejecutada cada lnea de cdigo (las filas representan
las lneas de cdigo), la segunda columna muestra el tiempo en que
el programa ejecuta dicha lnea, y la tercera columna es una medida
del programa para el esfuerzo del compilador.
V.
CONCLUSIONES
REFERENCIAS
[1]
[2]
[3]
[4]