MatLab给出数学方程的错误运算

hsvhsicv  于 2022-11-15  发布在  Matlab
关注(0)|答案(2)|浏览(229)

我正在运行MatLab R2020b中的脚本。该脚本包含一个具有下列值的数组:
a=[500, 500, 500, 1000, 750, 750, 567.79 613.04]
脚本是一个方程式:
(a(1)*(a(8)-a(6)) + a(7)*(a(6)-a(2))+ a(5)*(a(2)-a(8)))
当运行在MatLab上时,上面的公式给出了数组a的值的答案**-11312**。但是,当我分别计算每个值并将它们相加时,MatLab编译器给出了不同的答案。

a(1)*(a(8)-a(6)) = -68480
a(7)*(a(6)-a(2)) = 1.419e+05
a(5)*(a(2)-a(8)) = -84780
>>(-68480) + (1.419e+05) +(-84780)

上面的答案是**-11310**。
还附上了命令的屏幕截图。

请告诉我为什么MatLab编译器会给出不同的答案?

gab6jxml

gab6jxml1#

问题是,matlab的默认格式是'short',这并没有显示出完全的精度。试试format long

>> format long
>> a(7)*(a(6)-a(2))
ans =
     1.419475000000000e+05
d7v8vwbk

d7v8vwbk2#

你错了。
如果您添加format long g,您可以看到实数:

format long g

a=[500, 500, 500, 1000, 750, 750, 567.79 613.04]
res1=(a(1)*(a(8)-a(6)) + a(7)*(a(6)-a(2))+ a(5)*(a(2)-a(8)))
a2=a(7)*(a(6)-a(2))
a1=a(1)*(a(8)-a(6))
a3=a(5)*(a(2)-a(8))
res2=a1+a2+a3

结果是:

res1 =

                  -11312.5

a2 =

                  141947.5

a1 =

                    -68480

a3 =

                    -84780

res2 =

                  -11312.5

相关问题