Índice:

Como fazer um programa de integração numérica em Python: 10 etapas
Como fazer um programa de integração numérica em Python: 10 etapas

Vídeo: Como fazer um programa de integração numérica em Python: 10 etapas

Vídeo: Como fazer um programa de integração numérica em Python: 10 etapas
Vídeo: Cálculo numérico de integrais com Python 2024, Novembro
Anonim
Como fazer um programa de integração numérica em Python
Como fazer um programa de integração numérica em Python

Este é um tutorial sobre como criar e executar um programa que avaliará integrais definidas usando um algoritmo de integração numérica. Eu dividi as etapas em 3 seções: entender o algoritmo que será usado para fazer o programa, codificar o programa usando a linguagem de programação Python e executar o programa. Este tutorial é destinado a alguém que pode precisar fazer rapidamente uma calculadora para avaliar integrais definidas, ou talvez precise do algoritmo para uso em um programa de escala maior. O conhecimento básico de cálculo é esperado, mas as informações matemáticas relevantes são revisadas. Não se espera conhecimento de programação, mas é útil, uma vez que descrevo resumidamente como a programação realmente funciona.

O que você vai precisar:

Um computador pessoal com acesso à internet

Etapa 1: Compreendendo o algoritmo Parte 1: o integral definido e seu uso

Compreendendo o Algoritmo Parte 1: o Integral Definido e Seu Uso
Compreendendo o Algoritmo Parte 1: o Integral Definido e Seu Uso

Presumo que você saiba um pouco do que é uma integral no contexto do cálculo básico. Os inteiros são importantes porque permitem somar uma matriz de valores multiplicada por um comprimento infinitesimal; isso é útil em muitas áreas de finanças, teoria dos números, física, química, bem como em muitos outros campos. Este programa, entretanto, só permitirá que você calcule a área abaixo de uma curva para um intervalo finito, ou seja, não avalia anti-derivadas - um algoritmo muito mais poderoso é necessário para isso. Este algoritmo é útil se você precisa avaliar uma integral definida em um programa maior especificado para outra coisa, ou se você deseja verificar sua resposta para quaisquer integrais definidas feitas à mão.

Uma integral definida básica representa a área sob uma curva definida por uma função, e. f (x). Para uma integral definida, buscamos a área entre dois pontos (marcados como aeb, respectivamente). Na imagem, a região turquesa é a área a que me refiro, e a equação para determiná-la também é mostrada nessa região. A função mostrada na imagem é arbitrária.

Etapa 2: Compreendendo o Algoritmo Parte 2: Aproximação Numérica

Compreendendo o Algoritmo Parte 2: Aproximação Numérica
Compreendendo o Algoritmo Parte 2: Aproximação Numérica

Um computador precisa de um amplo conjunto de instruções para calcular a área sob uma função arbitrária que funcionará para qualquer função; portanto, os métodos analíticos com os quais você pode estar familiarizado são inúteis, pois são muito específicos. Um método para calcular as integrais aproximadamente, que um computador pode realmente manipular, é feito preenchendo a área de interesse com uma quantidade definida pelo usuário de retângulos de igual largura e altura variável, em seguida, somando todas as áreas do retângulo. As propriedades rígidas dos retângulos deixarão parte da área total intacta, daí porque isso é considerado uma aproximação; entretanto, quanto mais retângulos você pode espremer entre os limites (a e b), mais precisa será a aproximação, pois as regiões intocadas se tornam mais esparsas. Como um computador fará a tarefa, você pode definir o número de retângulos na região desejada como um número muito grande, tornando a aproximação extremamente precisa. Na imagem de suporte, imagine que cada retângulo na área designada tem a mesma largura. Eu fiz o meu melhor para torná-los da mesma largura no Microsoft Paint, mas não fiz o melhor trabalho.

Etapa 3: Compreendendo o algoritmo Parte 3: a regra do ponto médio

Compreendendo o Algoritmo Parte 3: a Regra do Ponto Médio
Compreendendo o Algoritmo Parte 3: a Regra do Ponto Médio

Esta regra designa como os retângulos são feitos e usados na aproximação. Cada retângulo de "N" retângulos tem que ter uma largura igual, Δx, mas cada enésimo retângulo não pode ser exatamente o mesmo: o fator variável é a altura que varia conforme a função avaliada em um determinado ponto. A regra do ponto médio recebe o nome do fato de que você está avaliando a altura de cada retângulo como f (x_n), onde "x_n" é o respectivo ponto central de cada retângulo, conforme oposto à esquerda ou à direita do retângulo. Usar o ponto médio é como implementar uma média que tornará a aproximação mais precisa do que se você usasse a direita ou a esquerda. A imagem de apoio para esta etapa resume como a regra do ponto médio é definida matematicamente.

Etapa 4: Criação do programa Parte 1: Baixar um compilador / editor Python

Agora que você entende o algoritmo que precisa ser implementado, é uma questão de fazer com que um computador execute o cálculo para você. A primeira etapa para dizer a um computador o que fazer é obter as ferramentas para fazer isso. Este algoritmo pode ser codificado em qualquer idioma; para simplificar, este programa será codificado na linguagem Python. Para comandar seu computador a realizar operações com Python, você precisará de um editor que receba instruções escritas nessa linguagem que serão compiladas em uma linguagem de máquina que seu computador possa entender para que possa realizar as tarefas que você mandar fazer. Hoje em dia, um editor e um compilador costumam ser integrados, mas nem sempre é esse o caso. Você pode usar qualquer editor / compilador com o qual se sinta confortável, mas mostrarei como obter meu favorito pessoal para Python: Canopy. Se você já tem um editor / compilador, pode pular essas etapas.

  1. Vá para
  2. Clique em Baixar Canopy
  3. Clique no botão de download correspondente ao seu sistema operacional

    O download começará automaticamente

  4. Siga as instruções de instilação após iniciar o arquivo de execução
  5. Execute o programa
  6. Clique em "Editor" no menu principal do programa
  7. Clique em "criar um novo arquivo" no centro da tela

A partir deste ponto, você deve ver uma janela em branco com um cursor semelhante a um documento básico de processamento de texto. Agora você está pronto para começar a codificar o algoritmo de integração numérica para resolver integrais definidas. As etapas a seguir terão um trecho de código que você copiará e uma explicação do que esse trecho faz para o programa como um todo.

Etapa 5: Criando o Programa Parte 2: Importando Funções e Definindo Variáveis

Criando o Programa Parte 2: Importando Funções e Definindo Variáveis
Criando o Programa Parte 2: Importando Funções e Definindo Variáveis

Copie o código na imagem.

Para qualquer programa em que você se encontre codificando, haverá variáveis. Uma variável é um nome dado a um valor que será operado e que pode mudar. Na maioria das linguagens de programação (se não em todas), você deve inicializar uma variável antes que o programa possa fazer alterações nela. No caso deste programa, denominei as variáveis "N," "a" e "b". Esses valores representam o número de iterações (AKA número de retângulos), limite inferior e limite superior, respectivamente. Você pode nomeá-los como quiser, mas para corresponder às fórmulas fornecidas em "Compreendendo o algoritmo, parte 3: a regra do ponto médio", é melhor mantê-los iguais. Observe que eles não são definidos apenas para um valor específico. Isso porque são feitas entradas que, quando o programa é executado, o usuário do programa pode definir qual será o valor. O texto entre aspas, após o comando de entrada, aparece quando você executa o programa, informando que tipo de valor deve ser digitado. Você também notará que "int" e "float" são usados antes das designações de entrada. Esses termos informam ao computador que tipo de variável será esse valor. Um "int" é um número inteiro e um "float" é um valor de ponto flutuante (ou seja, um decimal). Deve ficar claro por que eles são designados como tal.

Qualquer texto presente após um "#" é um comentário que permite ao programador seguir o código de uma forma humanística; Fiz alguns comentários em meu código que você copiará, mas fique à vontade para adicionar quaisquer comentários que o ajudem especificamente. O programa não lerá nada com um "#" antes dele como um comando.

A parte do código que se lê "from math import *" diz ao programa para importar um array de funções matemáticas que podem ser usadas sem ter que programá-las você mesmo. O "*" significa apenas "todos". Leia esta parte do código como: da biblioteca matemática importe todas as funções. Isso permite que você use funções matemáticas como seno, cosseno, log, exp, etc. Essas funções podem ser matematicamente integradas no código.

Etapa 6: Criando o Programa Parte 3: Criando uma Função para Integração

Criando o Programa Parte 3: Criando uma Função para Integração
Criando o Programa Parte 3: Criando uma Função para Integração

Copie o código da imagem abaixo do código anterior.

AVISO: esta seção é densa e quero esclarecer algumas coisas que podem ser potencialmente confusas. Quando se fala em programação, a palavra "função" aparece muito. Este termo também aparece muito quando você está falando sobre matemática. Portanto, a partir deste ponto, quando estou falando sobre uma função no sentido de programação, escreverei "função Python" e, quando estou falando sobre a função matemática, direi "função matemática". Em algum ponto, usaremos uma função Python como uma representação para a função matemática em questão.

Este próximo trecho de código é o coração do programa. Aqui, é definida uma função Python que executa o algoritmo de integração numérica usando a regra do ponto médio. "def Integrate (N, a, b)" diz: define uma função chamada "Integrate" que aceita as variáveis "N," "a" e "b" e retorna a área abaixo da curva (a função matemática) que também é definido na função Python "Integrate". Você pode chamar essa função Python de qualquer coisa ao fazer a codificação, mas faz sentido chamá-la de integração, pois é uma função que de fato integra uma função matemática.

Neste ponto, vale a pena comentar como o Python separa blocos de código. Um bloco de código é uma seção inteira que executa uma determinada tarefa. Diferentes linguagens de programação terão formas designadas de distinguir esses "blocos". Para Python, um bloco é distinguido por indentações: cada seção de execução de tarefas tem sua própria indentação e pode haver blocos indentados dentro de outros blocos indentados. Isso representa tarefas dentro de tarefas e, essencialmente, informa a ordem em que o código deve ser executado. No caso da função Python definida "Integrate", tudo dentro dessa função é recuado em um bloco, distinguindo assim as tarefas que serão executadas dentro dessa função. Existem partes recuadas nesta função Python que também executam suas próprias tarefas. É o seguinte: um comando (tarefa) é definido, dois pontos seguem o comando e o que o comando faz é indentado abaixo.

Imediatamente após definir a função Python "integrar", você definirá outra função Python chamada f (x). Isso representa a função matemática que será integrada. Para cada função matemática diferente que você deseja integrar, você terá que seguir esta linha do programa para alterá-la (ao contrário das variáveis que são definidas quando o programa é executado). Cada função Python terá um valor de retorno, é o que a função retorna quando você lança um valor para ela. Nesse caso, o valor inserido é "x" e esse termo "x" assumirá o valor de tudo o que você jogar - é um valor temporário.

Em seguida, um loop for atua como o somatório definido nas fórmulas da seção "Compreendendo o algoritmo" deste tutorial. Este somatório requer mais algumas variáveis, uma das quais atuará como o valor de retorno para toda a função Python "Integrate". Antes do loop for, designei essas variáveis como "valor" e "valor2". a tarefa do for-loop é iterar sobre uma faixa de valores para uma variável designada, que pode ser convenientemente definida dentro do comando for-loop; neste caso, essa variável é "n." O intervalo para o qual a iteração ocorre é de 1 a N + 1. Você deve notar que o somatório definido nas fórmulas mencionadas varia apenas de 1 a N. Nós o definimos dessa forma porque a linguagem Python conta cada valor iterado começando de zero, então temos que essencialmente mudar a faixa dos valores para se ajustar ao nosso desejado faixa. O loop for então permite a soma de todas as alturas do retângulo juntas e armazena esse valor na variável que chamei de "valor". Isso é visto na parte do código que aparece como: valor + = f (a + ((n- (1/2)) * ((b-a) / N))).

A partir daí, a próxima parte do código utiliza a variável chamada "valor2" que é então atribuída para ser a soma de todas as alturas de cada retângulo multiplicada pela largura padronizada de cada retângulo - esta é a nossa resposta final que queremos exibido por nosso programa e, portanto, é o valor de retorno da função Python "Integrate".

Etapa 7: Criando o Programa Parte 4: Exibindo a Resposta

Criando o Programa Parte 4: Exibindo a Resposta
Criando o Programa Parte 4: Exibindo a Resposta

Copie o código da imagem abaixo do código anterior.

Agora que a resposta pode ser obtida por meio da função Python "Integrate", queremos exibi-la. Isso é apenas uma questão de colocar os valores que foram inseridos pelo usuário ("N," "a" e "b") na função Python "Integrar" e imprimi-la na tela. Este comando é mostrado na linha 21 e é realmente tudo o que você precisa fazer para concluir esta etapa. O código nas linhas 19 e 20 existe apenas para "embelezar" a saída de todo o programa. "print (" ………………………. ")" separa a seção de entrada do programa da seção de saída, e "print (" Aqui está sua resposta: ")" é apenas uma designação de que a resposta irá ser impresso após essa linha de texto.

Etapa 8: Executar o programa Parte 1: Executar o programa como está

Executando o Programa Parte 1: Executando o Programa como Está
Executando o Programa Parte 1: Executando o Programa como Está

Se você não estiver usando o Canopy, provavelmente nem precisará seguir esta etapa, e a execução do programa pode exigir procedimentos diferentes. No Canopy, antes de executar o programa, você precisará salvá-lo. O tipo de arquivo para um programa Python é um arquivo.py - ele é salvo automaticamente assim. Escolha onde deseja que o arquivo seja salvo, então você poderá executar o programa.

Executando o programa:

  1. Aperte o botão verde que se parece com um "botão de reprodução" localizado na barra de ferramentas logo acima de onde o nome do arquivo aparece (consulte a imagem).
  2. O programa será executado na tela inferior do editor, conhecido como ambiente de análise de dados Canopy. Supondo que você copiou os prompts como eu os escrevi, você deve ver na parte inferior do ambiente de análise de dados Canopy o prompt: "Insira quantas vezes deseja somar (mais vezes = mais preciso):." (consulte a imagem)
  3. Insira um valor para quantas vezes você deseja fazer a iteração, ou seja, 10.000 (quantos retângulos você deseja enfiar em sua área) e, em seguida, pressione Enter.
  4. Mais prompts aparecerão com instruções que devem ser os prompts de entrada familiares que você codificou no programa na etapa 5. Preencha-os apropriadamente como no número 3 acima.
  5. A integral deve ser avaliada e um resultado deve aparecer.

Se você codificou o programa conforme mostrado nas imagens anteriores, acabou de integrar f (x) = x ^ 2 sobre alguns limites. A integral de x ^ 2 é fácil de avaliar manualmente, portanto, você deve verificar e certificar-se de que o programa deu uma resposta muito próxima ao valor analítico correto determinado à mão. Quando executo o programa com os valores N = 10000, a = 0 e b = 10, obtenho a resposta 333.33333249999964. A resposta analítica correta é 333.333. Isso é incrivelmente preciso e rápido. Você essencialmente comprimiu 10.000 retângulos entre 0 e 10 no eixo x e os usou para aproximar a área sob a curva x ^ 2!

Etapa 9: Executando o Programa Parte 2: Integrando Outras Funções Matemáticas

Executando o Programa - Parte 2: Integrando Outras Funções Matemáticas
Executando o Programa - Parte 2: Integrando Outras Funções Matemáticas

Na etapa anterior, se você acompanhou fielmente, integrou f (x) = x ^ 2. Essa não é a única função matemática que este programa pode integrar. Lembre-se da etapa 5, você importou a matriz de biblioteca matemática de funções Python para o programa. Isso permite que você use funções matemáticas mais complicadas que podem ser integradas. Vamos dar uma chance a um. Claro, você pode usar qualquer função que desejar, mas vou demonstrar a precisão desse código integrando uma função matemática específica que produz um valor bem conhecido quando integrada em um determinado intervalo. Essa função é f (x) = Sin [x]. Esta função matemática é exibida na primeira imagem anexa, plotada de 0 a 2π, e a área de interesse é sombreada em turquesa. Existe uma quantidade igual de área positiva e área negativa neste intervalo, então se você somar a área total, você deve obter zero. Vamos ver se isso realmente acontece:

Colocando a função matemática f (x) = Sin [x] no programa:

  1. Antes de executar o programa novamente, sob o comentário "#type your function after return", digite: sin (x) onde x ** 2 está localizado atualmente. (consulte a imagem).
  2. Execute o programa pressionando o botão verde play novamente.
  3. Digite 10000 para o valor N (quantas vezes você deseja somar).
  4. coloque "0" para o limite inferior.
  5. Coloque 6,2832 para o limite superior (aproximadamente 2π).
  6. Veja o valor que você obtém.

Quando fiz isso, acabei obtendo um valor de 1,079e-10: isso equivale a 0,00000001079, que é realmente próximo de zero, portanto, parece ser preciso e mostra que o algoritmo lida adequadamente com a área negativa.

Etapa 10: Executando o Programa Parte 3: Expandindo o Programa

Neste ponto, você está pronto: você tem um algoritmo integral definido em funcionamento codificado em Python que funciona sem problemas e fornece respostas muito precisas. No entanto, este programa pode ser melhorado. Não sou um programador e tenho uma experiência mínima com Python. Na verdade, tive que me refrescar no uso do Python para concluir este tutorial, mas isso deve dar a você a certeza de que o Python é uma linguagem tão fácil de aprender. Meu ponto é que você pode expandir este programa tornando-o mais eficiente, talvez implementar alguma GUI e torná-lo mais amigável.

Minha opinião sobre a expansão do programa:

  • Implemente uma interface gráfica de usuário que permita executar o programa sem usar o ambiente de análise de dados interativo Canopy
  • Faça com que a função matemática a ser integrada não precise ser inserida dentro do programa, mas possa ser inserida depois que o programa for executado (eu estava tentando fazer isso inicialmente, mas não consegui descobrir).
  • Defina uma função Python "Integrate" de forma que tome a função f (x) em oposição a ter a função f (x) definida dentro dela.

Esses são apenas alguns exemplos de áreas de melhoria, mas garanto que há muitas outras áreas em que podem ser aprimoradas. Portanto, deixo esta etapa como um exemplo das falhas deste programa e talvez um exercício para quem deseja melhorar ainda mais o programa.

Recomendado: