我正在使用以下代码在matlab中构建一个nxn矩阵:
x = linspace(a,b,n);
for i=1:n
for j=1:n
A(i,j) = x(j)^(i-1);
end
A
i
b(i) = (1/i)*x(n)^i - (1/i)*x(1)^i;
end
我用a = 1 b = 10和n = 10来测试它。我得到预期的结果,直到i = 8
i =
8
A =
第1至7栏
1 1 1 1 1 1 1
1 2 3 4 5 6 7
1 4 9 16 25 36 49
1 8 27 64 125 216 343
1 16 81 256 625 1296 2401
1 32 243 1024 3125 7776 16807
1 64 729 4096 15625 46656 117649
1 128 2187 16384 78125 279936 823543
1 256 6561 65536 390625 1679616 5764801
第8至10栏
1 1 1
8 9 10
64 81 100
512 729 1000
4096 6561 10000
32768 59049 100000
262144 531441 1000000
2097152 4782969 10000000
16777216 43046721 100000000
但是从i = 9开始就变成了这个:
i =
9
A =
1.0e + 09 *
第1至9栏
0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0001
0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0001 0.0003 0.0005
0.0000 0.0000 0.0000 0.0000 0.0001 0.0003 0.0008 0.0021 0.0048
0.0000 0.0000 0.0000 0.0001 0.0004 0.0017 0.0058 0.0168 0.0430
0.0000 0.0000 0.0000 0.0003 0.0020 0.0101 0.0404 0.1342 0.3874
第10栏
0.0000
0.0000
0.0000
0.0000
0.0000
0.0001
0.0010
0.0100
0.1000
1.0000
有人可以告诉我发生了什么事吗?我在matlab方面不是很有经验(我主要使用c ++或python),到目前为止我似乎无法弄明白。
答案 0 :(得分:2)
这只是大数字的格式化问题。尝试
sprintf('%20.0f', A(end,end))
你会看到这个号码是正确的。至少在某种程度上,你会遇到双重表征问题......
答案 1 :(得分:1)
因为您的数据显示应用了常见的缩放。请参阅输出:
A =
1.0e+09 *
矩阵中的每个条目都考虑了10 ^ 9的公因子。
您可能需要使用以下方法调整输出显示:
format short g