Funzione che ritorna Inf

di il
1 risposte

Funzione che ritorna Inf

Salve, devo fare una funzione che calcola il valore di e^x, con x numero naturale. L'algoritmo che ho fatto funziona bene fino a che la funzione potenza non mi restituisce valori incoerenti e la funzione parte, si fa per dire, per la tangente fino a che mi restituisce Inf.... Ho pensato che centri qualche overflow o problemi con il sistema in virgola mobile... Riuscireste ad aiutarmi a capire cosa non funziona e cosa succede di preciso?
Eccovi il codice:


double exp(int x);

double power(double x, int y) {

	if (y == 0)
		return 1;

	double power = x;
	while (y > 1) {
		--y;
		power *= x;
	}
	return power;
}

int main(void) {
	double z = 8.2;
	int f = 3;
	double k;
	k = exp (f);
}


int factorial(int x) {

	if (x == 0)
		return 1;
	int factorial = x;
	for(int i = x-1; i > 1; --i) {
		factorial *= i;
	}
	return factorial;
}


double exp (int x) {

	double tmp = 1;
	double exponential = 0;
	for (int i = 0; exponential != tmp; ++i) {

		tmp = exponential;
		exponential += (power(x, i) / factorial(i));
	}
	return exponential;
	
}

1 Risposte

  • Re: Funzione che ritorna Inf

    [Perché "e" non è un numero reale ne tantomeno una variabile ma è il numero di nepero, definito solo come limite della successione (1+1/n)^n con x->0. Praticamente la funzione exp deve approssimare il limite della serie S da n=0 a 8 di (x^n)/n! , con la massima precisione possibile. Il problema non è la matematica che c'è dietro la funzione ma credo un qualche overflow.

    Edit: ho risolto. Effettivamente la funzione power causava un overflow a cui ho rimediato cambiandone i tipi da int a double.
Devi accedere o registrarti per scrivere nel forum
1 risposte