Ir para conteúdo
Fórum Script Brasil
  • 0

Problema em usar função seno


shiroyamacah

Pergunta

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);

}

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0
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 por shiroyamacah
Link para o comentário
Compartilhar em outros sites

  • 0

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.

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...