CalculusWithJuliaNotes.jl/quarto/limits/bisection.js
2022-07-24 16:38:24 -04:00

70 lines
1.5 KiB
JavaScript

var l = -1.5;
var r = 1.75;
var N = 8;
const b = JXG.JSXGraph.initBoard('jsxgraph', {
boundingbox: [l, 6.0, r,-2.0], axis:true
});
var f = function(x) {return Math.pow(x,5) - x - 1};
var graph = b.create('functiongraph', [f, l, r]);
slider = b.create('slider', [[0.25, 1], [1.0, 1], [0,0,N-1]],
{snapWidth:1,
suffixLabel:"n = "});
var intervals = [[0,1.5]];
for (i = 1; i < N; i++) {
var old = intervals[i-1];
var ai = old[0];
var bi = old[1];
var ci = (ai + bi)/2;
var fa = f(ai);
var fb = f(bi);
var fc = f(ci);
if (fc == 0) {
var newint = [ci, ci];
} else if (fa * fc < 0) {
var newint = [ai, ci];
} else {
var newint = [ci, bi];
}
intervals.push(newint);
};
b.create('functiongraph', [f,
function() {
var n = slider.Value();
return intervals[n][0];
},
function() {
var n = slider.Value();
return intervals[n][1];
}
], {strokeWidth:5});
var seg = b.create("segment", [function() {
var n = slider.Value();
var ai = intervals[n][0];
return [ai, 0];
},
function() {
var n = slider.Value();
var bi = intervals[n][1];
return [bi, 0];
}], {strokeWidth: 5});
b.create("point", [function() {
var n = slider.Value();
var ai = intervals[n][0]
return ai;
}, 0], {name:"a_n"});
b.create("point", [function() {
var n = slider.Value();
var bi = intervals[n][1]
return bi;
}, 0], {name: "b_n"});