Как я могу изменить значение массива в цикле в Mathematica? - PullRequest
0 голосов
/ 17 мая 2019

Я написал код в Matlab, как показано ниже:

T= ((1-(-1)) * rand([4,4],'double') + (-1) * ones(4,4));
for i=1:4
for j=1:i
T(j,i)=TT(i,j);
end
T(i,i)=0;
end

Теперь я хочу написать этот код в Mathematica, как показано ниже:

T = RandomReal[{-1, 1}, {4, 4}];
For[i = 1, i < 5, i++,
For[ j = 1, j < i, j++,
T[[j, i]] = T[[i, j]]]
T[[i, i]] = 0];

Но это не работает!Не могли бы вы рассказать мне о моих ошибках?Спасибо.

1 Ответ

0 голосов
/ 18 мая 2019
SeedRandom[1234];
t = u = RandomReal[{-1, 1}, {4, 4}];
t // MatrixForm

enter image description here

Если необходимо использовать For

For[i = 1, i < 5, i++,
  For[j = 1, j < i, j++, t[[j, i]] = t[[i, j]]]; t[[i, i]] = 0];

Он мутирует t

t // MatrixForm

enter image description here

Один из способов сделать это функционально

(l = LowerTriangularize[u, -1]) + Transpose[l]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...