SlideShare una empresa de Scribd logo
1 de 13
Descargar para leer sin conexión
ESCUELA POLITÉCNICA NACIONAL
FACULTAD DE INGENIERÍA DE SISTEMAS
INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN
PROYECTO BIMESTRAL DE LA MATERIA DE MÉTODOS NUMERICOS
1

Resumen—Se realizó una aplicación web mediante el uso de
html, css, javascript y php. Esto permitió visualizar y comparar
las integrales definidas de varias funciones. Para ello se utilizó
métodos de integración numérica, los cuales fueron el método del
trapecio, el método de Simpson y la cuadratura Gaussiana. La
aplicación fue diseñada para realizar el cálculo de integrales
numéricas de 5 tipos diferentes de funciones, arrojando resultados
conjuntos de los 3 métodos antes mencionados. Además, se
implementó un gráfico que facilita la visualización de los
resultados, mediante el uso de una librería para graficar funciones
en javascript. Finalmente, gracias a la comparativa realizada se
pudo concluir que el método más eficiente por coste computacional
y con una precisión adecuada es el método de Simpson para
integración numérica. Además, se consiguieron resultados
favorables en la ejecución de los algoritmos, y se comprendió el uso
de cada método para su posterior aplicación en el ámbito
profesional cuando se necesite.
Abstract— A web application was developed by using the
programming languages of html, css, javascript and php. This
allowed to visualize and compare the definite integrals of various
functions. In order to do this, there were used numeric integration
methods, which were the trapezium rule, the Simpson method and
the Gauss quadrature. The application was designed to perform
the calculation of the numeric integrals of 5 different function
types, showing joint results of the 3 previously mentioned methods.
Furthermore, a graph was implemented which facilitates the
visualization of the results, through a javascript library. Finally,
thanks to the previously performed comparative, it was concluded
that the most efficient method because of computer’s cost and good
enough precision was Simpson’s. Additionally, favorable results
were obtained in the execution of the algorithms, and its use was
understood for the posterior applications in the professional field
when needed.
Palabras Claves— Integración numérica, Cuadratura
Gaussiana, Trapecio, Simpson, aplicación comparativa.
I. INTRODUCCIÓN
Existen ocasiones en que no es posible calcular de manera
exacta una integral, es en estos momentos cuando se utilizan los
métodos para calcular integrales numéricas. Sin embargo,
existen diversos métodos que llevan al mismo fin, entre ellos
están el método del trapecio, de Simpson y la cuadratura
Gaussiana. En el presente trabajo se realizó una comparativa de
la precisión de los 3 métodos antes mencionados. Para este fin,
se procedió a diseñar una aplicación web con html, php, css y
javascript; mediante la cual se pretende observar la ejecución
de cada uno de los métodos y su precisión respecto de la
respuesta exacta calculada analíticamente.
Uno de los objetivos era la realización de una interfaz que
pueda calcular adecuadamente las integrales definidas, con el
método numérico correspondiente y siguiendo los lineamientos
necesarios de acuerdo a la literatura. Además, se buscó que se
pueda visualizar de forma clara el área en cuestión que es objeto
de nuestro análisis, mediante un gráfico de la función que nos
permita solventar este punto. A pesar de que anteriormente ya
se han realizado trabajos computacionales que permitan la
evaluación de integrales, algunos implementados en
calculadoras, éstos normalmente sólo se enfocan en obtener la
respuesta. Debido a este limitante, se optó por realizar la antes
mencionada aplicación, que nos permita comparar más
fácilmente la precisión de cada método.
Se buscaba además realizar una implementación adecuada de
los métodos numéricos en dicha interfaz, para conseguir un
resultado lo más aproximado posible. Esto es una ayuda para
obtener un conocimiento adecuado de los métodos de
integración numérica, y poderlos aplicar correctamente cuando
la situación lo requiera.
En el presente informe se procederá a realizar unas breves
consideraciones teóricas iniciales, en las cuales se hablará
Aplicación Web para la Comparación de
Métodos de Integración Numérica (Cuadratura
Gaussiana, Trapecio y Simpson)
Santiago Fabián Collaguazo Tonato, Jonathan Alexander Herrera Flores, Danny Esteban Venegas Villavicencio,
GR3COM, santiago.collaguazo@epn.edu.ec, jonathan.herrera01@epn.edu.ec, danny.venegas@epn.edu.ec
Ingeniería en Computación (RRA), Facultad de Sistemas, Escuela Politécnica Nacional
Dr. José Francisco Lucio Naranjo
ESCUELA POLITÉCNICA NACIONAL
FACULTAD DE INGENIERÍA DE SISTEMAS
INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN
PROYECTO BIMESTRAL DE LA MATERIA DE MÉTODOS NUMERICOS
2
acerca de los lenguajes de programación usados y los métodos
de integración numérica. Luego se procederá a realizar la
descripción de los métodos y herramientas con los cuales se
piensa llegar a este fin. En la siguiente sección, se procederá a
describir los resultados obtenidos, los cuales se inclinan a favor
del método de Simpson en cuanto a precisión, para
posteriormente poder realizar la discusión de los mismos.
Finalmente se concluyó que el método más favorable es el
método de Simpson, debido a su coste computacional, su fácil
implementación y su precisión. Además que se pudo apreciar el
funcionamiento adecuado de cada uno de los métodos de
integración numérica.
II. CONSIDERACIONES TEORICAS
FUNDAMENTALES.
A. Integración Numérica.
Es la forma por la cual se puede calcular una integral definida,
estructurada por algoritmos finitos que permitan la resolución
de dicha integral si es que no es posible el cálculo analítico [1].
B. Método de Cuadratura Gaussiana.
El método de cuadratura gaussiana permite el cálculo de una
integración (aproximada) empleando sumatorias simples. Es
parecido al método de trapecio, pero permitiendo flexibilidad al
momento de asignar los subintervalos, pudiendo así escoger los
más adecuados. Esto se realiza mediante el cálculo de las raíces
de polinomios de interés en el rango de –1 a 1, y otras
operaciones adicionales. En la ecuación (1) se puede visualizar
la formula general para este método. El termino Xi y Wi se
calculan con las ecuaciones (2) y (3) respectivamente. Los
polinomios de Legendre serán usados como polinomios de
interés, y se calculan mediante la ecuación (4) teniendo en
cuenta que P1 = 1 y P2 = x [2].
∫ 𝑓(𝑥)𝑑𝑥 ≈
𝑏 − 𝑎
2
∑ 𝑓(𝑋𝑖) ∗ 𝑊𝑖 (1)
𝑛
𝑖=1
𝑏
𝑎
Donde:
𝑋𝑖 =
𝑏 − 𝑎
2
∗ 𝑟𝑎𝑖𝑧[𝑖] +
𝑏 + 𝑎
2
(2)
Y
𝑊𝑖 =
−2
(𝑛 + 1) ∗ 𝑃´𝑛(𝑟𝑎𝑖𝑧[𝑖]) ∗ 𝑃𝑛+1(𝑟𝑎𝑖𝑧[𝑖])
(3)
Donde P’n es la derivada de Pn que a su vez es el polinomio
de Legendre de grado n.
𝑃𝑛 = (
1
𝑛
) [(2𝑛 − 1)𝑋 ∗ 𝑃𝑛−1 − (𝑛 − 1) ∗ 𝑃𝑛−2] (4)
Intervalos de interés para todos los polinomios donde están
sus raíces [-1,1].
C. Método de Simpson.
El método de Simpson permite calcular el área bajo la curva
mediante el uso de parábolas (trapecios curvilíneos) por medio
de la interpolación con una función cuadrática. En la ecuación
(5) muestra claramente la formula general para la aplicación de
este método. Para calcular h usaremos la ecuación (5) que
representa el rango de cada parábola a calcular [3].
𝐼 ≅
ℎ
3
(𝑓𝑜 + 4 ∑ 𝑓2𝑗−1 + 2 ∑ 𝑓2𝑛 + 𝑓𝑛
𝑛
2
−1
𝑗=𝑖
𝑛
2
𝑗=1
) (5)
Donde h puede ser calculada por la ecuación (6)
ℎ =
𝑏 − 𝑎
𝑛
(6)
D. Método de los Trapecios.
El método de trapecios es aquel por el cual se puede calcular
una aproximación al resultado exacto de una integración
numérica usando una sumatoria de un numero n de trapecios a
lo largo de la curva de intervalo [a,b]. Como se puede visualizar
en la ecuación (7) que es la representación general de
este método. Así como el valor de h es calculado mediante
la ecuación (6) [4].
𝐼 ≅
ℎ
2
(𝑓𝑜 + 2 ∑ 𝑓(𝑋𝑖) + 𝑓𝑛
𝑛−1
𝑖=1
) (7)
Si se visualiza la ecuación (2) y (3) un término Raíz hace
aparición, este término no es más que la raíz del polinomio de
Legendre el cual se calcula mediante un método conocido como
híbrido o secante-bisección.
E. Método híbrido para cálculo de raíces de un
polinomio.
Este método permite combinar lo mejor de dos métodos como
son secante y bisección (la rapidez de ejecución de Secante con
la garantía de convergencia de bisección). El método toma el
intervalo los bisecciona y trata de calcular su raíz mediante la
ecuación (8) [5].
𝐶 𝑘 = 𝑏 𝑘 − 𝑓(𝑏 𝑘) (
𝑏 𝑘 − 𝑎 𝑘
𝑓(𝑏 𝑘) − 𝑓(𝑎 𝑘)
) (8)
Con k=0,1,………, n.
ESCUELA POLITÉCNICA NACIONAL
FACULTAD DE INGENIERÍA DE SISTEMAS
INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN
PROYECTO BIMESTRAL DE LA MATERIA DE MÉTODOS NUMERICOS
3
Para que una raíz sea tomada como válida debe cumplir la
condición expresada en la ecuación (9).
|𝑓(𝑏 𝑘)| ≤ 𝑇 (9)
Caso contrario se debe realizar la ecuación (10) y asignar los
nuevos valores de la manera expresada en las ecuaciones (11) y
(12).
Si
𝑓(𝑏 𝑘) ∗ 𝑓(𝑐 𝑘) ≤ 0 (10)
Hacer
𝑎 𝑘+1 = 𝑐 𝑘 (11)
𝑏 𝑘+1 = 𝑏 𝑘 (12)
Caso contrario realizar las asignaciones (13) y (14)
𝑎 𝑘+1 = 𝑎 𝑘 (13)
𝑏 𝑘+1 = 𝑏 𝑘 (14)
Al momento de programar se tiene como bases los lenguajes
con los cuales la aplicación se desarrolló.
F. PHP.
Lenguaje de alto nivel con código abierto para el desarrollo
web que puede ir junto a HTML. Una herramienta simple para
principiantes que a su vez tiene un desarrollo más profesional.
Con un código ejecutable desde un servidor o un generador de
HTML [6].
G. CSS.
Es el código de programación que permite estilizar una
página web o archivos HTML (poner color, forma, formatos,
etc). Es una herramienta muy usada para que los archivos
HTML sean más puros y contenga solo datos e información
dejando el estilo a CSS [7].
H. HTML.
Es un lenguaje de programación estructurado usado
principalmente para definir documentos web o paginas el cual
define el orden dentro de las páginas usando hipertextos
conocidos comúnmente como tags [8].
I. JavaScript.
Lenguaje de programación basado en ECMAScript. Que
permite la automatización de acciones o procesos como
también la personalización de aplicaciones o sitios web.
Mejorando la interfaz de usuario [9].
III. METODOLOGÍA
Para poder comparar correctamente los métodos de
integración numérica, se ha utilizado una aplicación
programada en lenguaje php. Este lenguaje de programación
tiene la ventaja de que se ejecuta directamente en el servidor,
ahorrándole así coste computacional al usuario. Además, la
personalización que nos permite tener en una aplicación web
nos otorga la posibilidad de crear un diverso número de
interfaces dinámicas. Esto es ideal para nuestras necesidades,
ya que nos permite visualizar fácilmente los resultados de las
integrales, además del área bajo la curva correspondiente.
Inicialmente se diseñó una aplicación en lenguaje de
programación php (Anexo 1) para poder realizar los cálculos en
el servidor. Estos cálculos nos permiten obtener la integral
mediante el método de cuadratura Guassiana. Para obtener esta
integral se procedió en primer lugar a realizar la función que
genera los Polinomios de Legendre, la cual se encarga de
ejecutar una concatenación de cadenas de caracteres. Se
obtienen, por lo tanto, los nuevos polinomios a partir del
polinomio anterior, como se encuentra indicado en la ecuación
(4). Se empezó además con f0=1 y f1=x.
A continuación, se diseñó una función que evalúe cualquier
función genérica de una variable, recibiendo un string con la
función matemática, y una variable con el valor a evaluar. La
dificultad de este punto consistió en poder transformar el string
a una línea de código, sin embargo esto fue solventado
fácilmente con el uso de la función eval() de php.
Posteriormente, y siguiendo lineamientos similares a la función
anterior, se procedió a diseñar una función que calcule una
derivada numérica. Esta derivada numérica fue calculada con el
método de diferenciación centrada, una tolerancia de 1*10-7 y
un deltaX inicial de igual valor. En este punto surgió un
inconveniente en cuanto al cálculo de la derivada de los
polinomios de Legendre de grado muy alto, debido a que en
ciertas ocasiones los resultados se aproximaban demasiado a 0,
desbordando la variable y dando como resultado un 0. Dado que
este valor se utiliza en divisiones, era imperante evitar que
devuelva un valor de 0 inadecuado, por lo que se procedió a
regular la tolerancia y el deltaX. De esta forma se consiguieron
los resultados deseados y se evitó problemas posteriores.
Se procedió luego a realizar el cálculo de Wi, como se encuentra
en la ecuación (3), recibiendo como parámetros la raíz
correspondiente y el grado del polinomio que se está
calculando. A continuación, se utilizó el método de secante-
bisección para realizar el cálculo de las raíces de una función
cualquiera. Esta función recibe como dato la función creada,
además del número aproximado de raíces que se espera. Como
sabemos el intervalo de interés de estos polinomios es entre –1
y 1, por lo que este parámetro no fue necesario de ingresar en
la función. Posteriormente, como última función antes de
realizar el cálculo de la Cuadratura Gaussiana, se procedió a
ESCUELA POLITÉCNICA NACIONAL
FACULTAD DE INGENIERÍA DE SISTEMAS
INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN
PROYECTO BIMESTRAL DE LA MATERIA DE MÉTODOS NUMERICOS
4
realizar el Cálculo de la Xi correspondiente, tal y como se
encuentra especificado en la ecuación (2).
Finalmente se procedió a programar el cálculo de la cuadratura
Gaussiana, utilizando las funciones previamente definidas, y de
acuerdo con la ecuación (1), se obtiene la sumatoria de los
valores mediante un método iterativo. La función terminó
retornando el resultado obtenido, multiplicándolo por el rango
y dividiéndolo para 2, tal y como se ve en la ecuación (1).
Luego de ello se realizó el cálculo de las integrales con los otros
métodos, en el caso del método de Simpson, se usa dos sumas
iterativas y unos cálculos simples adicionales, utilizando el
valor de n como el número de puntos. La ecuación que fue
adaptada es la ecuación (5). Mientras que para el cálculo del
método de trapecio se utilizó un bucle iterativo, con la adición
de los cálculos necesarios para obtener el resultado, de acuerdo
con la ecuación (7).
Una vez que ya estuvo realizado el código php correspondiente
se procedió a la creación de una interfaz mediante el uso de la
sentencia <form> en html, además de validar los datos
ingresados por el usuario desde el código en php. Para el ingreso
de las funciones, se utilizó un combo-box, para evitar así el
ingreso incorrecto de las funciones correspondientes. Se
controló además que los datos ingresados por el usuario se
mantengan una vez hayan sido calculadas las integrales
mediante código php. Finalmente, se le dio estilo a las cajas de
divisiones y formulario mediante el uso del lenguaje de
programación CSS.
Debido a que el usuario requerirá una representación visual para
poder apreciar de mejor manera la comparativa, se procedió
también a utilizar una librería en javascript para graficar las
funciones de las cuales se requiere conseguir la integral. Esta
librería, llamada function-plot, se encarga de hacer la gráfica de
las funciones que son ingresadas, mediante varios parámetros.
Los parámetros principales son el target, donde se ingresa la
sección del documento donde se presentará el gráfico, y data,
que es donde se ingresarán los valores de la función que se
desea graficar. Además de estos parámetros, también hay otros
parámteros adiconales como, por ejemplo: title, width, height,
xAxis (type, label, domain), yAxis (mismas opciones que
xAxis) y disableZoom [10]. De todos estos parámetros se ha
utilizado: target, data, grid y domaain en yAxis y xAxis.
Además, se usaron subparámetros para el campo data como son
fn, color, range y closed, lo cual se puede observar en el script
que fue creado para la aplicación (Anexo 3). Este script toma
los valores de la aplicación y con ellos ejecuta la función que se
encarga de graficar.
Para la visualización del área que se va a integrar se realizó la
graficación de dos funciones. Una de las funciones sólo fue
graficada en el intervalo que se va a calcular, con el parámetro
closed puesto en true, para que se sombree el área. La otra
función fue configurada para que se grafique completamente,
dando como resultado la función con el sombreo respectivo del
área de integración. Finalmente se configuró la función para
que tome los valores de la aplicación, y pueda así realizar el
gráfico correspondiente. Se programó además para que se
actualicen los espacios en los que se gráfica, para poder abarcar
correctamente el área requerida.
IV. RESULTADOS
Para el análisis comparativo de los métodos se aplicarán 5
funciones principales las cuales serán ejemplos claros del
funcionamiento de la aplicación, además de ser la forma
principal de comparación entre los demás métodos de
integración.
Para todas las funciones se aplicarán los mismos límites, y el
mismo valor de n tal como muestra la figura Fig1.
Fig. 1: Datos iniciales y función seleccionada del programa.
Al momento de darse clic en el botón calcular el programa
arrojará los resultados y se tendrá tres apreciaciones. La primera
entregara un valor correspondiente al resultado de usar el
método de cuadratura gaussiana. El segundo valor entregará el
resultado usando el método de trapecios que no es más que la
sumatoria de trapecios sobrepuestos sobre la función. Y el
tercer valor será el resultado de usar el método de Simpson que
en este caso no usa trapecios sino polinomios de primer grado
en cada intervalo de interés
A. Función simple de primer grado:
𝑓(𝑥) = 𝑥 (15)
ESCUELA POLITÉCNICA NACIONAL
FACULTAD DE INGENIERÍA DE SISTEMAS
INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN
PROYECTO BIMESTRAL DE LA MATERIA DE MÉTODOS NUMERICOS
5
Es la función, representada por la ecuación (15), más simple
de todas donde su grado es 1 por que su variable independiente
esta elevada al valor 1. La integral exacta en el intervalo para
esta función la podemos ver en la ecuación (16). Su gráfica
además está representada en la Fig. 2 y los resultados
retornados por el programa están en la Fig. 3.
∫ 𝑥𝑑𝑥 =
25
2
− 2 = 10,5 (16)
5
2
Fig. 2: Grafica de la función de primer grado que retorna el
programa.
Fig. 3: Resultado que arroja el programa.
B. Función simple de segundo grado.
𝑓(𝑥) = 𝑥2
(17)
Esta funcion represanta por la ecuacion (17) es aquella en la
cual su variable independiente esta elevada al cuadrado. La
integral exacta de esta función se encuentra en la ecuación (18).
Su gráfica además se encuentra representada en la Fig. 4 y los
resultados en la Fig. 5.
∫ 𝑥2
𝑑𝑥 =
125
3
−
8
3
= 39 (18)
5
2
Fig. 4: Grafica de la función de segundo grado que retorna el
programa.
Fig. 5: Resultado del cálculo del programa.
C. Función Trigonométrica.
𝑓(𝑥) = 𝑠𝑒𝑛 (𝑥) (19)
De entre toda la gama de funciones trigonométricas se
decidió tomar la función seno representada por la ecuación (19).
Esta función simboliza la relación del cateto opuesto con la
hipotenusa en un triángulo rectángulo con respecto a un ángulo
dado. Su integral exacta se encuentra en la ecuación (20). La
gráfica de esta función se puede observar en la Fig. 6 y los
resultados obtenidos por el programa en la Fig. 7.
∫ 𝑠𝑒𝑛(𝑥)𝑑𝑥 = − cos(5) + cos(2)
5
2
= −0.699809022 (20)
ESCUELA POLITÉCNICA NACIONAL
FACULTAD DE INGENIERÍA DE SISTEMAS
INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN
PROYECTO BIMESTRAL DE LA MATERIA DE MÉTODOS NUMERICOS
6
Fig. 6: Grafica de la función Trigonométrica seno que retorna
el programa.
Fig. 7: Resultado del cálculo del programa.
D. Función Logarítmica.
𝑓(𝑥) = ln(𝑥) (21)
El logaritmo natural de x es representado por la ecuación (21).
Esta función mide el exponente al que se debe elevar el número
e para conseguir el valor de x. Su integral exacta se la puede
hallar en la ecuación (22). Además, su gráfica se encuentra en
la Fig. 8 y los resultados obtenidos con las integrales numéricas
en la Fig. 9.
∫ ln(𝑥) = 𝐼𝑛 (
3125
4
) − 3 = 3.660895201 (22)
5
2
Fig. 8: Grafica de la función logarítmica que retorna el
programa.
Fig. 9: Resultado del cálculo del programa.
E. Función exponencial.
𝑓(𝑥) = 𝑒 𝑥 (23)
La función exponencial más simple es e elevado a la x ya que
al calcular su integral exacta indefinida la función sigue siendo
la misma sin cambiar ni agregar nada. Se puede visualizar mejor
en la ecuación (24). Además, su integral definida exacta en el
intervalo se observa en la ecuación (24), su gráfica está en la
Fig. 10 y los resultados del programa en la Fig. 11.
∫ 𝑒 𝑥
= 𝑒5
− 𝑒2
= 141.024103 (24)
5
2
Fig. 10: Grafica de la función exponencial que retorna el
programa.
Fig. 11: Resultado del cálculo del programa.
V. DISCUSIÓN DE RESULTADOS.
Debido a que se realizó una evaluación de los resultados
exactos además de los métodos de integración numérica. Se
puede evaluar a continuación una comparación adecuada para
ESCUELA POLITÉCNICA NACIONAL
FACULTAD DE INGENIERÍA DE SISTEMAS
INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN
PROYECTO BIMESTRAL DE LA MATERIA DE MÉTODOS NUMERICOS
7
las integrales de las 5 funciones. Se debe recordar que el
intervalo usado en todas ellas es de 2 a 5, y que el valor asignado
a n es 8.
En el caso de la función lineal, podemos observar en la
ecuación (16) que la solución exacta es 10,5. Esta solución es
aproximada más efectivamente mediante los métodos de
Simpson y el método de trapecio. Esto es debido a que el
método del trapecio se encuentra en el grado de polinomios
donde es exacto. Posteriormente, observando la función
cuadrática, podemos ver que el valor exacto de la ecuación (18)
es 39, donde el método de Simpson nos da un resultado
completamente exacto, y el segundo método más cercano es el
método de la cuadratura Gaussiana.
En la función sen(x) la respuesta exacta de la ecuación (20)
es -0.699809022, la cual se encuentra aproximada de mejor
manera con el método de cuadratura Gaussiana. Sin embargo,
el método de Simpson no se encuentra muy alejado del valor
real. La función log(x) nos arroja un resultado exacto de
3.660895201 en la ecuación (22), el cual es aproximado de
mejor manera por el método de cuadratura Gaussiana, seguido
muy de cerca por el método de Simpson. Finalmente, la función
ex
nos arroja como resultado exacto 141.024103 en la ecuación
(24), este resultado es mejor aproximado por la cuadratura
Gaussiana, seguido igualmente muy de cerca por el método de
Simpson.
Como se puede apreciar, los 3 métodos se aproximan al
resultado exacto. Y al comparar los resultados de las 5
funciones se deduce que el método de Simpson se aproximaba
más a la solución exacta, en algunas ocasiones. Todos los
métodos son dependientes de la variable n, que representa
trapecios, curvas o grado para los métodos del trapecio,
Simpson y cuadratura gaussiana respectivamente. Por tanto, el
acercamiento a la solución exacta dependerá de la variable
mencionada.
Si consideramos los resultados podemos observar que para
funciones lineales y cuadráticas el método de Simpson entrego
un resultado exacto. Mientras que para las funciones
trigonométricas, logarítmica y exponencial la cuadratura
gaussiana nos entregó valores más exactos. Esto debido a la
base matemática bajo la cual opera cada método.
Por lo tanto, el método de cuadratura Gaussiana nos
proporciona mayor exactitud en muchos de los casos, sin
embargo, no debemos olvidar que también se necesita analizar
el coste computacional. El método de cuadratura Gaussiana
realiza muchas operaciones previas al cálculo de la Integral,
algunas de las cuales tienen más de un bucle iterativo en su
interior. Mientras que en cuanto a la interfaz se puedo lograr la
creación de un entorno amigable, el cual permite de una forma
sencilla el ingreso adecuado de los datos. Para poder ser
procesados adecuadamente por los algoritmos del programa.
Estos algoritmos pudieron ser implementados correctamente
siguiendo los lineamientos adecuados y su funcionamiento
matemático correcto.
Finalmente, se debe tener en cuenta la influencia del error
que se tiene en los resultados. Aplicando una tolerancia de 1e-
7 se obtuvo resultados aceptables, pero al aplicar una tolerancia
menor, por el rango de 1e-8 en adelante, se obtiene un resultado
infinito para la cuadratura gaussiana. Esto es debido a que se
está operando sobre un número de coma flotante muy cercano
a cero, lo cual conlleva a un desbordamiento de la variable al
realizar la derivada. Este desbordamiento ocasiona divisiones
para 0 en cálculos posteriores. Se debe recordar además que esta
tolerancia medirá el error que se puede esperar de una
aplicación en el ámbito laboral de estos métodos. Por esta razón
debería de tener mayor libertad para ser modificada. Se debe
tener presente que el resultado seguirá sin ser exacto debido al
error, el cual puede llegarse a acumular en algunos casos como
en la aplicación de procesos iterativos.
VI. CONCLUSIONES Y PERSPECTIVAS
Se logró diseñar exitosamente la aplicación que permita
visualizar y comparar los métodos de integración numérica,
gracias a ella se pudo además conseguir la comparativa de los
métodos y reforzar su aprendizaje.
La comparativa realizada indica que el método Simpson es el
más eficiente, si bien no es el más exacto en algunas de las
funciones, su coste computacional es menor en comparación
con el método de cuadratura Gaussiana. Además, la precisión
del método de Simpson es mayor que la del método del trapecio,
y requiere menos subintervalos que el de cuadratura Gaussiana
para obtener un resultado favorable. Esto se debe
principalmente a que el método de cuadratura Gaussiana realiza
muchas operaciones previas para poder realizar el cálculo de la
integral numérica.
El coste computacional combinado con la precisión es muy
importante para el desarrollo de aplicaciones, ya que se debe
siempre tener un balance entre el resultado y el uso de recursos.
Por lo tanto, para aplicaciones posteriores es recomendable
hacer uso de este método en los lugares donde se requiera
realizar una integración numérica.
Adicionalmente, en trabajos posteriores, se sugiere realizar
cálculos con un rango más amplio de funciones para poder
verificar los hallazgos del presente trabajo. Además, se deberá
contemplar una mejor solución al problema del desbordamiento
de la variable que almacena la derivada numérica, para evitar
así la división para 0 al intentar conseguir tolerancias mayores.
Una sugerencia para este problema es aumentar el tamaño de la
variable en cuestión.
ESCUELA POLITÉCNICA NACIONAL
FACULTAD DE INGENIERÍA DE SISTEMAS
INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN
PROYECTO BIMESTRAL DE LA MATERIA DE MÉTODOS NUMERICOS
8
VII. REFERENCIAS BIBLIOGRAFICAS.
[1] Forsythe, G., Moler, C. and Malcolm, M.
(1977). Computer methods for mathematical
computations. Englewood Cliffs, Nj: Prentice-Hall.
[2] Burden, Richard L.; Faires, J. Douglas (1998). Ǥ4.7:
Cuadratura gaussiana». Análisis numérico.
[3] U.N.M.d.P. Cátedra de Métodos Numéricos - dpto.
de Matemática “Método de Simpson
1/3” [Online]Avialble: http://www3.fi.mdp.edu.ar/me
todos/apuntes/simpson.pdf
[4] Larson, R., Hostetler, R. and Edwards, B.
(2006). Cálculo I. Madrid: McGraw-Hill.
[5] W. Mora, "Métodos Híbridos para la Solución de
Ecuaciones No Lineales. Implementaciones en VBA
Excel", Tecdigital.tec.ac.cr, 2019. [Online].
Available:
https://tecdigital.tec.ac.cr/revistamatematica/HERRA
mInternet/Vol%209,%20No%202.%20(Febrero,%20
2009)/MetodosHibridos.pdf.
[6] Php.net. (2019). PHP: ¿Qué es PHP? - Manual.
[online] Available at: https://php.net/manual/es/intro-
whatis.php.
[7] "¿Qué es CSS? | CSS en español", Lenguajecss.com,
2019. [Online]. Available:
https://lenguajecss.com/p/css/introduccion/que-es-
css.
[8] "Qué es HTML", CódigoFacilito, 2019. [Online].
Available: https://codigofacilito.com/articulos/que-
es-html.
[9] "Lenguaje Javascript - Documentación sobre
programación web", Lenguajejs.com, 2019. [Online].
Available: https://lenguajejs.com/
[10]"Function Plot - 2d function plotter powered by d3",
Mauriciopoppe.github.io, 2019. [Online]. Available:
https://mauriciopoppe.github.io/function-plot/.
VIII. ANEXOS
Anexo 1 Código PHP del programa:
<!--Integración comparativa: Cuadratura Gaussiana, Trapecio,
Simpson-->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=UTF-8" />
<title> Proyecto 1B, Grupo 1</title>
<meta name="description" content="Grupo1: Collaguazo,
Herrera, Venegas" />
<link rel="stylesheet" href="recursos/style.css" />
<script src="https://d3js.org/d3.v3.min.js"></script>
<script src="https://mauriciopoppe.github.io/function-
plot/js/function-plot.js"></script>
<script src="recursos/plotter.js"></script>
</head>
<body onload="plot();">
<?php
if (isset($_POST["calcular"])) {
$tolerancia=1e-7;
$a=null;
$b=null;
$n=null;
$a=$_POST["a"];
$b=$_POST["b"];
$function=$_POST["mySelect"];
if($function=="exp(x)")
$function="pow(M_E,x)";
$n=$_POST["n"];
$errors = '';
//Generador de polinomios de Legendre
function Legendre($n){
$f0="1";
$f1="x";
for($i=2;$i<=$n;$i++){
$fi="(1/".$i.")*((2*".$i."-1)*x*(".$f1.")-(".$i."-
1)*(".$f0."))";
$f0=$f1;
$f1=$fi;
}
if($n==0){
return "1";
} else if($n==1){
return "x";
} else {
return $fi;
}
}
//Evaluador de una función genérica
function fnEval($eva,$function){
$fun = str_replace("x",$eva,$function);
eval("$foo = $fun;");
ESCUELA POLITÉCNICA NACIONAL
FACULTAD DE INGENIERÍA DE SISTEMAS
INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN
PROYECTO BIMESTRAL DE LA MATERIA DE MÉTODOS NUMERICOS
9
return $foo;
}
//Derivada de una función genérica
function fnDeriv ($p,$function){
$deltaX=1e-7;
$resultado_ant=mt_rand();
$resultado_act=mt_rand();
while(true){
$resultado_act=(fnEval($p+$deltaX,$function)-
fnEval($p-$deltaX,$function))/(2*$deltaX);
if(abs($resultado_ant-
$resultado_act)<=$GLOBALS['tolerancia']){
return $resultado_act;
}
else{
$resultado_ant=$resultado_act;
$deltaX=$deltaX/2;
}
}
}
//Cálculo de Wi para la ecuación
function W($raiz,$n){
return -
2/(($n+1)*fnDeriv($raiz,Legendre($n))*fnEval($raiz,Legendr
e($n+1)));
}
//Uso del método híbrido secante, biseccion para encontrar
las raices
function raices($function,$n){
$a = -1;
$b = 1;
$m = 3*$n*$n;
$raicesIn=array();
$inc = ($b - $a) / $m;
$aprox;
for($x = $a ; $x < ($b - $inc) ; $x = $x + $inc){
if((fnEval($x,$function) * fnEval($x + $inc,$function))
< 0){
$x0=$x;
$x1=$x+$inc;
while(true){
$f0=fnEval($x0,$function);
$f1=fnEval($x1,$function);
$x2=$x1-$f1*($x1-$x0)/($f1-$f0);
$f2=fnEval($x2,$function);
if(abs($x2-
$x1)<=$GLOBALS['tolerancia']||abs($f2)<=$GLOBALS['tole
rancia']){
$raiz=$x2;
array_push($raicesIn,$raiz);
break;
}
if($f1*$f2<0){
$x0=$x2;
} else {
$x1=$x2;
}
}
}
}
return $raicesIn;
}
function X($raiz,$a,$b){
return ($GLOBALS['b']-
$GLOBALS['a'])/2*$raiz+($GLOBALS['b']+$GLOBALS['a']
)/2;
}
//Cálculo por Curva Gaussiana
function cuadra($function,$n,$a,$b){
$raices=raices(Legendre($n),$n);
$sum=0;
for($i=0;$i<$n;$i++){
$sum=$sum+fnEval(X($raices[$i],$a,$b),$function)*W($ra
ices[$i],$n);
}
$act=($b-$a)/2*$sum;
return $act;
}
//Cálculo por trapecio
function trapecio($function,$n,$a,$b){
$h=($b-$a)/$n;
$suma=0;
for ($i = 1; $i < $n; $i++) {
$mul=$a+$h*$i;
$suma+=fnEval($mul,$function);
}
$resultado_act=(($h/2)*(fnEval($a,$function)+fnEval($b,$f
unction)+2*$suma));
return $resultado_act;
}
//Cálculo por Simpson
function Simpson($function,$n,$a,$b){
$n=$n*2;
$h=($b-$a)/$n;
$suma1=0;
for ($i = 1; $i <= $n/2; $i++) {
$mul=$a+$h*(2*$i-1);
ESCUELA POLITÉCNICA NACIONAL
FACULTAD DE INGENIERÍA DE SISTEMAS
INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN
PROYECTO BIMESTRAL DE LA MATERIA DE MÉTODOS NUMERICOS
10
$suma1+=fnEval($mul,$function);
}
$suma2=0;
for ($i = 1; $i <= $n/2-1; $i++) {
$mul=$a+$h*2*$i;
$suma2+=fnEval($mul,$function);
}
$resultado_act=(($h/3)*(fnEval($a,$function)+fnEval($b,$f
unction)+4*$suma1+2*$suma2));
return $resultado_act;
}
if($a==null) {
$errors .= "Por favor ingrese un valor para la variable
a<br><br>";
}else {
if (!preg_match("/^[0-9.-]*$/",$a)) {
$errors .= "Sólo se permiten numeros en el campo
a.<br><br>";
}
}
if($b==null) {
$errors .= "Por favor ingrese un valor para la variable
b<br><br>";
}else{
if (!preg_match("/^[0-9.-]*$/",$b)) {
$errors .= "Sólo se permiten números en el campo
b.<br><br>";
}
if($a>$b){
$errors .= "Error el valor de b tiene que ser menor al
valor de a.<br><br>";
}
}
if($n==null) {
$errors .= "Por favor ingrese un valor para la variable
n.<br><br>";
}else {
if (!preg_match("/^[0-9.-]*$/",$n)) {
$errors .= "Sólo se permiten numeros en el campo
n.<br><br>";
}
if($n>10 || $n<1){
$errors .= "Por favor ingrese un valor para n entre 1 y
10.<br><br>";
}
}
if(empty($errors)) {
echo "<div class='relative'>";
echo "<div class='absolute' id='soluciones'>"."Cuadratura
Gaussiana: ".cuadra($function,$n,$a,$b)."<br><br>";
echo "Trapecio:
".trapecio($function,$n,$a,$b)."<br><br>";
echo "Simpson:
".Simpson($function,$n,$a,$b)."<br>"."</div>";
echo "</div>";
}
else{
echo "<div class='absolute'
id='soluciones'>"."$errors"."</div>";
}
}
?>
<header>
<img id="logo" alt="EPN" src="recursos/logo.png" />
</header>
<div id = "principal">
<h1>Integración comparativa: Cuadratura Gaussiana,
Trapecio, Simpson</h1>
<h2>Grupo1: Collaguazo, Herrera, Venegas</h2>
<div id="formulario">
<form method="post">
<div>
<span><label>a (límite inferior)</label></span>
<span><input value="<?php
if(isset($_POST["a"]))print $a;else print "";?>" type="text"
id="a" name="a" class="textbox" oninput="plot();"></span>
</div>
<div>
<span><label>b (límite superior)</label></span>
<span><input value="<?php
if(isset($_POST["b"]))print $b;else print "";?>" type="text"
id="b" name="b" class="textbox" oninput="plot();"></span>
</div>
<div>
<span><label>Funci&oacute;n</label></span>
<select id="mySelect" name="mySelect"
onchange="plot();">
<option <?php if (isset($function) &&
$function=="x")?> value="x" id="x">x</option>
<option <?php if (isset($function) &&
$function=="x*x")?> value="x*x" id="x*x">x^2</option>
<option <?php if (isset($function) &&
$function=="sin(x)")?> value="sin(x)"
id="sin(x)">sen(x)</option>
<option <?php if (isset($function) &&
$function=="log(x)")?> value="log(x)"
id="ln(x)">log(x)</option>
<option <?php if (isset($function) &&
$function=="exp(x)")?> value="exp(x)"
id="exp(x)">e^x</option>
ESCUELA POLITÉCNICA NACIONAL
FACULTAD DE INGENIERÍA DE SISTEMAS
INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN
PROYECTO BIMESTRAL DE LA MATERIA DE MÉTODOS NUMERICOS
11
</select>
<script type="text/javascript">
document.getElementById('mySelect').value =
"<?php echo $_POST['mySelect'];?>";
</script>
</div>
<div>
<span><label>n (número de trapecios, curvas o
grado)</label></span>
<span><input value="<?php
if(isset($_POST["n"])) print $n;else print "";?>" type="text"
name="n" class="textbox"></span>
</div>
<br> <br>
<div>
<span id="res"><input type="submit"
name="calcular" id="calcular" value="calcular"></span>
</div>
</form>
</div>
<div id="plot">
</div>
</div>
</body>
</html>
Anexo 2 Código CSS usado en el programa:
*{
border: 0;
margin: 0;
padding: 0;
}
footer, header, hgroup, section{
display: block;
}
body{
color: #EE8533;
font-family: Helvetica, Verdana;
font-size: 1em;
position: relative;
}
header{
background: #FFF;
margin: 0;
max-width: 100%;
}
a {
color:#EE8533;
font-weight: lighter;
text-decoration: none;
}
a: hover {
color: #F60;
}
img, video {
max-width: 100%;
color: #DF7401;
box-shadow: 0 0.1em 5px #888;
border: 0.1em solid #808080;
border-radius: 0.5em;
display: block;
font-size: 1.8em;
font-weight: normal;
margin: 0 auto;
text-transform: capitalize;
padding:0;
}
#logo{
border-radius: 0;
margin: 1em auto;
width: auto;
height: 180px;
object-fit: cover;
}
#principal{
background: #EEEEEE;
margin: 0 auto;
padding: 0.2em;
width: 99%;
}
#formulario{
display: inline-block;
margin: 0;
padding: 0.5em 0 0.5em 2em;
position: relative;
width: 46%;
}
h1{
text-align: center;
}
h2{
text-align: center;
}
ESCUELA POLITÉCNICA NACIONAL
FACULTAD DE INGENIERÍA DE SISTEMAS
INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN
PROYECTO BIMESTRAL DE LA MATERIA DE MÉTODOS NUMERICOS
12
#plot{
border: 0.15em solid #808080;
border-radius: 0.5em;
position: absolute;
top: 43%;
right: 30%;
width: 550px;
}
#calcular{
border: 0.15em solid #808080;
border-radius: 0.5em;
position: relative;
top: 20%;
right: 50%;
max-width:35%;
}
#soluciones{
border: 0.15em solid #808080;
border-radius: 0.5em;
position: absolute;
top: 60%;
left: 70.5%;
max-width:35%;
}
div #formulario input[type="text"]{
font-family: Arial, Geneva,Helvetica, sans-serif;
color: #9C9C9C;
padding: 8px;
display: block;
width: 60%;
background:#fff;
border: 1px solid rgba(214, 212, 209, 1);
outline: none;
-webkit-appearance: none;
}
div #formulario span label{
font-size: 0.8125em;
color: #DF7401;
line-height: 1.8em;
padding-bottom:5px;
}
#formulario div{
padding: 0.5em 0;
width: 50%;
}
div #formulario input[type="text"]:focus{
-webkit-transition:0.9s;
-o-transition:0.9s;
-moz-transition:0.9s;
transition:0.9s;
border: 1px solid rgba(253, 203, 72, 0.66);
box-shadow: 0px 0px 4px rgba(151, 133, 36, 0.34);
-webkit-box-shadow: 0px 0px 4px rgba(151, 133, 36, 0.34);
-moz-box-shadow: 0px 0px 4px rgba(151, 133, 36, 0.34);
-o-box-shadow:0px 0px 4px rgba(151, 133, 36, 0.34);
}
#formulario input[type="submit"]{
font-size: 16px;
padding: 10px 20px;
color: #FFF;
cursor: pointer;
font-family: Arial, Helvetica, sans-serif;
border: none;
margin-left: 50%;
margin-top: 2%;
background: #DF7401;
}
#formulario input[type="submit"]:hover{
background: #6087B6;
}
#formulario input[value="calcular"]{
background: #6087B6;
}
Anexo 3 Código Java Script:
var parameters = {
target: '#plot',
data: [{
fn: 'sin(x)',
color: 'red'
},{
fn: 'sin(x)',
color: 'lightgreen',
range:[2,6],
closed: true
}
],
grid: true,
yAxis: {domain: [-1, 1]},
xAxis: {domain: [0, 2*Math.PI]}
};
function plot() {
var f = document.querySelector("#mySelect").value;
var a = document.querySelector("#a").value;
var b= document.querySelector("#b").value;
var xMin;
if(b=="")
b=0;
ESCUELA POLITÉCNICA NACIONAL
FACULTAD DE INGENIERÍA DE SISTEMAS
INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN
PROYECTO BIMESTRAL DE LA MATERIA DE MÉTODOS NUMERICOS
13
if(b<=0 && f=="log(x)"){
a=1;
b=1;
}
if(a!=0){
xMin = a-3;
} else {
xMin =-5;
}
var xMax;
if(b!=0){
xMax = b*1.5;
} else {
xMax = 5;
}
var yMin=-5;
var str;
var yMax=5;
if(f=="x"){
str="var yMax = "+f.replace("x",b)+"+5;";
} else if( f=="x*x"){
var temp =f.replace("x",b);
str="var yMax = "+temp.replace("x",b)+"+5;";
} else if(f!=""){
str="var yMax = Math."+f.replace("(x)","("+b+")")+"+5;";
}
eval(str);
var color = 'red';
parameters.data[0].fn = f;
parameters.xAxis.domain = [xMin, xMax];
parameters.yAxis.domain = [yMin, yMax];
parameters.data[0].color = color;
parameters.data[1].fn = f;
parameters.data[1].range[0]=a;
parameters.data[1].range[1]=b;
functionPlot(parameters);
instance.on
}
Anexo 4 logo usado para el programa:

Más contenido relacionado

La actualidad más candente

DIFERENCIACIÓN E INTEGRACIÓN ANÁLISIS NUMÉRICO
DIFERENCIACIÓN E INTEGRACIÓN ANÁLISIS NUMÉRICO DIFERENCIACIÓN E INTEGRACIÓN ANÁLISIS NUMÉRICO
DIFERENCIACIÓN E INTEGRACIÓN ANÁLISIS NUMÉRICO DeysiEscobar
 
Diferenciación e Integración Numérica
Diferenciación e Integración NuméricaDiferenciación e Integración Numérica
Diferenciación e Integración Numéricajdenissse33
 
Programación en matlab
Programación en matlabProgramación en matlab
Programación en matlabyito24
 
Presentaciã³n metodos numericos
  Presentaciã³n metodos numericos  Presentaciã³n metodos numericos
Presentaciã³n metodos numericosVeronica Villasana
 
Integracion numerica
Integracion numericaIntegracion numerica
Integracion numericaKevinGVG
 
Regla Del Trapecio
Regla Del TrapecioRegla Del Trapecio
Regla Del Trapeciopaulamelissa
 
Método del trapecio en scilab, código integración numérica
Método del trapecio en scilab, código integración numéricaMétodo del trapecio en scilab, código integración numérica
Método del trapecio en scilab, código integración numéricaTensor
 
DIFERENCIACION E INTEGRACION NUMERICA
DIFERENCIACION E INTEGRACION NUMERICA  DIFERENCIACION E INTEGRACION NUMERICA
DIFERENCIACION E INTEGRACION NUMERICA JoseGonzalezOlivera1
 
Método numérico - regla de simpson
Método numérico  - regla de simpsonMétodo numérico  - regla de simpson
Método numérico - regla de simpsonJoe Arroyo Suárez
 
Construyendo un Modelo de Regresión Lineal Simple
Construyendo un Modelo de Regresión Lineal SimpleConstruyendo un Modelo de Regresión Lineal Simple
Construyendo un Modelo de Regresión Lineal SimpleA.Vela
 
Aplicacion Libre 2. Metodos de Trapecio y Metodos de Simpson
Aplicacion Libre 2. Metodos de Trapecio y Metodos de SimpsonAplicacion Libre 2. Metodos de Trapecio y Metodos de Simpson
Aplicacion Libre 2. Metodos de Trapecio y Metodos de SimpsonRomario Fajardo
 
Diferenciación e integración numérica
Diferenciación e integración numéricaDiferenciación e integración numérica
Diferenciación e integración numéricaFranciscoAlvarado115
 
Metodos numericos basicos_para_ingen
Metodos numericos basicos_para_ingenMetodos numericos basicos_para_ingen
Metodos numericos basicos_para_ingenedamcar
 
Guia de estudio 1 (tema 1 sistemas numericos)
Guia de estudio 1 (tema 1 sistemas numericos)Guia de estudio 1 (tema 1 sistemas numericos)
Guia de estudio 1 (tema 1 sistemas numericos)pedroperez683734
 
Método del trapecio - grupo 5 UNI profe Naupay
Método del trapecio - grupo 5 UNI profe NaupayMétodo del trapecio - grupo 5 UNI profe Naupay
Método del trapecio - grupo 5 UNI profe Naupaygemc12
 
Slideshare analisis numerico
Slideshare analisis numericoSlideshare analisis numerico
Slideshare analisis numericoMarioColmenarez1
 
Método numérico regla de simpson
Método numérico   regla de simpsonMétodo numérico   regla de simpson
Método numérico regla de simpsonNayeli Castillo
 

La actualidad más candente (20)

DIFERENCIACIÓN E INTEGRACIÓN ANÁLISIS NUMÉRICO
DIFERENCIACIÓN E INTEGRACIÓN ANÁLISIS NUMÉRICO DIFERENCIACIÓN E INTEGRACIÓN ANÁLISIS NUMÉRICO
DIFERENCIACIÓN E INTEGRACIÓN ANÁLISIS NUMÉRICO
 
Diferenciación e Integración Numérica
Diferenciación e Integración NuméricaDiferenciación e Integración Numérica
Diferenciación e Integración Numérica
 
Programación en matlab
Programación en matlabProgramación en matlab
Programación en matlab
 
Presentaciã³n metodos numericos
  Presentaciã³n metodos numericos  Presentaciã³n metodos numericos
Presentaciã³n metodos numericos
 
Integracion numerica
Integracion numericaIntegracion numerica
Integracion numerica
 
Regla Del Trapecio
Regla Del TrapecioRegla Del Trapecio
Regla Del Trapecio
 
Método del trapecio en scilab, código integración numérica
Método del trapecio en scilab, código integración numéricaMétodo del trapecio en scilab, código integración numérica
Método del trapecio en scilab, código integración numérica
 
DIFERENCIACION E INTEGRACION NUMERICA
DIFERENCIACION E INTEGRACION NUMERICA  DIFERENCIACION E INTEGRACION NUMERICA
DIFERENCIACION E INTEGRACION NUMERICA
 
Método numérico - regla de simpson
Método numérico  - regla de simpsonMétodo numérico  - regla de simpson
Método numérico - regla de simpson
 
Construyendo un Modelo de Regresión Lineal Simple
Construyendo un Modelo de Regresión Lineal SimpleConstruyendo un Modelo de Regresión Lineal Simple
Construyendo un Modelo de Regresión Lineal Simple
 
Regla del trapecio
Regla del trapecioRegla del trapecio
Regla del trapecio
 
4.2.1
4.2.14.2.1
4.2.1
 
Aplicacion Libre 2. Metodos de Trapecio y Metodos de Simpson
Aplicacion Libre 2. Metodos de Trapecio y Metodos de SimpsonAplicacion Libre 2. Metodos de Trapecio y Metodos de Simpson
Aplicacion Libre 2. Metodos de Trapecio y Metodos de Simpson
 
Diferenciación e integración numérica
Diferenciación e integración numéricaDiferenciación e integración numérica
Diferenciación e integración numérica
 
Metodos numericos basicos_para_ingen
Metodos numericos basicos_para_ingenMetodos numericos basicos_para_ingen
Metodos numericos basicos_para_ingen
 
Guia de estudio 1 (tema 1 sistemas numericos)
Guia de estudio 1 (tema 1 sistemas numericos)Guia de estudio 1 (tema 1 sistemas numericos)
Guia de estudio 1 (tema 1 sistemas numericos)
 
Método del trapecio - grupo 5 UNI profe Naupay
Método del trapecio - grupo 5 UNI profe NaupayMétodo del trapecio - grupo 5 UNI profe Naupay
Método del trapecio - grupo 5 UNI profe Naupay
 
Slideshare analisis numerico
Slideshare analisis numericoSlideshare analisis numerico
Slideshare analisis numerico
 
Ensayogaac
EnsayogaacEnsayogaac
Ensayogaac
 
Método numérico regla de simpson
Método numérico   regla de simpsonMétodo numérico   regla de simpson
Método numérico regla de simpson
 

Similar a Informe collaguazo herrera_venegas

Pia grupo12 equipo1
Pia grupo12 equipo1Pia grupo12 equipo1
Pia grupo12 equipo1javicool
 
Metodos numéricos, códigos en Matlab
Metodos numéricos, códigos en MatlabMetodos numéricos, códigos en Matlab
Metodos numéricos, códigos en MatlabBryan José Sarango
 
métodos numéricos ecuaciones diferenciales mat.pptx
métodos numéricos ecuaciones diferenciales mat.pptxmétodos numéricos ecuaciones diferenciales mat.pptx
métodos numéricos ecuaciones diferenciales mat.pptxadolfocampostovar
 
Introducción a los Métodos Numéricos
Introducción a los Métodos NuméricosIntroducción a los Métodos Numéricos
Introducción a los Métodos NuméricosJoanny Ibarbia Pardo
 
1raclasedemtodosnumricos-150903221928-lva1-app6892 (1).pptx
1raclasedemtodosnumricos-150903221928-lva1-app6892 (1).pptx1raclasedemtodosnumricos-150903221928-lva1-app6892 (1).pptx
1raclasedemtodosnumricos-150903221928-lva1-app6892 (1).pptxYeshuaCamposChvez
 
Analisis Numerico
Analisis NumericoAnalisis Numerico
Analisis NumericoJose Rivero
 
Metodos de programcion no lineal
Metodos de programcion no linealMetodos de programcion no lineal
Metodos de programcion no linealAngel Jhoan
 
Practica2 Algoritmo de cambio de base, de la division
Practica2 Algoritmo de cambio de base, de la divisionPractica2 Algoritmo de cambio de base, de la division
Practica2 Algoritmo de cambio de base, de la divisionIrvingg Kennedy Mcfly
 
Parámetros log normal3p
Parámetros log normal3pParámetros log normal3p
Parámetros log normal3pKarol Esplana
 
Actividad slideshare
Actividad slideshareActividad slideshare
Actividad slideshareLuis Verde
 
Teoria de optimizacion by. manuel rivas
Teoria de optimizacion by. manuel rivasTeoria de optimizacion by. manuel rivas
Teoria de optimizacion by. manuel rivasmanuelrivasv95
 

Similar a Informe collaguazo herrera_venegas (20)

Metodos numericos equipo 3
Metodos numericos equipo 3Metodos numericos equipo 3
Metodos numericos equipo 3
 
Pia grupo12 equipo1
Pia grupo12 equipo1Pia grupo12 equipo1
Pia grupo12 equipo1
 
Metodos numéricos, códigos en Matlab
Metodos numéricos, códigos en MatlabMetodos numéricos, códigos en Matlab
Metodos numéricos, códigos en Matlab
 
métodos numéricos ecuaciones diferenciales mat.pptx
métodos numéricos ecuaciones diferenciales mat.pptxmétodos numéricos ecuaciones diferenciales mat.pptx
métodos numéricos ecuaciones diferenciales mat.pptx
 
Trabajo final
Trabajo finalTrabajo final
Trabajo final
 
Integral definida
Integral definidaIntegral definida
Integral definida
 
Introducción a los Métodos Numéricos
Introducción a los Métodos NuméricosIntroducción a los Métodos Numéricos
Introducción a los Métodos Numéricos
 
A.1.3. Investigación.pdf
A.1.3. Investigación.pdfA.1.3. Investigación.pdf
A.1.3. Investigación.pdf
 
1raclasedemtodosnumricos-150903221928-lva1-app6892 (1).pptx
1raclasedemtodosnumricos-150903221928-lva1-app6892 (1).pptx1raclasedemtodosnumricos-150903221928-lva1-app6892 (1).pptx
1raclasedemtodosnumricos-150903221928-lva1-app6892 (1).pptx
 
Metodo de biseccion en matlab
Metodo de biseccion  en matlabMetodo de biseccion  en matlab
Metodo de biseccion en matlab
 
Metodo de biseccion en matlab
Metodo de biseccion  en matlabMetodo de biseccion  en matlab
Metodo de biseccion en matlab
 
Analisis Numerico
Analisis NumericoAnalisis Numerico
Analisis Numerico
 
Metodos de programcion no lineal
Metodos de programcion no linealMetodos de programcion no lineal
Metodos de programcion no lineal
 
Practica2 Algoritmo de cambio de base, de la division
Practica2 Algoritmo de cambio de base, de la divisionPractica2 Algoritmo de cambio de base, de la division
Practica2 Algoritmo de cambio de base, de la division
 
Parámetros log normal3p
Parámetros log normal3pParámetros log normal3p
Parámetros log normal3p
 
Integracion Numérica.doc
Integracion Numérica.docIntegracion Numérica.doc
Integracion Numérica.doc
 
Proyectto metodos numericos 2014 (2) 1
Proyectto metodos numericos 2014 (2) 1Proyectto metodos numericos 2014 (2) 1
Proyectto metodos numericos 2014 (2) 1
 
Actividad slideshare
Actividad slideshareActividad slideshare
Actividad slideshare
 
Teoria de optimizacion by. manuel rivas
Teoria de optimizacion by. manuel rivasTeoria de optimizacion by. manuel rivas
Teoria de optimizacion by. manuel rivas
 
Clase-7 Integración.pdf
Clase-7 Integración.pdfClase-7 Integración.pdf
Clase-7 Integración.pdf
 

Informe collaguazo herrera_venegas

  • 1. ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA DE SISTEMAS INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN PROYECTO BIMESTRAL DE LA MATERIA DE MÉTODOS NUMERICOS 1  Resumen—Se realizó una aplicación web mediante el uso de html, css, javascript y php. Esto permitió visualizar y comparar las integrales definidas de varias funciones. Para ello se utilizó métodos de integración numérica, los cuales fueron el método del trapecio, el método de Simpson y la cuadratura Gaussiana. La aplicación fue diseñada para realizar el cálculo de integrales numéricas de 5 tipos diferentes de funciones, arrojando resultados conjuntos de los 3 métodos antes mencionados. Además, se implementó un gráfico que facilita la visualización de los resultados, mediante el uso de una librería para graficar funciones en javascript. Finalmente, gracias a la comparativa realizada se pudo concluir que el método más eficiente por coste computacional y con una precisión adecuada es el método de Simpson para integración numérica. Además, se consiguieron resultados favorables en la ejecución de los algoritmos, y se comprendió el uso de cada método para su posterior aplicación en el ámbito profesional cuando se necesite. Abstract— A web application was developed by using the programming languages of html, css, javascript and php. This allowed to visualize and compare the definite integrals of various functions. In order to do this, there were used numeric integration methods, which were the trapezium rule, the Simpson method and the Gauss quadrature. The application was designed to perform the calculation of the numeric integrals of 5 different function types, showing joint results of the 3 previously mentioned methods. Furthermore, a graph was implemented which facilitates the visualization of the results, through a javascript library. Finally, thanks to the previously performed comparative, it was concluded that the most efficient method because of computer’s cost and good enough precision was Simpson’s. Additionally, favorable results were obtained in the execution of the algorithms, and its use was understood for the posterior applications in the professional field when needed. Palabras Claves— Integración numérica, Cuadratura Gaussiana, Trapecio, Simpson, aplicación comparativa. I. INTRODUCCIÓN Existen ocasiones en que no es posible calcular de manera exacta una integral, es en estos momentos cuando se utilizan los métodos para calcular integrales numéricas. Sin embargo, existen diversos métodos que llevan al mismo fin, entre ellos están el método del trapecio, de Simpson y la cuadratura Gaussiana. En el presente trabajo se realizó una comparativa de la precisión de los 3 métodos antes mencionados. Para este fin, se procedió a diseñar una aplicación web con html, php, css y javascript; mediante la cual se pretende observar la ejecución de cada uno de los métodos y su precisión respecto de la respuesta exacta calculada analíticamente. Uno de los objetivos era la realización de una interfaz que pueda calcular adecuadamente las integrales definidas, con el método numérico correspondiente y siguiendo los lineamientos necesarios de acuerdo a la literatura. Además, se buscó que se pueda visualizar de forma clara el área en cuestión que es objeto de nuestro análisis, mediante un gráfico de la función que nos permita solventar este punto. A pesar de que anteriormente ya se han realizado trabajos computacionales que permitan la evaluación de integrales, algunos implementados en calculadoras, éstos normalmente sólo se enfocan en obtener la respuesta. Debido a este limitante, se optó por realizar la antes mencionada aplicación, que nos permita comparar más fácilmente la precisión de cada método. Se buscaba además realizar una implementación adecuada de los métodos numéricos en dicha interfaz, para conseguir un resultado lo más aproximado posible. Esto es una ayuda para obtener un conocimiento adecuado de los métodos de integración numérica, y poderlos aplicar correctamente cuando la situación lo requiera. En el presente informe se procederá a realizar unas breves consideraciones teóricas iniciales, en las cuales se hablará Aplicación Web para la Comparación de Métodos de Integración Numérica (Cuadratura Gaussiana, Trapecio y Simpson) Santiago Fabián Collaguazo Tonato, Jonathan Alexander Herrera Flores, Danny Esteban Venegas Villavicencio, GR3COM, santiago.collaguazo@epn.edu.ec, jonathan.herrera01@epn.edu.ec, danny.venegas@epn.edu.ec Ingeniería en Computación (RRA), Facultad de Sistemas, Escuela Politécnica Nacional Dr. José Francisco Lucio Naranjo
  • 2. ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA DE SISTEMAS INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN PROYECTO BIMESTRAL DE LA MATERIA DE MÉTODOS NUMERICOS 2 acerca de los lenguajes de programación usados y los métodos de integración numérica. Luego se procederá a realizar la descripción de los métodos y herramientas con los cuales se piensa llegar a este fin. En la siguiente sección, se procederá a describir los resultados obtenidos, los cuales se inclinan a favor del método de Simpson en cuanto a precisión, para posteriormente poder realizar la discusión de los mismos. Finalmente se concluyó que el método más favorable es el método de Simpson, debido a su coste computacional, su fácil implementación y su precisión. Además que se pudo apreciar el funcionamiento adecuado de cada uno de los métodos de integración numérica. II. CONSIDERACIONES TEORICAS FUNDAMENTALES. A. Integración Numérica. Es la forma por la cual se puede calcular una integral definida, estructurada por algoritmos finitos que permitan la resolución de dicha integral si es que no es posible el cálculo analítico [1]. B. Método de Cuadratura Gaussiana. El método de cuadratura gaussiana permite el cálculo de una integración (aproximada) empleando sumatorias simples. Es parecido al método de trapecio, pero permitiendo flexibilidad al momento de asignar los subintervalos, pudiendo así escoger los más adecuados. Esto se realiza mediante el cálculo de las raíces de polinomios de interés en el rango de –1 a 1, y otras operaciones adicionales. En la ecuación (1) se puede visualizar la formula general para este método. El termino Xi y Wi se calculan con las ecuaciones (2) y (3) respectivamente. Los polinomios de Legendre serán usados como polinomios de interés, y se calculan mediante la ecuación (4) teniendo en cuenta que P1 = 1 y P2 = x [2]. ∫ 𝑓(𝑥)𝑑𝑥 ≈ 𝑏 − 𝑎 2 ∑ 𝑓(𝑋𝑖) ∗ 𝑊𝑖 (1) 𝑛 𝑖=1 𝑏 𝑎 Donde: 𝑋𝑖 = 𝑏 − 𝑎 2 ∗ 𝑟𝑎𝑖𝑧[𝑖] + 𝑏 + 𝑎 2 (2) Y 𝑊𝑖 = −2 (𝑛 + 1) ∗ 𝑃´𝑛(𝑟𝑎𝑖𝑧[𝑖]) ∗ 𝑃𝑛+1(𝑟𝑎𝑖𝑧[𝑖]) (3) Donde P’n es la derivada de Pn que a su vez es el polinomio de Legendre de grado n. 𝑃𝑛 = ( 1 𝑛 ) [(2𝑛 − 1)𝑋 ∗ 𝑃𝑛−1 − (𝑛 − 1) ∗ 𝑃𝑛−2] (4) Intervalos de interés para todos los polinomios donde están sus raíces [-1,1]. C. Método de Simpson. El método de Simpson permite calcular el área bajo la curva mediante el uso de parábolas (trapecios curvilíneos) por medio de la interpolación con una función cuadrática. En la ecuación (5) muestra claramente la formula general para la aplicación de este método. Para calcular h usaremos la ecuación (5) que representa el rango de cada parábola a calcular [3]. 𝐼 ≅ ℎ 3 (𝑓𝑜 + 4 ∑ 𝑓2𝑗−1 + 2 ∑ 𝑓2𝑛 + 𝑓𝑛 𝑛 2 −1 𝑗=𝑖 𝑛 2 𝑗=1 ) (5) Donde h puede ser calculada por la ecuación (6) ℎ = 𝑏 − 𝑎 𝑛 (6) D. Método de los Trapecios. El método de trapecios es aquel por el cual se puede calcular una aproximación al resultado exacto de una integración numérica usando una sumatoria de un numero n de trapecios a lo largo de la curva de intervalo [a,b]. Como se puede visualizar en la ecuación (7) que es la representación general de este método. Así como el valor de h es calculado mediante la ecuación (6) [4]. 𝐼 ≅ ℎ 2 (𝑓𝑜 + 2 ∑ 𝑓(𝑋𝑖) + 𝑓𝑛 𝑛−1 𝑖=1 ) (7) Si se visualiza la ecuación (2) y (3) un término Raíz hace aparición, este término no es más que la raíz del polinomio de Legendre el cual se calcula mediante un método conocido como híbrido o secante-bisección. E. Método híbrido para cálculo de raíces de un polinomio. Este método permite combinar lo mejor de dos métodos como son secante y bisección (la rapidez de ejecución de Secante con la garantía de convergencia de bisección). El método toma el intervalo los bisecciona y trata de calcular su raíz mediante la ecuación (8) [5]. 𝐶 𝑘 = 𝑏 𝑘 − 𝑓(𝑏 𝑘) ( 𝑏 𝑘 − 𝑎 𝑘 𝑓(𝑏 𝑘) − 𝑓(𝑎 𝑘) ) (8) Con k=0,1,………, n.
  • 3. ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA DE SISTEMAS INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN PROYECTO BIMESTRAL DE LA MATERIA DE MÉTODOS NUMERICOS 3 Para que una raíz sea tomada como válida debe cumplir la condición expresada en la ecuación (9). |𝑓(𝑏 𝑘)| ≤ 𝑇 (9) Caso contrario se debe realizar la ecuación (10) y asignar los nuevos valores de la manera expresada en las ecuaciones (11) y (12). Si 𝑓(𝑏 𝑘) ∗ 𝑓(𝑐 𝑘) ≤ 0 (10) Hacer 𝑎 𝑘+1 = 𝑐 𝑘 (11) 𝑏 𝑘+1 = 𝑏 𝑘 (12) Caso contrario realizar las asignaciones (13) y (14) 𝑎 𝑘+1 = 𝑎 𝑘 (13) 𝑏 𝑘+1 = 𝑏 𝑘 (14) Al momento de programar se tiene como bases los lenguajes con los cuales la aplicación se desarrolló. F. PHP. Lenguaje de alto nivel con código abierto para el desarrollo web que puede ir junto a HTML. Una herramienta simple para principiantes que a su vez tiene un desarrollo más profesional. Con un código ejecutable desde un servidor o un generador de HTML [6]. G. CSS. Es el código de programación que permite estilizar una página web o archivos HTML (poner color, forma, formatos, etc). Es una herramienta muy usada para que los archivos HTML sean más puros y contenga solo datos e información dejando el estilo a CSS [7]. H. HTML. Es un lenguaje de programación estructurado usado principalmente para definir documentos web o paginas el cual define el orden dentro de las páginas usando hipertextos conocidos comúnmente como tags [8]. I. JavaScript. Lenguaje de programación basado en ECMAScript. Que permite la automatización de acciones o procesos como también la personalización de aplicaciones o sitios web. Mejorando la interfaz de usuario [9]. III. METODOLOGÍA Para poder comparar correctamente los métodos de integración numérica, se ha utilizado una aplicación programada en lenguaje php. Este lenguaje de programación tiene la ventaja de que se ejecuta directamente en el servidor, ahorrándole así coste computacional al usuario. Además, la personalización que nos permite tener en una aplicación web nos otorga la posibilidad de crear un diverso número de interfaces dinámicas. Esto es ideal para nuestras necesidades, ya que nos permite visualizar fácilmente los resultados de las integrales, además del área bajo la curva correspondiente. Inicialmente se diseñó una aplicación en lenguaje de programación php (Anexo 1) para poder realizar los cálculos en el servidor. Estos cálculos nos permiten obtener la integral mediante el método de cuadratura Guassiana. Para obtener esta integral se procedió en primer lugar a realizar la función que genera los Polinomios de Legendre, la cual se encarga de ejecutar una concatenación de cadenas de caracteres. Se obtienen, por lo tanto, los nuevos polinomios a partir del polinomio anterior, como se encuentra indicado en la ecuación (4). Se empezó además con f0=1 y f1=x. A continuación, se diseñó una función que evalúe cualquier función genérica de una variable, recibiendo un string con la función matemática, y una variable con el valor a evaluar. La dificultad de este punto consistió en poder transformar el string a una línea de código, sin embargo esto fue solventado fácilmente con el uso de la función eval() de php. Posteriormente, y siguiendo lineamientos similares a la función anterior, se procedió a diseñar una función que calcule una derivada numérica. Esta derivada numérica fue calculada con el método de diferenciación centrada, una tolerancia de 1*10-7 y un deltaX inicial de igual valor. En este punto surgió un inconveniente en cuanto al cálculo de la derivada de los polinomios de Legendre de grado muy alto, debido a que en ciertas ocasiones los resultados se aproximaban demasiado a 0, desbordando la variable y dando como resultado un 0. Dado que este valor se utiliza en divisiones, era imperante evitar que devuelva un valor de 0 inadecuado, por lo que se procedió a regular la tolerancia y el deltaX. De esta forma se consiguieron los resultados deseados y se evitó problemas posteriores. Se procedió luego a realizar el cálculo de Wi, como se encuentra en la ecuación (3), recibiendo como parámetros la raíz correspondiente y el grado del polinomio que se está calculando. A continuación, se utilizó el método de secante- bisección para realizar el cálculo de las raíces de una función cualquiera. Esta función recibe como dato la función creada, además del número aproximado de raíces que se espera. Como sabemos el intervalo de interés de estos polinomios es entre –1 y 1, por lo que este parámetro no fue necesario de ingresar en la función. Posteriormente, como última función antes de realizar el cálculo de la Cuadratura Gaussiana, se procedió a
  • 4. ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA DE SISTEMAS INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN PROYECTO BIMESTRAL DE LA MATERIA DE MÉTODOS NUMERICOS 4 realizar el Cálculo de la Xi correspondiente, tal y como se encuentra especificado en la ecuación (2). Finalmente se procedió a programar el cálculo de la cuadratura Gaussiana, utilizando las funciones previamente definidas, y de acuerdo con la ecuación (1), se obtiene la sumatoria de los valores mediante un método iterativo. La función terminó retornando el resultado obtenido, multiplicándolo por el rango y dividiéndolo para 2, tal y como se ve en la ecuación (1). Luego de ello se realizó el cálculo de las integrales con los otros métodos, en el caso del método de Simpson, se usa dos sumas iterativas y unos cálculos simples adicionales, utilizando el valor de n como el número de puntos. La ecuación que fue adaptada es la ecuación (5). Mientras que para el cálculo del método de trapecio se utilizó un bucle iterativo, con la adición de los cálculos necesarios para obtener el resultado, de acuerdo con la ecuación (7). Una vez que ya estuvo realizado el código php correspondiente se procedió a la creación de una interfaz mediante el uso de la sentencia <form> en html, además de validar los datos ingresados por el usuario desde el código en php. Para el ingreso de las funciones, se utilizó un combo-box, para evitar así el ingreso incorrecto de las funciones correspondientes. Se controló además que los datos ingresados por el usuario se mantengan una vez hayan sido calculadas las integrales mediante código php. Finalmente, se le dio estilo a las cajas de divisiones y formulario mediante el uso del lenguaje de programación CSS. Debido a que el usuario requerirá una representación visual para poder apreciar de mejor manera la comparativa, se procedió también a utilizar una librería en javascript para graficar las funciones de las cuales se requiere conseguir la integral. Esta librería, llamada function-plot, se encarga de hacer la gráfica de las funciones que son ingresadas, mediante varios parámetros. Los parámetros principales son el target, donde se ingresa la sección del documento donde se presentará el gráfico, y data, que es donde se ingresarán los valores de la función que se desea graficar. Además de estos parámetros, también hay otros parámteros adiconales como, por ejemplo: title, width, height, xAxis (type, label, domain), yAxis (mismas opciones que xAxis) y disableZoom [10]. De todos estos parámetros se ha utilizado: target, data, grid y domaain en yAxis y xAxis. Además, se usaron subparámetros para el campo data como son fn, color, range y closed, lo cual se puede observar en el script que fue creado para la aplicación (Anexo 3). Este script toma los valores de la aplicación y con ellos ejecuta la función que se encarga de graficar. Para la visualización del área que se va a integrar se realizó la graficación de dos funciones. Una de las funciones sólo fue graficada en el intervalo que se va a calcular, con el parámetro closed puesto en true, para que se sombree el área. La otra función fue configurada para que se grafique completamente, dando como resultado la función con el sombreo respectivo del área de integración. Finalmente se configuró la función para que tome los valores de la aplicación, y pueda así realizar el gráfico correspondiente. Se programó además para que se actualicen los espacios en los que se gráfica, para poder abarcar correctamente el área requerida. IV. RESULTADOS Para el análisis comparativo de los métodos se aplicarán 5 funciones principales las cuales serán ejemplos claros del funcionamiento de la aplicación, además de ser la forma principal de comparación entre los demás métodos de integración. Para todas las funciones se aplicarán los mismos límites, y el mismo valor de n tal como muestra la figura Fig1. Fig. 1: Datos iniciales y función seleccionada del programa. Al momento de darse clic en el botón calcular el programa arrojará los resultados y se tendrá tres apreciaciones. La primera entregara un valor correspondiente al resultado de usar el método de cuadratura gaussiana. El segundo valor entregará el resultado usando el método de trapecios que no es más que la sumatoria de trapecios sobrepuestos sobre la función. Y el tercer valor será el resultado de usar el método de Simpson que en este caso no usa trapecios sino polinomios de primer grado en cada intervalo de interés A. Función simple de primer grado: 𝑓(𝑥) = 𝑥 (15)
  • 5. ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA DE SISTEMAS INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN PROYECTO BIMESTRAL DE LA MATERIA DE MÉTODOS NUMERICOS 5 Es la función, representada por la ecuación (15), más simple de todas donde su grado es 1 por que su variable independiente esta elevada al valor 1. La integral exacta en el intervalo para esta función la podemos ver en la ecuación (16). Su gráfica además está representada en la Fig. 2 y los resultados retornados por el programa están en la Fig. 3. ∫ 𝑥𝑑𝑥 = 25 2 − 2 = 10,5 (16) 5 2 Fig. 2: Grafica de la función de primer grado que retorna el programa. Fig. 3: Resultado que arroja el programa. B. Función simple de segundo grado. 𝑓(𝑥) = 𝑥2 (17) Esta funcion represanta por la ecuacion (17) es aquella en la cual su variable independiente esta elevada al cuadrado. La integral exacta de esta función se encuentra en la ecuación (18). Su gráfica además se encuentra representada en la Fig. 4 y los resultados en la Fig. 5. ∫ 𝑥2 𝑑𝑥 = 125 3 − 8 3 = 39 (18) 5 2 Fig. 4: Grafica de la función de segundo grado que retorna el programa. Fig. 5: Resultado del cálculo del programa. C. Función Trigonométrica. 𝑓(𝑥) = 𝑠𝑒𝑛 (𝑥) (19) De entre toda la gama de funciones trigonométricas se decidió tomar la función seno representada por la ecuación (19). Esta función simboliza la relación del cateto opuesto con la hipotenusa en un triángulo rectángulo con respecto a un ángulo dado. Su integral exacta se encuentra en la ecuación (20). La gráfica de esta función se puede observar en la Fig. 6 y los resultados obtenidos por el programa en la Fig. 7. ∫ 𝑠𝑒𝑛(𝑥)𝑑𝑥 = − cos(5) + cos(2) 5 2 = −0.699809022 (20)
  • 6. ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA DE SISTEMAS INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN PROYECTO BIMESTRAL DE LA MATERIA DE MÉTODOS NUMERICOS 6 Fig. 6: Grafica de la función Trigonométrica seno que retorna el programa. Fig. 7: Resultado del cálculo del programa. D. Función Logarítmica. 𝑓(𝑥) = ln(𝑥) (21) El logaritmo natural de x es representado por la ecuación (21). Esta función mide el exponente al que se debe elevar el número e para conseguir el valor de x. Su integral exacta se la puede hallar en la ecuación (22). Además, su gráfica se encuentra en la Fig. 8 y los resultados obtenidos con las integrales numéricas en la Fig. 9. ∫ ln(𝑥) = 𝐼𝑛 ( 3125 4 ) − 3 = 3.660895201 (22) 5 2 Fig. 8: Grafica de la función logarítmica que retorna el programa. Fig. 9: Resultado del cálculo del programa. E. Función exponencial. 𝑓(𝑥) = 𝑒 𝑥 (23) La función exponencial más simple es e elevado a la x ya que al calcular su integral exacta indefinida la función sigue siendo la misma sin cambiar ni agregar nada. Se puede visualizar mejor en la ecuación (24). Además, su integral definida exacta en el intervalo se observa en la ecuación (24), su gráfica está en la Fig. 10 y los resultados del programa en la Fig. 11. ∫ 𝑒 𝑥 = 𝑒5 − 𝑒2 = 141.024103 (24) 5 2 Fig. 10: Grafica de la función exponencial que retorna el programa. Fig. 11: Resultado del cálculo del programa. V. DISCUSIÓN DE RESULTADOS. Debido a que se realizó una evaluación de los resultados exactos además de los métodos de integración numérica. Se puede evaluar a continuación una comparación adecuada para
  • 7. ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA DE SISTEMAS INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN PROYECTO BIMESTRAL DE LA MATERIA DE MÉTODOS NUMERICOS 7 las integrales de las 5 funciones. Se debe recordar que el intervalo usado en todas ellas es de 2 a 5, y que el valor asignado a n es 8. En el caso de la función lineal, podemos observar en la ecuación (16) que la solución exacta es 10,5. Esta solución es aproximada más efectivamente mediante los métodos de Simpson y el método de trapecio. Esto es debido a que el método del trapecio se encuentra en el grado de polinomios donde es exacto. Posteriormente, observando la función cuadrática, podemos ver que el valor exacto de la ecuación (18) es 39, donde el método de Simpson nos da un resultado completamente exacto, y el segundo método más cercano es el método de la cuadratura Gaussiana. En la función sen(x) la respuesta exacta de la ecuación (20) es -0.699809022, la cual se encuentra aproximada de mejor manera con el método de cuadratura Gaussiana. Sin embargo, el método de Simpson no se encuentra muy alejado del valor real. La función log(x) nos arroja un resultado exacto de 3.660895201 en la ecuación (22), el cual es aproximado de mejor manera por el método de cuadratura Gaussiana, seguido muy de cerca por el método de Simpson. Finalmente, la función ex nos arroja como resultado exacto 141.024103 en la ecuación (24), este resultado es mejor aproximado por la cuadratura Gaussiana, seguido igualmente muy de cerca por el método de Simpson. Como se puede apreciar, los 3 métodos se aproximan al resultado exacto. Y al comparar los resultados de las 5 funciones se deduce que el método de Simpson se aproximaba más a la solución exacta, en algunas ocasiones. Todos los métodos son dependientes de la variable n, que representa trapecios, curvas o grado para los métodos del trapecio, Simpson y cuadratura gaussiana respectivamente. Por tanto, el acercamiento a la solución exacta dependerá de la variable mencionada. Si consideramos los resultados podemos observar que para funciones lineales y cuadráticas el método de Simpson entrego un resultado exacto. Mientras que para las funciones trigonométricas, logarítmica y exponencial la cuadratura gaussiana nos entregó valores más exactos. Esto debido a la base matemática bajo la cual opera cada método. Por lo tanto, el método de cuadratura Gaussiana nos proporciona mayor exactitud en muchos de los casos, sin embargo, no debemos olvidar que también se necesita analizar el coste computacional. El método de cuadratura Gaussiana realiza muchas operaciones previas al cálculo de la Integral, algunas de las cuales tienen más de un bucle iterativo en su interior. Mientras que en cuanto a la interfaz se puedo lograr la creación de un entorno amigable, el cual permite de una forma sencilla el ingreso adecuado de los datos. Para poder ser procesados adecuadamente por los algoritmos del programa. Estos algoritmos pudieron ser implementados correctamente siguiendo los lineamientos adecuados y su funcionamiento matemático correcto. Finalmente, se debe tener en cuenta la influencia del error que se tiene en los resultados. Aplicando una tolerancia de 1e- 7 se obtuvo resultados aceptables, pero al aplicar una tolerancia menor, por el rango de 1e-8 en adelante, se obtiene un resultado infinito para la cuadratura gaussiana. Esto es debido a que se está operando sobre un número de coma flotante muy cercano a cero, lo cual conlleva a un desbordamiento de la variable al realizar la derivada. Este desbordamiento ocasiona divisiones para 0 en cálculos posteriores. Se debe recordar además que esta tolerancia medirá el error que se puede esperar de una aplicación en el ámbito laboral de estos métodos. Por esta razón debería de tener mayor libertad para ser modificada. Se debe tener presente que el resultado seguirá sin ser exacto debido al error, el cual puede llegarse a acumular en algunos casos como en la aplicación de procesos iterativos. VI. CONCLUSIONES Y PERSPECTIVAS Se logró diseñar exitosamente la aplicación que permita visualizar y comparar los métodos de integración numérica, gracias a ella se pudo además conseguir la comparativa de los métodos y reforzar su aprendizaje. La comparativa realizada indica que el método Simpson es el más eficiente, si bien no es el más exacto en algunas de las funciones, su coste computacional es menor en comparación con el método de cuadratura Gaussiana. Además, la precisión del método de Simpson es mayor que la del método del trapecio, y requiere menos subintervalos que el de cuadratura Gaussiana para obtener un resultado favorable. Esto se debe principalmente a que el método de cuadratura Gaussiana realiza muchas operaciones previas para poder realizar el cálculo de la integral numérica. El coste computacional combinado con la precisión es muy importante para el desarrollo de aplicaciones, ya que se debe siempre tener un balance entre el resultado y el uso de recursos. Por lo tanto, para aplicaciones posteriores es recomendable hacer uso de este método en los lugares donde se requiera realizar una integración numérica. Adicionalmente, en trabajos posteriores, se sugiere realizar cálculos con un rango más amplio de funciones para poder verificar los hallazgos del presente trabajo. Además, se deberá contemplar una mejor solución al problema del desbordamiento de la variable que almacena la derivada numérica, para evitar así la división para 0 al intentar conseguir tolerancias mayores. Una sugerencia para este problema es aumentar el tamaño de la variable en cuestión.
  • 8. ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA DE SISTEMAS INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN PROYECTO BIMESTRAL DE LA MATERIA DE MÉTODOS NUMERICOS 8 VII. REFERENCIAS BIBLIOGRAFICAS. [1] Forsythe, G., Moler, C. and Malcolm, M. (1977). Computer methods for mathematical computations. Englewood Cliffs, Nj: Prentice-Hall. [2] Burden, Richard L.; Faires, J. Douglas (1998). «§4.7: Cuadratura gaussiana». Análisis numérico. [3] U.N.M.d.P. Cátedra de Métodos Numéricos - dpto. de Matemática “Método de Simpson 1/3” [Online]Avialble: http://www3.fi.mdp.edu.ar/me todos/apuntes/simpson.pdf [4] Larson, R., Hostetler, R. and Edwards, B. (2006). Cálculo I. Madrid: McGraw-Hill. [5] W. Mora, "Métodos Híbridos para la Solución de Ecuaciones No Lineales. Implementaciones en VBA Excel", Tecdigital.tec.ac.cr, 2019. [Online]. Available: https://tecdigital.tec.ac.cr/revistamatematica/HERRA mInternet/Vol%209,%20No%202.%20(Febrero,%20 2009)/MetodosHibridos.pdf. [6] Php.net. (2019). PHP: ¿Qué es PHP? - Manual. [online] Available at: https://php.net/manual/es/intro- whatis.php. [7] "¿Qué es CSS? | CSS en español", Lenguajecss.com, 2019. [Online]. Available: https://lenguajecss.com/p/css/introduccion/que-es- css. [8] "Qué es HTML", CódigoFacilito, 2019. [Online]. Available: https://codigofacilito.com/articulos/que- es-html. [9] "Lenguaje Javascript - Documentación sobre programación web", Lenguajejs.com, 2019. [Online]. Available: https://lenguajejs.com/ [10]"Function Plot - 2d function plotter powered by d3", Mauriciopoppe.github.io, 2019. [Online]. Available: https://mauriciopoppe.github.io/function-plot/. VIII. ANEXOS Anexo 1 Código PHP del programa: <!--Integración comparativa: Cuadratura Gaussiana, Trapecio, Simpson--> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title> Proyecto 1B, Grupo 1</title> <meta name="description" content="Grupo1: Collaguazo, Herrera, Venegas" /> <link rel="stylesheet" href="recursos/style.css" /> <script src="https://d3js.org/d3.v3.min.js"></script> <script src="https://mauriciopoppe.github.io/function- plot/js/function-plot.js"></script> <script src="recursos/plotter.js"></script> </head> <body onload="plot();"> <?php if (isset($_POST["calcular"])) { $tolerancia=1e-7; $a=null; $b=null; $n=null; $a=$_POST["a"]; $b=$_POST["b"]; $function=$_POST["mySelect"]; if($function=="exp(x)") $function="pow(M_E,x)"; $n=$_POST["n"]; $errors = ''; //Generador de polinomios de Legendre function Legendre($n){ $f0="1"; $f1="x"; for($i=2;$i<=$n;$i++){ $fi="(1/".$i.")*((2*".$i."-1)*x*(".$f1.")-(".$i."- 1)*(".$f0."))"; $f0=$f1; $f1=$fi; } if($n==0){ return "1"; } else if($n==1){ return "x"; } else { return $fi; } } //Evaluador de una función genérica function fnEval($eva,$function){ $fun = str_replace("x",$eva,$function); eval("$foo = $fun;");
  • 9. ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA DE SISTEMAS INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN PROYECTO BIMESTRAL DE LA MATERIA DE MÉTODOS NUMERICOS 9 return $foo; } //Derivada de una función genérica function fnDeriv ($p,$function){ $deltaX=1e-7; $resultado_ant=mt_rand(); $resultado_act=mt_rand(); while(true){ $resultado_act=(fnEval($p+$deltaX,$function)- fnEval($p-$deltaX,$function))/(2*$deltaX); if(abs($resultado_ant- $resultado_act)<=$GLOBALS['tolerancia']){ return $resultado_act; } else{ $resultado_ant=$resultado_act; $deltaX=$deltaX/2; } } } //Cálculo de Wi para la ecuación function W($raiz,$n){ return - 2/(($n+1)*fnDeriv($raiz,Legendre($n))*fnEval($raiz,Legendr e($n+1))); } //Uso del método híbrido secante, biseccion para encontrar las raices function raices($function,$n){ $a = -1; $b = 1; $m = 3*$n*$n; $raicesIn=array(); $inc = ($b - $a) / $m; $aprox; for($x = $a ; $x < ($b - $inc) ; $x = $x + $inc){ if((fnEval($x,$function) * fnEval($x + $inc,$function)) < 0){ $x0=$x; $x1=$x+$inc; while(true){ $f0=fnEval($x0,$function); $f1=fnEval($x1,$function); $x2=$x1-$f1*($x1-$x0)/($f1-$f0); $f2=fnEval($x2,$function); if(abs($x2- $x1)<=$GLOBALS['tolerancia']||abs($f2)<=$GLOBALS['tole rancia']){ $raiz=$x2; array_push($raicesIn,$raiz); break; } if($f1*$f2<0){ $x0=$x2; } else { $x1=$x2; } } } } return $raicesIn; } function X($raiz,$a,$b){ return ($GLOBALS['b']- $GLOBALS['a'])/2*$raiz+($GLOBALS['b']+$GLOBALS['a'] )/2; } //Cálculo por Curva Gaussiana function cuadra($function,$n,$a,$b){ $raices=raices(Legendre($n),$n); $sum=0; for($i=0;$i<$n;$i++){ $sum=$sum+fnEval(X($raices[$i],$a,$b),$function)*W($ra ices[$i],$n); } $act=($b-$a)/2*$sum; return $act; } //Cálculo por trapecio function trapecio($function,$n,$a,$b){ $h=($b-$a)/$n; $suma=0; for ($i = 1; $i < $n; $i++) { $mul=$a+$h*$i; $suma+=fnEval($mul,$function); } $resultado_act=(($h/2)*(fnEval($a,$function)+fnEval($b,$f unction)+2*$suma)); return $resultado_act; } //Cálculo por Simpson function Simpson($function,$n,$a,$b){ $n=$n*2; $h=($b-$a)/$n; $suma1=0; for ($i = 1; $i <= $n/2; $i++) { $mul=$a+$h*(2*$i-1);
  • 10. ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA DE SISTEMAS INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN PROYECTO BIMESTRAL DE LA MATERIA DE MÉTODOS NUMERICOS 10 $suma1+=fnEval($mul,$function); } $suma2=0; for ($i = 1; $i <= $n/2-1; $i++) { $mul=$a+$h*2*$i; $suma2+=fnEval($mul,$function); } $resultado_act=(($h/3)*(fnEval($a,$function)+fnEval($b,$f unction)+4*$suma1+2*$suma2)); return $resultado_act; } if($a==null) { $errors .= "Por favor ingrese un valor para la variable a<br><br>"; }else { if (!preg_match("/^[0-9.-]*$/",$a)) { $errors .= "Sólo se permiten numeros en el campo a.<br><br>"; } } if($b==null) { $errors .= "Por favor ingrese un valor para la variable b<br><br>"; }else{ if (!preg_match("/^[0-9.-]*$/",$b)) { $errors .= "Sólo se permiten números en el campo b.<br><br>"; } if($a>$b){ $errors .= "Error el valor de b tiene que ser menor al valor de a.<br><br>"; } } if($n==null) { $errors .= "Por favor ingrese un valor para la variable n.<br><br>"; }else { if (!preg_match("/^[0-9.-]*$/",$n)) { $errors .= "Sólo se permiten numeros en el campo n.<br><br>"; } if($n>10 || $n<1){ $errors .= "Por favor ingrese un valor para n entre 1 y 10.<br><br>"; } } if(empty($errors)) { echo "<div class='relative'>"; echo "<div class='absolute' id='soluciones'>"."Cuadratura Gaussiana: ".cuadra($function,$n,$a,$b)."<br><br>"; echo "Trapecio: ".trapecio($function,$n,$a,$b)."<br><br>"; echo "Simpson: ".Simpson($function,$n,$a,$b)."<br>"."</div>"; echo "</div>"; } else{ echo "<div class='absolute' id='soluciones'>"."$errors"."</div>"; } } ?> <header> <img id="logo" alt="EPN" src="recursos/logo.png" /> </header> <div id = "principal"> <h1>Integración comparativa: Cuadratura Gaussiana, Trapecio, Simpson</h1> <h2>Grupo1: Collaguazo, Herrera, Venegas</h2> <div id="formulario"> <form method="post"> <div> <span><label>a (límite inferior)</label></span> <span><input value="<?php if(isset($_POST["a"]))print $a;else print "";?>" type="text" id="a" name="a" class="textbox" oninput="plot();"></span> </div> <div> <span><label>b (límite superior)</label></span> <span><input value="<?php if(isset($_POST["b"]))print $b;else print "";?>" type="text" id="b" name="b" class="textbox" oninput="plot();"></span> </div> <div> <span><label>Funci&oacute;n</label></span> <select id="mySelect" name="mySelect" onchange="plot();"> <option <?php if (isset($function) && $function=="x")?> value="x" id="x">x</option> <option <?php if (isset($function) && $function=="x*x")?> value="x*x" id="x*x">x^2</option> <option <?php if (isset($function) && $function=="sin(x)")?> value="sin(x)" id="sin(x)">sen(x)</option> <option <?php if (isset($function) && $function=="log(x)")?> value="log(x)" id="ln(x)">log(x)</option> <option <?php if (isset($function) && $function=="exp(x)")?> value="exp(x)" id="exp(x)">e^x</option>
  • 11. ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA DE SISTEMAS INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN PROYECTO BIMESTRAL DE LA MATERIA DE MÉTODOS NUMERICOS 11 </select> <script type="text/javascript"> document.getElementById('mySelect').value = "<?php echo $_POST['mySelect'];?>"; </script> </div> <div> <span><label>n (número de trapecios, curvas o grado)</label></span> <span><input value="<?php if(isset($_POST["n"])) print $n;else print "";?>" type="text" name="n" class="textbox"></span> </div> <br> <br> <div> <span id="res"><input type="submit" name="calcular" id="calcular" value="calcular"></span> </div> </form> </div> <div id="plot"> </div> </div> </body> </html> Anexo 2 Código CSS usado en el programa: *{ border: 0; margin: 0; padding: 0; } footer, header, hgroup, section{ display: block; } body{ color: #EE8533; font-family: Helvetica, Verdana; font-size: 1em; position: relative; } header{ background: #FFF; margin: 0; max-width: 100%; } a { color:#EE8533; font-weight: lighter; text-decoration: none; } a: hover { color: #F60; } img, video { max-width: 100%; color: #DF7401; box-shadow: 0 0.1em 5px #888; border: 0.1em solid #808080; border-radius: 0.5em; display: block; font-size: 1.8em; font-weight: normal; margin: 0 auto; text-transform: capitalize; padding:0; } #logo{ border-radius: 0; margin: 1em auto; width: auto; height: 180px; object-fit: cover; } #principal{ background: #EEEEEE; margin: 0 auto; padding: 0.2em; width: 99%; } #formulario{ display: inline-block; margin: 0; padding: 0.5em 0 0.5em 2em; position: relative; width: 46%; } h1{ text-align: center; } h2{ text-align: center; }
  • 12. ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA DE SISTEMAS INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN PROYECTO BIMESTRAL DE LA MATERIA DE MÉTODOS NUMERICOS 12 #plot{ border: 0.15em solid #808080; border-radius: 0.5em; position: absolute; top: 43%; right: 30%; width: 550px; } #calcular{ border: 0.15em solid #808080; border-radius: 0.5em; position: relative; top: 20%; right: 50%; max-width:35%; } #soluciones{ border: 0.15em solid #808080; border-radius: 0.5em; position: absolute; top: 60%; left: 70.5%; max-width:35%; } div #formulario input[type="text"]{ font-family: Arial, Geneva,Helvetica, sans-serif; color: #9C9C9C; padding: 8px; display: block; width: 60%; background:#fff; border: 1px solid rgba(214, 212, 209, 1); outline: none; -webkit-appearance: none; } div #formulario span label{ font-size: 0.8125em; color: #DF7401; line-height: 1.8em; padding-bottom:5px; } #formulario div{ padding: 0.5em 0; width: 50%; } div #formulario input[type="text"]:focus{ -webkit-transition:0.9s; -o-transition:0.9s; -moz-transition:0.9s; transition:0.9s; border: 1px solid rgba(253, 203, 72, 0.66); box-shadow: 0px 0px 4px rgba(151, 133, 36, 0.34); -webkit-box-shadow: 0px 0px 4px rgba(151, 133, 36, 0.34); -moz-box-shadow: 0px 0px 4px rgba(151, 133, 36, 0.34); -o-box-shadow:0px 0px 4px rgba(151, 133, 36, 0.34); } #formulario input[type="submit"]{ font-size: 16px; padding: 10px 20px; color: #FFF; cursor: pointer; font-family: Arial, Helvetica, sans-serif; border: none; margin-left: 50%; margin-top: 2%; background: #DF7401; } #formulario input[type="submit"]:hover{ background: #6087B6; } #formulario input[value="calcular"]{ background: #6087B6; } Anexo 3 Código Java Script: var parameters = { target: '#plot', data: [{ fn: 'sin(x)', color: 'red' },{ fn: 'sin(x)', color: 'lightgreen', range:[2,6], closed: true } ], grid: true, yAxis: {domain: [-1, 1]}, xAxis: {domain: [0, 2*Math.PI]} }; function plot() { var f = document.querySelector("#mySelect").value; var a = document.querySelector("#a").value; var b= document.querySelector("#b").value; var xMin; if(b=="") b=0;
  • 13. ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA DE SISTEMAS INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN PROYECTO BIMESTRAL DE LA MATERIA DE MÉTODOS NUMERICOS 13 if(b<=0 && f=="log(x)"){ a=1; b=1; } if(a!=0){ xMin = a-3; } else { xMin =-5; } var xMax; if(b!=0){ xMax = b*1.5; } else { xMax = 5; } var yMin=-5; var str; var yMax=5; if(f=="x"){ str="var yMax = "+f.replace("x",b)+"+5;"; } else if( f=="x*x"){ var temp =f.replace("x",b); str="var yMax = "+temp.replace("x",b)+"+5;"; } else if(f!=""){ str="var yMax = Math."+f.replace("(x)","("+b+")")+"+5;"; } eval(str); var color = 'red'; parameters.data[0].fn = f; parameters.xAxis.domain = [xMin, xMax]; parameters.yAxis.domain = [yMin, yMax]; parameters.data[0].color = color; parameters.data[1].fn = f; parameters.data[1].range[0]=a; parameters.data[1].range[1]=b; functionPlot(parameters); instance.on } Anexo 4 logo usado para el programa: