lotka-volterra-phase
lotka-volterra-phase
by belyakov_am
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/jsxgraph/0.99.7/jsxgraphcore.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jsxgraph/0.99.7/jsxgraph.css">
<div id="jxgbox-phase" class="jxgbox" style="width:600px; height:600px;">
</div>
JavaScript
board_phase = JXG.JSXGraph.initBoard('jxgbox-phase', {
boundingbox: [-4, 42.5, 42.5, -3.5],
axis: true,
grid: false,
showCopyright: false
});
alpha_slider_p = board_phase.createElement('slider', [
[3.0, 40.5],
[8.0, 40.5],
[0.0, 0.42, 1.0]
], {
name: 'α',
strokeColor: 'black',
fillColor: 'black'
});
alpha_text_p = board_phase.createElement('text', [5, 39.5, "alpha"], {
fixed: true
});
beta_slider_p = board_phase.createElement('slider', [
[13.0, 40.5],
[18.0, 40.5],
[0.0, 0.14, 1.0]
], {
name: 'β',
strokeColor: 'black',
fillColor: 'black'
});
beta_text_p = board_phase.createElement('text', [13, 39.5, "beta"], {
fixed: true
});
gamma_slider_p = board_phase.createElement('slider', [
[23.0, 40.5],
[28.0, 40.5],
[0.0, 0.79, 1.0]
], {
name: 'γ',
strokeColor: 'black',
fillColor: 'black'
});
gamma_text_p = board_phase.createElement('text', [23, 39.5, "gamma"], {
fixed: true
});
delta_slider_p = board_phase.createElement('slider', [
[33.0, 40.5],
[38.0, 40.5],
[0.0, 0.17, 1.0]
], {
name: 'δ',
strokeColor: 'black',
fillColor: 'black'
});
delta_text_p = board_phase.createElement('text', [33, 39.5, "delta"], {
fixed: true
});
prey_0 = board_phase.createElement('glider', [10, 0, board_phase.defaultAxes.x], {
name: 'Preys',
strokeColor: 'blue',
fillColor: 'blue'
});
pred_0 = board_phase.createElement('glider', [0, 5, board_phase.defaultAxes.y], {
name: 'Predators',
strokeColor: 'red',
fillColor: 'red'
});
var draw_data = null;
function solve_ode(x0, I, N, f) {
var data = [x0];
var dt = (I[1] - I[0]) / N;
for (let i = 1; i < N; ++i) {
var dx_dt = data[i - 1][0] + dt * f(0, data[i - 1])[0];
var dy_dt = data[i - 1][1] + dt * f(0, data[i - 1])[1];
data.push([dx_dt, dy_dt]);
}
return data
}
function ode_phase() {
var I_phase = [0, 200];
var N_phase = 5000;
var f_phase = function(t_phase, x_phase) {
var alpha_p = alpha_slider_p.Value();
...