1定积分的计算
我么可以使用Riemann sum来计算积分:
def integrate(x0, x1, dx=(x1-x0)/1000.0) #也就是求一个函数在x0到x1区间的积分
x = x0
sum = 0
loop do
y = yield(x)
sum += dx * y
x += dx
break if x > x1
end
sum
end
def f(x)
x**2
end
z = integrate(0.0,5.0) {|x| f(x) }
puts z, "\n" # 41.7291875
2三角计算
现有的sin之类的三角函数只能接受一个弧度为参数,我们可以这样处理能让它接受角度和梯度:
module Math
RAD2DEG = 360.0/(2.0*PI) # Radians to degrees
RAD2GRAD = 400.0/(2.0*PI) # Radians to grads
end
def sin_d(theta)
Math.sin(theta/Math::RAD2DEG)
end
def sin_g(theta)
Math.sin(theta/Math::RAD2GRAD)
end
puts sin_d(30)
3 求对数
我们现在求对数经常是基于10为底的,或者是以e为底的,当我们现在要求以任何数为底的对数:
这个的求值,我们使用到了对数的一个变化,比如求以二为底的对数:
def log2(x)
Math.log(x)/Math.log(2)
end
以此类推,我们能够求任意底的对数。
4 求均值,中值和众数
这节没什么意思,都是些概念性的东西
5计算方差和标准差
方差:是各个数据与平均数之差的平方的平均数,即 s^2=1/n[(x1-x_)^2+(x2-x_)^2+...+(xn-x_)^2],标准差就是方差的1/2次方.
程序如下;
data = [2, 3, 2, 2, 3, 4, 5, 5, 4, 3, 4, 1, 2]
def variance(x)
m = mean(x) #这边也就是得到序列的平均值
sum = 0.0
x.each {|v| sum += (v-m)**2 }
sum/x.size
end
def sigma(x)
Math.sqrt(variance(x))
end
puts variance(data) # 1.461538462
puts sigma(data) # 1.20894105
6 得到一个相关系数
主要是相关系数的概念,大家可以自己找找资料
7 得到随机数
使用rand方法,和其他语言中的使用方法一样,得到的是一个伪随机数。
如果你想自己放入一个随机数种子,你可以使用srand方法
8使用memoize缓存函数
假设你正在做一个计算,一个函数会被调用很多次,并且其中的很多次传进去的参数,得到的结果都是一样的,这个时候我们可以使用缓存函数来提升性能:
memoize不是标准库,需要你去下载:
def zeta(x,y,z)
lim = 0.0001
gen = 0
loop do
gen += 1
p,q = x + y/2.0, z + y/2.0
x1, y1, z1 = p*p*1.0, 2*p*q*1.0, q*q*0.9
sum = x1 + y1 + z1
x1 /= sum
y1 /= sum
z1 /= sum
delta = [[x1,x],[y1,y],[z1,z]]
break if delta.all? {|a,b| (a-b).abs < lim }
x,y,z = x1,y1,z1
end
gen
end
puts g1 = zeta(0.8,0.1,0.1)
memoize(:zeta) # 将这个函数缓存在内存里
puts g2 = zeta(0.8,0.1,0.1) #就直接从内存里面读取
memoize(:zeta,"z.cache") # 将这个函数缓存在硬盘上
puts g3 = zeta(0.8,0.1,0.1)
我们还可以指定存储为一个文件,不过这样的话速度更慢一下,放在内存中是最快的.
分享到:
相关推荐
The Ruby Way 第三版(英文版),全书22章,书中包含600多个按主题分类的示例。每个示例都回答了“如何使用Ruby来完成”的问题。 ——Ruby on Rails之父David Heinemeier Hansson倾力推荐!
The Ruby Way(第2版) <br>The Ruby Way assumes that the reader is already familiar with the subject matter. Using many code samples it focuses on "how-to use Ruby" for specific applications, either ...
内含以下4个文档: 1、Addison.Wesley.The.Ruby.Way.2nd.Edition.Oct.2006.chm 2、O'Reilly.Learning.Ruby.May.2007.chm 3、Programming Ruby 2e.pdf 4、ruby中文文档.chm
《The Ruby Way 第二版》...“《The Ruby Way (第2版)中文版》在阐述元编程(metaprogramming)等方面尤其出类拔萃,而元编程是Ruby最引人注目的方面之一。” ——Ruby on Rails之父David Heinemeier Hansson倾力推荐!
the ruby way the ruby way
《The Ruby Way 2nd Edition》是一本深入探讨Ruby编程语言的经典著作,旨在帮助读者全面理解和掌握Ruby的精髓。这本书的第二版在2006年出版,由Addison-Wesley出版,作者通过深入浅出的方式,揭示了Ruby语言的强大...
"11.5 时间日期the ruby way"这个主题深入探讨了Ruby中处理时间日期的最佳实践和常见用法。让我们逐一了解这些知识点。 首先,`Time.now`是Ruby中获取当前时间的标准方法。它返回一个`Time`对象,表示自1970年1月1...
3. **块、proc和lambda**:Ruby中的块、Proc和Lambda是其独特之处,它们提供了强大的函数式编程特性,允许你编写更简洁、更灵活的代码。 4. **方法和元编程**:Ruby允许在运行时动态定义和修改方法,元编程能力使...
《Ruby Way》一书还会详细介绍Ruby的Gem包管理器,Gem是Ruby生态系统的核心部分,提供了大量的库和工具,让开发者能够轻松地安装和使用第三方软件包。此外,书中可能涵盖了Ruby on Rails框架,它是基于Ruby构建Web...
### Addison Wesley《The Ruby Way》第二版(2006年10月) #### 书籍概览 《The Ruby Way》是由Hal Fulton编写的关于Ruby编程语言的经典著作,该书的第二版出版于2006年10月,由Addison Wesley Professional出版社...
《Ruby Programming:向Ruby之父学程序设计(第2版)》是为了让完全没有程序设计经验的读者也能灵活地使用Ruby,因此书中详细地说明了各种知识。从程序所需要的变量、常数、方法、类、控制结构等语法的说明,到类的主要...
计算机的主要功能之一就是处理数据,这不仅包括内部计算,还包括输入输出(I/O)操作,即与外部世界的交互。Ruby作为一种现代的编程语言,为用户提供了一套强大且灵活的方式来处理文件和目录。下面将详细介绍Ruby中...
Ruby Ruby Ruby Ruby Ruby Ruby
《The Ruby Way》第二版是Addison-Wesley出版社在2006年推出的一本深入浅出的Ruby编程语言教程。这本书专为初学者设计,旨在帮助读者快速掌握Ruby语言的基础和高级特性,从而轻松入门Ruby编程。Ruby是一种动态、开放...
Ruby是一种面向对象的、动态类型的编程语言,以其简洁、优雅的语法著称,尤其适合Web开发,其中Rails框架是其最著名的应用之一。API(Application Programming Interface)是软件开发者用来与操作系统、库或服务进行...