Formel Problem in C



  • Hi,

    Ich habe ein Problem mit einer kleinen C Funktion, und hoffe jemand kann mir helfen.
    Ich möchte die beiden ersten Formeln für die logarithmierte Standardabweichung und Mittelwert in C implementieren:

    http://www.brighton-webs.co.uk/distributions/Images/dist_func_lognormal.gif

    So hab ich mir das ganze gedacht, lässt sich auch kompilieren (GCC) und so weiter:

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>

    int main ()
    {
    double stdev, mean, stdev_log, mean_log;

    do
    {
    printf("Please enter Standard Deviation and Mean: ");
    scanf("%lf %lf",&stdev, &mean);

    stdev_log = sqrt(log(1+pow((stdev/mean),2)));
    mean_log = log(mean)-0.5*log(1+pow((stdev/mean),2));

    printf("\nNew values: %f %f\n", stdev_log, mean_log);
    }
    while (stdev!=0);
    return 0;
    }

    Wenn man jetzt 1 als mean Wert und 0.2 (also 20%) Standardabweichung eingibt sollte laut meinem Taschenrechner 0,1305 und -0,00852 rauskommen. Tut es aber nicht. Der Werte Bereich ist zwar ähnlich, aber ich frage mich schon was ich falsch mache.
    Vielleicht hab ich die Formel falsch eingegeben? Oder es ist ein Rundungs-/Konvertierungsfehler?

    Vielleicht fällt ja jemanden spontan was ein.

    Viele Grüße
    Chris



  • Welcher log ist es denn?
    Logarithmus naturalis oder dekadischer Logarithmus, fällt mir spontan ein.
    EDIT: log in C ist der Ln, bei dedizierter Lit. wird log oft für den dekadischen Log verwendet. Ohne jedes weitere Ansehen Deines Problems.



  • Stimmt, ich denke daran könnte es liegen.
    Ich wusste nicht dass log() in C sich auf den natürlichen Logarithmus bezieht. Ich kenne es auch so dass bei log normalerweise vom 10er Logarithmus gesprochen wird.
    Ich werde es morgen mal ausprobieren!
    Nebenbei; gibts ne Fkt für den dekadischen Logarithmus in C?

    Danke!




Anmelden zum Antworten