Calculando seno

Calculando seno

por Thiago Postal -
Número de respostas: 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!!!
Em resposta à Thiago Postal

Re: Calculando seno

por 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!!!







Em resposta à Thiago Postal

Re: Calculando seno

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

}


}


Em resposta à Ariane Haselmann

Re: Calculando seno

por 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.
Em resposta à Thiago Postal

Re: Calculando seno

por 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!
Em resposta à Thiago Postal

Re: Calculando seno

por 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