shiroyamacah Postado Maio 4, 2011 Denunciar Share Postado Maio 4, 2011 eu preciso usar a função seno para relacionar com o cálculo pela formula de taylor.o problema é que meu seno aparece como -0.000000>.<alguém pode me ajudar?esse é o código teste que usei para ver onde está o problema:#include <stdio.h>#include <math.h>main () { long int fat=1; int i,j,k,v=0; double x=2*M_PI,soma=0,calc=0,nu=1; //M_PI para o PI printf("%f\n", sin(x)); for(i=1;i<=7;i=i+2) { fat=1; nu=1; printf("valor: %d\n",i); //fatorial for(j=1;j<=i;j++) {fat=fat*j;} printf("fat: %ld\n",fat); //numerador for(k=1;k<=i;k++) {nu=nu*x;} printf("nu: %f\n",nu); calc=calc+(nu/fat); printf("calc %f\n",calc); v++; printf("v: %d\n",v); if (v%2==0) {soma=soma-calc; printf("soma= %f\n\n",soma);} else {soma=soma+calc; printf("soma= %f\n\n",soma);} if((soma-sin(x)<=1e-15)&&(soma-sin(x)>=-1e-15)) {break;} //esse só ocorrerá quando eu deixar o i livre até chegar a essa relação e mostrar o resultado de v } printf("%.4f\n",calc);} Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Durub Postado Maio 4, 2011 Denunciar Share Postado Maio 4, 2011 A função sin do math.h utiliza como argumento um ângulo em radianos.O ângulo 2 * pi, em radiano, é igual a 0 ou 360 graus, o que corresponde a um seno de valor 0.Abraços. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 shiroyamacah Postado Maio 4, 2011 Autor Denunciar Share Postado Maio 4, 2011 (editado) A função sin do math.h utiliza como argumento um ângulo em radianos.O ângulo 2 * pi, em radiano, é igual a 0 ou 360 graus, o que corresponde a um seno de valor 0.Abraços.mas quando eu faço para ver se soma-sin(x) está dentro das especificações dá valores infinitos no NU e FAT e a soma fica NUM o.o Editado Maio 4, 2011 por shiroyamacah Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Durub Postado Maio 5, 2011 Denunciar Share Postado Maio 5, 2011 if((soma-sin(x)<=1e-15)&&(soma-sin(x)>=-1e-15))Pense em um número maior ou igual a um. Agora pense em um número menor ou igual a um.Agora pense em números que são tanto maiores ou iguais a um, e menores ou iguais a um. Que número restou? Somente o 1. Ou seja, o if só é ativado se soma - sin(x) == 1e-15.Como é um número de ponto flutuante, não é recomendável comparar diretamente, por erros de arredondamento. Uma boa lida é o documento http://www.validlab.com/goldberg/paper.pdf, mas é grande e necessita de conhecimentos um pouco mais avançados, além de um domínio do inglês. Então, por enquanto, apenas direi para você tentar fazer uma comparação à um intervalo de valores, como por exemplo, ao invés de comparar se é igual a 1.0, tente comparar se é maior que 0.95 e menor que 1.05. Tente!Abraços. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
shiroyamacah
eu preciso usar a função seno para relacionar com o cálculo pela formula de taylor.
o problema é que meu seno aparece como -0.000000
>.<
alguém pode me ajudar?
esse é o código teste que usei para ver onde está o problema:
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.