segunda-feira, 21 de março de 2011

Dica: Integração numérica usando Python script

Nesta minha primeira dica que posto aqui sobre Python script no SciDAVis vou falar sobre integração numérica. Antes da dica, vale lembrar que a linguagem Python deve ter sido préviamente selecionada no menu "Programação" → "Linguagem de programação (script)" (ou "Scripting" → "Scripting Language", se você estiver utilizando a interface em inglês). Os scripts podem ser editados e executados em uma nota (menu "Arquivo" → "Novo" → "Nova nota / script") ou executados via linha de comando (este último método não será abordado nesta dica).

Para este exemplo, vamos supor que tenhamos um gráfico, nomeado como Gráfico1, com uma curva rotulada de Tabela1_2, cujo parâmetro x varia entre 0 e 10. Vamos supor também que o usuário tenha conhecimentos básicos de Python.

As etapas necessárias para efetuar a integração numérica e extrair o resultado são:

- definir uma função com a curva a ser integrada, juntamente com os limites inferior e superior;
- definir o método a ser utilizado para interpolação (0, 1 ou 2, para Linear, Cúbica ou Akima, respectivamente);
- executar a integração;
- extrair o resultado.

A sintaxe da função que efetua a integração numérica no SciDAVis é:

integral = Integration(graph("Nome do gráfico").activeLayer(), "Nome da curva", Limite inferior, Limite superior)

Para definir o método de interpolação usamos:

integral.setMethod(Número do método)

Em seguida executamos com:

integral.run()

E extraímos o resultado com:

integral.result()

Vamos a um exemplo prático.
Abra uma nota e digite (ou copie e cole) os seguintes comandos:

integral = Integration(graph("Gráfico1").activeLayer(), "Tabela1_2",0,5)
integral.setMethod(2)
integral.run()
integral.result()

Selecione tudo e tecle Ctrl + j para executar (se preferir, não selecione nada e tecle Ctrl + Shift + j). O resultado da operação aparecerá na janela de registro de resultados (Results Log), juntamente com todas as informações sobre a operação: método, limites, ymáx, etc.

Aí você pergunta: - Ok! Mas pra quê usar um script em Python para fazer esta operação se eu posso fazê-la através do menu "Análise" → "Integrar..."?

E eu respondo: - Pra poder automatizar o processo no caso de você precisar repeti-lo várias vezes. Por exemplo, se você precisar integrar vários intervalos da variável x, como é mostrado a seguir:

tabela2 = newTable("Tabela2",2,10) # criando uma nova tabela, com 2 colunas e 10 linhas
passo = 1.0 # incremento a ser utilizado para variar o intervalo de integração
lim_ini = 0.0
lim_fin = 1.0
for i in range(1,tabela2.numRows() + 1):
 tabela2.setCell(1,i,(lim_ini+lim_fin)/2)
 integral = Integration(graph("Gráfico1").activeLayer(),"Tabela1_2",lim_ini,lim_fin)
 integral.setMethod(1)
 integral.run()
 tabela2.setCell(2,i,integral.result())
 lim_ini = lim_ini + passo
 lim_fin = lim_fin + passo

Com este procedimento, obteremos uma tabela com valores da integração na segunda coluna e o valor médio do intervalo de integração na primeira.

Se esta informação for útil pra você, faça bom proveito.

Até a próxima.

2 comentários:

  1. No caso, eu adiciono a função há coluna como de costume?
    Para uma integral dupla posso ultilizar esse metodo tambem?Grato, e parabens pelo blog

    ResponderExcluir
  2. Olá Ruy,
    "No caso, eu adiciono a função há coluna como de costume?"
    Os passos descritos nesta dica devem ser executados em uma nota (menu "Arquivo" → "Novo" → "Nova nota / script"). Se você quiser adicionar os resultados à uma coluna de uma tabela pré existente basta usar algo do tipo:
    tabela2 = table("Tabela2")
    substituindo Tabela2 pelo nome da tabela que vc quer usar.

    "Para uma integral dupla posso ultilizar esse metodo tambem?"
    Bem, se vc está se referindo a integrais de superfície (∫∫f(x,y) dx dy) a partir de um gráfico 3D, então não dá. Pois o SciDAVis realiza integração numérica apenas em gráficos 2D.
    Mas se vc quiser integrar duas vezes com relação à mesma variável este método pode ser utilizado sim. Vc só terá que gerar um gráfico com o resultado da primeira integração antes de fazer a segunda.

    "Grato, e parabens pelo blog"
    De nada. Eu é que agradeço. E desculpe pela demora em responder. Eu nem estava no Brasil quando vc postou o comentário.
    Até mais.

    ResponderExcluir