galeki posted @ 2008年6月16日 14:23 in
RoR , 2220 阅读
纯属无聊……
曾经以为求积分之类的是个很复杂的过程,对那些可以求出积分值的计算程序佩服不以,昨日脑子不知道为什么忽然想到这个问题,翻了翻书,发现这个问题很简单~
用最简单的矩形法,Ruby 代码如下:
-
def integral (a, b, n = 100 )
-
sum = 0.0
-
dx = (b - a )/n. to_f
-
n.times do
-
a += dx
-
sum = sum + ( yield a )*dx
-
end
-
sum
-
end
n 为精度,Ruby 的 block 真方便,如果要求:
那么就是:
-
integral ( 0, 1 ) {|x| x** 2 - x** 3 }
如果要求:
那么就是:
-
integral ( 0, Math::PI ) {|x| Math. sin (x ) }
如果函数很复杂,也可以在外面定义一个 f(x),然后写成 integral(a, b) {|x| f(x)},相当美观~
看看结果:
-
puts integral ( 0, Math::PI ) {|x| Math. sin (x ) }
-
>> 1.99983550388745
的准确值是 2,看来精度还不错~
嗯嗯……其实本文的真正意义在于,很久很久之前给 is-Programmer 实现了插入 TeX 公式的功能,这是我第一次用上……