Calculando seno

Calculando seno

by Thiago Postal -
Number of replies: 7
Eu criei a seguinte classe para calcular o seno:

class Matematica
{
int fat(int n)
{
int i,f;
i=1;
f=1;
 
while(i<=n)
{
f=f*i;
i=i+1;
}
return f;
}
 
float pot(float x, float y)
{
float p,i;
p=1;
i=1;
 
while(i<=y)
{
p = p*x;
i=i+1;
}
return p;
}
 
float seno1(float x, int n)
{
float soma;
int k;
soma=0;
k=0;
 
while(k<n)
{
soma = soma + (pot(-1,k)*pot(x,2*k+1)/fat(2*k+1));
k=k+1;
}
return soma;
}
}


Porém, eu estou recebendo a se guinte mensagem no interaction:

Welcome to DrJava. Semestre\MAC-115\Programas\Capítulo 9
> Matematica calculador = new Matematica();
> calculador.seno1(0.1,4);
Error: No 'seno1' method in 'Matematica' with arguments: (double, int)
>


Qual está sendo meu erro?

Obrigado!!!!!!!

Thiago Postal!!!
In reply to Thiago Postal

Re: Calculando seno

by Thiago Postal -
Acabei conseguindo corrigir este erro fazendo as seguintes alterações:

class Matematica
{
int fat(int n)
{
int i,f;
i=1;
f=1;

while(i<=n)
{
f=f*i;
i=i+1;
}
return f;
}

double pot(double x, double y)
{
double p,i;
p=1;
i=1;

while(i<=y)
{
p = p*x;
i=i+1;
}
return p;
}

double seno1(double x, int n)
{
double soma;
int k;
soma=0;
k=0;

while(k<n)
{
soma = soma + (pot(-1,k)*pot(x,2*k+1)/fat(2*k+1));
k=k+1;
}
return soma;
}
}


Para evitar confusão passei as variáveis para double, mas acredito que fiz algumas alterações desnecessárias.
Caso alguém faça algo mais simples compartilhe, por favor.

Abraços,


Thiago Postal!!!







In reply to Thiago Postal

Re: Calculando seno

by Ariane Haselmann -
Bom, o jeito mais simples de fazer esse exercício é o jeito que tem lá no livro, foi como eu fiz também tanto para seno, quanto cosseno e ln.
Se fizer desse jeito que você fez, usando a fórmula, vai estourar muito rápido (tanto a potência quanto o fatorial crescem muito de um termo pro outro).

Os meus ficaram assim: (ah, tá tudo cheio de comentários pq eu salvei num arquivo de texto pra estudar depois hehe)

class Matematica /* Página 63, capítulo 10 */

{

double epsilon = 1.0e-8;

double calculaSeno(double x) /* Exemplo do Capítulo, refeito */

{

double termo=x;

double seno=termo;

for(int i=3;termo*termo>epsilon*epsilon;i+=2)

{

termo=-termo*x*x/(i*(i-1));

seno+=termo;

}

return seno;

}

double calculaCosseno(double x) /* Página 65, capítulo 10 , exercício 3 */

{

double termo=1;

double cosseno=termo;

for(int i=2;termo*termo>epsilon*epsilon;i+=2)

{

termo=-termo*x*x/(i*(i-1));

cosseno+=termo;

}

return cosseno;

}

double calculaLn(double y) /* Página 65, capítulo 10 , exercício 3 */

{

double x=y-1;

double termo=x;

double ln=termo;

for(int i=2;termo*termo>epsilon*epsilon;i++)

{

termo=-termo*x;

ln+=termo/i;

}

return ln;

}


}


In reply to Ariane Haselmann

Re: Calculando seno

by Thiago Postal -
Olá, Ariane

Realmente o método que vc utilizou é mais eficiente.

Eu comecei a fazer o método que postei mais para estudar potência e fatorial.

Mas irei seguir sua sugestão.

Valeuuu hein!!!

Um abraço,

Thiago Postal.
In reply to Thiago Postal

Re: Calculando seno

by Ariane Haselmann -
Ah, relaxa eu também tinha feito igual você...
Eu comecei fazendo com métodos que calculavam potência e fatorial. Aí meu namorado que me viu fazendo e me explicou que era legal eu fazer justamente pra estudar potência e fatorial, mas que não daria muito certo. Depois ele me mostrou esse jeito de fazer e pra estudar eu fiz pra cosseno e pra ln também! =D
De nada! =)

Beijos!
In reply to Ariane Haselmann

Re: Calculando seno

by Thiago Postal -
Ariane, estou seguindo a mesma linha de estudo sua....hehe
Bom...vou calcular agora a tangente!!!rs
Valeuu!!!
Um abraço!!!!


In reply to Thiago Postal

Re: Calculando seno

by marcos garcia -
class Mat
{
int Fat(int k)
{
int c=0;
int fat=1;
while(c<k)
{
c=c+1;
fat=fat*c;
}
return fat;
}
double Pot(double x,int k)
{

double pot=1;
int c=1;
while(c<=k)
{

pot =pot*x;
c=c+1;
}
return pot;
}
double calSen(double x,int n)
{
int d=0;
int k=1;
double termo=x;

double soma=0;
while (k<n)
{
termo = termo + Pot(-1,k)*Pot(x,2*k+1)/Fat(2*k+1);
soma = soma + termo;
k=k+1;
}
return soma;
}
}
c.calSen(0.5,2)
0.4791666666666667