Product integral of a matrix function
Consider a matrix function $A:[a,b]\to\mathbb{R}^{n\times n}$ with entries $\{a_{ij}\}_{i,j=1}^n$. For every tagged partition $$D:\; a=t_0\leq\xi_1\leq t_1\leq\xi_2\leq\cdots\leq t_{m-1}\leq\xi_m\leq t_m=b$$ of interval $[a,b]$ with division points $t_i$ and tags $\xi_i$ we denote $$\Delta t_i=t_i-t_{i-1}, \quad i=1,\ldots,m,$$ $$\nu(D)=\max_{1\leq i\leq m} \Delta t_i.$$
Understanding the Setup & Analogy to Riemann Sums
The Riemann Analogy: To find the ordinary Riemann integral, you partition the interval, evaluate the function at a tag $\xi_i$, multiply by $\Delta t_i$, and sum them up ($\sum f(\xi_i)\Delta t_i$). Here, we are doing something very similar, but instead of adding the changes, we are multiplying sequential factors of the form $(I + A(\xi_i)\Delta t_i)$.
| Concept | Standard Riemann Integral | Product Integral |
|---|---|---|
| Operation | Addition ($+$) | Multiplication ($\times$) |
| Element Contribution | $f(\xi_i)\Delta t_i$ (additive change) | $I + A(\xi_i)\Delta t_i$ (incremental linear transformation) |
| Identity Element | $0$ (zero leaves sums unchanged) | $I$ (identity matrix leaves shapes unchanged) |
Visualizing $A(\xi_i)$ Application: What does it mean to plug a single tag $\xi_i$ into the matrix function $A$? The function $A(t)$ is simply a grid of $n \times n$ ordinary scalar functions $a_{ij}(t)$. When we evaluate $A(\xi_i)$, we are just plugging the number $\xi_i$ into every single one of those individual functions simultaneously: $$A(\xi_i) = \begin{pmatrix} a_{11}(\xi_i) & \cdots & a_{1n}(\xi_i) \\ \vdots & \ddots & \vdots \\ a_{n1}(\xi_i) & \cdots & a_{nn}(\xi_i) \end{pmatrix}$$
Inputs and Outputs:
- Input: A matrix function $A(t)$ defined over an interval $[a,b]$, where each element of the matrix is a continuous (or integrable) real-valued function.
- Output: A single, static $n \times n$ matrix of constant numbers. Once the limit is taken, all dependencies on $t$ or the partition points vanish.
What is $\xi_i$ (xi)?
The symbol $\xi_i$ represents a chosen time sample (a "tag") located within the $i$-th subinterval. In our interactive tool below, the total time interval $[0, 1]$ is sliced into $m$ identical segments of length $\Delta t = \frac{1}{m}$. To evaluate the deforming forces consistently, $\xi_i$ is chosen exactly at the **midpoint** of each segment:
$$\xi_i = t_{i-1} + \frac{\Delta t}{2} = \left(i - \frac{1}{2}\right)\Delta t$$
The tool samples the matrix function $A(\xi_i)$ at this explicit timestamp to manufacture the constant linear transformation matrix for that specific step.
We also put
$$P(A,D)=\prod_{i=m}^1(I+A(\xi_i)\Delta t_i)=(I+A(\xi_m)\Delta t_m)\cdots (I+A(\xi_1)\Delta t_1),$$ $$P^*(A,D)=\prod_{i=1}^m(I+A(\xi_i)\Delta t_i)=(I+A(\xi_1)\Delta t_1)\cdots (I+A(\xi_m)\Delta t_m).$$Why do we have two different products, $P$ and $P^*$?
The Order of Matrix Multiplication Matters: Unlike ordinary numbers, matrices do not commute ($M_1 \cdot M_2 \neq M_2 \cdot M_1$). Because of this, the order in which we compound our linear transformations completely alters the intermediate states and final geometry.
- In $P(A,D)$ (Left Integral), new steps are multiplied on the left side of the chain. Geometrically, this means the newest transform force is applied on top of the already deformed coordinate space.
- In $P^*(A,D)$ (Right Integral), new steps are multiplied on the right side of the chain. This means the newest transform force is nested *underneath* prior steps, warping the original canvas space before earlier historical modifications take place.
The Order of Matrix Multiplication Matters (Historical Context): Volterra's historical notation for this ($\prod_{i=m}^1$ vs $\prod_{i=1}^m$) might look a bit unusual at first glance, but it is a necessary workaround to explicitly dictate whether we are multiplying new terms from the left or from the right.
Volterra now defines the left integral of $A$ as the matrix $$\int_a^b\{a_{ij}\}=\lim_{\nu(D)\to0}P(A,D)$$ and the right integral as $$\{a_{ij}\}\int_a^b=\lim_{\nu(D)\to0}P^*(A,D)$$
If $M(D)$ is a matrix which is dependent on the choice of a tagged partition $D$ of interval $[a,b]$, then the equality $$\lim_{\nu(D)\to 0}M(D)=M$$ means that for every $\varepsilon>0$ there exists $\delta>0$ such that $|M(D)_{ij}-M_{ij}|<\varepsilon$ for every tagged partition $D$ of interval $[a,b]$ satisfying $\nu(D)<\delta$ and for $i,j=1,\ldots,n$.
Understanding the Nature of the Limit $\lim_{\nu(D)\to 0}$
Is the final matrix dependent on the partition? No. The matrix $M(D)$ (which represents our partial product $P(A,D)$ or $P^*(A,D)$) absolutely does depend on the specific choice of the partition $D$ and its tags. However, the final limit matrix $M$ is a constant matrix. Once the limit is successfully evaluated, the partition details completely disappear.
Limiting over Partitions, not a Variable: Notice that we are not taking a standard limit like $x \to 0$ where a single variable gets smaller. Instead, we are taking the limit over all possible tagged partitions whose mesh size $\nu(D)$ (the width of the widest subinterval) approaches zero. This means no matter how strangely you chop up the interval $[a,b]$ or where you pick your tags $\xi_i$, as long as the maximum gap $\nu(D) < \delta$, every single entry of the matrix $M(D)_{ij}$ must be incredibly close to the entry $M_{ij}$ of the final matrix.
We note that in the case when the upper limit of integration coincides with the lower limit, then $$\prod_a^a (I+A(t)\,\mathrm{d} t)=(I+A(t)\,\mathrm{d} t)\prod_a^a=I.$$
Why does collapsing the limits equal the Identity Matrix $I$?
The Multiplicative Neutral Element: In standard calculus, if you integrate an ordinary function from $a$ to $a$, the result is $0$, because $0$ is the neutral element for addition (you are adding rectangles with zero width).
Because the product integral is based on multiplication, its baseline state when no integration takes place must be the neutral element of matrix multiplication. That is the Identity Matrix ($I$). Multiplying any matrix by $I$ leaves it unchanged, just like multiplying a number by $1$.
Geometric Interpretation & Presets Explained
Geometrical Construction Concept: The matrix $A(t)$ represents forces that stretch or rotate the square at each point in time. When you divide the interval $[a,b]$ into segments $\Delta t_i$, at each step you take the currently deformed square and apply the linear transformation $(I + A(\xi_i)\Delta t_i)$ to it. A classical integral merely "sums up" these deformation forces side-by-side. The product integral applies them sequentially, one after another — each subsequent deformation builds directly upon the previous one (which is precisely why the multiplication order of $P$ vs $P^*$ matters).
What values does $t$ take in $A(t)$?
The integration domain for this tool maps over the normalized boundary $[a,b] = [0,1]$. Therefore, the variable $t$ runs continuously from $0.0$ to $1.0$. When computing discrete factors, the tool extracts $t$ values corresponding exactly to the midpoints $\xi_i$ of each division. For instance, if $m=3$, the tool sets $\Delta t = \frac{1}{3} \approx 0.33$, meaning $t$ is successively evaluated at:
$$\xi_1 = 0.17, \quad \xi_2 = 0.50, \quad \xi_3 = 0.83$$
How is $\xi_i$ calculated?
For any given step index $i$ (where $i = 1, 2, \dots, m$), the midpoint location $\xi_i$ within that specific interval segment is explicitly derived using the step size $\Delta t = \frac{b - a}{m} = \frac{1}{m}$ through the following expression:
$$\xi_i = (i - 1)\Delta t + \frac{\Delta t}{2} = \left(i - \frac{1}{2}\right)\Delta t$$
This ensures that the matrix function handles unbiased, balanced time samples within each discrete window.
High-Contrast Shear & Scale Preset: To make the divergence between Left and Right integration methods visually arresting, this function combines an X-axis shear force that dominates early in time ($t \to 0$) with a Y-axis expansion force that grows late in time ($t \to 1$). $$A(t) = \begin{pmatrix} 0 & 2.2 \cdot (1-t) \\ 0 & 1.8 \cdot t \end{pmatrix}$$ Because these distinct physical forces occur at different times, changing the evaluation order changes whether you stretch an already sheared object, or shear an already stretched object!
Pure Rotation Preset: This sets $A(t)$ to a constant skew-symmetric matrix representing continuous counter-clockwise rotation forces. Because $A(t)$ is static across the entire timeline, all generated matrix factors are identical rotations, which commute perfectly ($M_i M_j = M_j M_i$). Here, Left and Right integrals yield identical tracks.