Type any formula for a vector field F = (Fx, Fy, Fz) or a scalar field f.
Choose an operator to visualize its gradient, divergence, curl (rotation) or Laplacian, computed live.
To read off circles or geometric structure, raise Arrow grid N, or set Arrow layout → plane for a dense 2-D slice of arrows (pick the plane axis & position); streamlines trace the field lines directly.
Values at a point: move the point P (magenta marker) and the readout shows the actual numbers behind the graph:
∇·F, ∇×F, ∇²F (or ∇f, ∇²f for a scalar) at P, with ◀ in graph
marking whichever operator you're currently displaying.
Line integral ∮F·dr: enable it, give a curve r(t) and a t-range (or use a preset), and the app
computes the work of your field along the path, colours the curve by F·T̂, and animates a trace point.
For a closed loop it flags whether the circulation is ≈ 0, a hint that F is conservative (has a potential φ).
Drop bodies into the field: position P, drop a die-faced cube, and release it. The same arrows mean different physics depending on the reading of F:
ẋ = F(x), and (Cauchy–Stokes) it spins with
ω = ½∇×F, its volume changes at the rate ∇·F, and with Deform on it carries the full
deformation gradient Ȧ = (∇F)A (shear + stretch; det A is the exact volume factor).
Try Rigid rotation (orbits and spins), Simple shear (tumbles at rate ½ while sliding), and the
Irrotational vortex: bodies orbit the axis but never rotate, the classic paddle-wheel surprise (∇×F = 0 there).m·ẍ = F(x) with a chosen mass and launch velocity v₀: orbits,
oscillations, escape. A point mass does not spin here: the curl of a force field measures
non-conservativity, not rotation. For a scalar field the body feels F = −∇f (f as potential energy)
and the readout shows E = ½m|v|² + f staying constant.If the field animates in t, the bodies' clock locks to the field clock: one shared time. Bodies that leave
3× the domain fade out and stop.
Field designer: pick a property and hit Generate; the app constructs a random field for which the
property holds as a mathematical identity, and shows the construction. Conservative fields come as
F = ∇φ (so ∇×F ≡ 0 because curl∘grad ≡ 0), incompressible ones as F = ∇×A
(div∘curl ≡ 0), Laplace fields from a harmonic potential (both at once), uniform source / vorticity fields carry a
prescribed constant ∇·F or ∇×F, and the confined eddy is built from a stream function ψ whose
level curves are the field lines. For scalar fields: harmonic functions, Laplacian eigenfunctions
(∇²f = −k²f), and localized bumps. Each generated field arrives with a “why it works” note and a suggested
experiment: the recipe is the lesson.
x, y, z, and time t.r=√(x²+y²+z²), rho=√(x²+y²), phi, theta, r2=x²+y²+z².pi, tau, e. Power is ^. Implicit products work: 2x, 3sin(x).|x| − |y|, superscripts x² = x^2, and juxtaposed
coordinates xyz = x·y·z (an exponent binds to the last letter: xy² = x·y²).sin cos tan asin acos atan atan2 sinh cosh tanh exp ln log10 log2 sqrt cbrt abs sign
floor ceil round min max mod clamp step smoothstep hypot gauss sinc.Comparisons < <= > >= == != can be
part of a formula: each evaluates to 1 (true) or 0 (false). This lets you build indicator/characteristic
functions, piecewise definitions and region masks:
(x^2+y^2 < 1), 1 inside the unit disk, 0 outside.0 <= x <= 1, or an annulus 1 < x^2+y^2 < 4.(x<0)*(-x) + (x>=0)*x = |x|; mask a field: -y*(rho<2).max for OR, 1- for NOT, or use
and(a,b), or(a,b), not(a).if(cond, a, b) or cases(c₁, v₁, c₂, v₂, …, else); only the
active branch is evaluated, so if(||x,y|| != 0, x*y/||x,y||, 0) is exactly 0 at the origin
(no 0/0). Derivatives are taken branch-wise.||a, b, …|| is the current norm (Euclidean by default; switch it in the Functions lab:
1-norm, max-norm, p-norm). Fixed variants: norm(…), norm1(…), norminf(…),
normp(p, …).Comparisons are piecewise-constant, so a gradient/Taylor of a masked function is that of the smooth part inside the region and 0 outside; 1-D plots break the line cleanly across a jump.
∇f gradient: steepest-ascent vector field of a scalar.∇·F divergence: scalar source/sink density.∇×F curl: local rotation axis & strength.∇² Laplacian: of a scalar or (component-wise) a vector.A 3×3 matrix A acts on space. See the deformed unit cube, the images of the basis vectors
(the columns of A), the eigenvectors, and the animated flow x(t) = exp(tA)·x₀.
The readout shows determinant, trace, rank, eigen-decomposition and the matrix exponential.
Pick a type in the dropdown; the panel shows only what's relevant:
f(x)/f(x,y)/f(x,y,z): curve / surface / volume, with a
Taylor approximation (drag the expansion point), plus gradient, Jacobian (=∇fᵀ) and Hessian.F(x,y,z): a vector field whose Jacobian is a full 3×3 matrix; the readout gives
det J, ∇·F (= trace) and ∇×F (antisymmetric part), and the Jacobian's local action is drawn as a deformed cube.(Line integrals ∮F·dr over a curve live in the Fields tab, where the field is defined.)
Total derivative. The section below Taylor treats df = ∇f·h as what it is: a linear map. Show its
graph as the tangent plane at P, and switch on the analysis to test total differentiability numerically:
the remainder f(P+hv) − f(P) − h∇f·v divided by h is measured over shrinking h in
every direction; it must vanish, in all directions at once. The direction probe slices the surface along a
chosen v and compares the true one-sided slope D_v f with the prediction ∇f·v.
Try the preset xy/‖(x,y)‖ at 0 with P at the origin: all partial derivatives exist, yet the remainder
sticks at ½ along the diagonal: partials existing does not imply differentiability. For a vector map the
total derivative is the Jacobian, and the same remainder test applies to F.
Constraints & constrained extrema (Extrema unter Nebenbedingungen). Each row of the constraint list is one
relation; several rows hold simultaneously (AND). An inequality like x^2+y^2 <= 4 or
2 < x^2+y^2 < 9 clips the graph cleanly to the region where it holds (boundary cells are cut exactly
at the edge); an equality like x^2+y^2 = 4 draws the constraint curve on the surface. Every boundary
is drawn in red with the Lagrange candidates marked in yellow: the points where ∇f = λ·∇g
(sign changes of ∇f × ∇g along the curve). The readout lists each candidate with f, λ and a max/min tag.
Try saddle + circle g = 4 (maxima f = 4 at (±2, 0) with λ = 1, minima f = −4 at (0, ±2) with λ = −1) and
paraboloid on disk for the inequality case. For f(x,y,z) the constraint set is a surface:
it is drawn (marching tetrahedra) coloured by f, so the constrained extrema appear as its hottest and coldest
spots; candidates come from Newton on ∇f = λ·∇g, g = c and carry ∇f ∥ ∇g arrows. Try
plane on sphere r = 3: max f = 9 at (2,−1,−2) with λ = ½.
Continuity (Stetigkeit). The continuity section classifies f on the plotted domain into
Lipschitz ⊂ uniformly continuous ⊂ continuous, each with a reason: suspected discontinuities are refined
by bisection (a gap that survives every refinement is a jump; exploding values mark a pole), and the
Lipschitz bound L = sup ‖∇f‖ is verified by zooming in on the steepest point: if it stabilises, the mean
value theorem gives |f(x)−f(y)| ≤ L|x−y|; if it keeps growing (try sqrt(|x|)), no L exists,
yet Heine–Cantor still gives uniform continuity on the compact domain. The class depends on the domain: 1/x
is not uniformly continuous on (0, R] but becomes Lipschitz with the constraint x >= 1,
and for x² an outlook warns that the slope keeps growing beyond the box: on all of ℝ it would not be
uniformly continuous.
All derivatives and Taylor terms come from automatic differentiation. Axis scale x/y/z stretches the view to reveal detail along an axis.
Explore submanifolds of ℝ³ and their geometry. Pick a kind:
φ(u,v): coloured by Gaussian curvature K (red = elliptic, blue = hyperbolic).
The readout gives the tangent vectors, normal, first & second fundamental forms, K, mean H, principal
curvatures, area, and the Euler characteristic χ via Gauss–Bonnet (sphere → 2, torus → 0).g(x,y,z)=c: a real isosurface (marching tetrahedra) with the ∇g normal field and
critical points. The readout tells you whether c is a regular value: if so, the level set is a
smooth 2-submanifold (regular value theorem); at a critical value it can be singular (try the cone).
The tangent plane is drawn at the footpoint Q (the point P projected onto the surface by Newton steps along ∇g)
where T_Q M = ker dg(Q) = ∇g(Q)⊥: exactly the directions the total derivative sends to 0.r(t): the Frenet frame T (red), N (green), B (blue), with curvature κ,
torsion τ, and arc length. Press Play to run the frame along the curve.Surfaces use u, v as parameters; move the point to see how the local geometry changes.
A flat 1+1 spacetime diagram of special relativity: the pseudo-Euclidean sibling of the Matrix lab. Time runs
up (ct), space across (x), and light travels at 45°. A Lorentz boost is a hyperbolic
rotation Λ = exp(φK): same exp-of-a-generator as R = exp(θK), but K is
symmetric and cos/sin → cosh/sinh, so it preserves the interval s² = (ct)² − x² instead of length.
ct′,
x′ axes scissor toward the light cone. Rapidity φ = artanh β is the “angle”; it adds under
composition, which is exactly relativistic velocity addition.s² = ±k² mark the true unit lengths of the tilted axes. Read time dilation
and length contraction off them (Euclidean distance on the page is misleading here).ct′ = const) are parallel to x′: two events on one are
simultaneous in the moving frame but generally not in the lab.s² (timelike / spacelike / lightlike).This tab uses a fixed, undistorted 2-D view (no orbit) so 45° really means 45°. R resets the range.
The time-independent Schrödinger equation −½ψ″ + V(x)ψ = Eψ (units ℏ = m = 1), solved by
diagonalising the finite-difference Hamiltonian. Type any potential V(x):
Eₙ (horizontal lines) with each wavefunction ψₙ
drawn on its level; toggle |ψ|² for the probability density. Nodes increase with n.
Try harmonic (equally spaced), infinite/finite well, double well (tunnelling pairs), Morse.x₀, width σ, momentum k₀) and press
▶/Space. It is expanded in the eigenbasis, so ψ(x,t)=Σ cₙψₙe^{−iEₙt} is exact. See it spread,
bounce, or tunnel through a barrier when ⟨E⟩ is below the top: small grey dots mark the
classical turning points V = ⟨E⟩, beyond which a classical particle could never go.ψₙ₁ + ψₙ₂. One eigenstate alone is
stationary; the pair sloshes at the beat frequency ω = E₂ − E₁ (the readout gives the period
2π/ΔE): quantum motion comes from energy differences.A 1-degree-of-freedom system ẍ = a(x, v, t) is a flow on the phase plane (x, v):
ẋ = v, v̇ = a. Type the acceleration a using x, the velocity
v, and time t.
½v²+U(x)=E
are the exact orbits.Any periodic f is a sum of sines and cosines: S_N = a₀/2 + Σ aₙcos(nπx/L) + bₙsin(nπx/L).
S_N converge as you raise N (or press ▶/Space);
near a jump it overshoots by ~9 % forever: the Gibbs phenomenon. The bar chart is the amplitude spectrum
√(aₙ²+bₙ²). Try square, sawtooth, triangle.F(k)=∫f e^{−ikx}dx. A narrow signal has a wide spectrum: the readout shows
Δx·Δk, minimal for a Gaussian: the mathematical seed of the uncertainty relation.Separation of variables, animated. The initial profile u₀(x) on [0, L] (ends held at zero) is
projected once onto the sine modes, aₙ = (2/L)∫u₀ sin(nπx/L)dx, and then every mode evolves exactly,
no time-stepping, no numerical error:
u_tt = c²u_xx: mode n oscillates at ωₙ = cnπ/L (all multiples of ω₁, why a string
plays a note). Initial velocity v₀ supported. Try the piano-hammer preset. Energy is conserved exactly.u_t = D·u_xx: mode n decays as e^(−Dkₙ²t); high harmonics die ~n² faster, which is
why diffusion smooths sharp edges first. Watch the spectrum bars vanish top-down.iψ_t = −½ψ_xx: the same u₀, but nothing decays; phases rotate at Eₙ ∝ n²,
the shape scrambles (dispersion) while ∫|ψ|² stays exactly 1, and in a box the packet even revives.Feeding the same bump to all three equations is the whole lesson: identical modes, different physics.
N masses and springs written in matrix form M·ü = −K·u (mass matrix M, stiffness matrix K; both shown for
small N). The ansatz u = φe^(iωt) gives the generalized eigenvalue problem (K − ω²M)φ = 0, symmetrised
as K̃ = M^(−1/2)K M^(−1/2) and diagonalised with the same QL eigensolver as the Schrödinger lab. Modes are
M-orthonormal, so any initial condition splits as cₙ = φₙᵀMu(0) and evolves exactly.
ω = 2√(k/m)·sin(q/2): the doorway to phonons.A parallel beam of particles (energy E = ½v∞², impact parameter b) hits a central potential
V(r). The deflection function is computed from the exact classical scattering integral
Θ(b) = π − 2∫ b·du/√(1 − b²u² − V/E) (u = 1/r, turning-point singularity removed analytically), and the
beam view integrates real RK4 trajectories with true timestamps: particles visibly slow near the turning point.
The two methods agree, and the self-tests prove both against closed forms.
V = k/r: Θ = 2·atan(k/2Eb), dσ/dΩ = (k/4E)²/sin⁴(θ/2) (green analytic overlay).
Head-on rays stop at r₀ = k/E: how the nucleus was sized. The attractive −1/r gives the
identical cross-section: scattering can't tell + from −.The tab bar is grouped into Math and Physics. In brief:
Use the ☀ / ☾ button (top bar) to switch between dark and light mode. Your choice is remembered.
Click ⤓ Save (top bar) to download the current 3-D view as a high-resolution PNG image, captioned
with the expression you're plotting, ready to drop into notes or a report.
The Custom points panel (bottom of the sidebar, always available) lets you drop colour-coded markers at exact coordinates to gauge where structures sit. Points persist across every tab; click a point's colour swatch to change its colour, delete points individually, or clear all.
In the Functions tab (types f(x) and f(x,y)), use + Add function to overlay extra
graphs in one view, each in its own colour and sharing one vertical scale for comparison. The first (primary) function keeps
the full Taylor / gradient / Hessian analysis.
Left-drag orbit · right-drag (or Shift+drag) pan · wheel zoom · Space play/pause · R reset view.
Every slider's value box is editable. Click it and type an exact number (then Enter) instead of dragging to the right spot.
Number boxes accept constant expressions too: pi, 2pi, pi/4, sqrt(2), 1/3. This works in matrix cells and t/u/v ranges too.