최근에 C++을 사용하기 시작했고 사용자 정의 된 ode 's 시스템의 통합을 허용하는 클래스를 만들었습니다. 성능을 비교하기 위해 두 개의 서로 다른 통합자를 사용합니다. 여기서, 코드의 일반 레이아웃은 :ode의 시스템을 해결하기위한 C++ 수치 적 통합 자
class integrators {
private:
double ti; // initial time
double *xi; // initial solution
double tf; // end time
double dt; // time step
int n; // number of ode's
public:
// Function prototypes
double f(double, double *, double *); // function to integrate
double rk4(int, double, double, double, double *, double *);
double dp8(int, double, double, double, double *, double *);
};
// 4th Order Runge-Kutta function
double integrators::rk4(int n, double ti, double tf, double dt, double *xi, double *xf) {
// Function statements
}
// 8th Order Dormand-Prince function
double integrators::dp8(int n, double ti, double tf, double dt, double *xi, double *xf) {
// Function statements
}
// System of first order differential equations
double integrators::f(double t, double *x, double *dx) {
// Function statements
}
int main() {
// Initial conditions and time related parameters
const int n = 4;
double t0, tmax, dt;
double x0[n], xf[n];
x0[0] = 0.0;
x0[1] = 0.0;
x0[2] = 1.0;
x0[3] = 2.0;
// Calling class integrators
integrators example01;
integrators example02;
// First integrator
example02.dp8(n, t0, tmax, dt, x0, xf);
// Second integrator
example01.rk4(n, t0, tmax, dt, x0, xf);
}
문제하다 않는 제 적분기를 실행하고 I 번째 적분기 동일한 초기 조건을 사용할 수 후 주요 변화의 초기 조건 X0 함유 어레이 동일한 초기 조건 (x0_rk4 및 x0_dp8)을 갖는 다른 배열을 정의합니다. 이 배열을 두 통합 자 모두에서 사용하기 위해 일정하게 유지하는보다 전문적인 방법이 있습니까?
감사합니다 @ Rakete1111! 내 C++ 책을 업데이트해야한다고 생각합니다. 지금까지 가지고있는 문제는 수치 적 방법에 적용된 새로운 C++ 서적을 찾는 것입니다. – Leonel