Implementado extensões intervalares de funções em Python
Marcília Andrade Campos
Filipe Rafael G. Varjão
UFPE – Universidade Federal de Pernambuco / CIn - Centro de Informática
50740 - 540, Av. Prof. Luís Freire s/n - Recife, PE
E-mail:{frgv, mac}@cin.ufpe.br.
RESUMO
Métodos intervalares [5][6][7] controlam automaticamente os erros de arredondamento,
erros de aproximação e a propagação do erro nos dados iniciais. A aritmética de exatidão
máxima [3] define precisamente como realizar as operações aritméticas em computadores.
Portanto, os métodos intervalares com a aritmética de exatidão máxima podem ser considerados
um suporte para a computação científica. IntLab [9] é uma biblioteca, com procedimentos
intervalares e a aritmética de exatidão máxima, implementada no MatLab [4]. Entretanto,
mesmo sendo free, MatLab não é, o que motivou o desenvolvimento deste trabalho: realizar
livremente computação autovalidável, isto é, cálculos em computadores envolvendo intervalos e
a aritmética de exatidão máxima. Para tanto a linguagem escolhida foi Python [8] pois é uma
linguagem de programação de alto nível com característica de código aberto para todos seus
recursos de bibliotecas, módulos e frameworks.
Assim, o objetivo deste trabalho é desenvolver uma biblioteca intervalar de funções em
Python, denominada IntPy. Para tanto, inicialmente, foram considerados os resultados de
Barreto [1] sobre a implementação em Python dos arredondamentos direcionados ( , para
baixo e ∆, para cima), fundamentos da aritmética de exatidão máxima. Portanto, este trabalho
apresenta as propostas e implementações das extensões intervalares para as funções reais
potência, exponencial, logarítmica, raiz quadrada, seno, arco
seno,
seno
hiperbólico,
cosseno,
arco
cosseno,
cosseno
hiperbólico, tangente, arco tangente e tangente hiperbólica.
Os resultados a seguir mostram as chamadas no Python das funções intervalares potência,
seno e tangente hiperbólica. Seja IR o espaço dos intervalos e X IR, em que X = [x1, x2].
Chamada no Python
Exemplo: X = [-3, 2], n = 2
>>> X = IReal(-3, 2)
>>> pow(X, 2)
pow([x1, x2], n)
ou
>>> pow (IReal[-3,2], 2)
Resultado: [4.0, 9.0]
Exemplo: X = [0.25, 0.27], n = 4
>>> X = IReal(0.25, 0.27)
>>> pow(X, 4)
ou
>>> pow (IReal[0.25, 0.27], 4)
Resultado: [0.00390625, 0.005314410000000002]
As funções trigonométricas para intervalos apresentam restrições por não serem
globalmente monotônicas. Por exemplo, para determinar a função seno intervalar,
deve-se calcular sin(x1) e sin(x2). Se MAX(sin X) for igual a sin(x1), ou seja, sin(x1) > sin(x2),
então sin([x1, x2]) = [sin(x2), sin(x1)], caso contrário, sin([x1, x2]) = [sin(x1), sin(x2)].
890
Chamada no Python
Exemplo: X = [0, 1]
>>> X = IReal(0, 1)
>>> sin(X)
sin([x1, x2])
ou
>>> sin(IReal [0, 1])
Resultado: [0.0, 0.84147098480789662]
Exemplo: X = [-1, 1]
>>> X = IReal(-1, 1)
>>> sin(X)
ou
>>> sin(IReal[-1, 1])
Resultado: [-0.8414709848078965, 0.84147098480789662]
Chamada no Python
Exemplo: X = [0, 1]
>>> x = IReal(0, 1)
>>> tanh(x)
tanh([x1, x2])
ou >>> tanh(IReal [0, 1])
Resultado: [0.0, 0.76159415595576496]
Exemplo: X = [-1, 1]
>>> x = IReal(-1, 1)
>>> tanh(x)
ou >>> tanh(IReal [0, 1])
Resultado: [-0.76159415595576485, 0.76159415595576496]
Não foram encontradas dificuldades para as implementações das funções intervalares em
Python, o qual está em fase de testes, sendo usado para calcular probabilidades intervalares para
variáveis aleatórias [2][10], como um estudo de caso. Como continuação deste trabalho
pretende-se comparar resultados obtidos com IntPy e IntLab com respeito ao número de linhas
de código, tempo de processamento e facilidade de utilização por parte do usuário.
Palavras-chave: Matemática Intervalar, Aritmética de Exatidão Máxima, Computação
Científica, Python.
Referências
[1] Barreto, R. M., IntPy. Open Source. Disponível em http://pypi.python.org/pypi/IntPy/0.1.3,
2009. Acessado em 22/03/2010.
[2] Campos, M. A. “Uma Extensão Intervalar para a Probabilidade Real”, Tese de Doutorado PósGraduação em Ciências da Computação CIn/UFPE, 1997.
[3] Kulisch, U. W., Miranker, W. L., “Computer Arithmetic in Theory and Practice”. Academic
Press, 1981.
[4] MatLab, Disponível em: http://www.mathworks.com/. Acessado em 22/03/2010.
[5] Moore R. E., R. B. Kearfott, M. J. Cloud. “Introduction to Interval Analysis”. SIAM, 2009.
[6] Moore, R. E., “Interval Analysis”. Prentice-Hall, Englewood Cliffs, New Jersey, 1966.
[7] Moore, R. E., “Methods and Applications of Interval Analysis”. SIAM Studies in Applied
Mathematics, Philadelphia, 1979.
[8] Python, Disponível em: http://www.python.org/. Acessado em 21/03/2010.
[9] Rump S.M. “INTLAB-INTerval LABoratory”, Dordrecht, Institute for Reliable Computing,
Alemanha: Kluwer Academic Publishers, 77-104, 1999.
[10] Santos M. G. “Uma Extensão Intervalar para Variáveis Aleatórias Contínuas”, Tese de
Doutorado Pós-Graduação em Matemática Computacional /UFPE, 2010.
891
Download

2010Computação Científica P-G Implementado extensões