计算精度属于哪个学科的问题?
在matlab中计算希尔伯特矩阵的逆矩阵使用两种不同的方法,结果差别很大。1、inv(hilb(6))
2、invhilb(6)
方法2比方法1更加精准。但是在n大于等于15的时候方法2还是会出现误差。
在使用各种计算机软件进行计算时会出现误差,隐隐感觉类似问题时一些潜在的大坑,因此想学习一下这方面的知识。有没有专门讲类似问题的入门书籍推荐?或者类似问题是否有专门归属的学科类别?像据此按图索骥去收集一些好书。
补充,不是具体讲matlab R 如何使用。而是具体讲计算误差,和在使用计算机进行计算时如何规避或减少误差。至少要知道哪些计算结果存在误差。避免出现沉默错误。当然,讲解可以以某种常用数学软件为基础。
计算的中间过程可能会 整型溢出,精度丢失,导致矩阵虽可逆但计算病态、奇异。
一般解决办法就是 高精度计算。或者应该有某些特别的数值算法。
不过,针对希尔伯特矩阵,其逆矩阵是可以 精确表达的。一个$n\times n$的希尔伯特矩阵的逆矩阵的系数为:
\[(H^{-1})_{ij}=(-1)^{i+j}(i+j-1){n+i-1 \choose n-j}{n+j-1 \choose n-i}{i+j-2 \choose i-1}^{2}\]
参考来源:https://zh.wikipedia.org/wiki/希尔伯特矩阵 wayne 发表于 2021-9-8 23:37
计算的中间过程可能会 整型溢出,精度丢失,导致矩阵虽可逆但计算病态、奇异。
一般解决办法就是 高精度计 ...
是的,你说的对。
请问你是通过什么途径学习这方面知识的?有什么好书推荐么? 计算精度问题是由于用二进制方法表示整数或浮点数的结果,属于计算机领域的问题,32位系统下使用4个字节32位表示一个浮点数,在64位系统下使用8个字节64位表示一个浮点数,浮点数的精度就是根据其在系统中使用的位数来确定的。更具体的可以看关于机器指令的相关书籍一般都会有这方面的详细说明。 灵树 发表于 2021-9-12 08:58
计算精度问题是由于用二进制方法表示整数或浮点数的结果,属于计算机领域的问题,32位系统下使用4个字节32 ...
谢谢指路,我去看看这方面的书。 这些都应该是计算数学方向的 mathe 发表于 2021-9-12 17:19
这些都应该是计算数学方向的
谢谢回复。我在豆瓣搜了一下计算数学,同时还出现了数值分析,数值计算的书。所以计算数学和数值分析,数值计算是不同学科?还是同一学科的不同叫法? 不太一样,计算数学 内涵更广,涉及到具体东西的计算的都可以叫做 计算数学,可以涉及很多领域,几何,组合,数论,分析
数值分析 主要是 数学分析领域。 计算精度只是计算机编码问题,和计算过程无关。比如在32位系统中一个浮点数用32位表示,这32位二进制数占用了4个字节的存储空间,这32位被分成了两部分,前一部分第一位用01代表正负,其它部分保存数的小数部分,第二部分存储数的指数部分,同样第一位代表正负,其它部分为指数。在系统中这两部分都是固定大小的,所有在计算时结果的精度也就是固定的,64位系统下精度会成倍的提高,但还是有限精度。还有一种编码形式就是按十进制的位进行编码,每4位代表十进制的一位,每个字节记录两位十进制位。但这种编码没有硬件实现,所以用来计算求值的话速度会慢很多很多。 百度百科上的信息:
数值分析(numerical analysis),为数学的一个分支,是研究分析用计算机求解数学计算问题的数值计算方法及其理论的学科。它以数字计算机求解数学问题的理论和方法为研究对象,为计算数学的主体部分
页:
[1]
2