Lichtenberg Figures

A Lichtenberg figure is a fractal[1] figure whose pattern is to be found in nature. Some examples are: Vein shapes, tree branches, neurons (brain and bodily), trachea shapes, electric sparks (from Tesla coils, Van de Graaff generators, Lightning, etc).

The pattern is also found in the breakup of (thick) dielectric material, when high voltage is applied at opposite ends. The figure can be 2D or 3D, branching or not. Branching, when multiple terminals are employed, single branch if only two poles are employed.

It is also found upon the breakup of non-elastic or very slightly elastic materials, such as when glass, crystal or concrete, when they break under tension[2].

It is similar to Brownian motion which characterizes the motion path of particles in fluids and the overall path a photon takes starting from the core of a star until it reaches its surface[3].

A Random walk is a special case of Brownian motion with constraints on the change of direction.

The overall path of a single branch is characterized as being linear piecewise and is therefore not differentiable at the points which the path changes direction. There are only a finite number of points where the path changes direction[4].

Let's try some Maple code:

>restart;
>with(plots):

>p:={};cdet:=1/10;
>L:=proc(z1,z2,dis)
>local l,nz,midx,midy;global p,cdet;
>if dis
> p:=p union {plot([[Re(z1),Im(z1)], [Re(z2),Im(z2)]],x=-1..1,scaling=constrained,color=magenta)};
>else
> midx:=evalf((Re(z1)+Re(z2))/2);
> midy:=evalf((Im(z1)+Im(z2))/2);
> midx:=midx + (RandomTools[Generate](float(range=0..1,digits=2))-1/2)*dis;
> midy:=midy + (RandomTools[Generate](float(range=0..1,digits=2))-1/2)*dis;
> nz:=evalf(midx+midy*I);
> L(z1,nz,dis/2);
> L(nz,z2,dis/2);
>fi;p;
>end:

>display(L(-1,1,1.3));

Lichtenberg spark
Simulation of electric spark between two poles (-1,1), as a Lichtenberg fractal figure

An alternate simulation using Robert Israel's code:

>N := 100; c := 0.2; nframes:= 20;


>C:= Matrix(N,N,(i,j) -> evalf(i*(N+1-j)/(N+1)^2),shape=symmetric);
>A:= LinearAlgebra[LUDecomposition](C, method=Cholesky);
>for k to nframes do
Vx := Statistics[Sample](Normal(0, 1), N);
Vy := Statistics[Sample](Normal(0, 1), N);
Wx := A.Vx^%T; Wy := A.Vy^%T;
>pts := [[0, 0], seq([i/(N+1)+c*Wx[i], c*Wy[i]], i = 1 .. N), [1, 0]];
>frame[k] := plot(pts, colour = black);
>end do:
>BB := plots[display]([seq(frame[k], k = 1 .. nframes)], insequence = true)

>plots[display]([BB, plottools[disk]([0, 0], 0.5e-1, colour = black), plottools[disk]([1, 0], 0.5e-1, colour = black)], scaling = constrained, axes = none);

Lichtenberg spark 2
Simulation of electric spark Lichtenberg figure using a Gaussian process that approximates a Brownian bridge
Notes
  1. It satisfies self-similarity: It is obvious for example that the figure consists of multiple linear segments connected together, so if all segments are vi, i in I, there exist linear transformations Ti, such that vi+1=Ti(vi), so then: b=Tn(Tn-1(...T1(a=v1)...)).
  2. In the author father's PhD Thesis for example, the elementary crack which occurs on the anisotropic disk under tensile stress and after compromise is linear. The total compromise appears multi-linear, with each linear sub-segment changing directions randomly.
  3. Technically the path in this case is not that of a single photon, rather of a sequence of photons, where at the end of the linear sub-part it is absorbed by a Hydrogen atom and a new photon is emitted at the start of a new sub-part.
  4. In the case of an electric discharge this happens because current always chooses a path of least resistance, so when it finds a less resistive path than the one it has already chosen, it changes into that direction (and this produces a non-differentiable point) in space.