E Fkt berechnen mit Anzahl der Summanden



  • andii schrieb:

    das hilft mir ja nicht viel?

    Nicht wirklich. Denn schlussletztendlichstallerletztestens mußt du ja die Fakultät berechnen, nicht wahr doch.
    Und ?
    Läuft jetzt dein Proggie ?



  • ja es läuft danke 👍

    bin grad am nächsten problem, sinus als taylorreihe.
    da habe ich dann summanden die nur alle ungeraden exponenenten haben, als ^3 ^5 usw... und auch + und - abwechselnd zwischen den summanden, was mir gerade die größten probleme bereitet aber ich tüfftel noch ein wenig bevor ich wieder schreie 🙂



  • andii schrieb:

    mcr schrieb:

    zi=xii!z_i=\frac{x^i}{i!}

    [latex]exp(x) = \sum_{i=0}^{n} z_i[/latex]
    

    das hilft mir ja nicht viel?

    Es tut mir Leid, dass du meinen Beitrag nicht komplett verstanden hast.
    Du brauchst hierbei NICHT die Fakultät bestimmen!

    Der Knackpunkt liegt in dieser Zeile: zi+1=zixi+1z_{i+1} = z_i \cdot \frac{x}{i+1}

    Ok, für die, die es immer noch nicht verstehen, mal ein wenig Pseudocode:

    double summe = 0.;
        double summand = 1.;
    
        summe = summand;
        for i=0 to n do
           summand = summand * x / (i+1);
           summe   = summe + summand;
        end
    
        return summe;
    

    Nun bleib lediglich als Aufgabe übrig, diesen Pseudocode in C zu übersetzen.
    Und wie ihr seht: hier wird weder die Potenz noch die Fakultät bestimmt

    Gruß mcr

    Ach übrigens, so ähnlich geht das dann auch mit dem sinus! 😉



  • proggingmania schrieb:

    Denn schlussletztendlichstallerletztestens mußt du ja die Fakultät berechnen, nicht wahr doch.

    Wie zuvor geschrieben: deine Aussage ist falsch!

    Gruß mcr



  • Ach Quatsch.
    (i+1)! = i! * (i+1)
    Toll und nu ? Ist i! etwa keine Fakultät ? Bekomme ich i! etwa durch, ich zitiere mal frei, "Vermeidung von großen Zahlen" ?
    Ein x^1 kann ich auch nicht durch i! teilen, bevor ich i! habe.
    So, und wenn ich bei i! nen 1.#INF00 wegen Werteüberschreitung kriege, kann ich mir auch die Berechnung von (i+1)! in die Haare schmieren.
    Auch wenn i! ( sprich: i FAKULTÄT )vorher aus der Hutschachtel gezaubert kam. 😉

    🙂



  • proggingmania schrieb:

    Ach Quatsch.
    (i+1)! = i! * (i+1)
    Toll und nu ? Ist i! etwa keine Fakultät ? Bekomme ich i! etwa durch, ich zitiere mal frei, "Vermeidung von großen Zahlen" ?
    Ein x^1 kann ich auch nicht duchr i! teilen, bevor ich i! habe.
    So, und wenn ich bei i! nen 1.#INF00 wegen Werteüberschreitung kriege, kann ich mir auch die Berechnung von (i+1)! in die Haare schmieren.
    Auch wenn i! ( sprich: i FAKULTÄT )vorher aus der Hutschachtel genaubert kam. 😉

    🙂

    Hallo proggingmania,

    ich habe da mal ein paar Fragen zu deiner Person:
    -- Wie alt bist du?
    -- Inwiefern hast du mit Programmieren und Mathematik zu tun?

    Ich kann dich leider nicht verstehen. Wenn du dir die Aufgabe ansiehst,
    fällt dir auf, dass i! nicht benötigt wird. Schau dir mal meine Beiträge
    an: Hier habe ich eine Möglichkeit aufgezeigt, wie man ohne die Berechnung
    von i! auskommt. Ich habe sogar Pseudocode gepostet.

    Ich habe die exp(x) und sin(x) Berechnung implementiert und kam ohne
    Probleme mit double aus.

    Bitte tu mir einen Gefallen und überleg dir, was du mir hier antwortest,
    ich möchte nicht, dass das hier exskaliert.

    Aber ich muss dir Recht geben: i! und xix^i alleine zu berechnen
    sprengt dir die normalen Datentypen. Aber hier wird der Quotient aus beiden
    benötigt, dadurch bleiben die Zahlen im gebräuchlichen Wertebereich, wenn die
    Reihenfolge clever gewählt ist.

    Gruß mcr



  • mcr schrieb:

    Ich kann dich leider nicht verstehen. Wenn du dir die Aufgabe ansiehst,
    fällt dir auf, dass i! nicht benötigt wird. Schau dir mal meine Beiträge
    an: Hier habe ich eine Möglichkeit aufgezeigt, wie man ohne die Berechnung
    von i! auskommt. Ich habe sogar Pseudocode gepostet.

    Hallo mcr,
    Ich hatte die Definition von zi im Auge,

    mcr schrieb:

    Sei ziz_i definiert als: zi=xii!z_i=\frac{x^i}{i!}
    D.h. wir betrachten uns hier mal den Schritt vom i-ten Summanden
    zum (i+1)-ten.

    die auf der Berechnung von i! basiert.
    Deinem Pseudocode habe ich leider zu wenig Beachtung geschenkt. Das habe ich heute nachgeholt, in der Tat läßt sich damit die direkte Berechnung der großen Zahlen vermeiden. 👍
    Sorry for any inconvenience.
    Gruß,
    p.



  • okay also ich schaffe es nicht alleine, ich komme nicht drauf wie das geht.

    also der Sinus als Taylor:

    x - (x^3 / 3!) + (x^5 / 5! ) - (x^7/7!) ...

    wie man sieht wechseln die vorzeichen, da habe ich mir gedacht ich teile es auf in einen wert, wo alles abgezogen wird, und in einem wo alles addiert wird, und am ende verrechnen.

    und mit dem 3! 5! 7!... komme ich überhaupt nicht klar, ich habs so probiert mit den ungeraden zahlen:

    for(i=1;i<20;i=i+1) 
    		if (i/2 =! 0) {
    

    aber das problem ist jetzt, das es dann mit den fakultäten ja nicht stimmt wenn ich sage n=n*i, dann hätte ich ja 1*1, 1*3, 1*3*5 usw.. 😞

    HILFE 😃





  • andii schrieb:

    okay also ich schaffe es nicht alleine, ich komme nicht drauf wie das geht.

    hast du den pseudocode von mcr nach C übersetzt? der sollte doch eigentlich funzen.
    🙂



  • Wie willst du denn die Fakultät berechnen. Direkt, oder mit dieser Vermeidung von großen Zahlen Geschichte ?
    Der Typ double macht ja erst bei (171)! den Klappmann, brauchbare Werte bekommt man bei der Sinusreihe schon bei ca. (13)!



  • pseudo-freak schrieb:

    andii schrieb:

    okay also ich schaffe es nicht alleine, ich komme nicht drauf wie das geht.

    hast du den pseudocode von mcr nach C übersetzt? der sollte doch eigentlich funzen.
    🙂

    Hi, der angegebene Pseudocode ist nicht für die Sinus-Taylor-Entwicklung,
    sondern für die E-Funktion gedacht. Aber es sollte nicht allzu schwer sein,
    diesen Code umzuschreiben.

    Gruß mcr



  • Ok, bevor noch Fragen kommen:

    Hier mal Pseudocode für die Sinus-Taylor-Entwicklung:

    sin(x):
        double summe = x;
        double summand = x;
    
        for i=1 .. n do
            summand = summand * (x*x / ((2*i+1)*(2*i)));
            if (i%2 == 0) summe   = summe + summand;
            else          summe   = summe - summand;
        end
    

    So, ich glaube, nun habe ich zu viel geholfen.
    Viel Spaß beim Implementieren.

    Gruß mcr



  • mcr schrieb:

    Ok, bevor noch Fragen kommen:

    Hier mal Pseudocode für die Sinus-Taylor-Entwicklung:

    sin(x):
        double summe = x;
        double summand = x;
        
        for i=1 .. n do
            summand = summand * (x*x / ((2*i+1)*(2*i)));
            if (i%2 == 0) summe   = summe + summand;
            else          summe   = summe - summand;
        end
    

    So, ich glaube, nun habe ich zu viel geholfen.
    Viel Spaß beim Implementieren.

    Gruß mcr

    Das ist kein C++ 👎



  • O's -> Orienierungslosen 😃

    Kenner des Pascal schrieb:

    Das ist kein C++ 👎

    Hi Bruder !
    Hier ist das ANSI C Forum.



  • Kenner der O's schrieb:

    O's -> Orienierungslosen 😃

    Kenner des Pascal schrieb:

    Das ist kein C++ 👎

    Hi Bruder !
    Hier ist das ANSI C Forum.

    Es ist auch kein ANSI C 👎



  • Dürfte ich bitten hier weniger sinnfreies Zeugs zu entladen. Anderenfalls sehe ich mich gezwungen mich als "Kenner des Löschens" zu betätigen. Danke.



  • Tim schrieb:

    Dürfte ich bitten hier weniger sinnfreies Zeugs zu entladen. Anderenfalls sehe ich mich gezwungen mich als "Kenner des Löschens" zu betätigen. Danke.

    Jambo Bwana!
    Tut das irgendjemandem weh, daß das einfach jetzt so versickert, außer Deiner aufrechten Sheriff- Seele? Einfach nochmal draufgeschimpft, das tut dem gequälten Ego gut, was, Tim?


Anmelden zum Antworten