このディレクトリの索引

f(_x,_y,_z) :-
        _z is _y + sin(_x).

'ルンゲ・クッタ法を用いて常微分方程式の解を数値的に求める'(_xの初期値,_yの初期値,_xの最終値,_分割数,_y) :-
        _刻み is (_xの最終値 - _xの初期値) / _分割数,
        'ルンゲ・クッタ法を用いて常微分方程式の解を数値的に求める'(0,_分割数,_xの初期値,_yの初期値,_刻み,_y).


'ルンゲ・クッタ法を用いて常微分方程式の解を数値的に求める'(_分割数,_分割数,_,_y,_,_y) :- !.
'ルンゲ・クッタ法を用いて常微分方程式の解を数値的に求める'(_i,_分割数,_xの初期値,_y_1,_刻み,_y) :-
        _x is _xの初期値 + _i * _刻み,
        'ルンゲ・クッタ法'(_x,_y_1,_刻み,_y_2),
        i_2 is i + 1,
        'ルンゲ・クッタ法を用いて常微分方程式の解を数値的に求める'(_i_2,_分割数,_xの初期値,_y_2,_刻み,_y).

'ルンゲ・クッタ法'(_x,_y_1,_刻み,_y_2) :-
        'ルンゲ・クッタ法_0'(_x,_y_1,_刻み,_u0),
        'ルンゲ・クッタ法_1'(_x,_y_1,_刻み,_u0,_u1),
        'ルンゲ・クッタ法_2'(_x,_y_1,_刻み,_u1,_u2),
        'ルンゲ・クッタ法_3'(_x,_y_1,_刻み,_u2,_u3),
        _y is _y_1 + (_u0 + (_u1 + _u2) * 2.0 + _u3) / 6.0.

'ルンゲ・クッタ法_0'(_x,_y_1,_刻み,_u0) :-
        f(_x,_y_1,_z_1),
        _u0 is _z_1 * _刻み.

'ルンゲ・クッタ法_1'(_x,_y_1,_刻み,_u0,_u1) :-
        _x_11 is _x + _刻み * 0.5,
        _y_11 is _y_1 + _u0 * 0.5,
        f(_x_11,_y_11,_z_2),
        _u1 is _z_2 * _刻み.

'ルンゲ・クッタ法_2'(_x,_y_1,_刻み,_u1,_u2) :-
        _x_11 is _x + _刻み * 0.5,
        _y_12 is _y_1 + _u1 * 0.5,
        f(_x_11,_y_12,_z_3),
        _u2 is _z_3 * _刻み.

'ルンゲ・クッタ法_3'(_x,_y_1,_刻み,_u2,_u3) :-
        _x_13 is _x + _刻み,
        _y_13 is _y_1 + _u2,
        f(_x_13,_y_13,_z_4),
        _u3 is _z_4 * _刻み.