{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import Prelude ()\n", "import Data.Function.Differentiable\n", "import Data.Manifold\n", "import Math.LinearMap.Category\n", "\n", "import Numeric.Exponent.Monomorphic.Int\n", "import Control.Category.Constrained.Prelude hiding((^))\n", "import Control.Arrow.Constrained\n", ":opt no-lint -- lint gives bogus warnings with constrained-categories" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "From [dynamic-plot](http://hackage.haskell.org/package/dynamic-plot):" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import Graphics.Dynamic.Plot.R2" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [], "source": [ "strictFunPlot :: RWDiffable ℝ ℝ ℝ -> IO ()\n", "strictFunPlot f = do\n", " let (_, [pts]) = discretisePathSegs 8000 (const $ spanNorm [800], const $ spanNorm [100])\n", " ( alg (\\x -> -2 ?< x ?< 2 ?-> (f $~ x)) :: RWDiffable ℝ ℝ ℝ )\n", " print $ length pts\n", " plotWindow [lineSegPlot pts]\n", " return ()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "92\n", "348\n", "843\n", "1403\n", "1663" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "forM_ [1..5] $ \\q -> strictFunPlot $ alg (\\x -> sin (exp (fromInteger q * x)))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Haskell", "language": "haskell", "name": "haskell" }, "language_info": { "codemirror_mode": "ihaskell", "file_extension": ".hs", "name": "haskell", "version": "7.10.2" } }, "nbformat": 4, "nbformat_minor": 0 }