Ich schreibe ein C++ - Programm, um Lösungen für Differentialgleichungen erster Ordnung für eine College-Aufgabe zu finden. Das Programm startet und dann, sobald ich die Anzahl der Iterationen eingeben, bekomme ich die Fehlermeldung "Eulers Methode.exe funktioniert nicht mehr". Dies ist mein Code:C++ - Programm funktioniert nicht mehr - Lösen gewöhnlicher Differentialgleichungen
#include <functional>
#include <vector>
using namespace std;
double f_r(double x, double r) {
return r;
}
double f_s(double x, double s) {
return -x/s;
}
double eulerstep(const function<double(double,double)>& f, double xsub0, double ysub0, double h) {
double ysub1 = ysub0+ h * f(xsub0,ysub0);
return ysub1;
}
double euler(const function<double(double,double)>& f, double xsub0, double ysub0, double h, int n) {
vector<double> xsub;
vector<double> ysub;
xsub[0] = xsub0;
ysub[0] = ysub0;
n = ysub.size();
for (int i=1; i<n; i++){
\t xsub[i+1] = xsub[i] + h;
\t ysub[i+1] = ysub[i] + h * f(xsub[i],ysub[i]);
\t cout << xsub[i] << " , " << ysub[i] << endl;
}
return ysub[n];
}
int main() {
int nsteps = 0;
cout << "Number of steps?" << endl;
cin >> nsteps;
double h = 1.0/nsteps;
double r = euler(f_r,0,1,h,nsteps);
double s = euler(f_s,0,1,h,nsteps);
return 0;
}
Ich bin ziemlich sicher, dass das Problem liegt darin, wie ich meine Vektoren definiert habe, aber ich bin neu mit ihnen kann so nicht sehen, wo ich Ich bin falsch gelaufen. Ich würde sehr dankbar, wenn jemand die Fehler in meiner Methode
Dank
Wie weit kommen Sie, wenn Sie dies in einem Debugger ausführen? – mah
Sie können Elemente zum Vektor hinzufügen mit 'push_back()' – DimChtz
'xsub [0] = xsub0;' dort beginnt Ihr Problem – DimChtz