Linear

class otp.linear.LinearProblem

Bases: otp.Problem

A linear, constant coefficient, homogeneous ODE which supports a partitioned right-hand side.

The linear problem is given by

\[ y' = \sum_{i=1}^{p} Λ_i y, \]

where \(p\) is the number of partitions and \(Λ_i ∈ ℂ^{N × N}\) for \(i = 1, …, p\).

This is often used to assess the stability of time integration methods, with the case of \(p = N = 1\) referred to as the Dahlquist test problem.

Notes

Type

ODE

Number of Variables

arbitrary

Stiff

possibly, depending on the eigenvalues of \(\sum_{i=1}^{p} Λ_i\)

Example

>>> problem = otp.linear.presets.Canonical('Lambda', {-1, -2, -3});
>>> problem.RHSPartitions{2}.JacobianMatrix
ans = -2
Constructor Summary
LinearProblem(timeSpan, y0, parameters)

Create a linear problem object.

Parameters:
  • timeSpan (numeric(1, 2)) – The start and final time.

  • y0 (numeric(:, 1)) – The initial conditions.

  • parameters (otp.linear.LinearParameters) – The parameters.

Property Summary
RHSPartitions

A cell array of \(p\) right-hand sides for each partition \(Λ_i y\).

NumPartitions

The number of partitions \(p\).

Parameters

class otp.linear.LinearParameters

Bases: otp.Parameters

Parameters for the linear problem.

Constructor Summary
LinearParameters(varargin)

Create a linear parameters object.

Parameters:

varargin – A variable number of name-value pairs. A name can be any property of this class, and the subsequent value initializes that property.

Property Summary
Lambda

A cell array of matrices for each partition \(Λ_i y\).

Presets

class otp.linear.presets.Canonical

Bases: otp.linear.LinearProblem

A scalar linear preset with \(t ∈ [0, 1]\), \(y_0 = 1\), and \(Λ_1 = -1\).

Constructor Summary
Canonical(varargin)

Create the canonical linear problem object.

Parameters:

varargin

A variable number of name-value pairs. The accepted names are

  • Lambda – Cell array of matrices for each partition \(Λ_i y\).

class otp.linear.presets.Alpha

Bases: otp.linear.LinearProblem

A diagonal linear preset with eigenvalues logarithmically spaced between distances \(r_{min}\) and \(r_{max}\) from the origin at an angle \(α\) measured in degrees clockwise from the negative real axis. It can be used to check for \(A(α)\) stability of a time integration scheme. This preset uses \(t ∈ [0, 1]\), \(y_0 = [1, 1, …, 1]^T\), and

\[\begin{split} Λ_1 &= \diag(-r_1 e^{-i π α / 180}, -r_2 e^{-i π α / 180}, …, -r_N e^{-i π α / 180}), \\ r_j &= r_{min}^{\frac{N - j}{N - 1}} r_{max}^{\frac{j - 1}{N - 1}}. \end{split}\]

Constructor Summary
Alpha(varargin)

Create the alpha linear problem object.

Parameters:

varargin

A variable number of name-value pairs. The accepted names are

  • Alpha – The angle \(α\) measured in degrees clockwise from the negative real axis.

  • N – The number of eigenvalues \(N\).

  • Range – The range \([r_{min}, r_{max}]\) of the eigenvalues.

  • Sparse – If true, the matrix will be in sparse format. Otherwise, it will be dense.