当前位置:  开发笔记 > 编程语言 > 正文

MATLAB显示非常小的值而不是0(零)

如何解决《MATLAB显示非常小的值而不是0(零)》经验,为你挑选了1个好方法。

我正在使用MATLAB求解3个线性代数方程.我知道预期的解决方案,其中一个应该是,0但它正在显示2.2204e-16.

MATLAB代码:

a=[2 5 -3; 9 2 3; 7 -12 5]
b=[-11; 0; 8]
x=inv(a)*b

预期的解决方案是-1, 0, 3,但它显示:

-1.0000e+00
2.2204e-16
3.0000e+00

从技术上讲,我没有使用MATLAB软件,而是使用这个在线Octave解释器.

我希望输出正好为0,而不是2.2204e-16.我该怎么做呢?



1> Dev-iL..:

您所看到的是一个正确的结果,直到机器精度(您实际得到的数字eps(1)或者eps('double')).

为了求解线性方程,例如你的例子中的线性方程,应该使用矩阵除法.这些功能是mldivide, \mrdivide, /(鼓励您阅读他们的文档).

使用这些运算符时,MATLAB(或Octave)会根据输入的属性选择要使用的求解器.这些求解器没有a明确地反转(至少不是我读过的文档的解算器),这样做是为了使解更快,更准确,更稳定,或者它们的组合.有关如何避免反转的示例,请查看LU解算器的文档.

例如:

a=[2 5 -3; 9 2 3; 7 -12 5];
b=[-11; 0; 8];
x=a\b

产量:

x =

    -1
     0
     3

推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有