Матрица создания MATLAB - PullRequest
       13

Матрица создания MATLAB

1 голос
/ 02 декабря 2011

Я строю матрицу nxn в matlab со следующим кодом:

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. Я получаю ожидаемые результаты до я = 8

я =

 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 он становится таким:

я =

 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) и до сих пор не могу понять это сам.

Ответы [ 2 ]

2 голосов
/ 03 декабря 2011

Это просто проблема форматирования для больших чисел. Попробуйте

sprintf('%20.0f', A(end,end))

и вы увидите, что номер правильный. По крайней мере, до некоторой точки, где вы столкнетесь с проблемами двойного представления ...

1 голос
/ 03 декабря 2011

Поскольку к вашему отображению данных применяется общее масштабирование.См. В выходных данных:

A =

1.0e+09 *

Для каждой записи в вашей матрице учитывается общий коэффициент 10 ^ 9.

Возможно, вы захотите настроить выходной дисплей, используя:

format short g
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...