用 Ruby 求定积分


galeki posted @ 2008年6月16日 14:23 in  RoR , 2220 阅读

纯属无聊……

曾经以为求积分之类的是个很复杂的过程,对那些可以求出积分值的计算程序佩服不以,昨日脑子不知道为什么忽然想到这个问题,翻了翻书,发现这个问题很简单~ 

用最简单的矩形法,Ruby 代码如下:

  1. def integral (a, b, n =  100 )
  2.     sum =  0.0
  3.     dx =  (b - a )/n. to_f
  4.      n.times  do
  5.         a += dx
  6.         sum = sum +  ( yield a )*dx
  7.      end
  8.     sum
  9. end

n 为精度,Ruby 的 block 真方便,如果要求:

$$\int_0^1 (x^2-x^3) \mathrm{d}x$$

那么就是:

  1. integral ( 01 )  {|x| x** 2 - x** 3 }

如果要求:

$$\int_0^\pi sin(x) \mathrm{d}x$$

那么就是:

  1. integral ( 0Math::PI )  {|x|  Math. sin (x ) }

如果函数很复杂,也可以在外面定义一个 f(x),然后写成 integral(a, b) {|x| f(x)},相当美观~ 

看看结果:

  1. puts integral ( 0Math::PI )  {|x|  Math. sin (x ) }
  2. >>  1.99983550388745

$\int_0^\pi sin(x) \mathrm{d}x$ 的准确值是 2,看来精度还不错~ 


嗯嗯……其实本文的真正意义在于,很久很久之前给 is-Programmer 实现了插入 TeX 公式的功能,这是我第一次用上…… 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值