Как я могу создавать параметризованные матрицы и генерировать окончательную матрицу по требованию с параметрами в PythonPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу создавать параметризованные матрицы и генерировать окончательную матрицу по требованию с параметрами в Python

Сообщение Anonymous »

Я попал в ситуацию, когда мне нужно работать с параметризованными матрицами. Например, скажем, я начинаю с двух матриц 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»