goal-geometry-0.1: Scientific computing on geometric objects

Safe HaskellNone
LanguageHaskell2010

Goal.Geometry.Differential

Contents

Description

This module provides tools for working with differential and Riemannian geometry.

Synopsis

Tangent Spaces

Types

newtype Tangent c m Source

Tangent spaces on Manifolds are the basis for differential geometry. Tangent spaces are defined at each point on a differentiable Manifold.

Constructors

Tangent 

Fields

removeTangent :: c :#: m
 

Instances

newtype Bundle c m Source

A Tangent Bundle is the original Manifold combined with all its Tangent spaces.

Constructors

Bundle 

Fields

removeBundle :: m
 

Instances

Eq m => Eq (Bundle c m) Source 
Read m => Read (Bundle c m) Source 
Show m => Show (Bundle c m) Source 
Manifold m => Manifold (Bundle c m) Source 

data Partials Source

The Partials coordinate system is defined as the partial derivatives of the coordinate functions at a particular point.

Constructors

Partials 

data Differentials Source

The Differentials coordinate system represents the set of linear functionals on the Tangent space.

Constructors

Differentials 

Functions

gradientStep :: Manifold m => Double -> (Partials :#: Tangent c m) -> c :#: m Source

gradientStep follows takes a gradient in a particular tangent space and transforms the point underlying the given tangent space by shifting it slightly in the direction of the gradient.

projectTangent :: (d :#: Tangent c m) -> c :#: m Source

Returns the underlying Point from a Tangent vector.

tangentToBundle :: Manifold m => (c :#: Tangent d m) -> c :#: Bundle d m Source

Converts a Tangent vector into a Point on a Tangent Bundle.

bundleToTangent :: Manifold m => (c :#: Bundle d m) -> c :#: Tangent d m Source

Converts a Point on a Tangent Bundle into a Tangent vector.

Riemannian Manifolds

class Manifold m => Riemannian c m where Source

Riemannian Manifolds are differentiable Manifolds where associated with each point in the Manifold is a Tangent space with a smoothly varying inner product. flat and sharp correspond to lowering and raising the indices via the musical isomorphism determined by the metric tensor.

A Riemannian Manifold should should satisfy the law

flat $ sharp p = p

Minimal complete definition

metric

Gradient Pursuit

gradientAscent Source

Arguments

:: (Riemannian c m, Manifold m) 
=> Double

Step size

-> ((c :#: m) -> Differentials :#: Tangent c m)

Gradient calculator

-> (c :#: m)

The initial point

-> [c :#: m]

The gradient ascent

vanillaGradientAscent Source

Arguments

:: Manifold m 
=> Double

Step size

-> ((c :#: m) -> Differentials :#: Tangent c m)

Gradient calculator

-> (c :#: m)

The initial point

-> [c :#: m]

The gradient ascent

gradientDescent Source

Arguments

:: (Riemannian c m, Manifold m) 
=> Double

Step size

-> ((c :#: m) -> Differentials :#: Tangent c m)

Gradient calculator

-> (c :#: m)

The initial point

-> [c :#: m]

The gradient ascent

vanillaGradientDescent Source

Arguments

:: Manifold m 
=> Double

Step size

-> ((c :#: m) -> Differentials :#: Tangent c m)

Gradient calculator

-> (c :#: m)

The initial point

-> [c :#: m]

The gradient ascent