- MATLAB金融風險管理師FRM(高階實戰)
- 姜偉生 涂升 李蓉
- 602字
- 2021-03-26 23:39:48
1.1 符號數值
符號數值,是用符號表達數值。符號數值常用sym() 函數來定義。比如下例中1.5為一個雙精度數。
class(1.5) ans = 'double'
1.5本身為雙精度浮點數(double-precision)。所謂雙精度浮點數指的是用8個字節(64位)來存儲的一個數據,它表達十進制15或16位有效數字,表達正數范圍大概是[2.23 × 10-308, 1.79 × 10308]。class()函數用于判定1.5的數據類型。
用sym() 函數將1.5轉化成符號數值,如下。同樣用class() 函數判斷sym(1.5)的類型。符號數值精度要高于雙精度數值。
sym(1.5) % 3/2 class(sym(1.5)) ans = 'sym'
更多有關MATLAB單精度和雙精度浮點數的信息,請參考鏈接:
https://www.mathworks.com/help/matlab/matlab_prog/floating-point-numbers.html
一個符號數值與雙精度值計算結果仍是符號數值,如下。
1/2 + 1/3 % 0.8333 % 0.833333333333333 sym(1/2) + 1/3 % 5/6 sym(1/2)-(1/3) % 1/6 sym(1/2)*(1/3) % 1/6
符號數值定義有四種格式,如表1.1所示。
表1.1 sym() 定義符號數值四種格式

下面用四個值舉例說明如何使用sym() 定義符號數值。第一個例子是:

代碼如下:
x1 = sqrt(2) % 1.4142 x1 = sym(sqrt(2),'r') % sqr_2 = 2^(1/2) x1 = sym(sqrt(2),'d') % 1.4142135623730951454746218587388 x1 = sym(sqrt(2),'e') % (64*eps)/147 + 2^(1/2) x1 = sym(sqrt(2),'f') % 6369051672525773/4503599627370496
第二個例子是:

代碼如下:
x2 = pi % 3.1416 x2 = sym(pi) % pi x2 = sym(pi,'r') % pi x2 = sym(pi,'d') % 3.1415926535897931159979634685442 x2 = sym(pi,'e') % pi - (198*eps)/359 x2 = sym(pi,'f') % 884279719003555/281474976710656
第三個例子是:

代碼如下:
x3 = 1/7 % 0.1429 x3 = sym(1/7) % 1/7 x3 = sym(1/7,'r') % 1/7 x3 = sym(1/7,'d') % 0.14285714285714284921269 268124888 x3 = sym(1/7,'e') % 1/7 - eps/28 x3 = sym(1/7,'f') % 2573485501354569/18014398509481984
第四個例子是:

代碼如下:
x4 = log(2) % 0.6931 x4 = sym(log(2)) % 6243314768165359/9007199254740992 x4 = sym(log(2),'r') % 6243314768165359/9007199254740992 x4 = sym(log(2),'d') % 0.69314718055994528622676398299518 x4 = sym(log(2),'e') % 6243314768165359/9007199254740992 x4 = sym(log(2),'f') % 6243314768165359/9007199254740992
double() 和eval() 把符號數值變成浮點數數值,例如:
eval(sym(1/7)) double(sym(1/7))
表1.2總結了更多數據轉換函數。
表1.2 數據類型轉換函數

format long設置命令行窗口輸出顯示格式,而并不影響MATLAB計算或者保存具體數值。long為眾多數據顯示樣式中的一種。表1.3列出了幾種常見數據顯示格式。
表1.3 數據顯示格式
