Introdução à Física Computacional I (2021.2)

Aula 1: introdução ao Mathematica

O ambiente do notebook

Um documento do Mathematica é um “bloco de notas” (notebook). Para criar um notebook em branco, abra o Mathematica e clique em “New Document”.

Ao criá-lo, surge um cursor horizontal piscando ao lado de um sinal de +. Clicando no sinal, pode-se mudar o tipo de entrada, para, por exemplo, incluir comentários. O padrão é inserir instruções na linguagem Wolfram, cuja sintaxe será discutida nesta disciplina.

Há outras formas de entrada possíveis, incluindo um formato livre que pode ser útil para descobrir as instruções na linguagem Wolfram correspondentes a um certo cálculo. No entanto, aqui não vamos explorar essas possibilidades.

Primeiro contato

No primeiro espaço disponível, vamos digitar uma operação simples, como 4+5. Para concluir a operação, pressione a tecla ENTER enquanto segura a tecla SHIFT.

4+5

Note que o Mathematica gera automaticamente os códigos “In[1]:=” e “Out[1]=”. O número entre colchetes ordena as entradas executadas desde o início da sessão do Mathematica.

Se quiser efetuar alguma operação com o resultado do último cálculo, você pode utilizar o símbolo %. Por exemplo, vamos calcular o fatorial do resultado anterior:

%!

Se quisermos nos referir ao penúltimo resultado (que nesse caso será novamente igual a 9), utilizamos %%, como no exemplo a seguir:

%%+3

Analogamente, o antepenúltimo resultado pode ser recuperado utilizando %%%.

É possível também fazer referência a um resultado pela sua ordem indicada entre colchetes, como em “Out[1]” ou, de forma mais geral, “Out[n]”. Isso pode ser feito com a construção %n, como nos exemplos abaixo:

%1+3

%2/224

Se você está repetindo os comandos em seu computador, deve ter notado que, após cada saída, o Mathematica gerou uma barra de sugestões de operações que podem ser feitas com cada resultado, como na figura a seguir.

Vamos seguir a sugestão de calcular os divisores de 1620, clicando em “divisors”. Isso automaticamente produz:

Divisors[1620]

Nesse caso, Divisors é uma função intrínseca do Mathematica, e 1620 é o argumento da função. Todo argumento ou conjunto de argumentos de uma função do Mathematica deve ser colocado entre colchetes.

As legendas das funções em português (“divisores”, no exemplo) aparecem se você indicar nas preferências do Mathematica o português como a língua a ser utilizada.

Operações aritméticas

Sistematizando o que já começamos a discutir nos slides anteriores, as operações aritméticas básicas no Mathematica são efetuadas com os símbolos exemplificados abaixo.

Adição: “+”

2.1+3.72 (* Note que o separador decimal é o ponto, não a vírgula! *)

Subtração: “-”

Multiplicação: “*”

2*5

Separar dois números por um espaço induz o Mathematica a introduzir um operador de multiplicação. No entanto, como o mesmo não ocorre em outras linguagens de programação, vou continuar usando o símbolo de multiplicação “*”.

Divisão: “/”

1.0/2

1/2.0

1/2

Note que o resultado da divisão de números “com vírgula” é também um número com vírgula, enquanto o resultado da divisão entre inteiros é um número racional. Mais sobre isso adiante.

Potenciação: “^”

2^3

Parênteses

Para agrupar operações de maneira mais clara, e garantir que sejam feitas na ordem que você deseja, utilize parênteses:

(2^3)^4

2^(3^4)

2^3^4

Constantes matemáticas

O Mathematica reconhece diversas constantes matemáticas importantes. Exemplos são dados a seguir, com uma ou mais formas de invocá-las indicadas entre aspas.

Pi: “Pi” ou “π”

Para produzir a segunda forma acima, há duas maneiras. A primeira delas é ir ao menu “Palettes”, escolher “Basic Math Assistant” e, na janela que será aberta, abrir a opção “Basic Commands” e clicar no símbolo π. A segunda forma, muito mais rápida, é pressionar a tecla ESC, digitar “pi” (sem aspas) e pressionar novamente ESC. Essa combinação de ESC-“nome”-ESC produz muitos símbolos úteis.

Pi: “Pi” ou “π”

Pi/2

Para produzir um valor numérico explícito de uma constante matemática, utilize a função intrínseca N:

N[%]

O número de Neper: “E” ou “e”

Para produzir a segunda forma, utilize o “Basic Math Assistant” ou digite ESC-“ee”-ESC. (Note que após você digitar o primeiro “e” abre-se um menu com os possíveis símbolos e as formas de produzi-los.)

E^2

N[E]

A unidade imaginária: “I” ou “i”

Para produzir a segunda forma, utilize o “Basic Math Assistant” ou digite ESC-“ii”-ESC.

(1+I)^2

N[(I+3)/2]

Algumas funções matemáticas

Na verdade, funções são objetos básicos da linguagem Wolfram, subjacente ao Mathematica. Mesmo quando utilizamos símbolos aritméticos, as entradas são convertidas em funções intrínsecas. Por exemplo, 2+5 equivale a Plus[2,5], forma que faz uso da função intrínseca Plus.

Toda função intrínseca do Mathematica começa com letra maiúscula.

A seguir, apresentamos algumas das funções úteis em física.

Raiz quadrada: Sqrt

Sqrt[2]

N[Sqrt[2]]

Função exponencial: Exp

N[Exp[1]]

Logaritmo natural: Log[x]

Log[E]

Logaritmo em base qualquer: Log[b,x]

Log[2,8]

Funções trigonométricas: Sin, Cos, Tan etc.

O Mathematica espera para essas funções argumentos em radianos, ou retorna resultados em radianos.

Sin[π]

Tan[π/3]

ArcCot[1]

Você pode converter de graus para radianos ou vice-versa usando a constante Degree:

Sin[180 Degree]

Tan[60 °] (* Para obter ° digite ESC-"deg"-ESC *)

N[ArcCot[1]/Degree]

Funções também podem ser invocadas na forma “pós-fixada”, em que argumento e função são separados por //:

Pi//N

Pi/2//N

1//Exp

Por questão de clareza, evitarei fazer uso da forma pós-fixada.

Variáveis e atribuições

No Mathematica, como na álgebra, podemos trabalhar com variáveis, representadas por letras. Para atribuir um valor numérico a uma variável, utilizamos o sinal de igualdade, como no exemplo a seguir. Após a atribuição, podemos trabalhar com uma variável em outros cálculos.

x=3

x+5

N[Exp[x]]

x=x+4

Note que o sinal de igualdade aqui não define uma equação, mas uma atribuição. No último exemplo, redefinimos x como tendo seu valor anterior acrescido de 4, daí o resultado igual a 7. Esse tipo de construção é comum a virtualmente todas as linguagens de programação.

Para evitar que uma atribuição ou qualquer instrução do Mathematica imprima um resultado, você pode finalizá-la com ponto-e-vírgula:

y=3;

y+5

N[Exp[y]]

Nomes de variáveis não estão limitados a uma única letra, mas é uma boa prática não iniciar os nomes com letras maiúsculas, para evitar conflitos com funções intrínsecas do Mathematica.

tempo=10;

velocidade = 3.6;

deslocamento = velocidade * tempo

Uma vez atribuído um valor a uma variável, a variável permanece ativa em uma mesma sessão do Mathematica até que esse valor seja “limpo”. Isso pode ser feito com a função intrínseca Clear:

x

Clear[x]

Note que o Mathematica indica variáveis com valores atribuídos com a cor preta e variáveis sem valor atribuído com a cor azul.

x

Formas numéricas

expr=Sqrt[(1.4*10^-25)*(6.9*10^-2)/(1.1*10^-22)]

Para expressar o valor de qualquer cálculo numérico ou variável com um certo número de algarismos significativos, utilize a função intrínseca NumberForm. Eis um exemplo com 2 algarismos significativos:

NumberForm[expr,2]

Para expressar um número em notação científica, utilize a função intrínseca ScientificForm:

ScientificForm[expr]

Um segundo argumento para a função estabelece a quantidade de algarismos significativos:

ScientificForm[expr,2]

Exemplo

Em uma câmara de vácuo, atingem-se pressões de até 1.00×(10^(-9)) Pa. Calcule o número de moléculas em um volume de 1.50 (m^3) a essa pressão, se a temperatura é de 350 K.

Valores exatos versus valores aproximados

O Mathematica trata números inteiros e racionais como exatos. A função intrínseca Precision[x] fornece o número de algarismos significativos no número x. Para números exatos, Precision retorna infinito como resultado:

Precision[5]

Precision[345/678]

Quando fornecemos em uma entrada apenas valores exatos, o Mathematica tenta retornar resultados exatos:

123/456 + 456/789+2*Sqrt[5]

Note que o Mathematica considera a raiz de 5 como exata:

Precision[Sqrt[5]]

Isso vale para as demais funções intrínsecas:

Cos[Pi/9]

O Mathematica não forneceu um valor numérico porque não converte números exatos para valores numéricos a não ser que solicitemos explicitamente:

Cos[N[Pi/9]]

Precisão de máquina versus precisão arbitrária

O Mathematica pode tratar números reais aproximados tanto como números de precisão arbitrária quanto com “precisão de máquina”, a qual em geral depende da arquitetura do computador utilizado.

Precision[Pi]

Precision[N[Pi]]

Para saber o valor numérico de MachinePrecision, execute $MachinePrecision:

$MachinePrecision

A menos que especifiquemos de modo contrário, o Mathematica considera números reais informados com menos do que a precisão de máquina como tendo essa precisão:

Precision[3.14159]

Se números com precisão de máquina aparecem em um cálculo, o resultado tem essa mesma precisão:

Sqrt[1.0+40+2/3]

Precision[%]

Note que os resultados do Mathematica, por padrão, são impressos apenas com seis algarismos. Para ver os demais dígitos, utilize a função intrínseca InputForm:

InputForm[%%]

Já a precisão arbitrária pode ser obtida com o auxílio da função intrínseca N. Por exemplo, vamos expressar π  com 200 algarismos significativos:

N[Pi,200]

Precision[%]

Qual é a diferença entre as funções intrínsecas N e NumberForm?

NumberForm[Pi,200]

Note que NumberForm não converte números exatos em números de precisão finita, ao contrário do que faz N.

Para a próxima aula

Façam os exercícios disponíveis na aba “24 de agosto” do E-disciplinas. A entrega dos exercícios conta apenas como presença na aula.