[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [obm-l] Cos =?utf-8?Q?7=BA?=



On Fri, May 26, 2006 at 07:00:22PM -0000, rlalonso@lsi.usp.br wrote:
> On Fri, Maio 26, 2006, "Nicolau C. Saldanha" <nicolau@mat.puc-rio.br>
> said:
> 
> > Talvez voc� goste de saber que cos(7 graus) � a segunda mair raiz de
> > 
> >                  48                     46                      44
> > 281474976710656 z   - 3377699720527872 z   + 18999560927969280 z
> > 
> >                           42                       40                       38
> >      - 66568831992070144 z   + 162828875980603392 z   - 295364007592722432 z
> > 
> >                            36                       34
> >      + 411985976135516160 z   - 452180272956309504 z
> > 
> >                            32                       30
> >      + 396366279591591936 z   - 280058255978266624 z
> > 
> >                            28                      26                      24
> >      + 160303703377575936 z   - 74448984852135936 z   + 28011510450094080 z
> > 
> >                          22                     20                    18
> >      - 8500299631165440 z   + 2064791072931840 z   - 397107008634880 z
> > 
> >                        16                  14                 12
> >      + 59570604933120 z   - 6832518856704 z   + 583456329728 z
> > 
> >                     10               8             6           4         2
> >      - 35782471680 z   + 1497954816 z  - 39625728 z  + 579456 z  - 3456 z  + 1
> > 
> > 
> > As ra�zes s�o +-cos(k graus) e +-sen(k graus) para
> > k = 1, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43.
> 
> 
>      Magn�fico.  Onde ser� que eu posso achar algo que explique como
> construir esse polin�mio ... Acredito que n�o deva ser nada simples.

Se a pergunta � como eu fiz para obter estes coeficientes todos,
eu usei o maple:

> Digits := 40:
> ppc := 1:
> for i to 89 do if ( igcd(i,180) = 1 ) \
> then ppc := ppc * ( x^2 - evalf(2*cos(Pi*i/180))^2 ) : fi: od:

At� aqui eu montei o polin�mio com as ra�zes +-2cos(k graus) e +-2sen(k graus).
Note que estou fazendo contas aproximadas, ent�o os coeficientes tamb�m
estar�o aproximados. Mas eu sei que eles deveriam ser inteiros ent�o
um arredondamento deve obter os coeficientes corretos.

> ppcs := sort(expand(ppc)):
> ppct := sort(add(round(coeff(ppcs,x,i))*x^i,i=0..48));

         48       46         44          42           40            38
ppct := x   - 48 x   + 1080 x   - 15136 x   + 148092 x   - 1074528 x

                36             34             32              30
     + 5995185 x   - 26320356 x   + 92286216 x   - 260824576 x

                  28               26               24               22
     + 597177831 x   - 1109376324 x   + 1669616130 x   - 2026629360 x

                   20               18              16              14
     + 1969138215 x   - 1514843020 x   + 908975295 x   - 417023856 x

                  12             10            8           6          4
     + 142445393 x   - 34943820 x   + 5851386 x  - 619152 x  + 36216 x

            2
     - 864 x  + 1

Eu quero verificar se os arredondamentos foram confi�veis, ent�o eu fa�o:

> sort(ppcs-ppct);
       -37  46         -35  44         -34  42         -33  40         -32  38
-0.1 10    x   + 0.1 10    x   - 0.1 10    x   + 0.1 10    x   - 0.1 10    x

             -32  36         -31  34          -30  32         -30  30
     + 0.7 10    x   - 0.2 10    x   + 0.14 10    x   - 0.5 10    x

              -29  28         -29  26         -29  24         -29  22
     + 0.13 10    x   - 0.2 10    x   + 0.6 10    x   - 0.9 10    x

             -29  20         -29  18          -29  16          -29  14
     + 0.9 10    x   - 0.8 10    x   + 0.51 10    x   - 0.26 10    x

             -30  12          -30  10          -31  8          -32  6
     + 0.9 10    x   - 0.27 10    x   + 0.53 10    x  - 0.66 10    x

              -33  4           -34  2          -37
     + 0.46 10    x  - 0.143 10    x  + 0.34 10

Os maiores erros s�o da ordem de 10^(-29), ent�o parece estar tudo bem.
Mais um teste: vamos achar algumas ra�zes:

> fsolve(ppct,x=1.9..2.0);

1.912609511926070962677301633236837924019,

    1.948740129570470457079388960176537666010,

    1.963254366895327906993009799636281638637,

    1.985092303282644069960123178661168218087,

    1.999695390312782478314023117627829703385
  
A maior de todas (a �ltima) deve ser 2*cos(1 grau),
a anterior deve ser 2*cos(7 graus). Vamos verificar.

> evalf(2*cos(7*Pi/180));
                   1.985092303282644069960123178661168218087
  
Tudo bem. Agora para termos um polin�mio com ra�zes iguais
aos pr�prios cos e sen, basta substituir x por 2z:

> sort(subs(x=2*z,ppct));
                 48                     46                      44
281474976710656 z   - 3377699720527872 z   + 18999560927969280 z

                          42                       40                       38
     - 66568831992070144 z   + 162828875980603392 z   - 295364007592722432 z

                           36                       34
     + 411985976135516160 z   - 452180272956309504 z

                           32                       30
     + 396366279591591936 z   - 280058255978266624 z

                           28                      26                      24
     + 160303703377575936 z   - 74448984852135936 z   + 28011510450094080 z

                         22                     20                    18
     - 8500299631165440 z   + 2064791072931840 z   - 397107008634880 z

                       16                  14                 12
     + 59570604933120 z   - 6832518856704 z   + 583456329728 z

                    10               8             6           4         2
     - 35782471680 z   + 1497954816 z  - 39625728 z  + 579456 z  - 3456 z  + 1


[]s, N.




=========================================================================
Instruções para entrar na lista, sair da lista e usar a lista em
http://www.mat.puc-rio.br/~nicolau/olimp/obm-l.html
=========================================================================