|
|
|
|
|
| Description |
| Power series, either finite or unbounded. (zipWith does exactly the
right thing to make it work almost transparently.)
|
|
| Synopsis |
|
| newtype T a = Cons {} | | | fromCoeffs :: [a] -> T a | | | lift0 :: [a] -> T a | | | lift1 :: ([a] -> [a]) -> T a -> T a | | | lift2 :: ([a] -> [a] -> [a]) -> T a -> T a -> T a | | | const :: a -> T a | | | appPrec :: Int | | | truncate :: Int -> T a -> T a | | | eval :: C a => [a] -> a -> a | | | evaluate :: C a => T a -> a -> a | | | evalCoeffVector :: C a v => [v] -> a -> v | | | evaluateCoeffVector :: C a v => T v -> a -> v | | | evalArgVector :: (C a v, C v) => [a] -> v -> v | | | evaluateArgVector :: (C a v, C v) => T a -> v -> v | | | approx :: C a => [a] -> a -> [a] | | | approximate :: C a => T a -> a -> [a] | | | approxCoeffVector :: C a v => [v] -> a -> [v] | | | approximateCoeffVector :: C a v => T v -> a -> [v] | | | approxArgVector :: (C a v, C v) => [a] -> v -> [v] | | | approximateArgVector :: (C a v, C v) => T a -> v -> [v] | | | alternate :: C a => [a] -> [a] | | | holes2 :: C a => [a] -> [a] | | | holes2alternate :: C a => [a] -> [a] | | | sub :: C a => [a] -> [a] -> [a] | | | add :: C a => [a] -> [a] -> [a] | | | negate :: C a => [a] -> [a] | | | scale :: C a => a -> [a] -> [a] | | | mul :: C a => [a] -> [a] -> [a] | | | stripLeadZero :: C a => [a] -> [a] -> ([a], [a]) | | | divide :: C a => [a] -> [a] -> [a] | | | divideStripZero :: (C a, C a) => [a] -> [a] -> [a] | | | divMod :: (C a, C a) => [a] -> [a] -> ([a], [a]) | | | progression :: C a => [a] | | | recipProgression :: C a => [a] | | | differentiate :: C a => [a] -> [a] | | | integrate :: C a => a -> [a] -> [a] | | | sqrt :: C a => (a -> a) -> [a] -> [a] | | | pow :: C a => (a -> a) -> a -> [a] -> [a] | | | exp :: C a => (a -> a) -> [a] -> [a] | | | sinCos :: C a => (a -> (a, a)) -> [a] -> ([a], [a]) | | | sinCosScalar :: C a => a -> (a, a) | | | cos :: C a => (a -> (a, a)) -> [a] -> [a] | | | sin :: C a => (a -> (a, a)) -> [a] -> [a] | | | tan :: C a => (a -> (a, a)) -> [a] -> [a] | | | log :: C a => (a -> a) -> [a] -> [a] | | | derivedLog :: C a => [a] -> [a] | | | atan :: C a => (a -> a) -> [a] -> [a] | | | acos :: C a => (a -> a) -> (a -> a) -> [a] -> [a] | | | asin :: C a => (a -> a) -> (a -> a) -> [a] -> [a] | | | compose :: (C a, C a) => T a -> T a -> T a | | | comp :: C a => [a] -> [a] -> [a] | | | composeTaylor :: C a => (a -> [a]) -> [a] -> [a] | | | inv :: C a => [a] -> (a, [a]) |
|
|
| Documentation |
|
|
| Constructors | | Instances | |
|
|
|
|
|
|
| lift1 :: ([a] -> [a]) -> T a -> T a | Source |
|
|
| lift2 :: ([a] -> [a] -> [a]) -> T a -> T a -> T a | Source |
|
|
|
|
|
|
|
|
|
| Evaluate (truncated) power series.
|
|
|
|
| evalCoeffVector :: C a v => [v] -> a -> v | Source |
|
| Evaluate (truncated) power series.
|
|
| evaluateCoeffVector :: C a v => T v -> a -> v | Source |
|
|
| evalArgVector :: (C a v, C v) => [a] -> v -> v | Source |
|
|
| evaluateArgVector :: (C a v, C v) => T a -> v -> v | Source |
|
|
| approx :: C a => [a] -> a -> [a] | Source |
|
| Evaluate approximations that is evaluate all truncations of the series.
|
|
| approximate :: C a => T a -> a -> [a] | Source |
|
|
| approxCoeffVector :: C a v => [v] -> a -> [v] | Source |
|
| Evaluate approximations that is evaluate all truncations of the series.
|
|
| approximateCoeffVector :: C a v => T v -> a -> [v] | Source |
|
|
| approxArgVector :: (C a v, C v) => [a] -> v -> [v] | Source |
|
| Evaluate approximations that is evaluate all truncations of the series.
|
|
| approximateArgVector :: (C a v, C v) => T a -> v -> [v] | Source |
|
|
| Simple series manipulation
|
|
| alternate :: C a => [a] -> [a] | Source |
|
| For the series of a real function f
compute the series for x -> f (-x)
|
|
|
| For the series of a real function f
compute the series for x -> (f x + f (-x)) / 2
|
|
| holes2alternate :: C a => [a] -> [a] | Source |
|
| For the series of a real function f
compute the real series for x -> (f (i*x) + f (-i*x)) / 2
|
|
| Series arithmetic
|
|
| sub :: C a => [a] -> [a] -> [a] | Source |
|
|
| add :: C a => [a] -> [a] -> [a] | Source |
|
|
|
|
| scale :: C a => a -> [a] -> [a] | Source |
|
|
| mul :: C a => [a] -> [a] -> [a] | Source |
|
|
| stripLeadZero :: C a => [a] -> [a] -> ([a], [a]) | Source |
|
|
| divide :: C a => [a] -> [a] -> [a] | Source |
|
Divide two series where the absolute term of the divisor is non-zero.
That is, power series with leading non-zero terms are the units
in the ring of power series.
Knuth: Seminumerical algorithms
|
|
| divideStripZero :: (C a, C a) => [a] -> [a] -> [a] | Source |
|
| Divide two series also if the divisor has leading zeros.
|
|
| divMod :: (C a, C a) => [a] -> [a] -> ([a], [a]) | Source |
|
|
|
|
| recipProgression :: C a => [a] | Source |
|
|
| differentiate :: C a => [a] -> [a] | Source |
|
|
| integrate :: C a => a -> [a] -> [a] | Source |
|
|
| sqrt :: C a => (a -> a) -> [a] -> [a] | Source |
|
| We need to compute the square root only of the first term.
That is, if the first term is rational,
then all terms of the series are rational.
|
|
| pow :: C a => (a -> a) -> a -> [a] -> [a] | Source |
|
| Input series must start with non-zero term.
|
|
| exp :: C a => (a -> a) -> [a] -> [a] | Source |
|
The first term needs a transcendent computation but the others do not.
That's why we accept a function which computes the first term.
(exp . x)' = (exp . x) * x'
(sin . x)' = (cos . x) * x'
(cos . x)' = - (sin . x) * x'
|
|
| sinCos :: C a => (a -> (a, a)) -> [a] -> ([a], [a]) | Source |
|
|
| sinCosScalar :: C a => a -> (a, a) | Source |
|
|
| cos :: C a => (a -> (a, a)) -> [a] -> [a] | Source |
|
|
| sin :: C a => (a -> (a, a)) -> [a] -> [a] | Source |
|
|
| tan :: C a => (a -> (a, a)) -> [a] -> [a] | Source |
|
|
| log :: C a => (a -> a) -> [a] -> [a] | Source |
|
| Input series must start with non-zero term.
|
|
| derivedLog :: C a => [a] -> [a] | Source |
|
| Computes (log x)', that is x'/x
|
|
| atan :: C a => (a -> a) -> [a] -> [a] | Source |
|
|
| acos :: C a => (a -> a) -> (a -> a) -> [a] -> [a] | Source |
|
|
| asin :: C a => (a -> a) -> (a -> a) -> [a] -> [a] | Source |
|
|
|
| It fulfills
evaluate x . evaluate y == evaluate (compose x y)
|
|
| comp :: C a => [a] -> [a] -> [a] | Source |
|
| Since the inner series must start with a zero,
the first term is omitted in y.
|
|
| composeTaylor :: C a => (a -> [a]) -> [a] -> [a] | Source |
|
| Compose two power series where the outer series
can be developed for any expansion point.
To be more precise:
The outer series must be expanded with respect to the leading term
of the inner series.
|
|
| inv :: C a => [a] -> (a, [a]) | Source |
|
This function returns the series of the function in the form:
(point of the expansion, power series)
This is exceptionally slow and needs cubic run-time.
|
|
| Produced by Haddock version 2.4.2 |