Я пишу программу на C++ для поиска решений дифференциальных уравнений первого порядка для задания колледжа. Программа запускается, а затем после ввода количества итераций я получаю сообщение об ошибке «Метод method.exe от Euler перестает работать». Это мой код:Программа C++ перестала работать. Решение обычных дифференциальных уравнений
#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;
}
Я совершенно уверен, что проблема заключается в том, как я определил свои векторы, но я новичок в их использовании, так не может видеть, где я все пошло не так. Я был бы очень признателен, если кто-то может указать на ошибки в моем методе
Благодарности
Как далеко вы получаете, когда запускаете это в отладчике? – mah
Вы можете добавить элементы в вектор, используя 'push_back()' – DimChtz
'xsub [0] = xsub0;' там запущена ваша проблема – DimChtz