• Nenhum resultado encontrado

Como funciona a sua calculadora?

N/A
N/A
Protected

Academic year: 2021

Share "Como funciona a sua calculadora?"

Copied!
62
0
0

Texto

(1)

Como funciona a sua calculadora?

Como funciona a sua calculadora?

Tiago J. Fonseca

ICMC - USP

(2)

Como funciona a sua calculadora? Introdu¸c˜ao

Como aproximar fun¸c˜

oes trigonom´

etricas?

Responda r´apido: qual ´e o algoritmo usado, nas calculadoras, para aproximar fun¸c˜oes trigonom´etricas (e.g. sin θ, cos θ, etc.)? N˜ao ´e expans˜ao em Taylor! sin θ = θ −θ 3 3! + θ5 5! − θ7 7! + · · ·

(3)

Como funciona a sua calculadora? Introdu¸c˜ao

Como aproximar fun¸c˜

oes trigonom´

etricas?

Responda r´apido: qual ´e o algoritmo usado, nas calculadoras, para aproximar fun¸c˜oes trigonom´etricas (e.g. sin θ, cos θ, etc.)? N˜ao ´e expans˜ao em Taylor! sin θ = θ −θ 3 3! + θ5 5! − θ7 7! + · · ·

(4)

Como funciona a sua calculadora? Introdu¸c˜ao

Como aproximar fun¸c˜

oes trigonom´

etricas?

Responda r´apido: qual ´e o algoritmo usado, nas calculadoras, para aproximar fun¸c˜oes trigonom´etricas (e.g. sin θ, cos θ, etc.)? N˜ao ´e expans˜ao em Taylor! sin θ = θ −θ 3 3! + θ5 5! − θ7 7! + · · ·

(5)

Como funciona a sua calculadora? Introdu¸c˜ao

Como aproximar fun¸c˜

oes trigonom´

etricas?

Responda r´apido: qual ´e o algoritmo usado, nas calculadoras, para aproximar fun¸c˜oes trigonom´etricas (e.g. sin θ, cos θ, etc.)? N˜ao ´e expans˜ao em Taylor! sin θ = θ −θ 3 3! + θ5 5! − θ7 7! + · · ·

Por que n˜ao?

(6)

Como funciona a sua calculadora? Introdu¸c˜ao

Como aproximar fun¸c˜

oes trigonom´

etricas?

Responda r´apido: qual ´e o algoritmo usado, nas calculadoras, para aproximar fun¸c˜oes trigonom´etricas (e.g. sin θ, cos θ, etc.)? N˜ao ´e expans˜ao em Taylor! sin θ = θ −θ 3 3! + θ5 5! − θ7 7! + · · ·

(7)

Como funciona a sua calculadora? Introdu¸c˜ao

Custo computacional

Lembremos que computadores normalmente trabalham com n´umeros bin´arios.

As opera¸c˜oes mais r´apidas que podem ser feitas num computador s˜ao:

1 Adicionar e subtrair n´umeros.

2 Compara¸c˜ao de n´umeros (i.e. decidir se ´e maior ou menor). 3 Armazenamento e leitura de n´umeros na mem´oria.

4 Multiplica¸c˜ao por 2n, n ∈ Z. Ex.:

0.0001011 × 22 = 0.0101100.

Num computador com pouca capacidade de processamento, o ideal seria obter um algoritmo que utilizasse apenas estas opera¸c˜oes.

(8)

Como funciona a sua calculadora? Introdu¸c˜ao

Custo computacional

Lembremos que computadores normalmente trabalham com n´umeros bin´arios. As opera¸c˜oes mais r´apidas que podem ser feitas num computador s˜ao:

1 Adicionar e subtrair n´umeros.

2 Compara¸c˜ao de n´umeros (i.e. decidir se ´e maior ou menor). 3 Armazenamento e leitura de n´umeros na mem´oria.

4 Multiplica¸c˜ao por 2n, n ∈ Z. Ex.:

0.0001011 × 22 = 0.0101100.

Num computador com pouca capacidade de processamento, o ideal seria obter um algoritmo que utilizasse apenas estas opera¸c˜oes.

(9)

Como funciona a sua calculadora? Introdu¸c˜ao

Custo computacional

Lembremos que computadores normalmente trabalham com n´umeros bin´arios. As opera¸c˜oes mais r´apidas que podem ser feitas num computador s˜ao:

1 Adicionar e subtrair n´umeros.

2 Compara¸c˜ao de n´umeros (i.e. decidir se ´e maior ou menor).

3 Armazenamento e leitura de n´umeros na mem´oria. 4 Multiplica¸c˜ao por 2n, n ∈ Z. Ex.:

0.0001011 × 22 = 0.0101100.

Num computador com pouca capacidade de processamento, o ideal seria obter um algoritmo que utilizasse apenas estas opera¸c˜oes.

(10)

Como funciona a sua calculadora? Introdu¸c˜ao

Custo computacional

Lembremos que computadores normalmente trabalham com n´umeros bin´arios. As opera¸c˜oes mais r´apidas que podem ser feitas num computador s˜ao:

1 Adicionar e subtrair n´umeros.

2 Compara¸c˜ao de n´umeros (i.e. decidir se ´e maior ou menor). 3 Armazenamento e leitura de n´umeros na mem´oria.

4 Multiplica¸c˜ao por 2n, n ∈ Z. Ex.:

0.0001011 × 22 = 0.0101100.

Num computador com pouca capacidade de processamento, o ideal seria obter um algoritmo que utilizasse apenas estas opera¸c˜oes.

(11)

Como funciona a sua calculadora? Introdu¸c˜ao

Custo computacional

Lembremos que computadores normalmente trabalham com n´umeros bin´arios. As opera¸c˜oes mais r´apidas que podem ser feitas num computador s˜ao:

1 Adicionar e subtrair n´umeros.

2 Compara¸c˜ao de n´umeros (i.e. decidir se ´e maior ou menor). 3 Armazenamento e leitura de n´umeros na mem´oria.

4 Multiplica¸c˜ao por 2n, n ∈ Z.

Ex.: 0.0001011 × 22 = 0.0101100.

Num computador com pouca capacidade de processamento, o ideal seria obter um algoritmo que utilizasse apenas estas opera¸c˜oes.

(12)

Como funciona a sua calculadora? Introdu¸c˜ao

Custo computacional

Lembremos que computadores normalmente trabalham com n´umeros bin´arios. As opera¸c˜oes mais r´apidas que podem ser feitas num computador s˜ao:

1 Adicionar e subtrair n´umeros.

2 Compara¸c˜ao de n´umeros (i.e. decidir se ´e maior ou menor). 3 Armazenamento e leitura de n´umeros na mem´oria.

4 Multiplica¸c˜ao por 2n, n ∈ Z. Ex.:

0.0001011 × 22 = 0.0101100.

Num computador com pouca capacidade de processamento, o ideal seria obter um algoritmo que utilizasse apenas estas opera¸c˜oes.

(13)

Como funciona a sua calculadora? Introdu¸c˜ao

Custo computacional

Lembremos que computadores normalmente trabalham com n´umeros bin´arios. As opera¸c˜oes mais r´apidas que podem ser feitas num computador s˜ao:

1 Adicionar e subtrair n´umeros.

2 Compara¸c˜ao de n´umeros (i.e. decidir se ´e maior ou menor). 3 Armazenamento e leitura de n´umeros na mem´oria.

4 Multiplica¸c˜ao por 2n, n ∈ Z. Ex.:

0.0001011 × 22 = 0.0101100.

Num computador com pouca capacidade de processamento, o ideal seria obter um algoritmo que utilizasse apenas estas opera¸c˜oes.

(14)

Como funciona a sua calculadora? Introdu¸c˜ao

CORDIC

Em 1959, Jack Volder inventou o algoritmo CORDIC.

COordinate Rotation DIgital Computer

O CORDIC ´e muito r´apido! Consiste, majoritariamente, em utilizar as 4 opera¸c˜oes anteriores.

Assim como boa parte dos algoritmos num´ericos, o CORDIC foi desenvolvido por uma raz˜ao muito nobre: fins militares. O objetivo era utiliz´a-lo no sistema de navega¸c˜ao do

(15)

Como funciona a sua calculadora? Introdu¸c˜ao

CORDIC

Em 1959, Jack Volder inventou o algoritmo CORDIC. COordinate Rotation DIgital Computer

O CORDIC ´e muito r´apido! Consiste, majoritariamente, em utilizar as 4 opera¸c˜oes anteriores.

Assim como boa parte dos algoritmos num´ericos, o CORDIC foi desenvolvido por uma raz˜ao muito nobre: fins militares. O objetivo era utiliz´a-lo no sistema de navega¸c˜ao do

(16)

Como funciona a sua calculadora? Introdu¸c˜ao

CORDIC

Em 1959, Jack Volder inventou o algoritmo CORDIC. COordinate Rotation DIgital Computer

O CORDIC ´e muito r´apido! Consiste, majoritariamente, em utilizar as 4 opera¸c˜oes anteriores.

Assim como boa parte dos algoritmos num´ericos, o CORDIC foi desenvolvido por uma raz˜ao muito nobre: fins militares. O objetivo era utiliz´a-lo no sistema de navega¸c˜ao do

(17)

Como funciona a sua calculadora? Introdu¸c˜ao

CORDIC

Em 1959, Jack Volder inventou o algoritmo CORDIC. COordinate Rotation DIgital Computer

O CORDIC ´e muito r´apido! Consiste, majoritariamente, em utilizar as 4 opera¸c˜oes anteriores.

Assim como boa parte dos algoritmos num´ericos, o CORDIC foi desenvolvido por uma raz˜ao muito nobre: fins militares.

O objetivo era utiliz´a-lo no sistema de navega¸c˜ao do

(18)

Como funciona a sua calculadora? Introdu¸c˜ao

CORDIC

Em 1959, Jack Volder inventou o algoritmo CORDIC. COordinate Rotation DIgital Computer

O CORDIC ´e muito r´apido! Consiste, majoritariamente, em utilizar as 4 opera¸c˜oes anteriores.

Assim como boa parte dos algoritmos num´ericos, o CORDIC foi desenvolvido por uma raz˜ao muito nobre: fins militares. O objetivo era utiliz´a-lo no sistema de navega¸c˜ao do

(19)

Como funciona a sua calculadora? Introdu¸c˜ao

(20)

Como funciona a sua calculadora? O algoritmo CORDIC

Ideia

Vamos aproximar cos θ e sin θ ao mesmo tempo.

Podemos considerar o ponto (cos θ, sin θ) no c´ırculo unit´ario. Objetivo: obter uma sequˆencia de pontos em R2 convergindo para (cos θ, sin θ).

Vamos assumir que todos os pontos desta sequˆencia est˜ao no c´ırculo unit´ario. Porquˆe?

(21)

Como funciona a sua calculadora? O algoritmo CORDIC

Ideia

Vamos aproximar cos θ e sin θ ao mesmo tempo.

Podemos considerar o ponto (cos θ, sin θ) no c´ırculo unit´ario.

Objetivo: obter uma sequˆencia de pontos em R2 convergindo para (cos θ, sin θ).

Vamos assumir que todos os pontos desta sequˆencia est˜ao no c´ırculo unit´ario. Porquˆe?

(22)

Como funciona a sua calculadora? O algoritmo CORDIC

Ideia

Vamos aproximar cos θ e sin θ ao mesmo tempo.

Podemos considerar o ponto (cos θ, sin θ) no c´ırculo unit´ario. Objetivo: obter uma sequˆencia de pontos em R2 convergindo para (cos θ, sin θ).

Vamos assumir que todos os pontos desta sequˆencia est˜ao no c´ırculo unit´ario. Porquˆe?

(23)

Como funciona a sua calculadora? O algoritmo CORDIC

Ideia

Vamos aproximar cos θ e sin θ ao mesmo tempo.

Podemos considerar o ponto (cos θ, sin θ) no c´ırculo unit´ario. Objetivo: obter uma sequˆencia de pontos em R2 convergindo para (cos θ, sin θ).

Vamos assumir que todos os pontos desta sequˆencia est˜ao no c´ırculo unit´ario. Porquˆe?

(24)

Como funciona a sua calculadora? O algoritmo CORDIC

Ideia

Vamos aproximar cos θ e sin θ ao mesmo tempo.

Podemos considerar o ponto (cos θ, sin θ) no c´ırculo unit´ario. Objetivo: obter uma sequˆencia de pontos em R2 convergindo para (cos θ, sin θ).

Vamos assumir que todos os pontos desta sequˆencia est˜ao no c´ırculo unit´ario. Porquˆe?

(25)

Como funciona a sua calculadora? O algoritmo CORDIC

Rota¸c˜

oes no R

2 Rθ =  cos θ − sin θ sin θ cos θ 

Dado um vetor (ponto) em R2 com coordenadas (x , y ). O vetor  cos θ − sin θ sin θ cos θ  ·  x y  =  x cos θ − y sin θ x sin θ + y cos θ 

´e o vetor (x , y ) rotacionado de um ˆangulo θ no sentido

(26)

Como funciona a sua calculadora? O algoritmo CORDIC

Rota¸c˜

oes no R

2 Rθ =  cos θ − sin θ sin θ cos θ 

Dado um vetor (ponto) em R2 com coordenadas (x , y ). O vetor  cos θ − sin θ sin θ cos θ  ·  x y  =  x cos θ − y sin θ x sin θ + y cos θ 

´e o vetor (x , y ) rotacionado de um ˆangulo θ no sentido anti-hor´ario.

(27)

Como funciona a sua calculadora? O algoritmo CORDIC

Rota¸c˜

oes no R

2 Rθ =  cos θ − sin θ sin θ cos θ 

Dado um vetor (ponto) em R2 com coordenadas (x , y ). O vetor  cos θ − sin θ sin θ cos θ  ·  x y  =  x cos θ − y sin θ x sin θ + y cos θ 

´e o vetor (x , y ) rotacionado de um ˆangulo θ no sentido

(28)

Como funciona a sua calculadora? O algoritmo CORDIC

Vamos fixar que o ponto de partida ´e sempre (1, 0).

Dado um ponto (cos x , sin x ), queremos agora obter ˆangulos θ1, θ2, . . . , θn (positivos ou negativos), de maneira esperta,

tais que  cos x sin x  ≈ Rθn· · · Rθ2Rθ1  1 0 

e o produto da direita seja “r´apido” de calcular. Note que (aqui come¸ca a sacanagem)

Rθ =  cos θ − sin θ sin θ cos θ  = cos θ  1 − tan θ tan θ 1 

(29)

Como funciona a sua calculadora? O algoritmo CORDIC

Vamos fixar que o ponto de partida ´e sempre (1, 0).

Dado um ponto (cos x , sin x ), queremos agora obter ˆangulos θ1, θ2, . . . , θn (positivos ou negativos), de maneira esperta,

tais que  cos x sin x  ≈ Rθn· · · Rθ2Rθ1  1 0 

e o produto da direita seja “r´apido” de calcular.

Note que (aqui come¸ca a sacanagem) Rθ =  cos θ − sin θ sin θ cos θ  = cos θ  1 − tan θ tan θ 1 

(30)

Como funciona a sua calculadora? O algoritmo CORDIC

Vamos fixar que o ponto de partida ´e sempre (1, 0).

Dado um ponto (cos x , sin x ), queremos agora obter ˆangulos θ1, θ2, . . . , θn (positivos ou negativos), de maneira esperta,

tais que  cos x sin x  ≈ Rθn· · · Rθ2Rθ1  1 0 

e o produto da direita seja “r´apido” de calcular. Note que

(aqui come¸ca a sacanagem) Rθ =  cos θ − sin θ sin θ cos θ  = cos θ  1 − tan θ tan θ 1 

(31)

Como funciona a sua calculadora? O algoritmo CORDIC

Vamos fixar que o ponto de partida ´e sempre (1, 0).

Dado um ponto (cos x , sin x ), queremos agora obter ˆangulos θ1, θ2, . . . , θn (positivos ou negativos), de maneira esperta,

tais que  cos x sin x  ≈ Rθn· · · Rθ2Rθ1  1 0 

e o produto da direita seja “r´apido” de calcular. Note que (aqui come¸ca a sacanagem)

Rθ =  cos θ − sin θ sin θ cos θ  = cos θ  1 − tan θ tan θ 1 

(32)

Como funciona a sua calculadora? O algoritmo CORDIC

Vamos fixar que o ponto de partida ´e sempre (1, 0).

Dado um ponto (cos x , sin x ), queremos agora obter ˆangulos θ1, θ2, . . . , θn (positivos ou negativos), de maneira esperta,

tais que  cos x sin x  ≈ Rθn· · · Rθ2Rθ1  1 0 

e o produto da direita seja “r´apido” de calcular. Note que (aqui come¸ca a sacanagem)

Rθ =  cos θ − sin θ sin θ cos θ  = cos θ  1 − tan θ tan θ 1 

(33)

Como funciona a sua calculadora? O algoritmo CORDIC

Vamos fixar que o ponto de partida ´e sempre (1, 0).

Dado um ponto (cos x , sin x ), queremos agora obter ˆangulos θ1, θ2, . . . , θn (positivos ou negativos), de maneira esperta,

tais que  cos x sin x  ≈ Rθn· · · Rθ2Rθ1  1 0 

e o produto da direita seja “r´apido” de calcular. Note que (aqui come¸ca a sacanagem)

Rθ =  cos θ − sin θ sin θ cos θ  = cos θ  1 − tan θ tan θ 1 

(34)

Como funciona a sua calculadora? O algoritmo CORDIC Se θn= arctan21n, ent˜ao Rθn  a b  = cos θn  1 − tan θn tan θn 1   a b  = cos θn  1 −1/2n 1/2n 1   a b  = cos θn  a − b/2n a/2n+ b 

Esquecendo o cos θn por um momento, observe que estamos

realizando apenas opera¸c˜oes r´apidas para multiplicar Rθ por um

(35)

Como funciona a sua calculadora? O algoritmo CORDIC Se θn= arctan21n,ent˜ao Rθn  a b  = cos θn  1 − tan θn tan θn 1   a b  = cos θn  1 −1/2n 1/2n 1   a b  = cos θn  a − b/2n a/2n+ b 

Esquecendo o cos θn por um momento, observe que estamos

realizando apenas opera¸c˜oes r´apidas para multiplicar Rθ por um

(36)

Como funciona a sua calculadora? O algoritmo CORDIC Se θn= arctan21n,ent˜ao Rθn  a b  = cos θn  1 − tan θn tan θn 1   a b  = cos θn  1 −1/2n 1/2n 1   a b  = cos θn  a − b/2n a/2n+ b 

Esquecendo o cos θn por um momento, observe que estamos

realizando apenas opera¸c˜oes r´apidas para multiplicar Rθ por um

(37)

Como funciona a sua calculadora? O algoritmo CORDIC

Basicamente, o algoritmo funciona assim: dado um ˆangulo x , devemos aproximar x por uma sequˆencia de somas e subtra¸c˜oes de ˆangulos θn= arctan 1/2n.

´

E melhor explicar com um exemplo. n Aproxima¸c˜ao de θn 0 0.785398 rad 1 0.463648 rad 2 0.244979 rad 3 0.124355 rad 4 0.062419 rad

Eventualmente, podemos parar de calcular estes valores pois tan θ ≈ θ, para θ pequeno.

Por exemplo, para n = 9 (θn= arctan 1/512), esta

(38)

Como funciona a sua calculadora? O algoritmo CORDIC

Basicamente, o algoritmo funciona assim: dado um ˆangulo x , devemos aproximar x por uma sequˆencia de somas e subtra¸c˜oes de ˆangulos θn= arctan 1/2n. ´E melhor explicar com um exemplo.

n Aproxima¸c˜ao de θn 0 0.785398 rad 1 0.463648 rad 2 0.244979 rad 3 0.124355 rad 4 0.062419 rad

Eventualmente, podemos parar de calcular estes valores pois tan θ ≈ θ, para θ pequeno.

Por exemplo, para n = 9 (θn= arctan 1/512), esta

(39)

Como funciona a sua calculadora? O algoritmo CORDIC

Basicamente, o algoritmo funciona assim: dado um ˆangulo x , devemos aproximar x por uma sequˆencia de somas e subtra¸c˜oes de ˆangulos θn= arctan 1/2n. ´E melhor explicar com um exemplo.

n Aproxima¸c˜ao de θn 0 0.785398 rad 1 0.463648 rad 2 0.244979 rad 3 0.124355 rad 4 0.062419 rad

Eventualmente, podemos parar de calcular estes valores pois tan θ ≈ θ, para θ pequeno.

Por exemplo, para n = 9 (θn= arctan 1/512), esta

(40)

Como funciona a sua calculadora? O algoritmo CORDIC

Basicamente, o algoritmo funciona assim: dado um ˆangulo x , devemos aproximar x por uma sequˆencia de somas e subtra¸c˜oes de ˆangulos θn= arctan 1/2n. ´E melhor explicar com um exemplo.

n Aproxima¸c˜ao de θn 0 0.785398 rad 1 0.463648 rad 2 0.244979 rad 3 0.124355 rad 4 0.062419 rad

Eventualmente, podemos parar de calcular estes valores pois tan θ ≈ θ, para θ pequeno.

Por exemplo, para n = 9 (θn= arctan 1/512), esta

(41)

Como funciona a sua calculadora? O algoritmo CORDIC

Tome x = 1 rad. Vamos aproximar este ˆangulo utilizando os θn.

x0 = θ0 ≈ 0.785398

Muito pequeno, ent˜ao somamos:

x1 = θ0+ θ1 ≈ 1.249046

Passou, ent˜ao subtra´ımos:

x2 = θ0+ θ1− θ2≈ 1.004067

Etc. Em cada passo, o computador deve verificar se a aproxima¸c˜ao obtida ´e maior ou menor (opera¸c˜ao r´apida) que o n´umero desejado.

(42)

Como funciona a sua calculadora? O algoritmo CORDIC

Tome x = 1 rad. Vamos aproximar este ˆangulo utilizando os θn.

x0 = θ0≈ 0.785398

Muito pequeno, ent˜ao somamos:

x1 = θ0+ θ1 ≈ 1.249046

Passou, ent˜ao subtra´ımos:

x2 = θ0+ θ1− θ2≈ 1.004067

Etc. Em cada passo, o computador deve verificar se a aproxima¸c˜ao obtida ´e maior ou menor (opera¸c˜ao r´apida) que o n´umero desejado.

(43)

Como funciona a sua calculadora? O algoritmo CORDIC

Tome x = 1 rad. Vamos aproximar este ˆangulo utilizando os θn.

x0 = θ0≈ 0.785398

Muito pequeno, ent˜ao somamos:

x1= θ0+ θ1 ≈ 1.249046

Passou, ent˜ao subtra´ımos:

x2 = θ0+ θ1− θ2≈ 1.004067

Etc. Em cada passo, o computador deve verificar se a aproxima¸c˜ao obtida ´e maior ou menor (opera¸c˜ao r´apida) que o n´umero desejado.

(44)

Como funciona a sua calculadora? O algoritmo CORDIC

Tome x = 1 rad. Vamos aproximar este ˆangulo utilizando os θn.

x0 = θ0≈ 0.785398

Muito pequeno, ent˜ao somamos:

x1= θ0+ θ1 ≈ 1.249046

Passou, ent˜ao subtra´ımos:

x2 = θ0+ θ1− θ2≈ 1.004067

Etc.

Em cada passo, o computador deve verificar se a aproxima¸c˜ao obtida ´e maior ou menor (opera¸c˜ao r´apida) que o n´umero desejado.

(45)

Como funciona a sua calculadora? O algoritmo CORDIC

Tome x = 1 rad. Vamos aproximar este ˆangulo utilizando os θn.

x0 = θ0≈ 0.785398

Muito pequeno, ent˜ao somamos:

x1= θ0+ θ1 ≈ 1.249046

Passou, ent˜ao subtra´ımos:

x2 = θ0+ θ1− θ2≈ 1.004067

Etc. Em cada passo, o computador deve verificar se a aproxima¸c˜ao obtida ´e maior ou menor (opera¸c˜ao r´apida) que o n´umero desejado.

(46)

Como funciona a sua calculadora? O algoritmo CORDIC

Enquanto aproximamos o ˆangulo x , vamos aproximando cos x e sin x , basta ir multiplicando as matrizes correspondentes. Por exemplo, no terceiro passo, vamos ter

 cos x2 sin x2  = R−θ2Rθ1Rθ0  1 0  = c  1 14 −14 1   1 −1 2 1 2 1   1 −1 1 1   1 0 

onde c = cos(−θ2) cos θ1cos θ0.

Fazendo apenas 3 passos, temos cos x2≈ 0.5368, sin x2≈ 0.8436. Enquanto que cos 1 ≈ 0.5403 e

(47)

Como funciona a sua calculadora? O algoritmo CORDIC

Enquanto aproximamos o ˆangulo x , vamos aproximando cos x e sin x , basta ir multiplicando as matrizes correspondentes. Por exemplo, no terceiro passo, vamos ter

 cos x2 sin x2  = R−θ2Rθ1Rθ0  1 0  = c  1 14 −14 1   1 −1 2 1 2 1   1 −1 1 1   1 0 

onde c = cos(−θ2) cos θ1cos θ0. Fazendo apenas 3 passos, temos

cos x2≈ 0.5368, sin x2≈ 0.8436. Enquanto que cos 1 ≈ 0.5403 e

(48)

Como funciona a sua calculadora? O algoritmo CORDIC

Ent˜ao, se o algoritmo rodar n + 1 passos, ter´ıamos algo do tipo  cos x sin x  ≈  cos xn sin xn  = cR±θn· · · R±θ1R±θ0  1 0 

onde cn= cos θn· · · cos θ1cos θ0.

Problema: ainda temos que lidar com o cn.

(49)

Como funciona a sua calculadora? O algoritmo CORDIC

Ent˜ao, se o algoritmo rodar n + 1 passos, ter´ıamos algo do tipo  cos x sin x  ≈  cos xn sin xn  = cR±θn· · · R±θ1R±θ0  1 0 

onde cn= cos θn· · · cos θ1cos θ0. Problema: ainda temos que lidar

(50)

Como funciona a sua calculadora? O algoritmo CORDIC

(51)

Como funciona a sua calculadora? O algoritmo CORDIC

(52)

Como funciona a sua calculadora? O algoritmo CORDIC

O pulo do gato

Quem garante que o nosso m´etodo realmente converge?

Theorem

CORDIC Utilizando o m´etodo descrito anteriormente, temos que 

| cos x − cos xn+1| < 1/2n

| sin x − sin xn+1| < 1/2n

se −π/2 ≤ x ≤ π/2.

O teorema acima nos diz de maneira precisa como estimar o erro das aproxima¸c˜oes. Por exemplo, se quisermos uma aproxima¸c˜ao com 10 casas decimais, poder´ıamos tomar n + 1 = 40 e parar de aproximar sempre em n = 39, pois

1

239 ≈ 1.8189 × 10 −12.

(53)

Como funciona a sua calculadora? O algoritmo CORDIC

O pulo do gato

Quem garante que o nosso m´etodo realmente converge?

Theorem

CORDIC Utilizando o m´etodo descrito anteriormente, temos que 

| cos x − cos xn+1| < 1/2n

| sin x − sin xn+1| < 1/2n

se −π/2 ≤ x ≤ π/2.

O teorema acima nos diz de maneira precisa como estimar o erro das aproxima¸c˜oes. Por exemplo, se quisermos uma aproxima¸c˜ao com 10 casas decimais, poder´ıamos tomar n + 1 = 40 e parar de aproximar sempre em n = 39, pois

1

239 ≈ 1.8189 × 10 −12.

(54)

Como funciona a sua calculadora? O algoritmo CORDIC

O pulo do gato

Quem garante que o nosso m´etodo realmente converge?

Theorem

CORDIC Utilizando o m´etodo descrito anteriormente, temos que 

| cos x − cos xn+1| < 1/2n

| sin x − sin xn+1| < 1/2n

se −π/2 ≤ x ≤ π/2.

O teorema acima nos diz de maneira precisa como estimar o erro das aproxima¸c˜oes. Por exemplo, se quisermos uma aproxima¸c˜ao com 10 casas decimais, poder´ıamos tomar n + 1 = 40 e parar de aproximar sempre em n = 39, pois

1

239 ≈ 1.8189 × 10 −12.

(55)

Como funciona a sua calculadora? O algoritmo CORDIC

O pulo do gato - continua¸c˜

ao

Mas isso acaba nosso problema! Pois se fixarmos que vamos parar sempre em n = 39, c39= c ser´a uma constante (pois cosseno

independe do sinal).

Utilizando qualquer outro m´etodo, temos c = cos θ39· · · cos θ1cos θ0 ≈ 0.607252935

Logo, a ´unica opera¸c˜ao n˜ao-r´apida que estamos fazendo ´e uma multiplica¸c˜ao por uma constante (que j´a fica implementada no hardware) no final. Observe que, como os θn tamb´em j´a est˜ao

pr´e-definidos, ent˜ao podemos tamb´em implement´a-los direto no hardware.

(56)

Como funciona a sua calculadora? O algoritmo CORDIC

O pulo do gato - continua¸c˜

ao

Mas isso acaba nosso problema! Pois se fixarmos que vamos parar sempre em n = 39, c39= c ser´a uma constante (pois cosseno

independe do sinal). Utilizando qualquer outro m´etodo, temos c = cos θ39· · · cos θ1cos θ0≈ 0.607252935

Logo, a ´unica opera¸c˜ao n˜ao-r´apida que estamos fazendo ´e uma multiplica¸c˜ao por uma constante (que j´a fica implementada no hardware) no final. Observe que, como os θn tamb´em j´a est˜ao

pr´e-definidos, ent˜ao podemos tamb´em implement´a-los direto no hardware.

(57)

Como funciona a sua calculadora? O algoritmo CORDIC

O pulo do gato - continua¸c˜

ao

Mas isso acaba nosso problema! Pois se fixarmos que vamos parar sempre em n = 39, c39= c ser´a uma constante (pois cosseno

independe do sinal). Utilizando qualquer outro m´etodo, temos c = cos θ39· · · cos θ1cos θ0≈ 0.607252935

Logo, a ´unica opera¸c˜ao n˜ao-r´apida que estamos fazendo ´e uma multiplica¸c˜ao por uma constante (que j´a fica implementada no hardware) no final. Observe que, como os θn tamb´em j´a est˜ao

pr´e-definidos, ent˜ao podemos tamb´em implement´a-los direto no hardware.

(58)

Como funciona a sua calculadora? O algoritmo CORDIC

ao acabou!

O mais impressionante, ´e que este mesmo algoritmo pode ser adapatado para calcular qualquer fun¸c˜ao de uma calculadora cient´ıfica comum:

Fun¸c˜oes hiperb´olicas; exponencial;

logaritmo; ra´ızes.

Por´em, os detalhes s˜ao mais t´ecnicos e algumas adapta¸c˜oes s˜ao at´e propriet´arias.

(59)

Como funciona a sua calculadora? O algoritmo CORDIC

ao acabou!

O mais impressionante, ´e que este mesmo algoritmo pode ser adapatado para calcular qualquer fun¸c˜ao de uma calculadora cient´ıfica comum:

Fun¸c˜oes hiperb´olicas; exponencial;

logaritmo; ra´ızes.

Por´em, os detalhes s˜ao mais t´ecnicos e algumas adapta¸c˜oes s˜ao at´e propriet´arias.

(60)

Como funciona a sua calculadora? O algoritmo CORDIC

ao acabou!

O mais impressionante, ´e que este mesmo algoritmo pode ser adapatado para calcular qualquer fun¸c˜ao de uma calculadora cient´ıfica comum:

Fun¸c˜oes hiperb´olicas; exponencial;

logaritmo; ra´ızes.

Por´em, os detalhes s˜ao mais t´ecnicos e algumas adapta¸c˜oes s˜ao at´e propriet´arias.

(61)

Como funciona a sua calculadora? O algoritmo CORDIC

ao acabou!

O mais impressionante, ´e que este mesmo algoritmo pode ser adapatado para calcular qualquer fun¸c˜ao de uma calculadora cient´ıfica comum:

Fun¸c˜oes hiperb´olicas; exponencial;

logaritmo; ra´ızes.

Por´em, os detalhes s˜ao mais t´ecnicos e algumas adapta¸c˜oes s˜ao at´e propriet´arias.

(62)

Como funciona a sua calculadora? O algoritmo CORDIC

Copiado descaradamente de:

1 Alan Sultan, CORDIC: How Hand Calculators Calculate, The

College Mathematics Journal (MAA), Vol. 40, no 2, 2009, pg. 87-92.

2 J. Underwood and B. Edwards, How do calculators calculate

trigonometric functions? Educational Resources Information Center (ERIC) document ED461519.

Referências

Documentos relacionados

A categoria de AVCs de causa indeterminada considerada na TOAST, é inexistente na ASCO, pelo que os pacientes que tinham este diagnóstico na amostra inicial e não reuniram

Se o aluno tiver contacto com medições de tempo de diversos países com culturas diferentes, vai conhecer diferentes ritmos de vida, mas também mudanças e permanências

CANCELAMENTO/SUSPENSÃO DO LEILÃO OU ACORDO APÓS A PUBLICAÇÃO DO EDITAL: Caso haja acordo, pagamento integral ou adjudicação após a elaboração do edital,

• Considerando: (i) o crescimento dos lucros e, em conseqüência, da distribuição de remuneração aos acionistas, (ii) e a redução da Taxa de Juros de Longo Prazo, o Conselho

Nos dois primeiros animais do presente relato, os sinais clínicos foram discretos e mais associados às doenças concomitantes, o que dificultou a inclusão da dirofilariose

Foi apresentada, pelo Ademar, a documentação encaminhada pelo APL ao INMETRO, o qual argumentar sobre a PORTARIA Nº 398, DE 31 DE JULHO DE 2012 E SEU REGULAMENTO TÉCNICO

Desta forma, concluímos que o método de extração, utilizando ruptor ultrassônico (frequência de 20KHz e potência máxima de 150 W) com ponteira intermediária (70%

Com o auxílio do Scania Active Prediction, o sistema também aconselha quando o condutor deve desacelerar antes do gradiente de um declive, permitindo economias de..