{
let gamma = 1 / Math.sqrt(1 - beta * beta);
let min = 2 * gamma;
let range = 1000;
let curve = build_samples(
(x) =>
(2 * (beta * beta * x + Math.sqrt(1 + beta * beta * x * x))) /
(1 - beta * beta),
-gamma - range,
-gamma + range,
{ N: 100 }
);
let taylor = build_samples(
(x) => min + (beta * beta * (x + gamma) * (x + gamma)) / gamma,
-gamma - range,
-gamma + range,
{
N: 100
}
);
let right = build_samples(
(x) => (2 * beta * x) / (1 - beta),
0,
-gamma + range,
{ N: 100 }
);
let left = build_samples(
(x) => -(2 * beta * x) / (1 + beta),
-gamma - range,
0,
{ N: 100 }
);
let plot = Plot.plot({
width: 600,
height: 600,
y: { domain: [min, min + (beta * beta * range * range) / gamma] },
marks: [
Plot.line(curve, { stroke: "steelblue" }),
Plot.line(taylor, { stroke: "red" }),
Plot.line(right, { stroke: "yellow" }),
Plot.line(left, { stroke: "yellow" }),
Plot.ruleX([-gamma]),
Plot.ruleY([min]),
Plot.axisX({ y: min }),
Plot.axisY({ x: -gamma })
]
});
return plot;
}