首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Mexed函数在执行数学运算时提供了非常细微的差异

Mexed函数在执行数学运算时提供了非常细微的差异
EN

Stack Overflow用户
提问于 2014-10-10 03:39:43
回答 1查看 85关注 0票数 1

因此,我使用MATLAB的Coder工具包尝试了矩阵指数函数,并将其构建出来。我继续测试,看看结果是否可靠,是否更有效率。虽然代码更快,但它产生的答案非常轻微。

我运行了原来的函数,得到的答案是:

代码语言:javascript
运行
复制
p =
            1            0            0            0            0            0            0            0            0            0            0            0
        -0.05            1    -1.25e-07        5e-06            0            0            0            0            0            0            0            0
            0            0            1            0            0            0            0            0            0            0            0            0
     1.25e-07       -5e-06        -0.05            1            0            0            0            0            0            0            0            0
            0            0            0            0            1            0            0            0            0            0            0            0
            0            0            0            0        -0.05            1            0            0            0            0            0            0
  -2.0833e-05      0.00125  -5.2083e-11   4.1667e-09            0            0            1         0.05            0     1.25e-07            0            0
     -0.00125         0.05  -4.1667e-09      2.5e-07            0            0            0            1            0        5e-06            0            0
   5.2083e-11  -4.1667e-09  -2.0833e-05      0.00125            0            0            0    -1.25e-07            1         0.05            0            0
   4.1667e-09     -2.5e-07     -0.00125         0.05            0            0            0       -5e-06            0            1            0            0
            0            0            0            0  -2.0833e-05      0.00125            0            0            0            0            1         0.05
            0            0            0            0     -0.00125         0.05            0            0            0            0            0            1

然后,我使用相同的输入运行该函数的mexed版本:

代码语言:javascript
运行
复制
p2 =
            1            0            0            0            0            0            0            0            0            0            0            0
        -0.05            1    -1.25e-07        5e-06            0            0            0            0            0            0            0            0
            0            0            1            0            0            0            0            0            0            0            0            0
     1.25e-07       -5e-06        -0.05            1            0            0            0            0            0            0            0            0
            0            0            0            0            1            0            0            0            0            0            0            0
            0            0            0            0        -0.05            1            0            0            0            0            0            0
  -2.0833e-05      0.00125  -5.2083e-11   4.1667e-09            0            0            1         0.05            0     1.25e-07            0            0
     -0.00125         0.05  -4.1667e-09      2.5e-07            0            0            0            1            0        5e-06            0            0
   5.2083e-11  -4.1667e-09  -2.0833e-05      0.00125            0            0            0    -1.25e-07            1         0.05            0            0
   4.1667e-09     -2.5e-07     -0.00125         0.05            0            0            0       -5e-06            0            1            0            0
            0            0            0            0  -2.0833e-05      0.00125            0            0            0            0            1         0.05
            0            0            0            0     -0.00125         0.05            0            0            0            0            0            1

乍一看,这两个矩阵是相等的,但实际上它们略有不同:

代码语言:javascript
运行
复制
p-p2
ans =
            0            0            0            0            0            0            0            0            0            0            0            0
  -6.9389e-18            0            0   8.4703e-22            0            0            0            0            0            0            0            0
            0            0            0            0            0            0            0            0            0            0            0            0
            0            0            0            0            0            0            0            0            0            0            0            0
            0            0            0            0            0            0            0            0            0            0            0            0
            0            0            0            0            0            0            0            0            0            0            0            0
  -3.3881e-21  -2.1684e-19  -3.2312e-26   8.2718e-25            0            0            0            0            0    5.294e-23            0            0
  -2.1684e-19            0  -8.2718e-25    5.294e-23            0            0            0            0            0   8.4703e-22            0            0
   6.4623e-27            0  -3.3881e-21   2.1684e-19            0            0            0            0            0            0            0            0
            0            0            0   6.9389e-18            0            0            0            0            0            0            0            0
            0            0            0            0            0            0            0            0            0            0            0            0
            0            0            0            0            0            0            0            0            0            0            0            0

大部分结果与原始函数是等价的,但也有一些不是。而且,两者之间的差异是如此之小,以至于我不可能相信这是一个数学错误,而不是可能是一个精度错误。我之所以如此关注这一点,是因为这确实导致了我使用该函数的叠加原因的问题。

mex函数偏差这么小是有原因的吗?有没有办法解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2014-10-10 03:45:48

你观察到的差异是如此之小,以至于你可以认为结果实际上是相同的。

它们的计算方式是不同的,这就是为什么你不能让完全相同的结果。然而,差异大致是machine epsilon的,只是因为计算机不是以无限的精度工作,而是以数字的一些离散表示来工作。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26286652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档