Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@leftaroundabout
Last active November 19, 2017 13:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save leftaroundabout/ce97d6e4023d206be638415b89694ca1 to your computer and use it in GitHub Desktop.
Save leftaroundabout/ce97d6e4023d206be638415b89694ca1 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import Graphics.Dynamic.Plot.R2\n",
"import Data.Default.Class\n",
"import Data.VectorSpace\n",
"import Math.Polynomial\n",
"import Math.Polynomial.Legendre\n",
"\n",
"type ℝ = Double"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"sawtooth :: ℝ -> ℝ\n",
"sawtooth x = x - fromIntegral (round x)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"l2 :: (ℝ->ℝ) -> (ℝ->ℝ) -> ℝ\n",
"l2 f g = (f (-1)*g (-1) / 2\n",
" + sum [ f x*g x\n",
" | x <- take (n-1) [2/n-1, 4/n-1 ..] ]\n",
" + f 1*g 1 / 2\n",
" ) / n\n",
" where n :: Num n=>n\n",
" n = 256"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[1.0,1.000030517578125,1.0001525864936411,1.0004272254496698,1.0009153918434208,1.0016778812350209]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"[l2 (evalLegendre i) (evalLegendre i) * (2*fromIntegral i+1) | i<-[0..5]]"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"coeffs :: [ℝ]\n",
"coeffs = [l2 sawtooth (evalLegendre i) * (2*fromIntegral i+1) | i<-[0..] ]"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"approxSaw :: Poly ℝ\n",
"approxSaw = (/10) . fromIntegral . round . (*10)\n",
" <$> sumV [legendre i ^* c\n",
" | (i,c) <- zip [0..20] coeffs ]"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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"
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plotPrerender def [ continFnPlot sawtooth, continFnPlot $ evalPoly approxSaw\n",
" , forceXRange (-1,1), forceYRange (-3/4,3/4) ]"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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"
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plotPrerender def [ continFnPlot sawtooth, continFnPlot $ evalPoly approxSaw\n",
" , forceXRange (-0.7,1.3), forceYRange (-1,0.4) ]"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"\\[0+2.20000{x}^{1}+-81.70000{x}^{3}+1576.60000{x}^{5}+-12865.00000{x}^{7}+53760.40000{x}^{9}+-128928.60000{x}^{11}+185521.70000{x}^{13}+-158630.00000{x}^{15}+74398.90000{x}^{17}+-14754.50000{x}^{19}\\]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"{-# LANGUAGE OverloadedStrings #-}\n",
"import Text.LaTeX\n",
"import Text.LaTeX.Packages.AMSMath\n",
"mathDisplay (sum [ fromRational (fromInteger (round $ c*10)/10) * \"x\"**fromIntegral i\n",
" | (i,c) <- zip [0..] $ polyCoeffs LE approxSaw\n",
" , abs c > 0.1 ]\n",
" :: LaTeX)"
]
},
{
"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": "8.2.1"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment