MATLAB中的双重类型

时间:2017-07-11 19:09:34

标签: matlab

我对MATLAB中的精度有两个问题

1)浮点复数的最大位数是数据类型的两倍吗?

2)如何增加积分()的精度?在我看来,在E + 15(大量)附近有一个上限

1 个答案:

答案 0 :(得分:0)

以下是将doublesymbolic/vpa精度进行比较的示例脚本:

% Numeric approach
f_numeric = @(z) exp(z.^2);
Out_numeric = integral (f_numeric, 0, 1);

% Symbolic / vpa approach
syms x
f_symbolic(x) = exp(x^2);
Out_symbolic = int (f_symbolic, x, [0,1]);

% Comparison
fprintf('Numeric  : %0.30f\n', Out_numeric)
fprintf('Symbolic : %s\n'    , char   (vpa (Out_symbolic, 32)))
fprintf('Converted: %0.30f\n', double (vpa (Out_symbolic, 32))) % back to double

我的机器上的输出(eps = 2.2204e-16):

Numeric  : 1.462651745907181499717353290180
Symbolic : 1.462651745907181608804048586857
Converted: 1.462651745907181499717353290180

更一般地说:

>> fprintf(' %0.32f\n %s\n', 1/3, char (vpa ('1/3', 32)))
 0.33333333333333331482961625624739
 0.33333333333333333333333333333333