Я попал в ситуацию, когда мне нужно работать с параметризованными матрицами. Например, скажем, я начинаю с двух матриц A и B,
A = [1 2] B = [a b]
[3 4] [5 6]
Здесь матрица B параметризуется переменными a и b. В какой-то момент мне может понадобиться объединить матрицы, скажем, с помощью умножения матриц, чтобы получить AB = C:
C = AB = [a+10 b+12 ]
[3a+20 3b+24]
Теперь я хотел бы сохранить там матрицу C с этими переменными и иметь возможность предоставлять значения для переменных и оценивать элементы. Т.е. Матрица C будет матрицей, параметризованной переменными a и b.
Вместо создания < strong>C на лету в любое время, когда мне это нужно, предоставляя параметры B и выполняя все умножения матриц, я хотел бы сохранить общую структуру матрицы C , выполнив однократное умножение матрицы, при этом C наследует любую переменную своих составляющих. Я надеюсь, что это сэкономит время выполнения, поскольку структура матрицы C кэшируется, т. е. мне не нужно выполнять матричные операции каждый раз, когда я меняю параметр.< /p>
В моем случае таких матриц может быть много, каждая со своими переменными элементами, и мне может потребоваться произвольно их объединить (матричные произведения, произведения Кронекера и т. д.). Мне было интересно, есть ли устоявшийся способ добиться этого в Python. Также было бы полезно, если бы решение было производительным, поскольку в коде, который я пытаюсь выполнить, будет много матричных операций. К сожалению, мне пока приходится придерживаться Python, поэтому решения на других языках будут менее полезны.
Я пытался добиться этого результата с помощью модуля Sympy и думаю У меня есть очень грубая настройка, которая, кажется, работает, но я хотел знать, есть ли более канонический способ сделать это в Python. Кроме того, я не уверен, что Sympy будет наиболее производительным, и я не уверен, что такую систему можно получить с помощью numpy. Упрощенная версия моего кода Sympy приведена ниже для справки:
import sympy as s
from sympy import Matrix
from sympy.physics.quantum import TensorProduct as tp
A = Matrix([[1,2],
[3,4]])
a, b = s.symbols('a b')
B = Matrix([[a,b],
[5,6]])
# To obtain C, parameterized by a and b
C = A*B
display(C)
# Finally, to evaluate C with parameters a=3 and b=0.5
C_eval = C.evalf(subs={a:3, b:0.5})
display(C_eval)
# Or, to generate and evaluate a different combination of A and B
D = tp(A,B)
display(D)
D_eval = D.evalf(subs={a:3, b:0.5})
display(D_eval)
Подробнее здесь: https://stackoverflow.com/questions/790 ... -on-demand
Как я могу создавать параметризованные матрицы и генерировать окончательную матрицу по требованию с параметрами в Python ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как умножить матрицу 2x3x3x3 на матрицу 2x3, чтобы получить матрицу 2x3
Anonymous » » в форуме Python - 0 Ответы
- 64 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как умножить матрицу 2x3x3x3 на матрицу 2x3, чтобы получить матрицу 2x3
Anonymous » » в форуме Python - 0 Ответы
- 57 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как преобразовать матрицу двоичных чисел в матрицу строк/символов? (Python/Sage)
Anonymous » » в форуме Python - 0 Ответы
- 8 Просмотры
-
Последнее сообщение Anonymous
-