На самом деле невозможно установить значения диагонали матрицы SymTridiagonal
- почему это решение было принято, я не могу сказать.
Теперь я вижу две альтернативы:
1) В Юлия поля структуры не скрыты, поэтому можно изменить значение таким образом. Это опасно, поскольку внутренняя структура этой матрицы может измениться в будущих версиях без каких-либо предупреждений. Вот пример того, как вы это сделаете:
using LinearAlgebra: SymTridiagonal
a = SymTridiagonal([1 2 0; 2 1 2; 0 2 1)] # 1 on diagonal, 2 on off diagonals
a.ev[1] = 4 # a[1, 2] == 4 and a[2, 1] == 4
2) Вы также можете использовать матричный тип Tridiagonal
, который также находится в пакете LinearAlgebra
; этот тип позволяет устанавливать не диагональные записи. Тогда вам просто нужно убедиться, что вы не нарушаете свойства симметрии c этой матрицы, т. Е. Если вы установите a[i, j]
, то вам также придется установить a[j, i]
в то же значение.