MATLAB中的双类型

MATLAB中的双类型,matlab,Matlab,关于MATLAB中的精度,我有两个问题 1) 对于浮点复数,double是位数最大的数据类型吗 2) 如何提高integral()的精度?在我看来,在E+15左右有一个上限(对于一个较大的数字)下面是一个比较double和symbolic/vpa精度的示例脚本: %数值方法 f_numeric=@(z)exp(z.^2); Out_numeric=整数(f_numeric,0,1); %符号/vpa方法 符号x f_符号(x)=exp(x^2); Out_symbol=int(f_symbol,

关于MATLAB中的精度,我有两个问题

1) 对于浮点复数,double是位数最大的数据类型吗


2) 如何提高integral()的精度?在我看来,在E+15左右有一个上限(对于一个较大的数字)

下面是一个比较
double
symbolic/vpa
精度的示例脚本:

%数值方法
f_numeric=@(z)exp(z.^2);
Out_numeric=整数(f_numeric,0,1);
%符号/vpa方法
符号x
f_符号(x)=exp(x^2);
Out_symbol=int(f_symbol,x[0,1]);
%比较
fprintf('数字:%0.30f\n',Out\u数字)
fprintf('symbolical:%s\n',char(vpa(Out\u Symbolic,32)))
fprintf('已转换:%0.30f\n',双精度(vpa(输出符号,32)))%返回双精度
我的机器上的输出(eps=2.2204e-16):

数字:1.462651745907181499717353290180
符号:1.4626517459071816088048586857
换算:1.462651745907181499717353290180
更一般地说:

fprintf(“%0.32f\n%s\n',1/3,字符(vpa('1/3',32))) 0.33333333333333331482961625624739 0.33333333333333333333333333333333
对于大于您的机器在硬件中支持的精度,您可以尝试使用带有
vpa
(可变精度算术)功能的
symbolic
工具箱。或者你可以在MatlabFileExchange中尝试一些
精度
工具包。好的,但是如何计算出E-20精度的积分呢?(我想使用vpa)我还应该指出,由于您可以直接从matlab/octave中使用Java类,另一种选择是直接利用Java中现有的任意精度工具。@Peter请不要多次问同一个问题。如果你没有得到你想要的答案,澄清你的问题。或者再耐心一点。我已经投票结束了你的另外两个问题,作为这个问题的重复。其中只有一个与精确度有关。如果你想关闭另一个,请放心,但答案真的很好,我想其他人会受益的!:)