交叉产品是错误的

30次观看(过去30天)
萨瓦河yilmaz
萨瓦河yilmaz 2021年8月5日
编辑: 保罗 2021年8月6日
> >一个
A =
-2159/277
-27/2
0.
> > B
B =
-579/104
-135/14
0.
>>十字架(A,B)
ANS =.
0.
0.
-1/70368744177664
A和B载体是平行的。十字产品必须“0”。但答案是错的。你能帮助我吗?
3评论
保罗
保罗 2021年8月6日
在第一个实例中,A是一个double对象,在第二个实例中,A是一个sym对象。我使用符号数学工具箱来确定你看到的问题是否只是一个舍入误差。但是问题中为A和B提供的数据并没有产生问题中使用符号或数字数学的结果:
纽带A B.
a = sym([ - 2159/277 -27/2 0]);
B = sym([-579/104 -135/14 0]);
VPA(十字架(A,B))
ANS =.
十字(双(a),双(b))
ANS =. 1×3
1.0e + -4 * 0 0 -0.6695
因此,符号数学和数字数学基本上给出了相同的结果,其中都没有匹配问题的结果:
-1/70368744177664
ans = -1.4211e-14

登录评论。

答案(2)

rik.
rik. 2021年8月5日
编辑:rik. 2021年8月5日
1/70368744177664
ans = 1.4211e-14
EPS.
ANS = 2.2204E-16
这个数字很小,你可以假设这是一个舍入误差。
此舍入误差的根本原因是在有限计算机存储器中无法存储无限小数。
想象一下,您只能存储十进制数字,并且在小数点后只有4位数。
(1/3)* 3 =(0.3333)* 3 = 0.9999
是错的?或者 /?是和否。您只需要了解所使用的工具的局限性。
2评论
rik.
rik. 2021年8月6日
然后比较宽容:
Val = 1/70368744177664;
目标= 0;
tol = 1e-10;
如果ABS(Val-Target)<= TOL

登录评论。


1月
1月 2021年8月6日
Geogebra将DTA视为象征性表达。MATLAB将-2159/277转换为默认值的NumericalValues。如果要使用符号计算,请使用 Sym()
不要检查数值浮点值,以恰好0在一个条件下 如果 命令。具有数值的计算包括舍入效应,不能被忽略:
1E17 + 1 - 1E17%0
1E17 - 1E17 + 1%1
sin(2 *π)%-2.4493E-16
......
没有明确定义的固定限制,它取决于应用程序必须“考虑为0”。
数值算法需要分析舍入效应来估计结果的可靠性。

社区宝藏狩猎

找到Matlab Central中的宝藏,并发现社区如何帮助您!

开始狩猎!