Table des matières:

Comment faire un programme d'intégration numérique en Python : 10 étapes
Comment faire un programme d'intégration numérique en Python : 10 étapes

Vidéo: Comment faire un programme d'intégration numérique en Python : 10 étapes

Vidéo: Comment faire un programme d'intégration numérique en Python : 10 étapes
Vidéo: APPRENDRE LE PYTHON #1 ? LES BASES & PREREQUIS 2024, Novembre
Anonim
Comment faire un programme d'intégration numérique en Python
Comment faire un programme d'intégration numérique en Python

Il s'agit d'un tutoriel sur la façon de créer et d'exécuter un programme qui évaluera des intégrales définies à l'aide d'un algorithme d'intégration numérique. J'ai divisé les étapes en 3 sections: comprendre l'algorithme qui sera utilisé pour créer le programme, coder le programme à l'aide du langage de programmation Python et exécuter le programme. Ce tutoriel est destiné à quelqu'un qui peut avoir besoin de faire rapidement une calculatrice pour évaluer des intégrales définies, ou peut-être qui a besoin de l'algorithme pour une utilisation dans un programme à plus grande échelle. Des connaissances de base en calcul sont attendues, mais les informations mathématiques pertinentes sont examinées. La connaissance de la programmation n'est pas attendue, mais est utile car je ne décris que brièvement comment la programmation fonctionne réellement.

Ce dont vous aurez besoin:

Un ordinateur personnel avec accès à Internet

Étape 1: Comprendre l'algorithme Partie 1: l'intégrale définie et son utilisation

Comprendre l'algorithme Partie 1: l'intégrale définie et son utilisation
Comprendre l'algorithme Partie 1: l'intégrale définie et son utilisation

Je suppose que vous savez un peu ce qu'est une intégrale dans le contexte du calcul de base. Les intégrales sont importantes car elles vous permettent de sommer un tableau de valeurs multiplié par une longueur infinitésimale; cela est utile dans de nombreux domaines de la finance, de la théorie des nombres, de la physique, de la chimie, ainsi que de nombreux autres domaines. Ce programme, cependant, ne vous permettra de calculer l'aire sous une courbe que pour un intervalle fini, ou en d'autres termes, il n'évalue pas les anti-dérivées - un algorithme beaucoup plus puissant est nécessaire pour cela. Cet algorithme est utile si vous avez besoin d'évaluer une intégrale définie dans un programme plus vaste spécifié vers quelque chose d'autre, ou si vous voulez vérifier votre réponse pour toute intégrale définie faite à la main.

Une intégrale définie de base représente l'aire sous une courbe définie par une fonction, par ex. f(x). Pour une intégrale définie, on cherche l'aire entre deux points (notés respectivement a et b). Dans l'image, la région turquoise est la zone à laquelle je fais référence, et l'équation pour déterminer cela est également montrée dans cette région. La fonction montrée dans l'image est arbitraire.

Étape 2: Comprendre l'algorithme Partie 2: Approximation numérique

Comprendre l'algorithme Partie 2: Approximation numérique
Comprendre l'algorithme Partie 2: Approximation numérique

Un ordinateur a besoin d'un large ensemble d'instructions pour calculer cette zone sous une fonction arbitraire qui fonctionnera pour n'importe quelle fonction, donc les méthodes analytiques que vous connaissez peut-être ne sont d'aucune utilité car elles sont trop particulières. Une méthode pour calculer les intégrales approximativement, qu'un ordinateur peut réellement gérer, consiste à remplir la zone d'intérêt avec une quantité définie par l'utilisateur de rectangles de largeur égale et de hauteur variable, puis en additionnant toutes les zones du rectangle. Les propriétés rigides des rectangles laisseront une partie de la surface totale intacte, d'où la raison pour laquelle cela est considéré comme une approximation; Cependant, plus vous pouvez entasser de rectangles entre les limites (a et b), plus l'approximation sera précise, car les régions intactes deviennent plus clairsemées. Étant donné qu'un ordinateur effectuera la tâche, vous pouvez définir le nombre de rectangles dans la région souhaitée sur un très grand nombre, ce qui rend l'approximation extrêmement précise. Dans l'image à l'appui, imaginez que chaque rectangle dans la zone désignée est de largeur égale. J'ai fait de mon mieux pour les rendre de largeur égale dans Microsoft Paint, mais je n'ai pas fait le meilleur travail.

Étape 3: Comprendre l'algorithme Partie 3: la règle du point médian

Comprendre l'algorithme Partie 3: la règle du point médian
Comprendre l'algorithme Partie 3: la règle du point médian

Cette règle désigne la façon dont les rectangles sont faits et utilisés dans l'approximation. Chaque rectangle parmi "N" rectangles doit avoir une largeur égale, x, mais chaque nième rectangle ne peut pas être exactement le même: le facteur variable est la hauteur qui varie en fonction de la fonction évaluée à un certain point. La règle du point médian tire son nom du fait que vous évaluez la hauteur de chaque rectangle comme f(x_n), où "x_n" est le point central respectif de chaque rectangle, comme apposé à gauche ou à droite du rectangle. Utiliser le point médian revient à implémenter une moyenne qui rendra l'approximation plus précise que si vous utilisiez la droite ou la gauche. L'image à l'appui de cette étape résume la façon dont la règle du point médian est définie mathématiquement.

Étape 4: Création du programme Partie 1: Téléchargement d'un compilateur/éditeur Python

Maintenant que vous comprenez l'algorithme qui doit être mis en œuvre, il s'agit d'obtenir un ordinateur pour effectuer le calcul pour vous. La première étape pour dire à un ordinateur ce qu'il doit faire est d'obtenir les outils nécessaires pour le faire. Cet algorithme peut être codé dans n'importe quelle langue; pour plus de simplicité, ce programme sera codé en langage Python. Pour commander à votre ordinateur d'effectuer des opérations avec Python, vous aurez besoin d'un éditeur qui prend des instructions écrites dans ce langage qui seront ensuite compilées dans un langage machine que votre ordinateur peut comprendre afin qu'il puisse effectuer les tâches que vous lui demandez de faire. De nos jours, un éditeur et un compilateur sont généralement intégrés, mais ce n'est pas toujours le cas. Vous pouvez utiliser n'importe quel éditeur/compilateur avec lequel vous êtes à l'aise, mais je vais vous montrer comment obtenir mon préféré pour Python: Canopy. Si vous disposez déjà d'un éditeur/compilateur, vous pouvez ignorer ces étapes.

  1. Allez sur
  2. Cliquez sur Télécharger Canopy
  3. Cliquez sur le bouton de téléchargement correspondant à votre système d'exploitation

    Le téléchargement commencera automatiquement

  4. Suivez les instructions d'instillation après avoir démarré le fichier d'exécution
  5. Exécuter le programme
  6. Cliquez sur "Éditeur" dans le menu principal du programme
  7. Cliquez sur "créer un nouveau fichier" au centre de l'écran

À partir de ce point, vous devriez voir une fenêtre blanche vierge avec un curseur ressemblant à un document de traitement de texte de base. Vous êtes maintenant prêt à commencer à coder l'algorithme d'intégration numérique pour résoudre des intégrales définies. Les étapes suivantes auront un extrait de code que vous copierez et une explication de ce que cet extrait fait pour le programme dans son ensemble.

Étape 5: Création du programme Partie 2: Importation de fonctions et définition de variables

Création du programme Partie 2: Importation de fonctions et définition de variables
Création du programme Partie 2: Importation de fonctions et définition de variables

Copiez le code dans l'image.

Pour tout programme que vous pourriez vous retrouver à coder, il y aura des variables. Une variable est un nom donné à une valeur qui sera exploitée et qui peut changer. Dans la plupart des langages de programmation (sinon tous), vous devez initialiser une variable avant que le programme puisse y apporter des modifications. Dans le cas de ce programme, j'ai nommé les variables "N, " "a," et "b". Ces valeurs représentent respectivement le nombre d'itérations (AKA nombre de rectangles), la limite inférieure et la limite supérieure. Vous pouvez les nommer comme vous le souhaitez, mais pour correspondre aux formules données dans « Comprendre l'algorithme, partie 3: la règle du point médian », il est préférable de les garder identiques. Notez qu'ils ne sont pas simplement définis sur une valeur spécifique. C'est parce qu'il s'agit d'entrées qui, lorsque le programme est exécuté, l'utilisateur du programme peut définir quelle sera la valeur. Le texte entre guillemets, après la commande d'entrée, apparaît lorsque vous exécutez le programme, vous indiquant le type de valeur à saisir. Vous remarquerez également que "int" et "float" sont utilisés avant les désignations d'entrée. Ces termes indiquent à l'ordinateur quel type de variable cette valeur sera. Un "int" est un entier et un "float" est une valeur à virgule flottante (c'est-à-dire une décimale). Il devrait être clair pourquoi ils sont désignés comme tels.

Tout texte présent après un "#" est un commentaire qui permet au programmeur de suivre le code de manière humaniste; J'ai fait certains commentaires dans mon code que vous allez copier, mais n'hésitez pas à ajouter des commentaires qui vous aident spécifiquement. Le programme ne lira rien avec un "#" avant comme commande.

La partie du code qui lit "from math import *" indique au programme d'importer un tableau de fonctions mathématiques qui peuvent être utilisées sans avoir à les programmer vous-même. Le "*" signifie simplement "tout". Lisez cette partie du code comme suit: à partir de la bibliothèque mathématique, importez toutes les fonctions. Cela vous permet d'utiliser des fonctions mathématiques telles que sinus, cosinus, log, exp, etc. Ces fonctions peuvent être mathématiquement intégrées dans le code.

Étape 6: Création du programme Partie 3: Création d'une fonction pour l'intégration

Création du programme Partie 3: Création d'une fonction pour l'intégration
Création du programme Partie 3: Création d'une fonction pour l'intégration

Copiez le code dans l'image ci-dessous le code précédent.

AVERTISSEMENT: cette section est dense et je souhaite clarifier certaines choses qui pourraient être déroutantes. Quand on parle de programmation, le mot "fonction" revient souvent. Ce terme apparaît également beaucoup lorsque vous parlez de mathématiques. Donc, à partir de maintenant, quand je parle d'une fonction au sens de la programmation, j'écrirai "fonction Python", et quand je parle de la fonction mathématique, je dirai "fonction mathématique". À un moment donné, nous utiliserons une fonction Python comme représentation de la fonction mathématique en question.

Ce prochain extrait de code est le cœur du programme. Ici, une fonction Python est définie qui exécute l'algorithme d'intégration numérique en utilisant la règle du point milieu. "def Integrate(N, a, b)" se lit comme: définit une fonction appelée "Integrate" qui accepte les variables "N, " "a, " et "b," et renvoie la zone sous la courbe (la fonction mathématique) qui est également défini dans la fonction Python "Intégrer". Vous pouvez appeler cette fonction Python n'importe quoi lorsque vous effectuez le codage, mais il est logique de l'appeler intégrer car il s'agit d'une fonction qui intègre en effet une fonction mathématique.

À ce stade, il vaut la peine de commenter la façon dont Python sépare les blocs de code. Un bloc de code est une section entière qui effectue une certaine tâche. Différents langages de programmation auront désigné des moyens de distinguer ces "blocs". Pour Python, un bloc se distingue par des indentations: chaque section d'exécution de tâche a son propre indentation, et il peut y avoir des blocs indentés dans d'autres blocs indentés. Cela représente les tâches dans les tâches et indique essentiellement l'ordre dans lequel le code doit être exécuté. Dans le cas de la fonction Python définie "Intégrer", tout ce qui se trouve dans cette fonction est mis en retrait d'un bloc, distinguant ainsi les tâches qui seront exécutées dans cette fonction. Il y a des parties en retrait dans cette fonction Python qui effectuent également leurs propres tâches. Cela se passe comme suit: une commande (tâche) est définie, un signe deux-points suit la commande et ce que la commande fait est en retrait en dessous.

Immédiatement après avoir défini la fonction Python "intégrer", vous définirez une autre fonction Python appelée f(x). Cela représente la fonction mathématique qui sera intégrée. Pour chaque fonction mathématique différente que vous souhaitez intégrer, vous devrez utiliser cette ligne de programme pour la modifier (contrairement aux variables qui sont définies lors de l'exécution du programme). Chaque fonction Python aura une valeur de retour, c'est ce que la fonction renvoie lorsque vous lui lancez une valeur. Dans ce cas, la valeur ajoutée est « x », et ce terme « x » prendra la valeur de tout ce que vous le lancez - c'est une valeur temporaire.

Ensuite, une boucle for agit comme la somme définie dans les formules de la section « Comprendre l'algorithme » de ce didacticiel. Cette sommation nécessite quelques variables supplémentaires, dont l'une servira de valeur de retour pour l'ensemble de la fonction Python "Intégrer". Avant la boucle for, j'ai désigné ces variables comme "valeur" et "valeur2". la tâche de la boucle for est d'itérer sur une plage de valeurs pour une variable désignée, qui peut être commodément définie dans la commande for-loop; dans ce cas, cette variable est "n". La plage pour laquelle l'itération se produit est de 1 à N+1. Vous devriez remarquer que la sommation définie dans les formules susmentionnées ne va que de 1 à N. Nous la définissons de cette façon parce que le langage Python compte chaque valeur itérée à partir de zéro, nous devons donc essentiellement déplacer la plage des valeurs pour s'adapter à notre gamme. La boucle for permet ensuite la sommation de toutes les hauteurs du rectangle et stocke cette valeur dans la variable que j'ai appelée "valeur". Ceci est vu dans le morceau de code qui apparaît comme: valeur += f(a+((n-(1/2))*((b-a)/N))).

À partir de là, la partie suivante du code utilise la variable appelée "valeur2" qui est ensuite attribuée à la somme de toutes les hauteurs de chaque rectangle multipliée par la largeur standardisée de chaque rectangle - c'est notre réponse finale que nous voulons affiché par notre programme, et est donc la valeur de retour de la fonction Python "Intégrer".

Étape 7: Création du programme Partie 4: Affichage de la réponse

Création du programme Partie 4: Affichage de la réponse
Création du programme Partie 4: Affichage de la réponse

Copiez le code dans l'image ci-dessous le code précédent.

Maintenant que la réponse peut être obtenue via la fonction Python "Intégrer", nous souhaitons pouvoir l'afficher. Il s'agit simplement de mettre les valeurs saisies par l'utilisateur ("N, " "a" et "b") dans la fonction Python "Intégrer" et de les imprimer à l'écran. Cette commande est affichée à la ligne 21, et c'est vraiment tout ce que vous devez faire pour terminer cette étape. Le code des lignes 19 et 20 est juste là pour "embellir" la sortie de l'ensemble du programme. "print("……………………….")" sépare la section d'entrée du programme de la section de sortie, et "print("Voici votre réponse: ")" est juste une désignation que la réponse sera être imprimé après cette ligne de texte.

Étape 8: Exécution du programme Partie 1: Exécution du programme tel quel

Exécution du programme Partie 1: Exécution du programme tel quel
Exécution du programme Partie 1: Exécution du programme tel quel

Si vous n'utilisez pas Canopy, vous n'avez probablement même pas besoin de suivre cette étape du tout et l'exécution du programme peut nécessiter des procédures différentes. Dans Canopy, avant de pouvoir exécuter le programme, vous devrez l'enregistrer. Le type de fichier d'un programme Python est un fichier.py - il est automatiquement enregistré sous ce nom. Choisissez où vous voulez que le fichier soit enregistré, vous pourrez alors exécuter le programme.

Exécution du programme:

  1. Appuyez sur le bouton vert qui ressemble à un "bouton de lecture" situé sur la barre d'outils juste au-dessus de l'endroit où votre nom de fichier apparaît (reportez-vous à l'image).
  2. Le programme s'exécutera ensuite dans l'écran inférieur de l'éditeur, connu sous le nom d'environnement d'analyse de données Canopy. En supposant que vous ayez copié les invites telles que je les ai écrites, vous devriez voir au bas de l'environnement d'analyse de données Canopy l'invite: « Entrez le nombre de fois que vous souhaitez additionner (plus de fois = plus précis): ». (voir photo)
  3. Entrez une valeur pour le nombre de fois que vous souhaitez effectuer l'itération, c'est-à-dire 10000 (combien de rectangles vous souhaitez insérer dans votre zone), puis appuyez sur Entrée.
  4. D'autres invites apparaîtront avec des instructions qui devraient être les invites d'entrée familières que vous avez codées dans le programme à l'étape 5. Remplissez-les de manière appropriée, tout comme dans le numéro 3 ci-dessus.
  5. L'intégrale doit être évaluée et un résultat doit apparaître.

Si vous avez codé le programme comme indiqué dans les images précédentes, vous venez d'intégrer f(x) = x^2 sur certaines bornes. L'intégrale de x^2 est facile à évaluer à la main, vous devez donc vérifier et vous assurer que le programme a donné une réponse très proche de la valeur analytique correcte déterminée à la main. Lorsque j'exécute le programme avec les valeurs N = 10000, a = 0 et b = 10, j'obtiens la réponse 333.3333249999964. La bonne réponse analytique est 333.333. C'est incroyablement précis et rapide. Vous avez essentiellement compressé 10 000 rectangles entre 0 et 10 sur l'axe des x et les avez utilisés pour approximer l'aire sous la courbe x^2 !

Étape 9: Exécution du programme Partie 2: Intégration d'autres fonctions mathématiques

Exécution du programme Partie 2: Intégration d'autres fonctions mathématiques
Exécution du programme Partie 2: Intégration d'autres fonctions mathématiques

À l'étape précédente, si vous avez suivi fidèlement, vous avez intégré f(x) = x^2. Ce n'est pas la seule fonction mathématique que ce programme peut intégrer. Rappelez-vous de l'étape 5 que vous avez importé le tableau de la bibliothèque mathématique des fonctions Python dans le programme. Cela vous permet d'utiliser des fonctions mathématiques plus compliquées qui peuvent être intégrées. Donnons un coup de feu. Bien sûr, vous pouvez utiliser n'importe quelle fonction, mais je vais démontrer davantage la précision de ce code en intégrant une fonction mathématique particulière qui donne une valeur bien connue lorsqu'elle est intégrée sur une certaine plage. Cette fonction est f(x) = Sin[x]. Cette fonction mathématique est affichée dans la première image d'accompagnement, tracée de 0 à 2π, et la zone d'intérêt est ombrée en turquoise. Il y a une quantité égale de surface positive comme il y a de surface négative dans cet intervalle, donc si vous additionnez la surface totale, vous devriez obtenir zéro. Voyons si cela se produit réellement:

Mettre la fonction mathématique f(x) = Sin[x] dans le programme:

  1. Avant de relancer le programme, sous le commentaire "#type your function after return", tapez: sin(x) où x**2 se trouve actuellement. (voir photo).
  2. Exécutez le programme en appuyant à nouveau sur le bouton de lecture vert.
  3. Tapez 10000 pour la valeur N (combien de fois vous voulez additionner).
  4. mettre "0" pour la limite inférieure.
  5. Mettez 6,2832 pour la limite supérieure (environ 2π).
  6. Voyez quelle valeur vous obtenez.

Lorsque j'ai fait cela, j'ai fini par obtenir une valeur de 1.079e-10: cela équivaut à.0000000001079, ce qui est très proche de zéro, il semble donc être précis et montre que l'algorithme gère correctement la zone négative.

Étape 10: Exécution du programme Partie 3: Extension du programme

À ce stade, vous avez terminé: vous disposez d'un algorithme intégral défini et fonctionnel, codé en Python, qui fonctionne correctement et donne des réponses très précises. Cependant, ce programme peut être amélioré. Je ne suis pas un programmeur et j'ai une expérience minimale de Python. En fait, j'ai dû me rafraîchir sur l'utilisation de Python pour terminer ce didacticiel, mais cela devrait vous donner l'assurance que Python est un langage si facile à apprendre. Mon point est que vous pouvez développer ce programme en le rendant plus efficace, peut-être implémenter une interface graphique et le rendre plus convivial.

Mes réflexions sur l'extension du programme:

  • Implémentez une interface utilisateur graphique qui vous permet d'exécuter le programme sans utiliser l'environnement d'analyse de données interactif Canopy
  • Faites en sorte que la fonction mathématique à intégrer ne doive pas être entrée à l'intérieur du programme, mais puisse être entrée après l'exécution du programme (j'essayais initialement de le faire, mais je ne pouvais pas le comprendre).
  • Définissez une fonction Python "Intégrer" afin qu'elle considère la fonction f(x) comme opposée à la fonction f(x) définie en son sein.

Ce ne sont que quelques exemples de domaines d'amélioration, mais je vous garantis qu'il existe de nombreux autres domaines dans lesquels il peut être amélioré. Je laisse donc cette étape comme un exemple des défauts de ce programme et peut-être un exercice à quiconque souhaite améliorer davantage le programme.

Conseillé: