e^x Reihenentwicklung, Ausgabe nur 1.#inf



  • Hallo ich bin neu hier und bereite mich auf meine Klausur vor.
    Habe versucht die ex Reihe SUMME( v=0 -> unendlich ÜBER (xv/v!)) zu implementieren.

    Leider verursacht die Ausgabe ständig nur 1.#INF anstatt Zahlen. Woran könnte das liegen?

    #include <iostream>
    #include <math.h>
    
    using std::cout;
    using std::cin;
    using std::endl;
    
    double factorial(double i);
    double exp(double k, double x);
    
    int main()
    {
    
    	double k,x;
    	double schleife=0.0;
    
    	cout<<"Bitte k eingeben: ";
    	cin>>k;
    	cout<<"Bitte x eingeben: ";
    	cin>>x;
    
    	for(int i=0; i<k; i++)
    	{
    		schleife=(schleife+((exp(k,x))/(factorial(i))));
    		cout.precision(10);
    		cout<<"Ergebnis bei k= "<<i<<"= "<<schleife<<endl;
    	}
    
    	system("PAUSE");
    	return 0;
    }
    
    double factorial(double i)
    {
    	if(i>1)
    	{
    		return i * factorial(i-1);
    	}
    	return i;
    }
    
    double exp(double k, double x)
    {
    	double y;
    	y=x;
    
    	if(k==0)
    	{
    		y=1;
    		return y;
    	}
    
    	else
    	{
    		for (k; k>1; k--)
    		{
    			y=y*x;
    		}
    		return y;
    	}
    }
    


  • In Zeile 41 muss es

    return 1;
    

    heißen



  • danke für den Tipp!

    Er gibt jetzt Zahlen aus, aber leider nicht die e Reihe... kann jemand noch nen Tipp geben wie die richtig e-Reihe raus kommt?


  • Mod

    neotronic schrieb:

    danke für den Tipp!

    Er gibt jetzt Zahlen aus, aber leider nicht die e Reihe... kann jemand noch nen Tipp geben wie die richtig e-Reihe raus kommt?

    schleife=(schleife+((exp(i,x))/(factorial(i))));
    

    Das alles hättest du wunderbar leicht mit einem Debugger rausfinden können. Selbst einfachste Testausgaben deiner Funktionen hätten gereicht.

    Übrigens ist deine Fakultät von einem double Wert doch irgendwie komisch und auch andere Aspekte deines Programms sind unnötig umständlich. Sagt dir beispielsweise die Funktion pow irgendwas?



  • Okay, ich habs gesehen. Dankeschön... 🙂

    PS: Nein, die Funtkion pow kenn ich nicht...



  • Selbst pow ist schon überdimensioniert. Tipp: Schreibe dir die der Reihe unterliegende Folge $$(\frac{x^\nu}{\nu!})_{\nu\in\mathbb{N}_0}$$ mal in rekursiver Form auf.



  • Heyho danke für eure Antworten.

    du meinst: 1 + x + x2/2 + x3/6 ?!



  • neotronic schrieb:

    Heyho danke für eure Antworten.

    du meinst: 1 + x + x2/2 + x3/6 ?!

    schreibs mal so:

    x^0 / 0! = 1/1 = 1
    x^1 / 1! = x/1 = x
    x^2 / 2! = x²/2
    x^3 / 3! = x³/6

    ...

    siehst du es jetzt? 😛

    bb



  • Ich meinte so:

    \[ \exp x = \sum_{\nu=0}^{\infty}a_{\nu}\]

    mit
    \[ a_0 := 1, \]
    \[a_{\nu} := a_{\nu-1}\frac{x}{\nu}, \quad\nu=1,2,\ldots\]
    Ergibt einen sehr viel schöneren Algorithmus. Insbesondere funktioniert es auch für mehr Reihenglieder als bei dir, weil dir sehr schnell die Fakultäten um die Ohren fliegen.


Anmelden zum Antworten