Python 和 Ruby 中的數學 / Ruby 中的實數
自從數字出現以來,數字在某種程度上比分數更具體:看到 給人一種感覺,似乎有兩個數字而不是一個數字,而 1.2 乍一看就是一個數字。
當一個數具有有限個數字時,它就是十進位制數。那麼,不是十進位制數的實數將具有無限的十進位制展開式。可以故意構造這樣的數字,例如 劉維爾數。
在 Ruby 中,某些十進位制數仍然具有無限的表示:這種明顯的悖論是由於 Ruby 中數字的內部表示是二進位制的,即使像 1.2 這樣簡單的數字也具有無限的二進位制展開式。
分數的特徵是其(有限或無限)展開式最終是週期性的。例如
puts(1.0/3)
puts(1.0/9.0)
puts(1/11.0)
puts(1.0/7)
第一個被認為不是分數的數字是平方根和著名的 黃金分割。以下是其中一些
puts(2**0.5)
puts(Math.sqrt(2))
puts((1+5**0.5)/2)
puts((Math.sqrt(5)+1)/2)
兩個著名的 超越數 是 e 和 π ; 它們是 Math 物件的屬性
puts(Math::E)
puts(Math::PI)
香檳常數 可以從字串物件構建
c='0.'
(1..40).collect { |n| c=c+n.to_s }
puts(c.to_f)
puts(c.to_r)
首先,c 是一個字串,Ruby 知道這一點,因為它寫在引號之間。它已經表示了常數的十進位制展開式,該展開式以零開頭,後面跟著小數點。然後,物件 (1..40)(一個整數列表)在執行時建立,並呼叫其 collect 方法,帶有一個小的 Ruby 塊,該塊只有一個名為 n 的變數,只有一個指令,要求將 n 的字串表示形式新增到 c 中。由於 c 是一個字串,+ 表示字串加法,即 連線。最後,c 被轉換為浮點數或分數。
四則運算由經典的 +、-、* 和 / 表示。只要運算元之一包含小數點,它就會被識別為實數,並應用浮點數運算。歐幾里得除法也可以使用,這允許 Ruby 計算角度的主值(以弧度為單位)
puts(100%Math::PI)
減號也可以是單目運算子,在這種情況下,它表示以下數字的否定。要將數字 h 加到另一個數字 x 上,可以寫 x=x+h,也可以寫 x+=h,後者更短。
要獲得實數的整數近似值,可以使用 floor、ceil 和 to_i。要獲得數字 x 的絕對值,使用 x.abs。它的平方根可以使用以下任何一種方法獲得
r=2**0.5
puts(r)
r=Math.sqrt(2)
puts(r)
要計算自然對數、十進位制對數和雙曲圓函式的自變數,寫
puts(Math.log(0.5))
puts(Math.log10(0.5))
puts(Math.acosh(0.5))
puts(Math.asinh(0.5))
puts(Math.atanh(0.5))
以下指令碼計算並顯示 2 的指數和雙曲圓函式
puts(Math.exp(2))
puts(Math.cosh(2))
puts(Math.sinh(2))
puts(Math.tanh(2))
要獲取以弧度為單位測量 1 弧度的角度的餘弦、正弦和正切
puts(Math.cos(1))
puts(Math.sin(1))
puts(Math.tan(1))
要從上述數字之一獲取角度,只需在函式名稱之前新增一個額外的 a 即可
puts(Math.acos(0.5))
puts(Math.asin(0.5))
puts(Math.atan(0.5))
要從直角三角形的邊知道一個角,可以使用 Math.atan(y/x) 或 Math.atan2(x,y)。要知道第三條邊,可以使用 Math.hypot(x,y)。例如,如果知道直角三角形的兩條邊分別為 5' 和 12',可以使用以下指令碼知道角度和斜邊
cdr=180/Math::PI
a=12
b=5
puts(Math.atan2(a,b)*cdr)
puts(Math.atan2(b,a)*cdr)
puts(Math.hypot(a,b))