Drkcore

18 04 2010 Scala Tweet

シンプソン積分をScalaで

Pythonで書いたシンプソン積分をScalaでも書いてみたのだけどfor yieldで総和を求めるやり方が分からなかったので(RandomAccessSeq.Projectionとかいうのが出た)結局var変数で。

def simpson(f: Double => Double, a: Double, b: Double, n: Int): Double = {
  val h = (b - a)/n
  var sum = 0.0
  for (i <- 0 to n-1) {
    sum = sum + f(a+i*h) + 4.0 * f(a+i*h+h/2) + f(a+i*h+h)
  }
  sum * h / 6
}

def func(x: Double): Double = {
  1.0 / (1 + Math.pow(x,2))
}

実行

scala> simpson(func, 0, 1, 1000)
res24: Double = 0.7853981633974496

Int,Double,Floatとかの型の使い方もいまいちわかってないな。

About

  • もう5年目(wishlistありマス♡)
  • 最近はPythonとDeepLearning
  • 日本酒自粛中
  • ドラムンベースからミニマルまで
  • ポケモンGOゆるめ

Tag

Python Deep Learning javascript chemoinformatics Emacs sake and more...

Ad

© kzfm 2003-2021