Pular para o conteúdo principal

Matemática no terminal de comandos

Precisa fazer um cálculo rápido sem ter que abrir nenhuma aplicação gráfica como, por exemplo, uma planilha de cálculo? O terminal de comandos do Linux é ideal para esses casos.

Para cálculos com ponto flutuante usando somente o terminal de comandos temos diversas opções como o comando bc, por exemplo.

O comando bc (basic calculator) é utilizado para cálculos com precisão arbitrária e possui a vantagem de já vir instalado em qualquer distribuição Linux, portanto, sem a necessidade de instalar nada!

Além do bc, as linguagens de programação de modo geral são ricas em recursos matemáticos e algumas podem ser executadas interativamente no terminal. 

Neste artigo mostraremos exemplos de cálculos usando o bc, gnuplot, Python, Scilab, R, Julia, bash e zsh .

Operadores matemáticos

Para realizarmos os cálculos, precisamos saber a sintaxe básica e que símbolos são usados para representar os operadores matemáticos.

  • Soma, subtração, multiplicação e divisão
    • +, -, *, /
  • resto da divisão
    • %, usado pelo bc, Python, gnuplot, Julia, bash, zsh (além do C, etc.).
    • %%, usado pelo R
    • modulo(x,y), usado pelo Scilab.
  • exponenciação
    • **, usado pelo bc, Python, gnuplot, R, bash, zsh (além de Fortran, etc.)
    • ^, usado pelo Scilab, R, Julia.
    • Obs.: O R aceita as duas notações, '**' e '^'.

Esses operadores acima estão presentes em praticamente todas as linguagens e softwares com recursos matemáticos, mas outros operadores podem ser definidos conforme a linguagem ou software.

A calculadora bc

Antes de demonstrarmos o uso do bc, seguem algumas dicas:

  • A palavra "scale" define o número de casas decimais
  • Se bc for chamado com a opção -l (letra L minúscula), a biblioteca "math" é pré-carregada e o "scale" padrão é definido como 20. 
  • A biblioteca "math" possui as seguintes funções:
    s (x): seno, x em radianos.
    c (x): cosseno, x is in radians.
    a (x): arco tangente, returna radianos.
    l (x): logaritmo natural.
    e (x): função exponencial de base "e" (número de Euler).
    j (n,x): função de Bessel de ordem inteira "n".

Vamos usar a interface do bc para realizar as seguintes operações:

  • Calcular o valor de pi com 10 casas decimais;
  • Calcular cos(pi/4);
  • Calcular ln(10);
  • Definir recursivamente a função fat(x)  para cálculo do fatorial.

Note que cos(pi/4) deu um pouco diferente de cos(atan(1)). Tente explicar o motivo! Para sair da interface do bc, digite quit<ENTER>.

gnuplot

O gnuplot pode ser facilmente instalado na família Ubuntu ou Debian com:

$ sudo apt install gnuplot-x11

No comando de instalação, poderíamos ter omitido "-x11" mas, nesse caso, o terminal padrão instalado seria o "qt". Para executar o gnuplot, basta digitar gnuplot <ENTER> e para encerrar, digite quit<ENTER>.

Vamos usar o gnuplot para calcular cos(π/4), ln(10) e o fatorial de 4:

Python

O Python geralmente já vem instalado no Linux, mas se o seu sistema só tiver o Python, versão 2 instalado, é recomendável instalar a versão 3, bastando digitar no terminal:

$ sudo apt install python3

Para entrar na interface de comandos do Python, basta digitar python3 <ENTER>. Depois, é só importar a biblioteca de funções matemáticas para usar as funções matemáticas. Quando tiver terminado, digite quit() <ENTER>.

A imagem a seguir ilustra o uso do Python para realizar cálculos matemáticos.

Scilab

O Scilab é um software para computação numérica com linguagem semelhante ao Matlab. Além da interface gráfica normal, O Scilab possui uma interface de linha de comando que pode ser rodada diretamente no terminal de comandos do Linux.

Vimos que o caractere de percentual (%) é usado por outras linguagens para indicar o resto da divisão de dois números. O "%" também é usado por algumas linguagens como indicativo de comentário (caso do LaTeX e do Matlab). No Scilab, o "%" é um caractere especial usado para definir algumas constantes, por exemplo, %pi, %i (unidade imaginária) e %e (número de Euler, base dos logaritmos naturais). 

Para instalar o Scilab no Ubuntu, basta digitar o seguinte comando no terminal:

$ sudo apt install scilab

Para executar o Scilab diretamente no Terminal, digite scilab-cli <ENTER> e para encerrar digite quit <ENTER>.

A imagem a seguir ilustra o uso do Scilab para realizar cálculos matemáticos.

R

R é um sistema para computação estatística e visualização gráfica de dados. Para instalá-lo no Ubuntu e derivados basta digitar no terminal:

$ sudo apt install r-base

Para executá-lo diretamente no terminal de comandos, tecle R <Enter> e para encerrá-lo, tecle q() <ENTER>. 

A imagem a seguir ilustra o uso do R para realizar cálculos matemáticos.

Julia

Julia é uma linguagem de tipagem dinâmica, apropriada para computação científica e numérica, com desempenho comparável às linguagens tradicionais de tipagem estática.

Para instalação, basta seguir as instruções disponíveis na área de downloads do site do Julia. A instalação é simples, bastando baixar a pasta compactada contendo todos os arquivos necessários. Até o momento da edição final desse texto, a última versão estável era a versão 1.5.2, lançada em 23 de setembro de 2020 e foi baixada com o comando a seguir:

$ wget https://julialang-s3.julialang.org/bin/linux/x64/1.5/julia-1.5.2-linux-x86_64.tar.gz

Para descompactar o arquivo, estando no mesmo diretório em que o arquivo compactado foi baixado, digite:

$ tar xvzf julia-1.5.2-linux-x86_64.tar.gz

Será criada a pasta julia-1.5.2 (se você tiver baixado a versão 1.5.2) e o arquivo executável encontra-se, como de costume, na subpasta bin e chama-se, como era de se esperar, julia.

Para iniciar a interface de comandos do Julia, basta digitar julia <ENTER> e para encerrar, digite exit() <ENTER> ou <CTRL> d.

A imagem a seguir ilustra o uso do Julia para realizar cálculos matemáticos.

bash

O bash, o interpretador de comandos padrão na maioria das distribuições Linux, não possui nativamente suporte a cálculos com números de ponto flutuante mas está apto a fazer cálculos com números inteiros.

Os cálculos usando o bash podem ser realizados diretamente no terminal de comandos ou em arquivos de script (chamados de shell script ou bash script) utilizando-se, frequentemente, dos elementos seguintes:

  • o comando echo
  • a expansão aritmética (( ... ))
  • os operadores aritméticos: -, +, *, /, %, **, etc

Vejamos alguns exemplos:


Lembramos que, na linguagem bash, o operador '%' retorna o resto de uma divisão entre números inteiros, '**' significa a exponenciação, ou seja, x**2 é o mesmo que elevar x ao quadrado. O operador '+=' retorna a soma e atualiza o valor da variável precedente. 

Apesar do bash não ter suporte nativo a ponto flutuante, se você tiver um programa com recursos matemáticos melhores e que aceite receber dados de entrada via pipe, '|', o bash pode encaminhar os cálculos para serem processados por tal programa. Esse é o caso do bc e do gnuplot. 

A imagem a seguir demonstra o bash solicitando ao bc para fazer os cálculos

A imagem seguinte ilustra o bash solicitando ao gnuplot para fazer os cálculos.

zsh

Além do bash, há vários outros interpretadores de comandos que podem ser instalados, entre eles, o zsh.

O zsh possui uma série de aprimoramentos com a finalidade de aumentar a usabilidade do terminal de comandos e inclusive a capacidade de realizar cálculos de ponto flutuante.

A imagem seguinte ilustra esses recursos.

Note, que na última linha, elevamos a 0.5 para obter a raiz quadrada.

Por enquanto é só!


Comentários

Postagens mais visitadas deste blog

QBASIC no Linux

Problema:   Você encontrou um diretório com antigos programas feitos em QBASIC e quer rodá-los no Linux. Como fazer? Estratégia: 1) Obtenha um emulador do DOS, por exemplo, o dosbox 2) Obtenha o QBASIC na versão desejada 3) Faça o emulador DOS considerar o diretório onde se encontra o executável do QBASIC como drive C: Como fazer?   Supondo que está usando o Ubuntu ou Mint e afins, os 3 passos da estratégia podem ser assim implementados: * Passo 1: Abra um terminal de comandos e digite (após o $) $ sudo apt-get install dosbox * Passo 2: Caso você só tenha os arquivos fonte e não tenha o compilador QBASIC, você poderá baixá-lo daqui . Se já tiver o QBASIC, vá direto ao próximo passo. * Passo 3: 3.1) Deixe o QBASIC em ~/qbasic (só uma sugestão). No meu caso, eu não precisei baixar pois eu já tinha uma pasta com a seguinte estrutura:  /home/richard/Laboratorio/programacao/qbasic Nesse caso eu criei um link de ~/qbasic apontando para o local c...

O incrível sed - stream editor

sed é um editor extremamente eficiente usado para realizar transformações de texto. Se você está precisando substituir uma palavra ou expressão, que ocorre várias vezes ao longo de um arquivo de texto, pode pensar em usar o comando "Localizar e Substituir" normalmente presente em qualquer programa para edição desses arquivos. Mas se o problema é que você tem datas no formato mm-dd-yyyy (mês-dia-ano) e precisa trocar para o formato dd/mm/yyyy (dia/mês/ano), a ferramenta de Localizar e Substituir não vai ajudar pois: São várias datas com dias, meses e anos variados; A ordem mês - dia mudará para dia - mês. Essa tarefa que é praticamente impossível para os editores comuns, o sed faz isso com os "pés nas costas". Vamos conhecê-lo um pouco? Seções Que tal uma mãozinha! Sintaxe Áreas de transferência Fluxo normal de funcionamento do sed Regexp Classes de caracteres Caracteres de escape Resumo dos comandos 'sed' Principai...