Celulares tecnologia assuntos variados PontoABC já

introdução ao sympy

Aprendendo sympy

Neste poste irei falar sobre o sympy que tal como o maxima é usado para calculos matematicos
no entanto o sympy roda dentro do python o qual o faz ter uma certa flexibilidade maior que o maxima embora o maxima possa ser extendido via lisp também.

tau@spin:~/job/build$ python
Python 2.6.6 (r266:84292, Dec 27 2010, 00:02:40)
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from sympy import *
>>> from sympy.abc import *
>>> x
x
>>> y
y
>>> x + y
x + y
>>> x**2 + y**2
x**2 + y**2
>>>


Se voce tiver o sympy instalado certamente aquilo funcionará exatamente igual.
Caso contrário instale o sympy através do synaptic ou usando o pip.
É bem simples !!!

O odulo sympy.abc contem os lambdas que formam as variaveis, assim, precisamos importá-lo
para podermos inserir as expressões.

>>> WEIGHT = Symbol('WEIGHT')
>>> WEIGHT
WEIGHT
>>>

A classe Symbol recebe uma string e retorna uma class que referencia a aquela string
em uma maneira qual faz o sympy entender oque ele é dentro do contexto.
Assim, você também pode inserir variaveis cujo os nomes são longos.
É útil quando lidando com alguns tipos de problemas.

>>> HEIGHT = Symbol('HEIGHT')
>>> HEIGHT
HEIGHT
>>> WEIGHT + HEIGHT
HEIGHT + WEIGHT
>>>

Veja que *variavel* aqui tem um significado especial, ela não é bem uma variavel no sentido
que normalmente usamos em programação. A função dela é fazer com que o sympy
reconheça expressões e possa chamar funções em cima das expressões que você formou
usando aquelas *variaveis*

Vamos brincar com a função expand.

>>> expand((x+3) ** 4);
81 + 108*x + 54*x**2 + 12*x**3 + x**4
>>>

>>> expand(x**2 * (x**3 + 3)**2);
9*x**2 + 6*x**5 + x**8
>>>

Agora a função factor

>>> alpha = expand((x**3 + x**2 - x)**4 + (x-2)**2)
>>> alpha
4 - 4*x + x**2 + x**4 - 4*x**5 + 2*x**6 + 8*x**7 - 5*x**8 - 8*x**9 + 2*x**10 + 4*x**11 + x**12
>>> factor(alpha)
4 - 4*x + x**2 + x**4 - 4*x**5 + 2*x**6 + 8*x**7 - 5*x**8 - 8*x**9 + 2*x**10 + 4*x**11 + x**12
>>> beta = expand((x**3 + x**2 - x)**4)
>>> beta
x**4 - 4*x**5 + 2*x**6 + 8*x**7 - 5*x**8 - 8*x**9 + 2*x**10 + 4*x**11 + x**12
>>> factor(beta)
x**4*(1 - x - x**2)**4
>>>

Veja que podemos usar variaveis para guardar o resultado das expressões
e depois usa-los novamente oque torna o trabalho bem mais flexivel e simples.

E veja que algumas expressões a função factor não é capaz de fatorar ou pelo menos seguir
o caminho que a função expand seguiu.

>>> solve([x + y - 1, 2*x + y + 3], x, y)
{x: -4, y: 5}


>>> solve([x+y - 2, x - y ], x, y)
{x: 1, y: 1}
>>>

A função solve pode também resolver sistemas lineares você apenas precisa
introduzi-los naquela notação. Isto é, as equações estão na forma a_0*x_0 + a_1*x_1 + ... a_2x_n - b

onde a natural forma seria a_0*x_0 + a_1*x_1 + ... a_0*x_n = b.

Usando o conceito de vetores para melhor expressar-mos, u.v - b.
Onde . é o produto interno.

A função limit

>>> limit(1/(x-1), x, 1, dir='+')
oo
>>> limit(1/(x-1), x, 1, dir='-')
-oo
>>> limit((sin(x)/x), x, 0, dir='+')
1
>>> limit((sin(x)/x), x, 0, dir='-')
1
>>>

>>> limit(x+1, x, 2)
3
>>>

Falarei mais sobre o maxima e o sympy nos proximos posts.
Voce pode escolher um dos dois, ambos são realmente interessantes e uteis.
Embora eu irei aprofundar mais no sympy pois tenho um melhor conhecimento do python.

0 comentários:

Postar um comentário

Faça o seu comentário e nos siga no Twitter