O Mathematica é conhecido por sua capacidade de resolver todos os tipos de problemas matemáticos e científicos. Também é notoriamente caro e de código fechado. E se existisse um programa de código aberto para Linux que permitisse explorar matemática gratuitamente? Existe e se chama SageMath.
O que é SageMath?
SageMath se descreve em sua página inicial como “um sistema de software matemático de código aberto gratuito licenciado sob a GPL”. Sua missão é criar “uma alternativa viável de código aberto” para programas proprietários como Mathematica, Maple ou MATLAB. O projeto foi iniciado pelo matemático William A. Stein, que já lecionou na Universidade de Washington. Ele lançou sua própria empresa, CoCalc, para fornecer SageMath e outras ferramentas populares no ecossistema Python on-line por meio de notebooks Jupyter.
Além de ser uma alternativa de código aberto para alguns dos principais programas matemáticos, o SageMath é baseado em Python. Outros sistemas usam suas próprias linguagens. Como o Python já é amplamente utilizado, isso nivela a curva de aprendizado. Se você já conhece Python, já conhece amplamente o SageMath. Caso contrário, Python já é fácil de aprender e você provavelmente poderá entender os exemplos de código mesmo se não estiver familiarizado com Python.
O SageMath também é construído com base em um grande número de pacotes de código aberto que se tornaram populares na comunidade de computação científica, como NumPy, SciPy e SymPy. É semelhante a como uma distribuição Linux moderna é construída a partir de componentes de código aberto existentes, como utilitários GNU, X11, Wayland e outros.
Tal como acontece com outros projetos de código aberto, gerou até um fork chamado passagemath. Este projeto tem como objetivo estabelecer “afiliação de primeira classe ao ecossistema científico Python”, de acordo com sua página GitHub. Como este é um projeto bastante novo, é difícil recomendá-lo ainda, mas será interessante ver se isso dá certo.
Instalando o SageMath
Se você estiver executando Linux, o SageMath pode estar incluído no gerenciador de pacotes da sua distribuição. Se você estiver no Ubuntu, provavelmente terá que instalá-lo através de um ambiente Mamba. Se você estiver no Windows, também terá que instalar o subsistema Windows para Linux.
Como o Ubuntu também é a distribuição padrão do WSL, você também terá que criar um ambiente Mamba. Felizmente, é fácil de fazer:
mamba create -n sage sage Isso criará um ambiente Mamba chamado “sage” e instalará o pacote SageMath, bem como suas diversas dependências. Todo o sistema pesa cerca de um gigabyte.
Iniciando o SageMath no terminal
Iniciar o SageMath no terminal é simples. Se você instalou o SageMath através de um ambiente Mamba, você terá que ativá-lo:
mamba activate sageVocê pode então iniciar o SageMath a partir da linha de comando:
sage Você verá um ambiente semelhante ao interpretador Python ou IPython. Em grande parte, é o IPython nos bastidores.
Você pode começar a inserir comandos do SageMath no terminal desta forma, mas se quiser uma experiência mais gráfica ou uma maneira de salvar seu trabalho facilmente, você pode iniciar a interface do notebook.
Lançando um notebook SageMath
O Mathematica é famoso por sua interface de notebook, mas o SageMath também possui uma. Você pode iniciá-lo usando a opção –notebook na linha de comando:
sage --notebook Isso iniciará a interface do Jupyter Notebook. O notebook será iniciado em seu navegador da web. Você pode então criar um caderno selecionando a opção “criar caderno” no menu. O bloco de notas será aberto em uma nova guia. Quando o menu de seleção do kernel aparecer, selecione “SageMath” no menu e clique no botão “OK”.
Você pode criar células de código ou Markdown. Para digitar em uma célula, clique nela e digite o que deseja. Para alternar entre Markdown e código, selecione o tipo de código no menu suspenso.
Para executar uma célula, pressione Shift + Enter.
Para formatar a saída para que pareça um livro didático, use a opção %format e defina-a como LaTeX:
%format latexAritmética simples com SageMath
Você pode usar o SageMath como uma calculadora de mesa básica:
2 + 2 Você pode usar expoentes com o operador ^ (caret), embora o método padrão duplo asterisco (**) em Python também funcione. Por exemplo, para o quadrado 9:
9^2Você também pode tirar raízes quadradas. Observe como o SageMath deixa os números que não são quadrados perfeitos sem avaliação e fatora os quadrados perfeitos.
sqrt(2) Você pode obter uma aproximação numérica de um número algébrico com a função n():
n(sqrt(2)) Você pode usar o caractere _ (sublinhado) em uma sessão interativa para obter o último valor bem-sucedido. Isso evita redigitar ou recortar e colar. Adicionar sublinhados remonta a um tempo mais antigo. Para a penúltima operação, use dois sublinhados (__) e para a penúltima, três sublinhados (___) e assim por diante.
Resolvendo equações com SageMath
Você não pode trabalhar apenas com números, mas com variáveis de letras, pois o SageMath é um sistema de álgebra computacional. É útil para resolver equações.
Para usar uma variável simbólica, você deve primeiro declará-la. O SageMath já define “x” por padrão, mas vou demonstrar mesmo assim:
x = var('x') Podemos definir uma equação e defini-la como uma variável:
eq = 2*x + 3 == 5
Alternativamente, podemos defini-lo como igual a 0 subtraindo 5 de ambos os lados:
eq = 2*x + 3 - 5 Para resolver para x, você pode usar a função resolver com a expressão que deseja resolver e a variável que deseja resolver:
solve(eq,x) Você pode resolver equações quadráticas e polinômios de ordem superior da mesma maneira:
solve(2*x^2 + 3*x + 5*x,x) Isso mostrará as soluções. Como você pode perceber pelo “is” na saída, o SageMath conhece números complexos.
Você também pode resolver sistemas de equações com a função resolver. Usarei o exemplo do artigo da Wikipedia sobre sistemas de equações lineares:
x = var('x') y = var('y') z = var('z') solve([3*x + 2*y - z == 1,2*x - 2*y + 4*z == -2,-x + 1/2*y - z == 0],[x,y,z]) Fazendo plotagens
Você também pode criar gráficos de funções semelhantes ao que faria com uma calculadora gráfica. Para traçar nossa função quadrática para os valores x de -5 a 5:
plot(2*x^2 + 3*x + 5,(x,-5,5)) Para nerds da matemática: um pouco de cálculo e álgebra linear
SageMath é ainda mais poderoso com matemática avançada, como cálculo e álgebra linear.
Podemos derivar a nossa função quadrática em relação a x com o comando diff:
diff(2*x^2 + 3*x + 5,x)E você pode calcular a integral com o comando integral:
integral(2*x^2 + 3*x + 5,x) Você pode resolver de forma compacta sistemas de equações lineares com matrizes e vetores. Demonstrarei reescrevendo o sistema anterior como uma equação matricial:
A = Matrix([[3,2,-1],[2,-2,4],[-1,0.5,-1]]) b = vector([1,-2,0]) x = A.solve_right(b) xPodemos verificar a resposta com a multiplicação de matrizes:
A * xAlternativamente, poderíamos ter resolvido isso multiplicando o inverso de A vezes b:
x = A.inverse() * bIsso está apenas arranhando a superfície dos recursos do SageMath. Há o suficiente para manter um matemático iniciante ocupado durante anos.