ONLY DO WHAT ONLY YOU CAN DO

こけたら立ちなはれ 立ったら歩きなはれ

Haskell

Haskell で連立一次方程式を解く(ガウスの消去法)

連立一次方程式 が与えられた場合, まず(1)式を9で割って(1)'とする. (2)式から(1)'式に2を掛けたものを引くとの項が消える. (3)式に(1)'式を足すとの項が消える. (4)式から(1)'式を引くとの項が消える.同様にして, 2番目の式を利用して, 3番目以降の式のyを…

Haskell で連立一次方程式を解く(ヤコビの反復法)

例として を考える. この方程式を上から順に対角線上の変数について解くと となる. に適当な値を入れて右辺を計算し、 得られた値を新たなとして、計算を繰り返す. 漸化式で書くと import Text.Printf import Debug.Trace import Control.Monad n = 4::Int d…

Haskell で非線形方程式を解く (2分法)

非線形方程式の解法(2分法)を利用して2の平方根を求める 1. まず, 条件 を満たす点 を考えると, 関数 の解は, 区間 の中に存在する. 2. 次に, 区間 の中点 を考えると, であれば, 解は区間 の中に存在し, 同様に, であれば, 区間 の中に存在する. 3. この…

Haskellで常微分方程式(オイラー法)

初速 250 km/h で, 45°の角度で打ったボールの軌跡をオイラー法で計算する (空気抵抗係数を 0.01 で計算) 重力による鉛直方向の減速分は, 重力加速度を g, 時間を t とすると, 空気抵抗による水平方向の減速分は,速度を v, 速度の水平方向成分を vx, 空気抵…

Haskell で 積分(ロンバーグ積分)して π を求める

πの求め方 積分(ロンバーグ積分) まず, T1,1 から Tn,1 を, 台形則を使って求める. 次に, T2,2 から Tn,n まで, 以下の計算を行う. import Text.Printf import Control.Monad f::Double->Double f x = 4 / (1 + (x * x)) -- Richardsonの補外法 rich_sub n […

Haskell で 積分(Simpson則)して π を求める

πの求め方 積分(Simpson則) import Text.Printf import Control.Monad f::Double->Double f x = 4 / (1 + (x * x)) main = do forM_ ([1..5::Integer]) $ \j -> do let n = 2 ^ j let a = 0.0 let b = 1.0 let h = (b - a) / (fromIntegral n) -- シンプソン…

Haskellで関数の近似(ラグランジュ補間)

をラグランジュ補間で近似するn+1個の点 (x0, y0), (x1, y1) … (xn, yn) が与えられているとき, これらすべての点を通る n次式は次のように表すことができる. この式を使って, 与えられた点以外の点の値を求める. import Text.Printf import Control.Monad -…

Haskell で 積分(中点則)して π を求める

πの求め方 積分(中点則) f::Double->Double f x = 4 / (1 + (x * x)) import Text.Printf import Control.Monad forM_ ([1..10::Integer]) $ \j -> do let n = 2 ^ j let a = 0.0 let b = 1.0 let h = (b - a) / (fromIntegral n) -- 中点則で積分 let a2 = …

さまざまな言語で四則演算と数値の出力

Scala object Scala0101 { def main(args:Array[String]) { println(3 + 5) println(3 - 5) println(3 * 5) println(Math.pow(3, 5)) println(5 / 3) println(5.0 / 3) println(5 / 3.0) println(5 % 3) printf("%d\n", 3 * 5) print(3 * 5 + "\n") println(…

Haskell で 積分(台形則)して π を求める

本日発売! さまざまな言語で数値計算 第2巻 数値積分作者: 山岡直樹出版社/メーカー: ForNext発売日: 2013/12/01メディア: Kindle版この商品を含むブログ (5件) を見る πの求め方 積分(台形則) f::Double->Double f x = 4 / (1 + (x * x)) -- 台形則 trape…

Haskell で 連分数展開を使って π を求める

πの求め方 こう書いてもおk import Text.Printf import Control.Monad -- 自作の逆正接関数 myAtan::Double->Double->Int->Double->Double myAtan x x2 n t = let m = (fromIntegral (n `div` 2)) denom = (m * m * x2) / ((fromIntegral n) + t) num = n -…

Haskell で FizzBuzz

Compile and Execute Programs Online fizzbuzz :: Int -> String fizzbuzz x | x `mod` 15 == 0 = "FizzBuzz" | x `mod` 3 == 0 = "Fizz" | x `mod` 5 == 0 = "Buzz" | otherwise = show x main = do putStr $ unlines $ map fizzbuzz [1..100] Compiling t…