Bürgi's Artificium in his Fundamentum Astronomiae 1587​
​by Oliver Seipel

Bürgi’s Matrix of his Artificium used to calculate the sine tables in his Fundamentum Astronomiæ 1586-1587.

Out[]=
References:
​https://en.wikipedia.org/wiki/Jost_B%C3%BCrgi​
​https://locomat.loria.fr/locomat/reconstructed.html then scroll to 1620 Bürgi
https://locomat.loria.fr/buergi/fundamentum.html
https://www.bibliotekacyfrowa.pl/dlibra/show-content/publication/edition/45624?id=45624
Menso Folkerts, Dieter Launert, Andreas Thom
https://arxiv.org/pdf/1510.03180v2.pdf
Christian Riedweg
https://arxiv.org/pdf/1602.08142.pdf
Joerg Waldvogel
https://people.math.ethz.ch/~waldvoge/Projects/lugano.pdf
https://people.math.ethz.ch/~waldvoge/Projects/lichtenpaper.pdf
Bürgi handed his script to the Emperor Rudolph II in Prague in 1592. And was rediscovered 400 years later in 1992 by Menso Folkerts in Wrocław.
The matrix formulation is of course a modern point of view. I follow the path given in the references. Some parts may be new:)
BuergiRow[n][m] is the
m
-th row of BuergiMatrix[n]:
In[]:=
BuergiRow[n_Integer?Positive][m_Integer]/;1≤m≤n:=Join[Table[Min[i,m],{i,1,n-1}],{m/2}]
The 5th row of a 7x7 Bürgi Matrix:
In[]:=
BuergiRow[7][5]
Out[]=
1,2,3,4,5,5,
5
2

BuergiMatrix[n] is a SquareMatrix to compute the sine tables by matrix multiplicative iteration with a non zero starting vector:
In[]:=
BuergiMatrix[n_Integer?Positive]:=Table[BuergiRow[n][m],{m,1,n}]
In[]:=
With[{n=7},MatrixForm[BuergiMatrix[n]]]
Out[]//MatrixForm=
1
1
1
1
1
1
1
2
1
2
2
2
2
2
1
1
2
3
3
3
3
3
2
1
2
3
4
4
4
2
1
2
3
4
5
5
5
2
1
2
3
4
5
6
3
1
2
3
4
5
6
7
2
BuergiMatrixL[n] is the
L
component of the LU decomposition:
In[]:=
BuergiMatrixL[n_Integer?Positive]:=Normal[SparseArray[{i_,j_}/;j≤i1,{n,n}]]
In[]:=
With[{n=7},MatrixForm[BuergiMatrixL[n]]]
Out[]//MatrixForm=
1
0
0
0
0
0
0
1
1
0
0
0
0
0
1
1
1
0
0
0
0
1
1
1
1
0
0
0
1
1
1
1
1
0
0
1
1
1
1
1
1
0
1
1
1
1
1
1
1
BuergiMatrixU[n] is the
U
component of the LU decomposition:
In[]:=
BuergiMatrixU[n_Integer?Positive]:=Normal[SparseArray[{{i_,j_}/;n>j≥i1,{i_,n}1/2},{n,n}]]
In[]:=
With[{n=7},MatrixForm[BuergiMatrixU[n]]]
Out[]//MatrixForm=
1
1
1
1
1
1
1
2
0
1
1
1
1
1
1
2
0
0
1
1
1
1
1
2
0
0
0
1
1
1
1
2
0
0
0
0
1
1
1
2
0
0
0
0
0
1
1
2
0
0
0
0
0
0
1
2
Check that
BuergiMatrixL[n].BuergiMatrixU[n]=BuergiMatrix[n]
:
In[]:=
With[{n=7},MatrixForm[BuergiMatrixL[n].BuergiMatrixU[n]]==MatrixForm[BuergiMatrix[n]]]
Out[]=
True
InverseBuergiMatrix[n] is the inverse of BuergiMatrix[n] and it is tridiagonal.
In[]:=
InverseBuergiMatrix[n_Integer?Positive]:=Normal[SparseArray[{{n,n-1}-2,{i_,i_}2,{i_,j_}/;Abs[i-j]==1-1},{n,n}]]
In[]:=
With[{n=7},MatrixForm[InverseBuergiMatrix[n]]]
Out[]//MatrixForm=
2
-1
0
0
0
0
0
-1
2
-1
0
0
0
0
0
-1
2
-1
0
0
0
0
0
-1
2
-1
0
0
0
0
0
-1
2
-1
0
0
0
0
0
-1
2
-1
0
0
0
0
0
-2
2
Check that
-1
BuergiMatrix[n]
is indeed tridiagonal:
In[]:=
With[{n=7},Inverse[BuergiMatrix[n]]InverseBuergiMatrix[n]]
Out[]=
True
Check that
-1
InverseBuergiMatrix[n]
is indeed BuergiMatrix[n]:
In[]:=
With[{n=7},Inverse[InverseBuergiMatrix[n]]BuergiMatrix[n]]
Out[]=
True
BuergiMatrix[n] has n different eigenvectors. BuergiEigenvector[n][j] gives the
j
-th eigenvector of BuergiMatrix[n] (
1≤j≤n
):
BuergiEigenvector[n_Integer?Positive][j_Integer]/;1≤j≤n:=TableInactive[Sin]i
π
2n
(2j-1)
j-1
(-1)
,{i,1,n}(*Inactiveisusedhere,topreventtoearlysimplifications*)
In[]:=
BuergiEigenvector[7][1]
Out[]=
Sin
π
14
,Sin
π
7
,Sin
3π
14
,Sin
2π
7
,Sin
5π
14
,Sin
3π
7
,Sin
π
2

In[]:=
Activate[%]
Out[]=
Sin
π
14
,Sin
π
7
,Sin
3π
14
,Cos
3π
14
,Cos
π
7
,Cos
π
14
,1
In[]:=
With[{n=7},TraditionalForm[MatrixForm[Table[BuergiEigenvector[n][j],{j,1,n}]]]]
Out[]//TraditionalForm=
sin
π
14
sin
π
7
sin
3π
14
sin
2π
7
sin
5π
14
sin
3π
7
sin
π
2
sin-
3π
14
sin-
3π
7
sin-
9π
14
sin-
6π
7
sin-
15π
14
sin-
9π
7
sin-
3π
2
sin
5π
14
sin
5π
7
sin
15π
14
sin
10π
7
sin
25π
14
sin
15π
7
sin
5π
2
sin-
π
2
sin(-π)
sin-
3π
2
sin(-2π)
sin-
5π
2
sin(-3π)
sin-
7π
2
sin
9π
14
sin
9π
7
sin
27π
14
sin
18π
7
sin
45π
14
sin
27π
7
sin
9π
2
sin-
11π
14
sin-
11π
7
sin-
33π
14
sin-
22π
7
sin-
55π
14
sin-
33π
7
sin-
11π
2
sin
13π
14
sin
13π
7
sin
39π
14
sin
26π
7
sin
65π
14
sin
39π
7
sin
13π
2
In[]:=
TraditionalForm[MatrixForm[Activate[%]]]
Check the formula of eigenvectors numerically:
BuergiMatrix[n] has n different eigenvalues:
Check BuergiEigenvalue numerically:
This is the largest eigenvalue (PerronFrobenius eigenvalue):
And the corresponding eigenvector:
Here is Bürgi’s original example (with four iterations) to show how his algorithm works:
The same table with decimal values:
... and sexagesimal values:
Normalize the sine table and compare to direct computation:
Here’s the same example (with 7 iterations) from Bürgi with additional differences in red:
Black numbers (unnormalized sinus) and red numbers (differences)

Formal Jordan Decomposition of BuergiMatrix

Example. Compute Bürgi’s sin table with power of BuergiJordan:
Compute Bürgi’s sin table with iteration of BuergiMatrix: