• 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

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

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

• 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

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%

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,

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..

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