矩阵乘法在 Scilab 中不起作用

计算科学 浮点 科学实验室
2021-12-02 17:21:46

我输入了一条指令来计算基数变化后的向量坐标,以便用各种向量重复多次。

X0=[1;1/2]是初始基中的一组坐标,是初始基P=[-4,2;1,1]中表示的新基。

当我计算时,P^(-1)*X0我得到:

ans = [-2.776D-17 ; 0.5]

问题是,当我手工计算时,我得到P^(-1)=[-1/6,1/3;1/6,2/3]了 Scilab 同意的,然后第一个坐标P^(-1)*X0应该是0

所以我尝试用 Scilab 手动计算第一个坐标,输入(-1/6)*1+(1/3)*(1/2)which 确实给了我0答案。

我尝试重新启动 Scilab 并没有解决问题,而且我不是计算机专家,有人见过这种情况吗?

2个回答

-2.776D-17 等于2.7761017,这确实非常小,并且对于所有实际目的而言为零。我认为scilab还可以

在您的示例inv(P)中不等于[-1/6,1/3;1/6,2/3]. 问题是在 6.1 版本之前,Scilab 有时会将非常小的数字显示为零。在 Scilab 6.0.2 和更早的版本中,您将看到(使用递归提取允许查看实际的非零项):

--> P=[-4,2;1,1]; inv(P)-[-1/6,1/3;1/6,2/3]
 ans  =

   0.   0.
   0.   0.

--> (inv(P)-[-1/6,1/3;1/6,2/3])(1,1)
 ans  =

  -2.776D-17

在 Scilab 6.1 中,显示是完全明确的:

--> P=[-4,2;1,1]; inv(P)-[-1/6,1/3;1/6,2/3]
 ans  =

  -2.776D-17   0.
   0.          0.