Public
Edited
Sep 23, 2023
Insert cell
Insert cell
Insert cell
Insert cell
Type JavaScript, then Shift-Enter. Ctrl-space for more options. Arrow ↑/↓ to switch modes.

Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
helix_Euler = {
// var labels =[].concat(... [ "P", "T", "N", "B" ].map( v => [ v+"x", v+"y", v+"z" ]));
var steps = [ /* labels, */ y0 ];
var nbSteps = 72;
var h = 2 * Math.PI / nbSteps;
var yi = y0;
var Mi = math.multiply(math.matrix(M), h);
for (var i=0; i<nbSteps; i++) {
yi = math.add(yi, math.multiply(Mi, yi));
steps.push(yi._data);
}
return steps
}
Insert cell
Insert cell
helix_Euler_backward_implicit = {
var steps = [ y0 ];
var nbSteps = 72;
var h = 2 * Math.PI / nbSteps;
var yi = y0;
var Mim1 = math.inv(math.subtract(math.identity(12), math.multiply(math.matrix(M), h)));
for (var i=0; i<nbSteps; i++) {
yi = math.multiply(Mim1, yi);
steps.push(yi._data);
}
return steps
}
Insert cell
Insert cell
helix_Crank_Nicholson = {
var steps = [ y0 ];
var nbSteps = 18;
var h = 2 * Math.PI / nbSteps;
var yi = y0;
var Miph = math.add(math.identity(12), math.multiply(math.matrix(M), h/2));
var Miphm1 = math.inv(math.subtract(math.identity(12), math.multiply(math.matrix(M), h/2)));
var Mi = math.multiply(Miphm1, Miph);
for (var i=0; i<nbSteps; i++) {
yi = math.multiply(Mi, yi);
steps.push(yi._data);
}
return steps
}
Insert cell
Insert cell
helix_rk4 = {
var steps = [ y0 ];
var nbSteps = 9;
var h = 2 * Math.PI / nbSteps;
var yi = y0;
for (var i=0; i<nbSteps; i++) {
var k1 = math.multiply(M, yi);
var k2 = math.multiply(M, math.add(yi, math.multiply(k1, h/2)));
var k3 = math.multiply(M, math.add(yi, math.multiply(k2, h/2)));
var k4 = math.multiply(M, math.add(yi, math.multiply(k3, h)));
yi = math.add(yi, math.multiply(h/6, math.add(k1, k2, k2, k3, k3, k4)));
steps.push(yi._data);
}
return steps
}
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more