O resultado 0.9912026859074107
contém 16 dígitos após a vírgula
e, é fruto da divisão de 4.078315292499077E128 (valor de exp)
por 1.24384140546413E142 (valor de f)
ou seja, valores com mais de 120 dígitos antes da vírgula
nos cálculos seguintes, os valores ultrapassam 130 dígitos antes da vírgula
e o resultado 0.9912026859074085
tem variações, mas sómente em posições muito além das 16 após a vírgula
e, como deve truncar após a 16a., acaba repetindo o mesmo valor.
Inclua os demais campos no println para verificar essa informação.
C
carlucio
Marcio, obrigado, entendi que o resultado varia em posições alem do que é possivel mostrar.
Me tira uma duvida,
usando a função Math.cos(30). ele apresenta o resultado
0.[telefone removido]…
ja usando o comando atual ele da uma diferença
0.1543…
Teria alguma maneira de o resultado dar igual ao do Math.cos ?
No codigo mostrado consigo o valor igual até o cosseno de 29, apartir de 30 ja nao fica mais igual
obg.
ViniGodoy
Você forneceu o angulo em radianos para o Math.cos?
E
entanglement
O cosseno de 30 radianos é 0,15425144988758405071866214661421…
Entretanto, não se deve calcular o cosseno de 30 radianos, usando-se essa série de Taylor, com o valor 30. Esse valor é muito grande e vai dar erros na hora de fazer as contas.
Deve-se pegar o valor 30 e passá-lo para o intervalo entre 0 e pi.
Neste caso, cos (30 radianos) = - cos (30 - 9 pi) = - cos ( 1,7256661176918608538362095504845 ) = 0,15425144988758405071866214661421
C
carlucio
entagle.
obrigado
Mas como ficaria no codigo essa alteração?
tentei aqui mas nao consegui traduzir.
grato
vinigodoy. sim em radianos
tanto que se testar o coss de 20. o resultado da igual nos dois metodos
grato
C
carlucio
Galera, consegui resolver até cos de 50 com precisão de 7 casas depois da virgula.
usando o metodo de cos-(9*pi).
porém quando tento cosseno de 60, 90.
a precisão nao chega a duas casas apos a virgula
gostaria de uma formula que me desse pelo menos 6 casas de precisão.
Se alguem puder ajudar.
fico muito grato
E
entanglement
Tio, que tal desenhar uma curva de cosseno e ver como é possível você fazer a tal redução para o primeiro quadrante (que é a técnica indicada para você poder ter a precisão desejada)?
Acho que se você desenhar uma curva de coseno, vai descobrir sozinho como é que se faz a redução.
Basta ver que cos (x) = cos (x + 2pi) = cos (x + 4pi) = cos (x + 6pi) = cox (x + 8pi) … e assim por diante.
Ou seja, de alguma forma (talvez fazendo uma divisão por pi, e achar o valor inteiro do resultado dessa divisão, é só uma sugestão) você determine quantos pi está o número 60. Lembra-se que eu achei o número 9 na hora de calcular o cosseno de 60 radianos? Então…
C
carlucio
Obrigado amigo, enfim consegui resolver.
Porém alem disso tudo tem que fazer os calculos dos quadrantes para que o sinal não fique trocado.
pczardini
fiquei curioso agora, responde ai que foi que voce modificou?
C
carlucio
//Converter radianos em grausdoubleradtograus=x*57;//Redução de quadrantedoublequadrante=radtograus/360;//Transformar resultado em inteirointquad=(int)quadrante;//Esse codigo vai fazer a redução para que o grau esteja entre 0 e 360º, sabendo assim em qual quadrante ele estadoublequadrante2=radtograus-(360*quad);//Verifica em qual quadrante o grau esta, sendo que no cosseno, o primeiro e o ultimo quadrante é positivo.//Primeiro verificamos se esta no primeiro quadrande (0 a 90 graus)if(((quadrante2>0)&&(quadrante2<=90))&&(cos<0)){cos=cos*-1;}//Depois verificamos se o grau esta no quadro quadrante (270 graus acima) lembrando que nao precisa colocar <=360 pois a redução ja o deixa sempre menor que issoif((quadrante2>=270)&&(cos<0)){cos=cos*-1;}//Caso nao esteja no primeiro nem no quarto quadrante, concerteza estará no segundo ou terceiro//Sendo que s e a resposta tiver sinal positivo obrigatoriamente sera mudado para negativo, deixando a reposta corretaelseif(cos>0){cos=cos*-1;}
Valeu!
B
bezier_curve
pqp, um radiano é exatamente igual a 57 graus? De onde você achou esse número redondo?