上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() 定义符号数值四种格式
下面用四个值举例说明如何使用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 数据显示格式