Portability | portable |
---|---|

Stability | experimental |

Maintainer | Aleksey Khudyakov <alexey.skladnoy@gmail.com> |

Safe Haskell | None |

Numerical solution of ordinary equations.

- data Root a
- = NotBracketed
- | SearchFailed
- | Root a

- fromRoot :: a -> Root a -> a
- solveBisection :: Double -> (Double, Double) -> (Double -> Double) -> Root Double
- solveRidders :: Double -> (Double, Double) -> (Double -> Double) -> Root Double
- solveNewton :: Double -> (Double, Double) -> (Double -> Double) -> (Double -> Double) -> Root Double

# Data type

The result of searching for a root of a mathematical function.

NotBracketed | The function does not have opposite signs when evaluated at the lower and upper bounds of the search. |

SearchFailed | The search failed to converge to within the given error tolerance after the given number of iterations. |

Root a | A root was successfully found. |

:: a | Default value. |

-> Root a | Result of search for a root. |

-> a |

Returns either the result of a search for a root, or the default value if the search failed.

# Equations solversv

:: Double | Required absolute precision |

-> (Double, Double) | Range |

-> (Double -> Double) | Equation |

-> Root Double |

Use bisection method to compute root of function.

The function must have opposite signs when evaluated at the lower and upper bounds of the search (i.e. the root must be bracketed).

:: Double | Absolute error tolerance. |

-> (Double, Double) | Lower and upper bounds for the search. |

-> (Double -> Double) | Function to find the roots of. |

-> Root Double |

Use the method of Ridders to compute a root of a function.

The function must have opposite signs when evaluated at the lower and upper bounds of the search (i.e. the root must be bracketed).

:: Double | Absolute error tolerance |

-> (Double, Double) | Lower and upper bounds for root |

-> (Double -> Double) | Function |

-> (Double -> Double) | Function's derivative |

-> Root Double |

Solve equation using Newton-Raphson method. Root must be bracketed. If Newton's step jumps outside of bracket or do not converge sufficiently fast function reverts to bisection.

# References

- Ridders, C.F.J. (1979) A new algorithm for computing a single
root of a real continuous function.
*IEEE Transactions on Circuits and Systems*26:979–980.