Понимание TMatrix: транспонировать, инвертировать - PullRequest
0 голосов
/ 12 марта 2019

РЕДАКТИРОВАТЬ: документация 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;

Я использую эти случаи в качестве простых примеров, но я надеялся обобщить это для больших проблем.

...