learn-physics-0.4.1: Haskell code for learning physics

Stability experimental Scott N. Walck Trustworthy

Physics.Learn.StateSpace

Description

A `StateSpace` is an affine space where the associated vector space has scalars that are instances of `Fractional`. If p is an instance of `StateSpace`, then the associated vectorspace `Diff` p is intended to represent the space of (time) derivatives of paths in p.

`StateSpace` is very similar to Conal Elliott's `AffineSpace`.

Synopsis

# Documentation

class (VectorSpace (Diff p), Fractional (Scalar (Diff p))) => StateSpace p whereSource

An instance of `StateSpace` is a data type that can serve as the state of some system. Alternatively, a `StateSpace` is a collection of dependent variables for a differential equation. A `StateSpace` has an associated vector space for the (time) derivatives of the state. The associated vector space is a linearized version of the `StateSpace`.

Associated Types

type Diff p Source

Associated vector space

Methods

(.-.) :: p -> p -> Diff pSource

Subtract points

(.+^) :: p -> Diff p -> pSource

Point plus vector

Instances

 StateSpace Double StateSpace Vec StateSpace Position Position is not a vector, but displacement (difference in position) is a vector. StateSpace St StateSpace p => StateSpace [p] (StateSpace p, StateSpace q, ~ * (Time p) (Time q)) => StateSpace (p, q) (StateSpace p, StateSpace q, StateSpace r, ~ * (Time p) (Time q), ~ * (Time q) (Time r)) => StateSpace (p, q, r)

(.-^) :: StateSpace p => p -> Diff p -> pSource

Point minus vector

type Time p = Scalar (Diff p)Source

The scalars of the associated vector space can be thought of as time intervals.

type DifferentialEquation state = state -> Diff stateSource

A differential equation expresses how the dependent variables (state) change with the independent variable (time). A differential equation is specified by giving the (time) derivative of the state as a function of the state. The (time) derivative of a state is an element of the associated vector space.

type InitialValueProblem state = (DifferentialEquation state, state)Source

An initial value problem is a differential equation along with an initial state.

type EvolutionMethod stateSource

Arguments

 = DifferentialEquation state differential equation -> Time state time interval -> state initial state -> state evolved state

An evolution method is a way of approximating the state after advancing a finite interval in the independent variable (time) from a given state.

type SolutionMethod state = InitialValueProblem state -> [state]Source

A (numerical) solution method is a way of converting an initial value problem into a list of states (a solution). The list of states need not be equally spaced in time.

stepSolution :: EvolutionMethod state -> Time state -> SolutionMethod stateSource

Given an evolution method and a time step, return the solution method which applies the evolution method repeatedly with with given time step. The solution method returned will produce an infinite list of states.

eulerMethod :: StateSpace state => EvolutionMethod stateSource

The Euler method is the simplest evolution method. It increments the state by the derivative times the time step.