[HELP] Erro de calculo no e^x

5 respostas
C

Olá, pessoal.

Sou novo daqui e to postando aqui o primeiro topico!
Espero q vcs me ajudem a resolverem o problema abaixo:

Escrevi um aplicativo que calcule o fatorial , matematico e e e^x. Mas o resultado do e^x está incorreto.

Saida da mensagem:

Numero:
5
Fatorial do 5 eh 120
e = 2,718282
[color="red"]e^5 = -338488670,833333 [/color]

public class matematico{
	
	public int fat( int x){		
		int i,aux=1;
		
		for (i=1 ; i<=x ; i++){
			aux = aux*i;
		}
		
		return aux;
	}
	
	public double exp(){
		
		int i;
		double aux=1.0;
		
		for (i=1 ; i<=20 ; i++){
			aux = (aux + ( 1/( ( (double) fat(i) ) ) ) );
		}
		
		return aux;
	}
	
	public int pot( int x){
		
		int i;
		
		for (i=1 ; i<=x ; i++){
			x = x * x;
		}
		
		return x;
	}

	
	public double expX(int x){
		
		int i;
		double aux=1;
		
		for (i=1 ; i<=20 ; i++){
			aux = aux + ( ( (double) pot(x) ) / ( (double) fat(x) ) );
		}
		
		return aux;
	}
}
public class matematicoTest{
	
	public static void main (String args[]){
		
		java.util.Scanner input = new  java.util.Scanner( System.in );
		matematico mat = new matematico();
		
		int nr;
		
		System.out.println ("Numero: ");
		nr = input.nextInt();
		
		System.out.printf ("Fatorial do %d eh %d \n",nr,(int) mat.fat(nr));
		System.out.printf ("e = %f \n",mat.exp() );
		System.out.printf ("e^%d = %f \n",nr,mat.expX(nr) );
	}
}

5 Respostas

FieroddPJ

o seu metodo pot utiliza o parametro x como condição no for, e dentro do for vc incrementa seu valor

public int pot( int x){
      
      int i;
      
      for (i=1 ; i<=x ; i++){
         x = x * x;
      }
      
      return x;
   }

teste somente esse metodo que vc percebera q ele sempre retorna 0, pois incrementa a variavel x ate estoura-la, ou seja, seu valor nao pode ser comportado por uma variavel do tipo int

sinceramente nao entendi esse metodo, vc quer calcular a potencia de um numero tendo o mesmo como base e expoente?

qualquer coisa posta ae q tentaremos ajudar se possivel :wink:

C

Desculpe pela confusao e pelo meu calculo errado, Fierodd.
Mas eu ja corrigi uns erros. Soh q o resultado ficou um pouco diferente:

Por exemplo:

e^7: Meu codigo deu 1052,735386 enquanto Google deu 1096.63316

Eu segui a formula vindo do Wikipédia:

[img]http://upload.wikimedia.org/math/0/b/c/0bc08045195dc823c22d1fa283cb0759.png[/img]

public class matematico{
	
	public double fat( int x){		
		int i,aux=1;
		
		for (i=1 ; i<=x ; i++){
			aux = aux*i;
		}
		
		return aux;
	}
	
	public double exp(){
		
		int i;
		double aux=1.0;
		
		for (i=1 ; i<=20 ; i++){
			aux = (aux + ( 1/( ( fat(i) ) ) ) );
		}
		
		return aux;
	}
	
	public double pot( int x, int nr){
		
		int i;
		int aux = nr;
		
		for (i=1 ; i<x ; i++){
			nr = nr * aux;
		}

		return nr;
	}

	
	public double expX(int x){
		
		int i;
		double aux=1;
		
		for (i=1 ; i<=20 ; i++){
			aux = aux + ( ( pot(i,x) ) / ( fat(i) ) );
		}
		
		return aux;
	}
}
FieroddPJ

Olá, bem sobre o exercicio não tive muito tempo pra ver oq ocorre fiz uns testes rapidos aqui e utilizando loop meu calculo tmb sai errado … eu alterei um pouco o metodo

public double pot(double x, int xPot){
      
      int i = 0;
      double y = 1;
      
      for (i=0 ; i<xPot ; i++){
         y *= x;
      }
      
      return y;
   }

desse jeito faz o calculo correto, mas nao utiliza o loop, veja se ajuda

pot(exp(),num);
C

Olá de novo!

O metodo q vc modificou ficou mais facil de calcular do q a formula .
Entao tambem modifiquei aqui, testei e deu resultado correto:

Numero:
7
Fatorial do 7 eh 5040
e = 2,718282
[color=“green”]e^7 = 1096,633176[/color]

Pena q nao consigo programar usando a formula acima. Pelo menos todos resultados foram sucessos! Obrigado!

public double pot( int x, double nr){
		
		int i;
		double aux = 1;
		
		for (i=0 ; i<x ; i++){
			aux *= nr;
		}

		return aux;
	}
public double expX(int x){
		
		int i;
		double aux=1;
		
		return pot(x,exp());
	}
FieroddPJ

entao … eu tambem nao sei pq a formula nao deu certo, alias meu metodo nao deu certo usando a formula!

quando puder vou perder um tempo aqui e ver oq acontece!
:wink:

Criado 2 de setembro de 2006
Ultima resposta 11 de set. de 2006
Respostas 5
Participantes 2