![MATLAB金融风险管理师FRM(高阶实战)](https://wfqqreader-1252317822.image.myqcloud.com/cover/187/36862187/b_36862187.jpg)
上QQ阅读APP看书,第一时间看更新
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() 定义符号数值四种格式
![](https://epubservercos.yuewen.com/745BB7/19549640201517806/epubprivate/OEBPS/Images/Figure-T19_3711433.jpg?sign=1739361583-uk11GEqvBLJqws3M6GkPhVwLCaRvmA2A-0-9dc3487fc87dedc915b34c3031176b7a)
下面用四个值举例说明如何使用sym() 定义符号数值。第一个例子是:
![](https://epubservercos.yuewen.com/745BB7/19549640201517806/epubprivate/OEBPS/Images/Figure-P19_2133638.jpg?sign=1739361583-BUuHzMh30i9J3jIq39yFIyrt381eb0Vf-0-528a2cc18ea865b56cd5dd2f01bf7e94)
代码如下:
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
第二个例子是:
![](https://epubservercos.yuewen.com/745BB7/19549640201517806/epubprivate/OEBPS/Images/Figure-P19_2133640.jpg?sign=1739361583-CFQC20OoHlANvX2t4r90gIQkSAf6GzDL-0-b49b7389a3a3509113dc40c76f990b32)
代码如下:
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
第三个例子是:
![](https://epubservercos.yuewen.com/745BB7/19549640201517806/epubprivate/OEBPS/Images/Figure-P19_2133641.jpg?sign=1739361583-1OYjnv3gksTweIjVrgf6NnAqZr1LBeaR-0-6462e733a5ad22c63fea1e27a3d8b3be)
代码如下:
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
第四个例子是:
![](https://epubservercos.yuewen.com/745BB7/19549640201517806/epubprivate/OEBPS/Images/Figure-P20_2133642.jpg?sign=1739361583-ne922KblAEcMx6nG5BzYarvkVz7yJFaw-0-b35767f9227d3ee8671d5e06b59a8312)
代码如下:
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 数据类型转换函数
![](https://epubservercos.yuewen.com/745BB7/19549640201517806/epubprivate/OEBPS/Images/Figure-T20_2133648.jpg?sign=1739361583-irFfBa18IDiFnw20Wu2EzhdWC1qgSmNn-0-4ea8ebfa9e7430690e7c2a4f60b2eb6e)
format long设置命令行窗口输出显示格式,而并不影响MATLAB计算或者保存具体数值。long为众多数据显示样式中的一种。表1.3列出了几种常见数据显示格式。
表1.3 数据显示格式
![](https://epubservercos.yuewen.com/745BB7/19549640201517806/epubprivate/OEBPS/Images/Figure-T21_2133650.jpg?sign=1739361583-kXmwMV1aNtlfNO4MJKV1ALBKCOv17ypV-0-02931aae0c12ecc01718fc0984224c26)