我正在尝试将Matlab代码转换为c代码,我使用Matlab结果验证每一步。一切都匹配,除了减法,误差范围是1e-14但是由于迭代,它会影响整个答案。
Matlab的:
s = c-A'*y;
c code:
for (i=0;i<A_cols;i++)
{
s[i][0] = c[i][0]-Temp_Mat_0[i][0];
}
我把它(A'* y)放在一边并将其与Matlab代码
相匹配我为两者输入了相同的值,但保存或显示如下: 值是:
A_example[16]= {8,1,1,2,-1,5,23,7,5,8,10,1,12,-1,5,23};
b_example[16]= {5.3326,12.8165,10.0277,19.4862};
c_example[16]= {13.3215,4.0611,24.2008,27.7622};
c代码:保存为
输出s:
Matlab输出是:
K>> full(A)
ans =
8 1 1 2
-1 5 23 7
5 8 10 1
12 -1 5 23
K>> full(b)
ans =
5.3326
12.8165
10.0277
19.4862
K>> full(c)
ans =
13.3215
4.0611
24.2008
27.7622
s =
1.0e-13 *
-0.0355
0.1599
-0.1421
0.0711
这个错误除了基于减法的其他错误之外,我的c代码计算漂移得很远!有没有办法让两个代码以相同的精度工作?