Tabla de contenido:

Cómo hacer un programa de integración numérica en Python: 10 pasos
Cómo hacer un programa de integración numérica en Python: 10 pasos

Video: Cómo hacer un programa de integración numérica en Python: 10 pasos

Video: Cómo hacer un programa de integración numérica en Python: 10 pasos
Video: Integración numérica, fórmulas de Newton Cotes y Regla del Trapecio en Python 2024, Mes de julio
Anonim
Cómo hacer un programa de integración numérica en Python
Cómo hacer un programa de integración numérica en Python

Este es un tutorial sobre cómo crear y ejecutar un programa que evaluará integrales definidas utilizando un algoritmo de integración numérica. He dividido los pasos en 3 secciones: comprender el algoritmo que se usará para hacer el programa, codificar el programa usando el lenguaje de programación Python y ejecutar el programa. Este tutorial está destinado a alguien que necesite hacer rápidamente una calculadora para evaluar integrales definidas, o quizás necesite el algoritmo para usarlo en un programa de mayor escala. Se espera tener conocimientos básicos de cálculo, pero se revisa la información matemática relevante. No se espera tener conocimientos de programación, pero es útil ya que solo describo brevemente cómo funciona realmente la programación.

Que necesitarás:

Una computadora personal con acceso a Internet

Paso 1: Comprensión del algoritmo Parte 1: la integral definida y su uso

Comprensión del algoritmo, parte 1: la integral definida y su uso
Comprensión del algoritmo, parte 1: la integral definida y su uso

Asumiré que sabe un poco de lo que es una integral en el contexto del cálculo básico. Las integrales son importantes porque le permiten sumar una matriz de valores multiplicada por una longitud infinitesimal; esto es útil en muchas áreas de finanzas, teoría de números, física, química, así como en muchos otros campos. Este programa, sin embargo, solo le permitirá calcular el área debajo de una curva para un intervalo finito, o en otras palabras, no evalúa anti-derivadas - para eso se necesita un algoritmo mucho más poderoso. Este algoritmo es útil si necesita evaluar una integral definida en un programa más grande especificado hacia otra cosa, o si desea verificar su respuesta en busca de integrales definidas hechas a mano.

Una integral definida básica representa el área bajo una curva definida por una función, p. f (x). Para una integral definida, buscamos el área entre dos puntos (etiquetados a y b respectivamente). En la imagen, la región turquesa es el área a la que me refiero, y la ecuación para determinar esto también se muestra en esa región. La función que se muestra en la imagen es arbitraria.

Paso 2: Comprensión del algoritmo Parte 2: Aproximación numérica

Comprensión del algoritmo, parte 2: aproximación numérica
Comprensión del algoritmo, parte 2: aproximación numérica

Una computadora necesita un amplio conjunto de instrucciones para calcular esa área debajo de una función arbitraria que funcionará para cualquier función, por lo que los métodos analíticos con los que puede estar familiarizado no sirven de nada, ya que son demasiado particulares. Un método para calcular integrales aproximadamente, que una computadora realmente puede manejar, se realiza llenando el área de interés con una cantidad definida por el usuario de rectángulos de igual ancho y altura variable y luego sumando todas las áreas del rectángulo. Las propiedades rígidas de los rectángulos dejarán intacta parte del área total, por lo que esto se considera una aproximación; sin embargo, cuantos más rectángulos pueda meter entre los límites (ayb), más precisa será la aproximación, ya que las regiones intactas se vuelven más escasas. Dado que una computadora realizará la tarea, puede establecer el número de rectángulos en la región deseada para que sea un número muy grande, lo que hace que la aproximación sea extremadamente precisa. En la imagen de apoyo, imagina que cada rectángulo en el área designada tiene el mismo ancho. Hice todo lo posible para que tuvieran el mismo ancho en Microsoft Paint, pero no hice el mejor trabajo.

Paso 3: Comprensión del algoritmo Parte 3: la regla del punto medio

Comprender el algoritmo, parte 3: la regla del punto medio
Comprender el algoritmo, parte 3: la regla del punto medio

Esta regla designa cómo se hacen y se usan los rectángulos en la aproximación. Cada rectángulo de "N" rectángulos tiene que tener el mismo ancho, Δx, pero cada n-ésimo rectángulo no puede ser exactamente el mismo: el factor variable es la altura que varía según la función evaluada en un punto determinado. La regla del punto medio recibe su nombre del hecho de que está evaluando la altura de cada rectángulo como f (x_n), donde "x_n" es el punto central respectivo de cada rectángulo, en oposición a la izquierda o derecha del rectángulo. Usar el punto medio es como implementar un promedio que hará que la aproximación sea más precisa que si usara la derecha o la izquierda. La imagen de apoyo para este paso resume cómo se define matemáticamente la regla del punto medio.

Paso 4: Creación del programa Parte 1: Descarga de un compilador / editor de Python

Ahora que comprende el algoritmo que debe implementarse, es cuestión de que una computadora realice el cálculo por usted. El primer paso para decirle a una computadora qué hacer es obtener las herramientas para hacerlo. Este algoritmo se puede codificar en cualquier idioma; por simplicidad, este programa estará codificado en el lenguaje Python. Para ordenarle a su computadora que realice operaciones con Python, necesitará un editor que tome instrucciones escritas en ese lenguaje que luego se compilarán en un lenguaje de máquina que su computadora pueda entender para que pueda realizar las tareas que le indique que haga. En la actualidad, un editor y un compilador suelen estar integrados, sin embargo, no siempre es así. Puede usar cualquier editor / compilador con el que se sienta cómodo, pero le mostraré cómo obtener mi favorito personal para Python: Canopy. Si ya tiene un editor / compilador, puede omitir estos pasos.

  1. Vaya a
  2. Haga clic en Descargar Canopy
  3. Haga clic en el botón de descarga correspondiente a su sistema operativo

    La descarga comenzará automáticamente

  4. Siga las instrucciones de instilación después de iniciar el archivo de ejecución.
  5. Ejecuta el programa
  6. Haga clic en "Editor" en el menú principal del programa.
  7. Haga clic en "crear un nuevo archivo" en el centro de la pantalla.

Desde este punto, debería ver una ventana en blanco con un cursor que se asemeja a un documento de procesamiento de texto básico. Ahora está listo para comenzar a codificar el algoritmo de integración numérica para resolver integrales definidas. Los pasos siguientes tendrán un fragmento de código que copiará y una explicación de lo que hace ese fragmento para el programa en su conjunto.

Paso 5: Creación del programa Parte 2: Importación de funciones y definición de variables

Creación del programa Parte 2: Importación de funciones y definición de variables
Creación del programa Parte 2: Importación de funciones y definición de variables

Copia el código de la imagen.

Para cualquier programa que se encuentre codificando, habrá variables. Una variable es un nombre que se le da a un valor sobre el que se operará y que puede cambiar. En la mayoría de los lenguajes de programación (si no en todos), debe inicializar una variable antes de que el programa pueda realizar cambios en ella. En el caso de este programa, he denominado las variables "N", "a" y "b". Estos valores representan el número de iteraciones (también conocido como número de rectángulos), el límite inferior y el límite superior, respectivamente. Puede nombrarlos como desee, pero para que coincidan con las fórmulas dadas en "Comprensión del algoritmo Parte 3: La regla del punto medio", es mejor mantenerlas iguales. Tenga en cuenta que no solo se establecen en un valor específico. Esto se debe a que se realizan entradas que, cuando se ejecuta el programa, el usuario del programa puede definir cuál será el valor. El texto entre comillas, después del comando de entrada, aparece cuando ejecuta el programa y le indica qué tipo de valor escribir. También notará que "int" y "float" se usan antes de las designaciones de entrada. Estos términos le dicen a la computadora qué tipo de variable será este valor. Un "int" es un número entero y un "float" es un valor de punto flotante (es decir, un decimal). Debe quedar claro por qué se designan como tales.

Cualquier texto presente después de un "#" es un comentario que permite al programador seguir el código de forma humanística; He hecho ciertos comentarios en mi código que copiará, pero siéntase libre de agregar cualquier comentario que lo ayude específicamente. El programa no leerá nada con un "#" antes como comando.

La porción de código que dice "de importación matemática *" le dice al programa que importe una serie de funciones matemáticas que se pueden usar sin tener que programarlas usted mismo. El "*" solo significa "todos". Lea esta parte del código como: de la biblioteca matemática, importe todas las funciones. Esto le permite utilizar funciones matemáticas como seno, coseno, log, exp, etc. Estas funciones se pueden integrar matemáticamente dentro del código.

Paso 6: Creación del programa Parte 3: Creación de una función para la integración

Creación del programa Parte 3: Creación de una función para la integración
Creación del programa Parte 3: Creación de una función para la integración

Copie el código de la imagen debajo del código anterior.

ADVERTENCIA: Esta sección es densa y quiero aclarar algunas cosas que podrían resultar confusas. Cuando se habla de programación, la palabra "función" aparece mucho. Este término también aparece mucho cuando se habla de matemáticas. Entonces, a partir de este punto, cuando hablo de una función en el sentido de programación, escribiré "función Python" y cuando hablo de la función matemática, diré "función matemática". En algún momento usaremos una función de Python como representación de la función matemática en cuestión.

Este siguiente fragmento de código es el corazón del programa. Aquí se define una función de Python que realiza el algoritmo de integración numérica utilizando la regla del punto medio. "def Integrate (N, a, b)" se lee como: define una función llamada "Integrar" que acepta las variables "N", "a" y "b", y devuelve el área debajo de la curva (la función matemática) que también se define dentro de la función "Integrar" de Python. Puede llamar a esta función de Python de cualquier manera cuando realiza la codificación, pero tiene sentido llamarla integrar, ya que es una función que de hecho integra una función matemática.

En este punto, vale la pena comentar cómo Python segrega bloques de código. Un bloque de código es una sección completa que realiza una determinada tarea. Los diferentes lenguajes de programación tendrán formas designadas para distinguir estos "bloques". Para Python, un bloque se distingue por sangrías: cada sección de ejecución de tareas tiene su propia sangría y puede haber bloques sangrados dentro de otros bloques sangrados. Esto representa las tareas dentro de las tareas y esencialmente indica el orden en el que se debe ejecutar el código. En el caso de la función definida de Python "Integrar", todo dentro de esa función está sangrado en un bloque, distinguiendo así las tareas que se ejecutarán dentro de esa función. Hay partes sangradas dentro de esta función de Python que también realizan sus propias tareas. Dice lo siguiente: se establece un comando (tarea), dos puntos siguen al comando y lo que hace el comando está sangrado debajo.

Inmediatamente después de definir la función "integrar" de Python, definirá otra función de Python llamada f (x). Esto representa la función matemática que se integrará. Para cada función matemática diferente que desee integrar, tendrá que tomar esta línea de programa para cambiarla (a diferencia de las variables que se definen cuando se ejecuta el programa). Cada función de Python tendrá un valor de retorno, esto es lo que devuelve la función cuando le arrojas un valor. En este caso, el valor incluido es "x", y este término "x" tomará el valor de lo que sea que lo arrojes: es un valor temporal.

A continuación, un bucle for actúa como la suma definida en las fórmulas de la sección "Comprensión del algoritmo" de este tutorial. Esta suma requiere un par de variables más, una de las cuales actuará como valor de retorno para toda la función "Integrar" de Python. Antes del ciclo for, he designado estas variables como "valor" y "valor2". la tarea del bucle for es iterar sobre un rango de valores para una variable designada, que puede definirse convenientemente dentro del comando del bucle for; en este caso, esa variable es "n". El rango para el que ocurre la iteración es de 1 a N + 1. Debe notar que la suma definida en las fórmulas antes mencionadas solo varía de 1 a N. Lo definimos de esta manera porque el lenguaje Python cuenta cada valor iterado comenzando desde cero, por lo que esencialmente tenemos que cambiar el rango de los valores para que se ajuste a nuestro deseado distancia. El bucle for permite la suma de todas las alturas del rectángulo y almacena ese valor en la variable que llamé "valor". Esto se ve en el fragmento de código que se muestra como: valor + = f (a + ((n- (1/2)) * ((b-a) / N))).

A partir de ahí, la siguiente parte del código utiliza la variable llamada "valor2" que luego se asigna para ser la suma de todas las alturas de cada rectángulo multiplicado por el ancho estandarizado de cada rectángulo; esta es nuestra respuesta final que queremos mostrado por nuestro programa y, por lo tanto, es el valor de retorno de la función "Integrar" de Python.

Paso 7: Creación del programa Parte 4: Visualización de la respuesta

Creación del programa Parte 4: Visualización de la respuesta
Creación del programa Parte 4: Visualización de la respuesta

Copie el código en la imagen debajo del código anterior.

Ahora que la respuesta se puede obtener a través de la función "Integrar" de Python, queremos poder mostrarla. Esto es solo una cuestión de poner los valores ingresados por el usuario ("N", "a" y "b") en la función "Integrar" de Python e imprimirlos en la pantalla. Este comando se muestra en la línea 21 y es realmente todo lo que necesita hacer para finalizar este paso. El código en las líneas 19 y 20 están ahí para "embellecer" la salida de todo el programa. "print (" ………………………. ")" separa la sección de entrada del programa de la sección de salida, y "print (" Aquí está tu respuesta: ")" es solo una designación de que la respuesta imprimirse después de esa línea de texto.

Paso 8: Ejecutar el programa Parte 1: Ejecutar el programa tal cual

Ejecución del programa Parte 1: Ejecución del programa tal cual
Ejecución del programa Parte 1: Ejecución del programa tal cual

Si no está utilizando Canopy, probablemente ni siquiera necesite seguir este paso y la ejecución del programa puede requerir procedimientos diferentes. En Canopy, antes de que pueda ejecutar el programa, deberá guardarlo. El tipo de archivo para un programa Python es un archivo.py: se guarda automáticamente como este. Elija dónde desea guardar el archivo, luego podrá ejecutar el programa.

Ejecución del programa:

  1. Presione el botón verde que parece un "botón de reproducción" ubicado en la barra de herramientas justo encima de donde aparece el nombre de su archivo (consulte la imagen).
  2. Luego, el programa se ejecutará en la pantalla inferior del editor, que se conoce como el entorno de análisis de datos de Canopy. Suponiendo que haya copiado las solicitudes tal como las escribí, debería ver en la parte inferior del entorno de análisis de datos de Canopy la solicitud: "Ingrese cuántas veces desea sumar (más veces = más preciso):". (refiérase a la imagen)
  3. Ingrese un valor para la cantidad de veces que desea hacer la iteración, es decir, 10000 (cuántos rectángulos desea introducir en su área), luego presione enter.
  4. Aparecerán más mensajes con declaraciones que deberían ser los mensajes de entrada familiares que codificó en el programa en el paso 5. Llénelos de manera adecuada, como en el número 3 anterior.
  5. La integral debe evaluarse y debe aparecer un resultado.

Si codificó el programa como se muestra en las imágenes anteriores, acaba de integrar f (x) = x ^ 2 sobre algunos límites. La integral de x ^ 2 es fácil de evaluar a mano, por lo tanto, debe verificar y asegurarse de que el programa dio una respuesta muy cercana al valor analítico correcto determinado a mano. Cuando ejecuto el programa con los valores N = 10000, a = 0 yb = 10, obtengo la respuesta 333.33333249999964. La respuesta analítica correcta es 333,333. Esto es increíblemente preciso y rápido. Básicamente, ha exprimido 10.000 rectángulos entre 0 y 10 en el eje xy los ha utilizado para aproximar el área bajo la curva x ^ 2.

Paso 9: Ejecución del programa Parte 2: Integración de otras funciones matemáticas

Ejecución del programa Parte 2: Integración de otras funciones matemáticas
Ejecución del programa Parte 2: Integración de otras funciones matemáticas

En el paso anterior, si lo ha seguido fielmente, integró f (x) = x ^ 2. Esa no es la única función matemática que este programa puede integrar. Recuerde que desde el paso 5 importó la matriz de la biblioteca matemática de funciones de Python al programa. Esto le permite utilizar funciones matemáticas más complicadas que se pueden integrar. Demos una oportunidad. Por supuesto, puede usar cualquier función que desee, pero demostraré aún más la precisión de este código integrando una función matemática particular que produce un valor bien conocido cuando se integra en un cierto rango. Esa función es f (x) = Sin [x]. Esta función matemática se muestra en la primera imagen adjunta, trazada de 0 a 2π, y el área de interés está sombreada en turquesa. Hay una cantidad igual de área positiva que área negativa en este intervalo, por lo que si suma el área total, debe obtener cero. Veamos si esto realmente sucede:

Poniendo la función matemática f (x) = Sin [x] en el programa:

  1. Antes de ejecutar el programa nuevamente, bajo el comentario "#escribe tu función después de regresar", escribe: sin (x) donde x ** 2 se encuentra actualmente. (consulte la imagen).
  2. Ejecute el programa presionando el botón verde de reproducción nuevamente.
  3. Escriba 10000 para el valor N (cuántas veces desea sumar).
  4. ponga "0" para el límite inferior.
  5. Coloque 6.2832 para el límite superior (aproximadamente 2π).
  6. Vea qué valor obtiene.

Cuando hice esto, terminé obteniendo un valor de 1.079e-10: esto equivale a.0000000001079, que es realmente cercano a cero, por lo que parece ser preciso y muestra que el algoritmo maneja adecuadamente el área negativa.

Paso 10: Ejecución del programa Parte 3: Ampliación del programa

En este punto, ha terminado: tiene un algoritmo integral definido en funcionamiento codificado en Python que se ejecuta sin problemas y brinda respuestas muy precisas. Sin embargo, este programa se puede mejorar. No soy programador y tengo una experiencia mínima con Python. De hecho, tuve que actualizarme sobre el uso de Python para completar este tutorial, pero eso debería darte la confianza de que Python es un lenguaje tan fácil de aprender. Mi punto es que puede expandir este programa haciéndolo más eficiente, tal vez implementar alguna GUI y hacerlo más fácil de usar.

Mis pensamientos sobre la expansión del programa:

  • Implementar una interfaz gráfica de usuario que le permita ejecutar el programa sin utilizar el entorno de análisis de datos interactivo de Canopy.
  • Haga que la función matemática que se integrará no tenga que ingresarse dentro del programa, sino que pueda ingresarse después de que se ejecute el programa (inicialmente estaba tratando de hacer esto, pero no pude resolverlo).
  • Defina una función de Python "Integrar" para que tome la función f (x) en lugar de tener la función f (x) definida dentro de ella.

Estos son solo algunos ejemplos de áreas de mejora, pero les garantizo que hay muchas otras áreas en las que se pueden mejorar. Así que dejo este paso como un ejemplo de las fallas que tiene este programa y quizás un ejercicio para cualquiera que quiera mejorar aún más el programa.

Recomendado: