Módulos en Python: Módulos incluidos

Módulos en Python: Módulos incluidos

En el artículo anterior introducimos el concepto de módulos en python, y vimos que que un módulo no es más que un programa que actúa como un contenedor de funciones. Vimos que los módulos pueden ser importados y podemos hacer uso de las funciones que están contenidos en el módulo referenciando el nombre del módulo seguido de un punto y luego el nombre de la función. También aprendimos que podemos importar funciones específicas de un módulo, así como cambiar el nombre de la función importada. Comenzamos describiendo brevemente el módulo math. En este artículo y en los próximos describiremos con un poco más de detalle las funciones que están contenidas en el módulo math y describiremos otros modulos que estan incluidos en python.

Módulo math

El módulo math está constituido por funciones matemáticas, las cuales no se aplican a números complejos. Estas funciones están divididas en las siguientes categorías:

  1. Funciones de Teoria de Numeros y Representación
  2. Funciones Potenciales y Logarítmicas
  3. Funciones Trigonométricas
  4. Funciones de Conversión Angular
  5. Funciones Hiperbólicas
  6. Funciones Especiales
  7. Constantes

Funciones de Teoria de Numeros y Representación

math.ceil(x)

Esta función devuelve el valor del techo (ceiling) del valor x. En términos simple devuelve el número entero que es mayor o igual que x. Por ejemplo si aplicamos la función a un número entero, devolverá el valor del número, si colocamos un número de tipo float, devolvera el numero entero mayor a x.

>>>

>>> math.ceil(18)

18

>>> math.ceil(18.1)

19

>>> math.ceil(18.95)

19

>>>

math.copysign(x,y)

Devuelve un número de tipo float con la magnitud (valor absoluto) de x, y con el signo de y. En algunas plataformas se acepta el uso de cero con signo.

>>> math.copysign(2.56, -7)

-2.56

>>> math.copysign(2.56, -0.0)

-2.56

>>> math.copysign(2.56, 0.0)

2.56

>>> math.copysign(-2.56, 0.0)

2.56

>>>

math.fabs(x)

Devuelve el valor absoluto del valor x.

>>>

>>> math.fabs(5.754)

5.754

>>> math.fabs(-5.754)

5.754

>>>

math.factorial(x)

Devuelve el valor de la función factorial de un número. Da error si se aplica a números no enteros y a números negativos.

Factorial(n) = n*(n-1)*(n-2)* …..1

Factorial(8) = 8*7*6*5*4*3*2*1

>>> math.factorial(8)

40320

>>> math.factorial(-8)

Traceback (most recent call last):

File “”, line 1, in

math.factorial(-8)

ValueError: factorial() not defined for negative values

>>> math.factorial(8.25)

Traceback (most recent call last):

File “”, line 1, in

math.factorial(8.25)

ValueError: factorial() only accepts integral values

math.floor(x)

Devuelve el piso (floor) de x. Este es el valor del mayor entero que es menor o igual que x.

>>>

>>> math.floor(8)

8

>>> math.floor(8.05)

8

>>> math.floor(8.99)

8

>>>

math.fmod(x,y)

Esta función calcula el módulo de x con respecto a y. Esto es equivalente al residuo de la división de x entre y. Esta es una función útil para definir la divisibilidad de un número por otro número. Si el módulo de x de y es igual a cero, entonces x es divisible por y.

>>> math.fmod(27,3)

0.0

>>> math.fmod(28,3)

1.0

>>>

math.frexp(x)

Devuelve la mantisa y exponente de un número x, como un par (m, e). Donde m es un número de tipo float y e es un entero de forma que, x==m*2**e exactamente. Si x es cero, devuelve (0.0, 0), de cualquier otra forma 0.5 <= abs(m) < 1. Esto se utiliza para separar la representación de un número tipo float en una forma portable.

>>> math.frexp(0)

(0.0, 0)

>>> math.frexp(5.1)

(0.6375, 3)

>>> 0.6375*2**3

5.1

>>>

math.fsum(iteración)

Calcula de forma exacta la suma de valores de punto flotante. Evita la perdida de precisión mediante el rastreo de las múltiples sumas parciales intermedias.

>>> 0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1

0.9999999999999999

>>> math.fsum([0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1])

1.0

>>>

Se observa que una suma de 10 valores que debería resultar en un valor exacto de 1.0 daba un resultado de 0.99999999. Sin embargo cuando se utiliza math.fsum el valor da exactamente 1.0.

math.gcd(a,b)

Devuelve el valor del máximo común divisor de los números enteros a y b. Si a y b son dos enteros diferentes de cero, entonces el valor de gcd(a,b) es el valor del mayor entero positivo que divide a ambos números a y b. Si alguno de los números es cero, y el otro es un entero diferente de cero, entonces el maximo comun divisor es el entero diferente de cero.

>>> math.gcd(0,0)

0

>>> math.gcd(2,0)

2

>>> math.gcd(12,6)

6

>>> math.gcd(12,8)

4

>>>

math.isclose(a, b, *, rel_tol=1e-09, abs_tol=0.0)

Devuelve True si los valores a y b están próximos el uno del otro, en caso contrario devuelve False.

Para considerar que a y b están próximos se utilizan las tolerancias relativas y absolutas.

La rel_tol es la tolerancia relativa. Es la máxima diferencia entre a y b , relativo al mayor valor absoluto de a o b. Por ejemplo para establecer una tolerancia de 5%, se utiliza una rel_tol=0.05. La tolerancia por defecto es 1e-09, lo que asegura que los dos valores son iguales dentro de aproximadamente 9 cifras decimales. La rel-tol debe ser mayor que cero.

La abs-tol es el valor de la minima tolerancia absoluta. Útil para comparaciones cerca de cero. La abs-tol debe ser al menos cero.

Cuando no se utilizan los parámetros rel_tol y abs_tol, se utilizan los valores por defecto de estos parámetros, por lo que al evaluar la función para los valores 1 y 1.005 da False.

>>> math.isclose(1, 1.005)

False

Hay que utilizar la identificación de los parámetros, de lo contrario da error.

>>> math.isclose(1, 1.005, 0.5, 0)

Traceback (most recent call last):

File “”, line 1, in

math.isclose(1, 1.005, 0.5, 0)

TypeError: Function takes at most 2 positional arguments (4 given)

En este ejemplo se coloca el parámetro rel-tol=0.05 y la función da un valor de True, lo que indica que 1 y 1.005 están cercanos cuando se utiliza una tolerancia relativa de 0.05 (5%).

>>> math.isclose(1, 1.005, rel_tol=0.05)

True

En este ejemplo se utilizan ambos parámetros rel_tol y abs_tol. La evaluación de la función nos indica que 1 y 1.0005 están cercanos cuando se evalúan con los parámetros de tolerancia indicados, rel_tol=0.05, abs_tol=0.001.

>>> math.isclose(1, 1.0005, rel_tol=0.05, abs_tol=0.001)

True

Para que la función de como resultado True debe cumplirse la siguiente la siguiente expresión:

abs(a-b) <= max(rel_tol * max(abs(a), abs(b)), abs_tol).

Estamos evaluando el valor absoluto de la diferencia entre a y b y los estamos comparando con el valor máximo entre las tolerancias relativas y absolutas. Si el valor máximo de las tolerancias no es mayor que el valor absoluto de las diferencias entre a y b, entonces los valores a y b no están cercanos y la función evaluará False.

math.isfinite(x)

Devuelve True si x no es infinito o NaN, y False en caso contrario. (0.0 se considera como finito).

math.isinf(x)

Devuelve True si x no es ni infinito ni NaN, y False en caso contrario.

math.isnan(x)

Devuelve True si x es NaN (Not a number) no un número, y False en caso contrario.

math.ldexp(x, i)

Calcula y regresa el valor numérico de la expresión

x * (2**i)

Esta función es esencialmente la función inversa de frexp(x)

>>> math.frexp(16)

(0.5, 5)

>>> math.ldexp(0.5, 5)

16.0

math.modf(x)

Regresa la parte fraccional y la parte entera de x. Ambos resultados tienen el signo de x y son de tipo float.

>>> math.modf(15.87654)

(0.8765400000000003, 15.0)

math.trunc(x)

Devuelve el valor real de x, truncado a un valor entero.

>>> math.trunc(15.87654)

15

>>> math.trunc(-1.4142)

-1

En el próximo artículo revisaremos las otras funciones que están contenidas en el módulo math.

Anuncios

Modulos en Python

Modulos en Python

Python tiene disponible en su forma interactiva IDLE las operaciones aritméticas y algunas funciones, sin embargo si se requieren utilizar funciones matemáticas adicionales, estas no están disponibles de forma directa. Para poder acceder a estas funciones hay que importar un módulo que contenga las funciones matemáticas, este módulo tiene por nombre math. Leer más “Modulos en Python”

Introducción al Balance de Materia

Introducción al Balance de Materia

El balance de materia aplicado a la ingeniería de yacimiento es una técnica que se basa en las leyes de la conservación de la masa y la energía y que se ha utilizado casi desde el comienzo de la industria del petróleo, su finalidad es determinar el petróleo original en sitio, ayudar a definir el volumen de intrusión de agua del acuífero asociado al yacimiento y estimar el tamaño de la capa de gas en caso de que existan.

Para utilizar el balance de materia se necesita tener un histórico de los volúmenes de los fluidos producidos, así como de la presión estática promedio del yacimiento; se necesita conocer las propiedades de los fluidos en función de presión y temperatura (datos PVT), se necesitan conocer algunas propiedades de la roca, como la porosidad, la compresibilidad de la formación y la saturación de agua. Si existe un influjo de agua, también se necesita una función del influjo de agua como función de presión.

El balance de materia comenzó a ser utilizado en los años 1920s y 1930s. En 1929 Coleman, Wilde y Moore desarrollaron una ecuación definiendo la relación entre la presión de yacimiento y los volúmenes de gas y aceite producidos; el petróleo y gas remanente en el yacimiento y las propiedades de los fluidos. En 1936 Schilthuis modificó la ecuación propuesta por Coleman et al. Posteriormente numerosos autores han ido desarrollando la ecuación de balance de materia, en algunos casos para hacerla de aplicación general y en otros para desarrollar métodos de análisis para considerar el influjo de agua y la presencia de capa de gas. Entre los muchos autores podemos mencionar Tracy, 1955, efectuó una reordenación de la ecuación de balance de materia para facilitar su uso, también propuso mejoras en el procedimiento de predicción, incluyendo la relación de gas instantánea. En 1953 Van Everdingen, Timmerman y McMahon propusieron un método para la determinación del petróleo en sitio y el influjo de agua, utilizando un cálculo independiente del influjo de agua e incorporarlo en la ecuación de balance de materia, la cual debe ser lineal cuando se utilizan los valores correctos de influjo de agua y N. En 1961 McEwen analiza diferentes formas de expresar la ecuación de balance de materia como una línea recta y selecciona una donde la Expansión más el Influjo de Agua es igual a la Producción. Establece un procedimiento para calcular el influjo de agua e incorporarlo en la ecuación de balance de materia. En 1963 Havlena y Odeh proponen un método grafico para resolver la ecuación de balance de materia cuando se considera influjo de agua y/o capa de gas. En 1978 Campbell introdujo un análisis gráfico, que ayuda a comprender la dinámica de la energía que actúa en el yacimiento.

La aplicación de la ecuación de balance de materia fue la herramienta principal de análisis de yacimientos durante muchos años, antes de que el uso de computadoras se hiciera más común en la industria del petróleo. A pesar de que en la actualidad la simulación numérica es la opción preferida de análisis y pronóstico de yacimientos, aún sigue utilizándose la ecuación de balance de materia debido a que es una herramienta sencilla de utilizar, requiere una cantidad mínima de información y da una visión global de los principales elementos que intervienen como mecanismos de producción. Aun cuando se piense utilizar simulación numérica siempre es conveniente utilizar la ecuación de balance de materia.

Debido a que la ecuación de balance de materia es aún una herramienta de análisis muy importante, y que su uso es complementario, no excluyente de cualquier otro tipo de análisis, se recomienda tener un conocimiento de esta metodología. En este libro mostramos los elementos básicos de la ecuación general de balance de materia para yacimientos de petróleo, como interpretar la ecuación de balance de materia como la ecuación de una línea recta y como utilizar esta propiedad para utilizar diferentes reordenamientos y gráficos de diagnósticos para la determinación de los valores del petróleo original en sitio, influjo de agua y capa de gas. Espero que estas notas recogidas en este libro sean de utilidad para el lector.

Bibliografía

Introducción al Balance de Materia (Temas de Ingeniería de Yacimientos nº 1) (Spanish Edition) Kindle Edition

by Luis Brito (Author)

Suma de Paralelogramos

Integración Numérica: Método de Paralelogramos

Suma de paralelogramos

Este es el procedimiento más sencillo, fue la aproximación que utilizó Newton cuando desarrolló el cálculo integral.

Ya vimos que las sumas de Riemann son una aproximación adecuada para el cálculo de las áreas debajo de una función f(x) en el intervalo [a, b]. Si dividimos el intervalo entre a y b en n subintervalos de igual tamaño, se generarán n tiras rectangulares de igual ancho, h, ahora de acuerdo a la definición de Riemann, la altura de referencia en cada tira, puede ser cualquier valor de la función f(x), dentro del sub intervalo. Pero utilizar cualquier valor dentro del subintervalo, a pesar de que es teóricamente correcto, no es práctico desde el punto de vista de la automatización y estandarización del proceso.

Si la curva de función f(x) tiene pendiente positiva dentro del intervalo [a, b], si tenemos un sub intervalo [xi, xi+1] y tomamos como valor de la función el valor del extremo izquierdo de un sub intervalo f(xi), el área estimada por la suma de los paralelogramos será menor que el área verdadera. Entonces se obtendrá una aproximación por defecto al valor de la integral en el intervalo [a, b]. Esto se puede ver en la gráfica, donde los paralelogramos no cubren por completo el área debajo de la curva en el intervalo [2, 4]. En esta figura se utilizaron solamente dos sub intervalos para facilitar la visualización del concepto.

null

Si en lugar de utilizar el valor de la función en el extremo izquierdo del sub intervalo, utilizamos el valor de la función en el extremo derecho del sub intervalo, f(xi+1), entonces el área de los paralelogramos será mayor que el área verdadera. Entonces se obtendrá una aproximación por exceso al valor de la integral en el intervalo [a, b]. Esto se puede ver en la gráfica, donde los paralelogramos sobrepasan el área debajo de la curva en el intervalo [2, 4].

null

Ahora podríamos utilizar cualquier punto dentro del sub intervalo [xi, xi+1], pero para fines prácticos utilizaremos el punto medio del sub intervalo, xm= 1/2* (xi + xi+1) y utilizaremos el valor de la función en este punto, f(xm) como el valor de la altura del paralelogramo, en este caso se observa que la mitad del paralelogramo está en exceso y la otra mitad está en defecto, lo que produce cierto balance entre exceso y defecto, como se muestra en la figura.

null

En resumen, se puede decir que las opciones para el valor de la función f(x) en el sub intervalo son tres:

1.- En el extremo izquierdo del sub intervalo, se utiliza f(xi), es una aproximación por defecto, si la pendiente es positiva en el intervalo.

2.- En el extremo derecho del sub intervalo, se utiliza f(xi+1), es una aproximación por exceso, si la pendiente es positiva en el intervalo.

3.- En el punto medio del sub intervalo, f(xm), donde xm=1/2* (xi + xi+1), es una aproximación que tiene cierto nivel de balance.

A continuación, revisaremos los algoritmos utilizados para cada una de estas opciones y presentaremos algunos procedimientos en VBA Excel para la aplicación de los mismos.

Sumatorias Utilizando Ciclos For – Next

Para realizar sumatoria en VBA puede utilizarse un ciclo For – Next, el cual tiene la siguiente forma:

Hay que crear 2 variables una variable para almacenar el valor de la suma y una variable para que funcione como contador.

Por ejemplo, la variable i para ser el contador del ciclo For – Next y la variable Suma para almacenar la suma.

null

La estructura del ciclo For – Next consta de un contador, en este caso la variable i, que comienza con un valor inicial, a y un valor final, b, antecedido por el comando To. Luego está el comando Step, para introducir el valor del delta que hay que ir sumando al valor de i hasta alcanzar el valor b. El comando Step es opcional, si no se coloca toma como valor predeterminado uno. Para finalizar el ciclo se utiliza el comando Next, [i], donde es opcional colocar el nombre de la variable utilizada como contador del ciclo.

Los valores de a, b y st no necesitan ser número enteros, son números reales, que podrían tener tipo de dato Integer o Long (en el caso de que utilicemos valores enteros en la variable utilizada como contador); Single o Double ( en el caso de utilizar valores reales). Recomendándose el uso de Double.

Como en lugar del valor del delta x, por lo general se utiliza el número de sub intervalos entre a y b, n. Entonces delta x = (b – a )/n

Caso 1: Valor de la función en el extremo izquierdo.

El procedimiento a seguir es el siguiente:

1.- Definir la función a la cual se le va a calcular la integral

2.- Definir el intervalo [a, b]

3.- Establecer el número de sub intervalos, n (número de paneles).

4.- Calcular el valor de delta x=(b-a)/n.

5.- Establecer el ciclo For – Next desde a hasta (b-delta x), con paso (step) igual a delta x.

6.- Calcular el Producto de f(xi)*delta x para cada sub intervalo.

7. Efectuar la suma de Riemann de todos los productos de f(xi)*delta x, el resultado es la aproximación de la integral en el intervalo [a, b].

A continuación, se muestra una función definida por el usuario (UDF) para estimar el valor de la integral usando el valor de la función en el punto izquierdo del sub intervalo. Se ha creado una función para insertar la función a la que se le va a calcular integral.

Public Function ff1(x As Double) As Double

ff1 = x ^ 2 + 3

End Function

###

Public Function SumaP1(a As Double, b As Double, n As Long) As Double

Dim deltax As Double

deltax = (b – a) / n

Dim fi1 As Double

Dim sumpanel As Double

Dim i As Double

sumapanel = 0

For i = a To (b – deltax) Step deltax

fi1 = ff1(i)

sumapanel = sumapanel + fi1 * deltax

Next i

SumaP1 = sumapanel

End Function

Caso 2: Valor de la función en el extremo derecho.

El procedimiento a seguir es el siguiente:

1.- Definir la función a la cual se le va a calcular la integral

2.- Definir el intervalo [a, b]

3.- Establecer el número de sub intervalos, n (número de paneles).

4.- Calcular el valor de delta x=(b-a)/n.

5.- Establecer el ciclo For – Next desde (a + delta x) hasta b, con paso (step) igual a delta x.

6.- Calcular el Producto de f(xi+1)*delta x para cada sub intervalo.

7. Efectuar la suma de Riemann de todos los productos de f(xi+1)*delta x, el resultado es la aproximación de la integral en el intervalo [a, b].

A continuación, se muestra una función definida por el usuario (UDF) para estimar el valor de la integral usando el valor de la función en el punto derecho del sub intervalo. Se ha creado una función para insertar la función a la que se le va a calcular la integral.

Public Function ff1(x As Double) As Double

ff1 = x ^ 2 + 3

End Function

###

Public Function SumaP2(a As Double, b As Double, n As Long) As Double

Dim deltax As Double

deltax = (b – a) / n

Dim fi1 As Double

Dim sumpanel As Double

Dim i As Double

sumapanel = 0

For i = (a + deltax) To b Step deltax

fi1 = ff1(i)

sumapanel = sumapanel + fi1 * deltax

Next i

SumaP2 = sumapanel

End Function

Caso 3: Valor de la función en el punto medio del intervalo.

El procedimiento a seguir es el siguiente:

1.- Definir la función a la cual se le va a calcular la integral

2.- Definir el intervalo [a, b]

3.- Establecer el número de sub intervalos, n (número de paneles).

4.- Calcular el valor de delta x=(b-a)/n.

5.- Establecer el ciclo For – Next desde a hasta (b – delta x), con paso (step) igual a delta x.

6.- Calcular el punto medio del intervalo xm=(xi +xi+1)/2

6.- Calcular el Producto de f(xm)*delta x para cada sub intervalo.

7. Efectuar la suma de Riemann de todos los productos de f(xm)*delta x, el resultado es la aproximación de la integral en el intervalo [a, b].

A continuación, se muestra una función definida por el usuario (UDF) para estimar el valor de la integral usando el valor de la función en el punto derecho del sub intervalo. Se ha creado una función para insertar la función a la que se le va a calcular la integral.

Public Function ff1(x As Double) As Double

ff1 = x ^ 2 + 3

End Function

###

Public Function SumaP3(a As Double, b As Double, n As Long) As Double

Dim deltax As Double

deltax = (b – a) / n

Dim fi1 As Double

Dim sumpanel As Double

Dim i As Double

Dim m As Double

sumapanel = 0

For i = a To (b – deltax) Step deltax

m = (i + (i + deltax)) / 2

fi1 = ff1(m)

sumapanel = sumapanel + fi1 * deltax

Next i

SumaP3 = sumapanel

End Function

Comparación entre Casos

Para evaluar los 3 casos estudiados para la aproximación del valor de la integral se está utilizando la función f(x)= x^2+3. A continuación se muestra el valor analítico de la integral en el intervalo [0, 5].

null

Cuando se utiliza el valor de la función en los puntos extremos de los sub intervalos se obtiene una aproximación a la integral que puede ser por defecto, área menor que el área bajo la curva; o por exceso, área mayor que el área bajo la curva. Cuando se utiliza el valor de la función en el punto medio de los sub intervalos, se obtiene un balance entre las áreas en exceso y defecto, y la aproximación está bastante cerca del valor real de la integral, aún con un número pequeño de sub intervalos (n). En la figura se grafican el valor de las aproximaciones (eje de las Y) en función del número de sub intervalos utilizados (eje de las X), se muestran los tres casos, la curva de color azul, representando la aproximación por defecto y la curva de color rojo representando la aproximación en balance calculada en el punto medio de los sub intervalos y la curva de color naranja, representando la aproximación por exceso. Se observa que las aproximaciones por exceso y por defecto son simétricas y requieren más de 1000 sub intervalos para alcanzar valores más cercanos a la aproximación obtenida en el punto medio.

null

Al revisar la desviación porcentual, de las aproximaciones con respecto al valor analítico, se observa como la aproximación al utilizar el punto medio de los sub intervalos se acerca al valor analítico, con relativamente pocos subintervalos, n.

Bibliografía

Métodos Numéricos: Integración Numérica

https://www.amazon.com/dp/B06WLKTJPM

Suma de Rienmann

Suma de Riemann

Cuando se escucha hablar de integrales, las personas que han tenido algún contacto con el cálculo integral, casi automáticamente, lo asocian al valor de un área, esto quizás porque este fue uno de los primeros usos, que se le dio a esta herramienta del cálculo. A pesar de que el cálculo fue inventado por matemáticos como Isaac Newton y Gottfried Leibniz en el siglo XVII y desarrollado por una gran cantidad de matemáticos a partir de esa fecha, se conoce que Arquímedes manejaban un método, llamado de exhausción, que podría, muy bien, considerarse un antecesor al cálculo de integrales.

Newton introdujo la aproximación del cálculo de áreas debajo de curvas, utilizando rectángulos inscritos y rectángulos circunscritos, definiendo el concepto de que la igualdad en la relación entre las áreas de los rectángulos circunscritos e inscritos y que a medida que el ancho de las tiras rectangulares disminuye y el número de tiras aumenta al infinito, ambas áreas serán iguales y serán iguales al área debajo la curva.

null

La aproximación será más cercana al valor real del área irregular a medida que se aumenta el número de tiras rectangulares que se inscriben dentro del área.

null

La aproximación al área irregular es la suma de las áreas de todos los rectángulos inscritos dentro del área.

null

Donde l es longitud de la tira rectangular y h es el ancho de la tira. El ancho de las tiras puede ser igual o ser diferentes para cada tira.

Esas áreas son el sentido general simplemente un número, y su interpretación dependerá de que representan las variables l y h, por ejemplo:

Si l representa longitud y h representa ancho, entonces el área representa Area.

Si l representa velocidad y h representa un delta tiempo, entonces el área es Distancia.

Si l representa la tasa de producción y h representa un delta tiempo, entonces el área representa Producción Acumulada.

Si l representa la potencia y h representa un delta tiempo, entonces el área representa la Energía Consumida.

En términos generales l es una variable dependiente, que puede ser definida como una función f, de la variable dependiente. Por lo general utilizamos para la variable independiente las letras x, y algunas veces la letra t. Para la variable dependiente utilizamos la letra y=f(x).

null

La expresión a la derecha de la ecuación es lo que se conoce como una Suma de Riemann.

Definición

Supongamos que la función f(x) está definida para cualquier valor x en el intervalo [a, b]. La suma de Riemann para f(x) en el intervalo [a, b] es una expresión de la forma

null

El intervalo [a, b] ha sido dividido en n sub intervalos cuyas dimensiones son:

null

Una vez que la función f(x) ha sido definida y se ha definido un intervalo, una suma de Riemann se determina por la siguiente información.

1.- Una fragmentación del intervalo original, dividido en sub intervalos. Las dimensiones de los sub intervalos pueden ser iguales o diferentes.

2.- Un punto de muestreo para cada sub intervalo, el cual determina el valor de la función en cada sub intervalo.

Una suma de Riemann para la función f(x) es la suma de los productos de los valores de delta x y los valores de y=f(x).

Notación de Sumatoria

Cuando el número de sub intervalos es grande resulta inconveniente expresar la suma de Riemann como la suma de todos los elementos, por lo que se sustituye por un símbolo de sumatoria.

null

Así que una sumatoria de los productos de f(x) por delta x, en el intervalo [a, b] puede ser expresada de la siguiente forma:

null

Bibliografía

Brito, L: Métodos Numéricos: Integración Numérica

https://www.amazon.com/dp/B06WLKTJPM

Introducción a la Integración Numérica

Integración Numérica, Una Introducción

Antes de la invención de la geometría analítica y el cálculo en el siglo XVII por matemáticos como Fermat, Descartes (geometría analítica); Newton y Leibniz (cálculo). El cálculo de las áreas se abordaba completamente mediante métodos puramente geométricos. El cálculo de las áreas de figuras poligonales no constituía ningún problema, así que era materia conocida y muy utilizada el cálculo de triángulos, cuadrados, rectángulos, trapecios, pentágonos, hexágonos y en general cualquier polígono. Conseguir el área de figuras, que en lugar de segmentos rectos, estuviesen formado por curvas presentaban cierto problema, así que el conseguir el área de figuras curvas comenzó a definirse como un problema de cuadratura. Conseguir el área de un círculo se conocía como la cuadratura del círculo. Conseguir el área de una parábola limitada por un segmento se conocía como cuadratura de la parábola.

Los antecedentes a la cuadratura de curvas se pueden encontrar en el método de exhausción utilizado por Arquímedes para obtener el área de una parábola limitada por un segmento. El método utilizado por Arquímedes consistió en circunscribir dentro de la parábola una serie de triángulos cada vez más pequeños, hasta que estos agotaran el área de la parábola. A pesar de que existe en el fondo una filosofía de ir sumando áreas inscritas dentro de las figuras curvas, en ese momento no existían las herramientas matemáticas como para considerar este método como un método general para el cálculo de áreas para cualquier tipo de curvas.

En el siglo XVII se desarrollaron algunas herramientas matemáticas, como la geometría cartesiana y el cálculo, que permitieron introducir conceptos como el de función, que permitieron visualizar las curvas como un conjunto de coordenadas (x, y), donde y=f(x). Newton aproximó el área debajo de una curva utilizando una serie de rectángulos inscritos y circunscritos a la curva, donde cada rectángulo tenía una altura y=f(x) y donde el ancho era un delta x, definió que a medida que el ancho de los rectángulos se hacía más pequeño y el número de rectángulo aumentaba al infinito la relación entre las áreas de los rectángulos inscritos y circunscrito se aproximaba a la unidad y las áreas se aproximaban al área bajo la curva.

Posteriormente se desarrolló el concepto de la integral de una función como un proceso de anti diferenciación, que permitió obtener el valor de la integral (área bajo la curva) de forma analítica, sin necesidad de tener que recurrir a la sumatoria de elementos.

A pesar que existe una fórmula analítica de obtener la integral definida de una función, cuando se utilizan programas numéricos, no es fácil obtener una función que represente la anti derivada de la función a integrar, aún para funciones muy simples. Por otra parte, existen funciones que tienen integrales analíticas muy complejas.

Con la finalidad de obtener la integral definida de funciones de una forma general sin necesidad de obtener la antiderivada de la función existen una serie de métodos, que pueden agruparse bajo el término de cuadraturas. Hay básicamente dos tipos de cuadratura: El primero es utilizando las Series de Taylor, del cual se deriva la fórmula de Newton Cotes, la cual dependiendo del número de términos utilizado se obtienen las diferentes fórmulas como la trapezoidal y las reglas de Simpson 1/3 y 3/8. El otro tipo de cuadratura utiliza los polinomios ortogonales, entre los cuales se encuentran los de Legendre, Laguerre, Chevishev, y otros, Un ejemplo de este tipo de cuadraturas es la cuadratura de Gauss.

 

Bibliografía

Métodos Numéricos: Integración Numérica

https://www.amazon.com/dp/B06WLKTJPM

Dividiendo Números Enteros con Puntos

 

Dividir es una operación que implica distribuir equitativamente una cantidad (dividendo) entre un número de contenedores (divisor), donde el resultado (cociente) es igual a la cantidad que le responde a cada contenedor. Si estamos hablando de la división en termino de números enteros, esta puede ser exacta, es decir, tiene residuo igual a cero, o puede ser inexacta, tiene residuo igual a un número entero mayor que cero y menor que el divisor.

clip_image002

El dividendo, la cantidad que queremos repartir equitativamente puede representar cualquier cosa, puntos, monedas, caramelos, manzanas, granos, etc.

El divisor es el número de elementos, contenedores a los cuales les queremos distribuir el dividendo. El divisor puede representar, personas, vasijas, contenedores, etc.

El cociente es la cantidad igual que le toca a cada uno de los elementos del divisor. Representa igual que el dividendo, si el dividendo son manzanas, entonces el cociente representa el número de manzanas que le corresponde a cada uno de los elementos del divisor.

Podemos visualizar una división como una repartición, como la que se ven en las películas de piratas cuando dividían un tesoro o como en las películas de gánsteres cuando dividían el botín; pero claro sin las trampas de uno para ti y dos para mí. En una división la repartición es equitativa, igual para cada uno. Así que podemos simular una división haciendo una repartición del dividiendo elemento por elemento a cada uno de los miembros del divisor hasta que el resto sea igual a cero o exista un resto menor que el divisor.

Una forma es utilizando puntos. Colocamos el divisor como un grupo de líneas igual al divisor, así si el divisor es 3 colocamos 3 líneas.

Luego vamos distribuyendo por rondas, colocando una raya vertical que cruce a las rayas horizontales para representar una ronda. En la intersección colocamos un punto.

Se colocan rayas verticales adicionales (rondas) y se continua hasta que se hayan distribuido todos los puntos que representan el dividendo. Si al final no se tienen suficientes puntos para completar una ronda, este remanente de puntos es el residuo.

En la siguiente figura se muestra una división utilizando puntos.

clip_image004

Los 24 puntos se distribuyeron entre 3, utilizando 8 rondas de 3 puntos, con lo que 24 / 3 =8. Si se estuviesen repartiendo 24 monedas, a cada uno le tocarían 8 monedas.

También podemos dividir restando, donde en cada ronda repartimos una cantidad igual al divisor y restamos la cantidad repartida del dividendo, el resultado es el resto. En la segunda ronda repartimos nuevamente una cantidad igual al divisor y la restamos del resto anterior hasta que el resto sea igual a cero, o sea un residuo menor que el divisor.

El resultado de la división será igual al número de rondas repartidas, en este caso 8.

clip_image006