5 - MATEMATICA-SIMBOLICA

560 days ago by jmarcellopereira

CALCULO COM MATEMÁTICA SIMBÓLICA

SAGE usa o motor do MAXIMA para realizar calculos de matemática simbólica. Dessa forma, é possível integrar e diferenciar funções simbolicamente, resolver EDOs de primeira ordem, grande parte das EDOs lineares de segunda ordem, e ainda tem implementado o método da transformada de Laplace para EDOs lineares de qualquer ordem. O MAXIMA também suporta uma série de funções especiais, é capaz de criar gráficos via gnu-plot, e possui métodos para resolver equações polinômiais e manipular matrizes (por exemplo, escalonar e calcular autovalores e autovetores). Para trabalhar com calculos simbólicos, utilizamos o comando var('variável').

CARREGANDO VARIÁVEIS

reset() 
       
var('w') 
       
w
w

TESTANDO O CÁLCULO SIMBÓLICO

A variável "x" por pdrão ja vem implementada como variável simbólica. Erro y

reset() var('w') 
       
w
w
# veja que 'x' ja é por padrão uma variável definida no SAGE. 'y' não foi declarado, veja o que acontece. 3*x + x; w^2 + w^2/2 ; y + 2*y 
       
12
3/2*w^2
Traceback (click to the left of this block for traceback)
...
NameError: name 'y' is not defined
12
3/2*w^2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "_sage_input_27.py", line 10, in <module>
    exec compile(u'open("___code___.py","w").write("# -*- coding: utf-8 -*-\\n" + _support_.preparse_worksheet_cell(base64.b64decode("IyB2ZWphIHF1ZSAneCcgamEgw6kgcG9yIHBhZHLDo28gdW1hIHZhcmnDoXZlbCBkZWZpbmlkYSBubyBTQUdFLiAneScgbsOjbyBmb2kgZGVjbGFyYWRvLCB2ZWphIG8gcXVlIGFjb250ZWNlLgoKMyp4ICsgeDsgd14yICsgd14yLzIgOyB5ICsgMip5"),globals())+"\\n"); execfile(os.path.abspath("___code___.py"))
  File "", line 1, in <module>
    
  File "/tmp/tmp44MW2v/___code___.py", line 4, in <module>
    exec compile(u'_sage_const_3 *x + x; w**_sage_const_2  + w**_sage_const_2 /_sage_const_2  ; y + _sage_const_2 *y
  File "", line 1, in <module>
    
NameError: name 'y' is not defined
t = w^2 + 5 tr = -2*w^2 + 5*w -1 show(t) ; show(tr) 
       

t + tr 
       
-w^2 + 5*w + 4
-w^2 + 5*w + 4
a = [x, x^2, x^3] b = [2, 2*x, 2*x^3] a; b 
       
[3, 9, 27]
[2, 6, 54]
[3, 9, 27]
[2, 6, 54]
# concatenar as duas listas a + b; 
       
[3, 9, 27, 2, 6, 54]
[3, 9, 27, 2, 6, 54]
x = 3 c = a+b x ;a; b; c 
       
3
[3, 9, 27]
[2, 6, 54]
[3, 9, 27, 2, 6, 54]
3
[3, 9, 27]
[2, 6, 54]
[3, 9, 27, 2, 6, 54]

No exemplo acima, foi atribuído um valor x = 2 para a variável e ainda assim não o cálculo não foi realizado. Porém, qualquer outra expressão a partir de agora contendo a variável "x" será avaliada. O SAGE não apresenta alteração imediata de valor em estruturas ja montadas. Para efetuar o calculo nos vetores, é só atribuir novamete os vetores das variáveis a,b e c

a = [x, x^2, x^3] b = [2, 2*x, 2*x^3] c = a +b; a ; b ; c 
       
[3, 9, 27]
[2, 6, 54]
[3, 9, 27, 2, 6, 54]
[3, 9, 27]
[2, 6, 54]
[3, 9, 27, 2, 6, 54]

A partir de agora, qualquer expressão contendo a variável "x", será efetuado o calculo com x=3

# x = 3 como atribuído acima wt = x^3 - log(x) + sin(x) wt ; n(wt) 
       
-log(3) + sin(3) + 27
26.0425077193918
-log(3) + sin(3) + 27
26.0425077193918

Algebra Linear Simbólica

É possível trabalhar com matrizes e vetores simbólicos. Basta declarar as variáveis e realizar a execução

var("a11 ,a12, a21, a22, b11, b21") 
       
(a11, a12, a21, a22, b11, b21)
(a11, a12, a21, a22, b11, b21)
#vetor coluna A = matrix([[a11, a12], [a21, a22]]) B = vector([b11, b21]) A ; B; 
       
[a11 a12]
[a21 a22]
(b11, b21)
[a11 a12]
[a21 a22]
(b11, b21)
det(A); A.det() 
       
-a12*a21 + a11*a22
-a12*a21 + a11*a22
-a12*a21 + a11*a22
-a12*a21 + a11*a22
A\B 
       
(-a12*(a21*b11/a11 - b21)/(a11*(a12*a21/a11 - a22)) + b11/a11,
(a21*b11/a11 - b21)/(a12*a21/a11 - a22))
(-a12*(a21*b11/a11 - b21)/(a11*(a12*a21/a11 - a22)) + b11/a11, (a21*b11/a11 - b21)/(a12*a21/a11 - a22))
A.inverse(); A^(-1) 
       
[1/a11 - a12*a21/(a11^2*(a12*a21/a11 - a22))              
a12/(a11*(a12*a21/a11 - a22))]
[              a21/(a11*(a12*a21/a11 - a22))                     
-1/(a12*a21/a11 - a22)]
[1/a11 - a12*a21/(a11^2*(a12*a21/a11 - a22))              
a12/(a11*(a12*a21/a11 - a22))]
[              a21/(a11*(a12*a21/a11 - a22))                     
-1/(a12*a21/a11 - a22)]
[1/a11 - a12*a21/(a11^2*(a12*a21/a11 - a22))               a12/(a11*(a12*a21/a11 - a22))]
[              a21/(a11*(a12*a21/a11 - a22))                      -1/(a12*a21/a11 - a22)]
[1/a11 - a12*a21/(a11^2*(a12*a21/a11 - a22))               a12/(a11*(a12*a21/a11 - a22))]
[              a21/(a11*(a12*a21/a11 - a22))                      -1/(a12*a21/a11 - a22)]
A*B 
       
(a11*b11 + a12*b21, a21*b11 + a22*b21)
(a11*b11 + a12*b21, a21*b11 + a22*b21)

%%% FIM CALCULO COM MATEMATICA SIMBOLICA %%%