16 lines
378 B
Haskell
16 lines
378 B
Haskell
import Text.Printf
|
|
|
|
euler :: (Num a, Ord a) => (a -> a -> a) -> a -> a -> a -> a -> [(a,a)]
|
|
euler f y0 a b h =
|
|
(a, y0) :
|
|
if a < b
|
|
then euler f (y0 + (f a y0) * h) (a + h) b h
|
|
else []
|
|
|
|
newtonCooling :: Double -> Double -> Double
|
|
newtonCooling _ t = -0.07 * (t - 20)
|
|
|
|
main = do
|
|
mapM_ (uncurry $ printf "%6.3f %6.3f\n") $ euler newtonCooling 100 0 100 10
|
|
putStrLn "DONE"
|