最近C++を使い始めたばかりで、ユーザー定義のodeのシステムの統合を可能にするクラスを作成しました。その性能を比較するために2つの異なるインテグレータを使用します。ここで、コードの一般的なレイアウトは、次のとおり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);
}
問題である場合を除き、第1の積分を実行すると、私は第2の積分器に対して同じ初期条件を使用することはできません後にメイン、変化における初期条件X0を含む配列私は同じ初期条件(x0_rk4とx0_dp8)を持つ別の配列を定義します。両方のインテグレータでこの配列を使用するために、この配列を一定に保つより専門的な方法はありますか?
ありがとう@ Rakete1111!私は自分のC++の本を更新する必要があると思う。私が今までに持っていた問題は、数値メソッドに適用される新しいC++ブックを見つけることです。 – Leonel