A Aldeia Numaboa ancestral ainda está disponível para visitação. É a versão mais antiga da Aldeia que eu não quis simplesmente descartar depois de mais de 10 milhões de pageviews. Como diz a Sirley, nossa cozinheira e filósofa de plantão: "Misericórdia, ai que dó!"

Se você tiver curiosidade, o endereço é numaboa.net.br.

Leia mais...

Tutorial PARI/GP (I)

Sex

22

Abr

2005


13:12

(6 votos, média 4.67 de 5) 


  • Esquentando os motores

Antes de continuar, digite \p 28 para voltar para a precisão padrão. Agora, peça para a GP calcular 1/0. A GP responde com uma mensagem de erro óbvia: *** division by zero. Tente obter floor(exp(75)). Agora a resposta é *** floor: precision too low in truncr (precision loss in truncation), ou seja, precisão muito baixa no truncr (perda de precisão ao truncar). Como a função floor pede a parte inteira e esta é maior do que a precisão permite, a GP avisa com a mensagem de erro correspondente.

Ainda falando de erros, experimente calcular log(x). Creeeedo, a mensagem de erro diz *** log: log is not meromorphic at 0, ou seja, log não é meromórfico em 0 8) Para tirar a dúvida se a GP não sabe o que é log, digite ?log. A resposta é log(x): natural logarithm of x. Se a função é conhecida, então o erro é do usuário que não informou o valor de x. Elementar meu caro Watson ;)

Calcule a raiz quadrada de -1 com sqrt(-1). Você estava esperando uma nova mensagem de erro? Hahaha, a GP foi mais esperta e devolveu um número complexo! Experimente log(-2), exp(I*Pi) e I^I. Não custa repetir que a GP faz diferença entre letras maiúsculas e minúsculas (compare os resultados de I^2 e i^2). Só de brincadeira, experimente calcular 6*zeta(2)/Pi^2. O resultado está muito próximo, você não acha também?

A GP, apesar de chamar a função log, parece não ter entendido log(x). Que tal ver o que acontece com exp(x)? Eu fiquei embasbacada com o resultado 8) Esperava exp(x) e apareceu 1 + x + 1/2*x^2 + 1/6*x^3... etc e tal. É que a GP devolveu a Expansão de Taylor de 16 termos da função ao redor de x=0. 16 é o valor default para seriesprecision e que pode ser alterado digitando-se \ps n ou default(seriesprecision, n), onde n é o número de termos desejados na série de potências. Estas séries terminam sempre com 0(x^n), notação conhecida como "big-oh" e marca registrada das séries de potências.

A expansão de Taylor pode ser obtida para qualquer função que possa ser expandida ao redor de zero (o que, aliás, explica porque log(x) não funcionou). Experimente cos(x), cos(x)^2 + sin(x)^2, exp(cos(x)), gamma(1+x), exp(exp(x) - 1) e 1/tan(x). Aproveite para testar diversos comprimentos de série. Mas, e se quisermos uma expansão ao redor de um ponto diferente de zero? Basta informar a GP. Por exemplo, exp(x+5), cos(x+2) e até log(x+3).

Vamos testar uma coisa diferente. Digite (1 + x)^3 para obter o resultado x^3 + 3*x^2 + 3*x + 1. O resultado é um polinômio, novamente o resultado mais exato possível! Ué, e onde foi parar a expansão de Taylor com o "big-oh"? Se quisermos forçar a obtenção de uma série de potências é preciso usar a função Ser(), ou seja, Ser((1 + x)^3).

Resumindo: até este ponto vimos que, além de números inteiros, reais e racionais, o PARI/GP é capaz de lidar com números complexos, polinômios, funções racionais e séries de potências. O número de funções que ele oferece para trabalhar com estes tipos é muito grande. Neste tutorial serão vistos apenas alguns deles.

Informações adicionais