Public
Edited
Dec 27, 2022
Insert cell
Insert cell
Insert cell
plot = createMathCell({
visibility,
style: "width: 9in; height: 9in",
inputs,
config: (lib, { id }) => {
var radius = lib.getVariable(id, "radius");
var height = lib.getVariable(id, "height");
return {
type: "threejs",
// animate: true,
// animateOnInteraction: true,
axesLabels: ["ℜζ", "ℑζ", "q"],
xMin: -radius,
xMax: radius,
yMin: -radius,
yMax: radius,
zMin: 0,
zMax: height
};
},
data: (lib, { id }) => {
var ℜz = lib.getVariable(id, "ℜz");
var ℑz = lib.getVariable(id, "ℑz");
var radius = lib.getVariable(id, "radius");
var height = lib.getVariable(id, "height");
var q = lib.getVariable(id, "q");
var θ = lib.getVariable(id, "θ");

var z = math.complex(ℜz, ℑz);
var r = math.sub(1, z);
var ζ_z = ζ(z, 1);
var ζ_r = ζ(r, 1);
var ζ_H_q = ζ(z, q);

var χ_r = math.div(ζ_r, ζ_z);
const band_radius = 0.01;
return [
lib.parametric(
function (ℜa) {
const ζ_ = ζ(z, ℜa);
return [math.real(ζ_), math.imag(ζ_), ℜa];
},
[1, 100, 100],
{
color: "black"
}
),
// lib.parametric(
// function (ℜa, ℑa) {
// const a = math.complex(ℜa, ℑa);
// const ζ_ = ζ(z, a);
// const v = //math.add(
// // math.sub(
// // χ_r,
// math.mul(
// ζ_,
// math.exp(math.mul(math.complex(0, 2 * Math.PI * ℑz), θ))
// );
// // χ_r
// // )
// //);
// return [math.real(v), math.imag(v), ℜa];
// },
// [20, ℑz / (2 * π), 200],
// [-band_radius, band_radius, 6],
// {
// opacity: 0.1,
// colormap: (x, y) => lib.colorFromHue((y / band_radius + 1) % 1)
// // maxFaceSlope: 5
// }
// ),
lib.parametric(
function (ℜa) {
const ζ_ = ζ(z, ℜa);
let v = ζ(z, ℜa);
v = math.sub(ζ_, χ_r);
v = math.exp(math.complex(0, ℑz * θ * π));
v = math.add(ζ_, χ_r)
return [math.real(v), math.imag(v), ℜa];
},
[50, 100, 1000],
{
color: "red"
}
),
lib.parametric(
function (ℜa) {
const ζ_ = ζ(z, ℜa);
return [math.real(ζ_), math.imag(ζ_), ℜa];
},
[1, 100, 1000],
{
color: "orange"
}
),
// lib.parametric(
// function (ℜa) {
// // const ζ_Hnorm_a = math.mul(χ_r, math.hurwitzZeta(z, ℜa));
// const ζ_ = math.hurwitzZeta(r, ℜa);
// return [math.real(ζ_), math.imag(ζ_), ℜa];
// },
// [0.1, 100, 1000]
// ),
lib.sphere(radius / 80, {
center: [math.real(ζ_H_q), math.imag(ζ_H_q), q],
color: "red"
})
// lib.cylinder(radius / 50, 1, {
// center: [math.real(ζ_H_q), math.imag(ζ_H_q), q],
// // translation: {
// // path: "[ re(hurwitz(s_C(),a_C(t))), im(hurwitz(s_C(),a_C(t))), a_C(t).re]"
// // },
// // steps: 8,
// color: "red"
// })
];
}
})
Insert cell
ζ((0.5, 328.13), (1, 0))
Insert cell
χ((0.5, 328.13))
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
ζ = math.hurwitzZeta
Insert cell
ζ__alt = (z, a) => {
if (a == null) a = 1;
if (a === 0 || (a.re === 0 && a.im === 0)) {
return (Infinity, Infinity);
}
return (...Arbuckle.zeta2(z, a).slice(4));
}
Insert cell
Arbuckle = new Promise((resolve, reject) => {
const SCRIPT_URL =
"https://cdn.jsdelivr.net/gh/follymath/arbuckle/lib/arbuckle.js";

require(SCRIPT_URL).then((boot) => {
boot().then((Module) => {
resolve(Module.lib);
}, reject);
});
})
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