FRage zu einer Falschen REchnung



  • Hallo,
    ich habe mal wieder ein Problem...

    also ich hab hier ne übungsaufgabe... es gibt eine formel die heißt folgender maßen

    U(t)=U(0)*e^-t/R*C

    wobei t die zeit, R der Widerstand und C die Kapazietät ist, so nun soll ich dazu eine programm schreiben was die U(0) einließt, den Widerstand, die Kapazität, die Ausgabewerte, und die Abstände der Zeitberechnung...

    bei folgenden Beispiel eingaben müsste es so aussehen
    U(0)=5,R=1000,C=0.003,5 Ausgabewerte,Zeitabstand 2sec

    Zeit[sec] Spannung[Volt]
    0 5.000
    2 2.567
    4 1.318
    6 0.677
    8 0.347

    nur bei meinem programm kommen immer wieder andere werte raus...könnt ihr es euch mal anschauen... weil ich weiß nicht wo der fehler liegt...
    bitte nicht über den stil meckern...

    #include<iostream>
    #include<vector>
    #include<cmath>
    #include<cstddef>
    
    using namespace std;
    
    float Spannung(float Spannung_0,float Widerstand,float Kapazitaet,float Abstand,float Ausgabewerte)
    {
        float Teilergebnis;
    
        const float e=2.718281828;
    
        vector<float> Ergebnis;
    
        for( float i=0;i<Ausgabewerte*Abstand;i=i+Abstand)
        {
    
            Teilergebnis=Spannung_0*pow(e,-i/(Widerstand*Kapazitaet));
    
            Ergebnis.push_back(Teilergebnis);
    
        }
        for(size_t i=0;i<Ausgabewerte*Abstand;i=i+Abstand)
        {
            cout<<endl;
    
            cout<<Ergebnis[i]<<endl;
    
        }
    
        }
    int main()
    {
        float U_0,R,C,t,ausg;
        cout<<"Geben sie die U(0) an "<<endl;
        cin>>U_0;
        cout<<"Geben sie den widerstand an "<<endl;
        cin>>R;
        cout<<"Geben sie die Kapazitaet an "<<endl;
        cin>>C;
        cout<<"Geben sie den Abstand ein "<<endl;
        cin>>t;
        cout<<"Geben sie die Ausgabewerte ein "<<endl;
        cin>>ausg;
    
        Spannung(U_0,R,C,t,ausg);
    
        return 0;
    }
    


  • Hallo,

    Deine Rechnung habe ich jetzt nicht kontrolliert, aber schau dir bitte nochmal diese Schleife an (das ist falsch, es sei denn Abstand ist 1).

    for(size_t i=0;i<Ausgabewerte*Abstand;i=i+Abstand)
    {
        cout<<endl;
        cout<<Ergebnis[i]<<endl;
    }
    

    besser wäre wohl

    for(size_t i=0;i<Ergebnis.size();++i)
    {
        cout<<endl;
        cout<<Ergebnis[i]<<endl;
    }
    

    statt pow(e,...) kannst du hier auch exp() nehmen.



  • alles klar jetzt gehts auch danke


Anmelden zum Antworten