summaryrefslogtreecommitdiff
path: root/packages/sundials/src/Main.hs
diff options
context:
space:
mode:
Diffstat (limited to 'packages/sundials/src/Main.hs')
-rw-r--r--packages/sundials/src/Main.hs32
1 files changed, 32 insertions, 0 deletions
diff --git a/packages/sundials/src/Main.hs b/packages/sundials/src/Main.hs
index 5e51372..895e610 100644
--- a/packages/sundials/src/Main.hs
+++ b/packages/sundials/src/Main.hs
@@ -11,6 +11,9 @@ import Diagrams.Backend.Rasterific
11import Control.Lens 11import Control.Lens
12import Data.List (zip4) 12import Data.List (zip4)
13 13
14import Text.PrettyPrint.HughesPJClass
15import Data.List (intercalate)
16
14 17
15brusselator _t x = [ a - (w + 1) * u + v * u^2 18brusselator _t x = [ a - (w + 1) * u + v * u^2
16 , w * u - v * u^2 19 , w * u - v * u^2
@@ -43,8 +46,37 @@ kSaxis :: [(Double, Double)] -> P.Axis B D.V2 Double
43kSaxis xs = P.r2Axis &~ do 46kSaxis xs = P.r2Axis &~ do
44 P.linePlot' xs 47 P.linePlot' xs
45 48
49butcherTableauTex :: (Show a, Element a) => Matrix a -> String
50butcherTableauTex m = render $
51 vcat [ text ("\n\\begin{array}{c|" ++ (concat $ replicate n "c") ++ "}")
52 , us
53 , text "\\end{array}"
54 ]
55 where
56 n = rows m
57 rs = toLists m
58 ss = map (\r -> intercalate " & " $ map show r) rs
59 ts = zipWith (\n r -> "c_" ++ show n ++ " & " ++ r) [1..n] ss
60 us = vcat $ map (\r -> text r <+> text "\\\\") ts
61
46main :: IO () 62main :: IO ()
47main = do 63main = do
64 -- $$
65 -- \begin{array}{c|cccc}
66 -- c_1 & a_{11} & a_{12}& \dots & a_{1s}\\
67 -- c_2 & a_{21} & a_{22}& \dots & a_{2s}\\
68 -- \vdots & \vdots & \vdots& \ddots& \vdots\\
69 -- c_s & a_{s1} & a_{s2}& \dots & a_{ss} \\
70 -- \hline
71 -- & b_1 & b_2 & \dots & b_s\\
72 -- & b^*_1 & b^*_2 & \dots & b^*_s\\
73 -- \end{array}
74 -- $$
75
76 let res = btGet
77 putStrLn $ show res
78 putStrLn $ butcherTableauTex res
79
48 let res = odeSolve brusselator [1.2, 3.1, 3.0] (fromList [0.0, 0.1 .. 10.0]) 80 let res = odeSolve brusselator [1.2, 3.1, 3.0] (fromList [0.0, 0.1 .. 10.0])
49 putStrLn $ show res 81 putStrLn $ show res
50 renderRasterific "diagrams/brusselator.png" 82 renderRasterific "diagrams/brusselator.png"