[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
=========================================================================