matlab 为什么 a=1e41-1e22;vpa(a,50) 结果还是1e41
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/07/08 12:26:19
matlab 为什么 a=1e41-1e22;vpa(a,50) 结果还是1e41
怎么得出 1e41-1e22 的精确值
怎么得出 1e41-1e22 的精确值
1、首先,明确一个基本概念:MATLAB中最基本的数据类型就是double,其大多数数值运算都是按照double类型进行的.楼上引用的百度百科的内容基本上没什么问题,我就不重复了.但是,出现这个现象的原因与double类型的表示范围无关,而是与它的精度(或者说分辨率)有关. MATLAB中有一个eps函数用于计算浮点数的相对精度,在早期的版本(例如6.5),该函数不接受输入参数,而是直接返回一个数2^(-52);而在稍新一些版本的MATLAB上,eps可以接受输入,用以表示对于输入变量而言,其分辨率是多大,例如:>> eps(1e41)
ans =
1.9343e+025也就是说,由于双精度浮点数的精度限制,对1e41这个量级的数来说,能够分辨的最小的数大约是1.9343e25,如果与小于这个分辨率的数据进行加减运算,都会被忽略不计. 更深入一点说,按照IEEE-754标准,double类型共64个二进制位,其中1个符号位,11个指数位,52个尾数位.这意味着,浮点数的相对精度是由52个尾数位决定的,这也是上面说到2^(-52)的由来,而2^(-52)按十进制大约是2.22e-16,介于1e-15和1e-16之间,这也是为什么说double类型的有效数字是15-16位的原因(15位肯定准确,16位不一定). 2、要想得到精确的计算结果,需要使用符号运算:>> a = sym(1e41)-sym(1e22)
a =
99999999999999999990000000000000000000000你原来的代码中,虽然vpa是符号数学工具箱的函数,但由于前面的运算是按照double类型进行的,得到的结果 a 已经损失了精度,所以再使用vpa也不会有什么作用. 希望上述回答能够解答楼主的疑问(每个字都是现打的,绝无复制粘贴).
再问: 牛 那为什么符号运算能准确运算呢,运算机制不一样?
再答: 符号运算和常规的数值运算完全不是一码事。上面所涉及到的技术称为任意精度算术(Arbitrary Precision Arithmetic)或可变精度算术(Variable Precision Arithmetic),只是符号运算应用的一个方面。 要了解更多信息,可以查阅计算机代数系统(Computer Algebra System)相关的主题,或者看一看MATLAB符号数学工具箱(Symbolic Math Toolbox)的相关介绍。因为如果贴链接百度经常抽风,所以我就不贴链接了,按照我给的关键词去查吧。
ans =
1.9343e+025也就是说,由于双精度浮点数的精度限制,对1e41这个量级的数来说,能够分辨的最小的数大约是1.9343e25,如果与小于这个分辨率的数据进行加减运算,都会被忽略不计. 更深入一点说,按照IEEE-754标准,double类型共64个二进制位,其中1个符号位,11个指数位,52个尾数位.这意味着,浮点数的相对精度是由52个尾数位决定的,这也是上面说到2^(-52)的由来,而2^(-52)按十进制大约是2.22e-16,介于1e-15和1e-16之间,这也是为什么说double类型的有效数字是15-16位的原因(15位肯定准确,16位不一定). 2、要想得到精确的计算结果,需要使用符号运算:>> a = sym(1e41)-sym(1e22)
a =
99999999999999999990000000000000000000000你原来的代码中,虽然vpa是符号数学工具箱的函数,但由于前面的运算是按照double类型进行的,得到的结果 a 已经损失了精度,所以再使用vpa也不会有什么作用. 希望上述回答能够解答楼主的疑问(每个字都是现打的,绝无复制粘贴).
再问: 牛 那为什么符号运算能准确运算呢,运算机制不一样?
再答: 符号运算和常规的数值运算完全不是一码事。上面所涉及到的技术称为任意精度算术(Arbitrary Precision Arithmetic)或可变精度算术(Variable Precision Arithmetic),只是符号运算应用的一个方面。 要了解更多信息,可以查阅计算机代数系统(Computer Algebra System)相关的主题,或者看一看MATLAB符号数学工具箱(Symbolic Math Toolbox)的相关介绍。因为如果贴链接百度经常抽风,所以我就不贴链接了,按照我给的关键词去查吧。
matlab 为什么 a=1e41-1e22;vpa(a,50) 结果还是1e41
环氧树脂固化问题您好,我有几个环氧树脂固化的问题想咨询一下1)我用的环氧树脂E41,固化剂三乙烯思胺,比例为10:1,混
matlab vpa
matlab s2=norm(A,2); s4=sum(sum(abs(A)^2))^(1/2) 为什么结果不同?
matlab 中 a=[1:5;6:10;11:15;16:20]; a([2 2],[3 3]) 输出结果?为什么?
Matlab运算 syms a A=a+1; 结果如下:A = a + 1 >> a=1
高等代数,线性变换定义线性变换A(X)=(a b c d)X,求A在E11,E12,E21,E22下的矩阵.为什么A(E
小刚计算先化简再求值:16+a-{8a-{a-9-(3-6a)]},其中a=-1时,将a看成1,可结果还是正确,为什么?
matlab中 A(:)=1:
matlab中a(1:
matlab x(a,1:
matlab 求极限结果通过vpa转换为数值,但类型却不是数值