Mathematische Funktionen



  • Hallo,

    ich versuche in C die Spannung an einem Condensator auszurechnen.
    Hierfür wäre die Formel Uc=U(1-e^(-t/T))

    Ich habe versucht das folgendermaßen umzusetzen...

    #include <stdio.h>
    #include <math.h>
    
    int main() {
    
    int a = 12*(1-e^(-3/10,1));
    printf ("%i",a);
    
    }
    

    Allerding scheint C da ein Problem mit der e Funktion zu haben...
    Weiß jemand wie man diese Formel in C berechnen könnte?

    Gruß, Michael



  • math.h ist ja bereits inkludiert, also sollte es reichen, wenn Du e^(..) durch exp(...) ersetzt.



  • garby schrieb:

    Hallo,

    ich versuche in C die Spannung an einem Condensator auszurechnen.
    Hierfür wäre die Formel Uc=U(1-e^(-t/T))

    Glaube ich nicht. Für t = 0 hätte ich U_0, nicht 0, erwartet.

    int a = 12*(1-e^(-3/10,1));
    

    a = 12 * (1 - exp(-3/10.1)); Vielleicht solltest Du aber lieber in double rechnen.



  • Ich glaube du hast recht, double wäre besser! 😉
    Aber ich denke nicht das, dass mit dem e^ durch exp funktioniert!

    e steht nicht für Exponent sondern für e-Funktion. Das ist das Gegenteil von der ln Taste auf dem Taschenrechner...



  • Für Potenzen verwendet man pow (); 1^2 => pow (1,2);

    Edit:
    Hoppla verlesen.



  • Das ^ steht in C für bitweise-xor - und hat nix mit Potenzen zu tun.
    Und exp() steht sowohl in der Mathematik als auch in C für die Exponentialfunktion.



  • Ok, dann kann ich also exp doch für die e-Funktion benutzen, aber wie ersetze ich das hoch ^ zeichen?



  • mit pow, hat SirLant ja schon gesagt.

    ich würde zur sicherheit noch keine integerkonstanten, sondern doubles nehmen:

    3.0
    10.0

    etc



  • garby schrieb:

    Ok, dann kann ich also exp doch für die e-Funktion benutzen, aber wie ersetze ich das hoch ^ zeichen?

    Brauchst du nicht. In der Mathematik definiert man:
    exp(1)=eexp(1) = e

    Und folgendes kann man relativ einfach beweisen:
    exp(n)=enexp(n) = e^{n}

    Solltest du Potenzen zu einer anderen Basis als e brauchen so hilft dir die Funktion pow.



  • Ich habs hinbekommen! Das pow brauchte ich gar nicht!

    a = 12*(1.0-(exp((double)25/10.1)));

    Danke für eure Hilfe!


Anmelden zum Antworten