РЕДАКТИРОВАТЬ: документация TMatrix: https://root.cern.ch/root/html224/TMatrix.html
Допустим, у меня есть две матрицы, и я хочу выполнить следующие простые вычисления:
TMatrix x(2, 2);
TMatrix M(2, 2);
x.T() * M * x
Теперь это явно не работает, поскольку x.T()
разрушительно. Как получить неразрушающую функцию транспонирования для этого?
Во-вторых, скажем, я хочу инвертировать матрицу с помощью следующего вычисления:
TMatrix b(2, 2);
TMatrix A(2, 2);
A(0,0) = A(1,1) = 1e-10;
TMatrix x = A.Invert() * b;
Это также терпит неудачу, так как A почти единственное число. В идеале я хотел бы использовать линейное решение для получения результата Solve(A, b)
(другими словами, решение Ax = b
). Есть ли встроенный метод, который делает это?
Наконец, есть ли простой способ умножить TMatrix на скаляр?
TMatrix A(2, 2);
double x = 2.0;
A * x;
Я использую эти случаи в качестве простых примеров, но я надеялся обобщить это для больших проблем.