✍ Onde está o Wallis?

Uma implementação em LISP

A fórmula de Wallis é dada por1 latex2png equation

O código seguinte implementa em LISP a fórmula de Wallis de uma forma recursiva

(defun wallis(n)
  (cond ((eq n 0)
         2)
        (t
         (* (/ (* 2 n) (- (* 2 n) 1))
            (wallis (- n 1))
            (/ (* 2 n) (+ (* 2 n) 1))))))

Não deixa de ser curioso os diferentes outputs para vários valores de n:

> (wallis 1)
8/3

> (wallis 2)
128/45

> (wallis 3)
512/175

> (wallis 4)
32768/11025

> (wallis 5)
131072/43659

> (wallis 10)
137438953472/44801898141

> (wallis 50)
50216813883093446110686315385661331328818843555712276103168/16063834434771661191161473607166722989851247353354683757549

> (wallis 100)
80695308690215893426747474125094121072803306025913234775958104891895238188026287332176417290004307232371974124148359168/25750089606120885825398316830453602944399672486522403084160282339703753666964959026911303870016475450552576115105122225

Ou numa versão em vírgula flutuante:

(defun wallis-fp(n)
  (cond ((eq n 0)
         2)
        (t
         (* (/ (* n n) (- (* n n) .25))
            (wallis-fp (- n 1))))))
> (wallis-fp 1)
2.6666667

> (wallis-fp 2)
2.8444448

> (wallis-fp 3)
2.9257147

> (wallis-fp 4)
2.9721549

> (wallis-fp 5)
3.0021765

> (wallis-fp 10)
3.067705

> (wallis-fp 50)
3.1260788

> (wallis-fp 100)
3.1337879

> (wallis-fp 1000)
3.1408064

> (wallis-fp 10000)

3.1413496

Divirtam-se!

1. Por causa disto ;) New Derivation of Pi Links Quantum Physics and Pure Math

Palavras chave/keywords: LISP, Wallis

Criado/Created: 20-11-2015 [11:02]

Última actualização/Last updated: 23-01-2017 [09:16]


GNU/Emacs

1999-2017 (ç) Tiago Charters de Azevedo

São permitidas cópias textuais parciais/integrais em qualquer meio com/sem alterações desde que se mantenha este aviso.

Verbatim copying and redistribution of this entire page are permitted provided this notice is preserved.