1定積分的計算
我麼可以使用riemann sum來計算積分:
[code]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
endsum
enddef f(x)
x**2
endz = integrate(0.0,5.0)
puts z, "\n" # 41.7291875[/code]
2三角計算
現有的sin之類的三角函式只能接受乙個弧度為引數,我們可以這樣處理能讓它接受角度和梯度:
[code]module math
rad2deg = 360.0/(2.0*pi) # radians to degrees
rad2grad = 400.0/(2.0*pi) # radians to grads
enddef sin_d(theta)
math.sin(theta/math::rad2deg)
enddef sin_g(theta)
math.sin(theta/math::rad2grad)
endputs sin_d(30)[/code]
3 求對數
我們現在求對數經常是基於10為底的,或者是以e為底的,當我們現在要求以任何數為底的對數:
這個的求值,我們使用到了對數的乙個變化,比如求以二為底的對數:
[code]def log2(x)
math.log(x)/math.log(2)
end[/code]
以此類推,我們能夠求任意底的對數。
4 求均值,中值和眾數
這節沒什麼意思,都是些概念性的東西
5計算方差和標準差
方差:是各個資料與平均數之差的平方的平均數,即 s^2=1/n[(x1-x_)^2+(x2-x_)^2+...+(xn-x_)^2],標準差就是方差的1/2次方.
程式如下;
[code]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
sum/x.size
enddef sigma(x)
math.sqrt(variance(x))
endputs variance(data) # 1.461538462
puts sigma(data) # 1.20894105[/code]
6 得到乙個相關係數
7 得到隨機數
使用rand方法,和其他語言中的使用方法一樣,得到的是乙個偽隨機數。
如果你想自己放入乙個隨機數種子,你可以使用srand方法
8使用memoize快取函式
假設你正在做乙個計算,乙個函式會被呼叫很多次,並且其中的很多次傳進去的引數,得到的結果都是一樣的,這個時候我們可以使用快取函式來提公升效能:
[code]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?
x,y,z = x1,y1,z1
endgen
endputs 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)[/code]
我們還可以指定儲存為乙個檔案,不過這樣的話速度更慢一下,放在記憶體中是最快的.
三 shell 變數的數值計算
三 read 運算操作符與運算命令 意義舉例 用於整數的常用運算子,效率很高 i 6 1 i 6 1 let類似 效率沒 高 let i 6 1 expr 可用於整數運算,還有許多額外功能 i expr 6 1 bclinux下的計算器,適合整數和小數運算 echo 1.0 6.0 用於整數運算 i...
MATLAB學習筆記(三) 數值計算
主要內容包括 矩陣的多種運算方法matlab實現 計算矩陣的秩 特徵值及其對應的特徵向量 利用矩陣操作求解線性方程組 數值微積分 1 矩陣的結構變換 轉置 a a.非共軛轉置 對稱變換 利用指令flipud 和fliplr a flipud b 上下方向翻轉矩陣。如果是列向量,返回相反順序的向量 如...
Matlab學習筆記(三) 數值計算
3.1.1 行列式 逆和秩 3.1.2 特徵值和特徵向量的求取 3.2.1 基本分析函式 sum函式 用於求矩陣列矩陣元素或向量的和 b sum a 若a為向量,則返回所有元素的和 如a為矩陣,則返回其他各列所有元素和 b sum a,dim 返回a中第dim維的所有元素和 cumsum函式 用於求...