Olá galera, estou tentando fazer um programinha para calcular o número de euler, o e dos logaritmos naturais mas não estou conseguindo fazer ele!! alguem pode me dar uma ajuda!! Aqui vai a formula para o numero:
http://img178.imageshack.us/my.php?image=eullercm7.png
:shock: Que é isso, coisa do outro mundo?
poste seu codigo com suas duvidas que te ajudamos
Você só precisa de um método para calcular o fatorial e colocar a iteração de soma num laço. Calcule o número de iterações baseando-se no número de casas decimais que você quiser.
Abraço,
Armando
É bem fácil resolver esse problema. Algumas dicas:
-
Somatórios normalmente são implementados usando for. O somatório vai de 0 a infinito mas você não pode fazer um for de um a infinito, portanto terá que definir um máximo de iterações dependendo da precisão que você deseje. Com 100 iterações eu consegui uma precisão de 15 casas decimais, que eu creio ser suficiente.
-
Você precisa de uma variável double que vai guardando o valor acumulado de iterações anteriores e a ela você soma o valor computado na iteração atual.
-
Não é necessário calcular o fatorial a cada passo. Guarde uma variável para guardar o fatorial do termo anterior também, afinal o próximo fatorial vai ser o anterior vezes o próximo termo. Isso poupa bastante tempo e não torna necessário implementar um método para calcular fatorial.
Tente fazer algo com essas dicas, se não conseguir volte a postar.
[code]public class B {
public static double calcula_e(int n) {
int fat=1; // o primeiro fatorial -- 0! =1
double e=1.0; // primeir termo da série
for(int i=1;i<n;i++) {
fat = // informe qual o valor do fatorial nesse momento
e = // e aqui qual o valor do e nesse momento
} // perceba que 'fat' e 'e' são incrementadas a cada passo
return e;
}
public static void main(String[] args) {
System.out.println("E original = " + Math.E);
for(int i=0;i<15;i++) {
double e = calcula_e(i), diff = Math.abs(Math.E - e);
System.out.println("termo[" + i + "] = " + e + "\tdiff = " + diff);
}
}
}[/code]
ainda não consegui!!