terça-feira, 2 de Junho de 2009
quarta-feira, 13 de Maio de 2009
ENBF
Tenho andado a brincar com o pacote do Emacs EbnfToPsPackage para escrever um manual de programação para os meus alunos. Entretanto o diagrama de Backus–Naur para este blog poderia ser:

Há quem que por aqui nunca passe, outros que só passam uma vez e ainda alguns que repetidamente aqui voltam.

Há quem que por aqui nunca passe, outros que só passam uma vez e ainda alguns que repetidamente aqui voltam.
quarta-feira, 6 de Maio de 2009
quarta-feira, 8 de Abril de 2009
Expressões condicionais
Uma expressão condicional tem a forma

onde os p's são proposições e os e's expressões de qualquer tipo.
A expressão condicional

pode ler-se da sequinte forma
"Se p1 então e1, caso contrário, se p2 então e2"
A regra que permite determinar o sue valor é a seguinte: começa-se por examinar os p's da esquerda para direita; se se encontrar um p cujo valor seja V (verdade) então o valor da expressão condicional é e,a expressão correspondente.
Alguns exemplos:
Valor absoluto de x

Factorial

Raiz quadrada de um número positivo a (método de Newton)

onde os p's são proposições e os e's expressões de qualquer tipo.
A expressão condicional

pode ler-se da sequinte forma
"Se p1 então e1, caso contrário, se p2 então e2"
A regra que permite determinar o sue valor é a seguinte: começa-se por examinar os p's da esquerda para direita; se se encontrar um p cujo valor seja V (verdade) então o valor da expressão condicional é e,a expressão correspondente.
Alguns exemplos:
Valor absoluto de x

Factorial

Raiz quadrada de um número positivo a (método de Newton)
Etiquetas:
Lisp,
Matemática
domingo, 5 de Abril de 2009
sábado, 4 de Abril de 2009
Raiz quadrada de um número positivo
Consideremos o problema de calcular a raiz quadrada de um número positivo $x$, isto é,
$\sqrt{x}=y$ tal que $y\ge 0$ e $y^2=x$.
Como é que um computador calcula raízes quadradas? A maneira usual é usarmos o método de Newton para determinar a solução da equação $y^2=x$. Começando com uma aproximação inicial $y$ para o valor da raiz quadrada de $x$, conseguimos obter uma melhor aproximação calculando a média aritmética de $y$ e de $x/y$.
Consideremos o cálculo de $\sqrt{2}$. Tomando o valor $1$ como aproximação inicial, obtemos a tabela:
Continuando com este processo iremos obter de cada vez melhores aproximações ao valor de $\sqrt{2}$.
Este algoritmo na sua presente forma foi descoberto por Herão de Alexandria no século um A.C.
A forma recursiva está implementada na função em GNU/Octave heron.m
O cálculo de uma aproximação à raiz quadrada de $2$ que corresponde ao comando
é de facto a composição seguinte (processo definido por recorrência linear):
$\sqrt{x}=y$ tal que $y\ge 0$ e $y^2=x$.
Como é que um computador calcula raízes quadradas? A maneira usual é usarmos o método de Newton para determinar a solução da equação $y^2=x$. Começando com uma aproximação inicial $y$ para o valor da raiz quadrada de $x$, conseguimos obter uma melhor aproximação calculando a média aritmética de $y$ e de $x/y$.
Consideremos o cálculo de $\sqrt{2}$. Tomando o valor $1$ como aproximação inicial, obtemos a tabela:
Aproximação Quociente Média
1 2/1 (2+1)/2=1.5
1.5 2/1.5=1.3333 (1.3333+1.5)/2=1.4167
1.4167 2/1.4167=1.4118 (1.4167+1.4118)/2=1.4142
1.4142 ...
Continuando com este processo iremos obter de cada vez melhores aproximações ao valor de $\sqrt{2}$.
Este algoritmo na sua presente forma foi descoberto por Herão de Alexandria no século um A.C.
A forma recursiva está implementada na função em GNU/Octave heron.m
function y=heron(x,y,tol)
while(abs(x-y.^2)>tol)
y=heron(x,(y+x/y)/2,tol);
endwhile;
endfunction;
O cálculo de uma aproximação à raiz quadrada de $2$ que corresponde ao comando
> heron(2,1,.001)
é de facto a composição seguinte (processo definido por recorrência linear):
> heron(2,1,.001)
> heron(2,heron(2,3/2,.001),.001)
> heron(2,heron(2,heron(2,17/12,.001),.001),.001)
577/408
Etiquetas:
Matemática
quarta-feira, 25 de Março de 2009
In copious free time
Tenho andado ocupado com isto...

Para breve uma explicação (clicar na figura para se perceber o que é).

Para breve uma explicação (clicar na figura para se perceber o que é).
Etiquetas:
Matemática
terça-feira, 17 de Março de 2009
sexta-feira, 13 de Março de 2009
Exercício favorito

Este é um dos meus exercícios favoritos que costumo dar aos meus alunos para resolver. Mostra bem o efeito dos arredondamentos em operações efectuadas em vírgula flutuante.
O resultado final é, para mim, surpreendente!
Etiquetas:
Ensino,
Matemática
Sincronismo de um pelotão de fuzilamento

Através de um do blogs que costumo ler dei com o Firing squad synchronization problem. A regra 60 dos autómatos celulares resolve-o.
Etiquetas:
Algoritmo,
Autómatos celulares
quarta-feira, 4 de Março de 2009
segunda-feira, 2 de Março de 2009
Come a papa, Joana come a papa
Bem sei que já não tem a frescura de outros tempos, mas ainda vale pela originalidade do conceito. Ainda não apareceu nada que se lhe aproxime. Vale a pena ler o comentário do autor do vídeo.
quarta-feira, 25 de Fevereiro de 2009
Fórmulas pouco conhecidas
Pelos vistos as expressões


são obtidas da fórmula de Weiertrass para a a função Gamma de Euler.
O código em GNU/Octave seguinte calcula as expressões anteriores para 0, 25, 50 e 100 termos.
O resultado é este:


são obtidas da fórmula de Weiertrass para a a função Gamma de Euler.
O código em GNU/Octave seguinte calcula as expressões anteriores para 0, 25, 50 e 100 termos.
clear all;
x=linspace(0,2,100);
clf;
hold on;
grid;
yc=cos(pi*x);
ys=sin(pi*x);
for j=0:25:100
z=pi*x;
for i=1:j;
z=z.*(1-1/i^2*x.^2);
endfor;
plot(x,z)
endfor;
for j=0:25:100
y=ones(1,100);
for i=0:j;
y=y.*(1-4/(2*i+1)^2*x.^2);
endfor;
plot(x,y,'m')
endfor;
plot(x,yc,'r-;cos(x);')
plot(x,ys,'g-;sin(x);')
axis([0 2 -1.5 1.5])
O resultado é este:
Etiquetas:
Funções,
Fórmulas,
GNU/Octave,
Matemática
Subscrever:
Mensagens (Atom)





