请教matlab中的计算问题,可能和精度有关?
来源:学生作业帮 编辑:百度作业网作业帮 分类:数学作业 时间:2024/07/08 01:43:14
请教matlab中的计算问题,可能和精度有关?
在matlab中计算一个矩阵,形式为a=g'*Q*g,Q为对称矩阵,结果出现系统认为a不是对称阵,a-a'居然不等于0
而g'*Q*g-g'*Q‘*g=0;
请问这是怎么回事?
在matlab中计算一个矩阵,形式为a=g'*Q*g,Q为对称矩阵,结果出现系统认为a不是对称阵,a-a'居然不等于0
而g'*Q*g-g'*Q‘*g=0;
请问这是怎么回事?
![请教matlab中的计算问题,可能和精度有关?](/uploads/image/z/4550186-2-6.jpg?t=%E8%AF%B7%E6%95%99matlab%E4%B8%AD%E7%9A%84%E8%AE%A1%E7%AE%97%E9%97%AE%E9%A2%98%2C%E5%8F%AF%E8%83%BD%E5%92%8C%E7%B2%BE%E5%BA%A6%E6%9C%89%E5%85%B3%3F)
符号运算是最精确的,因此g'*Q*g-g'*Q‘*g=0;
但是如果是数值运算,那么如果您学过《数值分析》这门课程的话就会有更深入的了matlab对数值进行计算时会产生截断误差和舍入误差,在这里属于舍入误差,matlab在进行数值计算时,所能得到的最小的小数是eps=2.2204e-016,当一个很大的数乘以一个很小的数时,最后面的几位小数就容易因为四舍五入而产生舍入误差,也就出现了您所遇到的‘a-a'居然不等于0’的情况了
但是如果是数值运算,那么如果您学过《数值分析》这门课程的话就会有更深入的了matlab对数值进行计算时会产生截断误差和舍入误差,在这里属于舍入误差,matlab在进行数值计算时,所能得到的最小的小数是eps=2.2204e-016,当一个很大的数乘以一个很小的数时,最后面的几位小数就容易因为四舍五入而产生舍入误差,也就出现了您所遇到的‘a-a'居然不等于0’的情况了