Probleme mit Programm



  • Hallo,
    ich bin neu und kenne mich überhaupt nicht mit c++ aus. Muß aber eine Aufgabe in c++ programmieren. Vielleicht gibt es jemanden der Lust und Zeit hat mir zu helfen? Die Aufgabe ist aus dem Gebiet der Stochastik:

    Für unabhängige und idntisch verteilte Zufallsvariablen X1,X2,... mit beschränkter Dichte f und eine beschränkte reellwertige Funktion g folgt aus dem Gestz der großen Zahlen, dass

    1/n*Summe von j=1 bis n (g(Xj)) geht gegen Integral von g(x)*f(x) dx.

    Berechne approximativ den Wert der Integrale

    Integral von 0 bis 2 (e(-x2/2) und Integr. von o bis unendlich (cos(x)*e^(-2x)dx.

    Ich habe keine geroße Hoffnung dass mich jemand versteht aber vielleich kann mir jemand sagen wie ich an so was drangehe und wie man das aufschreiben könnte.

    Viele Grüße Samatron



  • Samatron schrieb:

    1/n*Summe von j=1 bis n (g(Xj)) geht gegen Integral von g(x)*f(x) dx.

    Berechne approximativ den Wert der Integrale

    Integral von 0 bis 2 (e(-x2/2) und Integr. von o bis unendlich (cos(x)*e^(-2x)dx.

    hm, damit kenne ich mit auch nicht aus, aber die funktionen kriegt man mit c++ locker hin.

    [cpp]
    #include <vector>
    using std::vector;

    float sum(const vector<float>& x)
    {
    float sum(0.0);
    for(size_t i = 0; i < x.size(); ++i)
    sum += x[ i ]; // edit: hier stand mal [ i ] (ohne spaces)
    return sum;
    }

    // ...

    float result = 1.0 / sum(xValues);

    // hier noch ein funktionsbeispiel:

    #include <cmath>
    using std::cos; // ???

    // f(x) = e(-x2/2)
    float f(float x) { e(-x2.0/2.0) }
    // afaik gibt es keinen unterschied zwischen 0.0 und 0.0f.

    [/cpp]

    *ungestestet*

    cosinus und evtl. auch die eulersche zahl sind in <cmath> definiert.
    die funktionsabläufe dazwischen müsstest du dann ProGgEn.

    mfg



  • Ich hab mir jetzt nichts alles angeschaut, aber das

    terraner schrieb:

    // f(x) = e^(-x^2/2)
    float f(float x) { e^(-x^2.0/2.0) }
    

    wird nicht funktionieren.
    Mal abgesehen davon, dass hier ein return fehlt und ich nicht weiss, wo du e herbekommst, solltest du dir nochmal die Bedeutung des ^ Operators anschaun.



  • terraner schrieb:

    // afaik gibt es keinen unterschied zwischen 0.0 und 0.0f.

    0.0 ist vom Typ double und 0.0f vom Typ float.

    Außerdem sieht 0.0 aus wie ein Smilie - 0.0f hingegen nicht.



  • groovemaster schrieb:

    Ich hab mir jetzt nichts alles angeschaut, aber das

    terraner schrieb:

    // f(x) = e^(-x^2/2)
    float f(float x) { e^(-x^2.0/2.0) }
    

    wird nicht funktionieren.
    Mal abgesehen davon, dass hier ein return fehlt und ich nicht weiss, wo du e herbekommst, solltest du dir nochmal die Bedeutung des ^ Operators anschaun.

    *no-brainer nr. 2 heute abend*

    ich weiß natürlich, dass "^" normalerweise für potenzen steht bzw. für bitops... 🙄

    ich sagte bereits, dass ich mir nicht sicher bin, ob e nicht vielleicht doch in <cmath> definiert ist.
    btw: e = eulersche zahl, oder habe ich da etwas missverstanden?

    // f(x) = e^(-x^2/2)
    double f(double x) { return (pow( e, ( pow(x, 2.0)/2.0))); }
    

    so, jetzt ist es hoffentlich richtig.

    Außerdem sieht 0.0 aus wie ein Smilie - 0.0f hingegen nicht.

    🤡

    mfg


Anmelden zum Antworten