Python вставить значения для sympy. Функция внутри матрицы - PullRequest
0 голосов
/ 07 февраля 2020

Hy там,

Я определил несколько матриц Симпи с зависимыми от времени углами внутри.

import sympy as sym
R1xI = sym.Matrix([ [1,0,0],
                    [0,sym.cos(sym.Function('phiSA')(t)),-sym.sin(sym.Function('phiSA')(t))],
                    [0,sym.sin(sym.Function('phiSA')(t)),sym.cos(sym.Function('phiSA')(t))]]);

R1yI = sym.Matrix([ [sym.cos(sym.Function('phiSE')(t)),0,sym.sin(sym.Function('phiSE')(t))],
                    [0,1,0],
                    [-sym.sin(sym.Function('phiSE')(t)),0,sym.cos(sym.Function('phiSE')(t))]]);

R1zI = sym.Matrix([ [sym.cos(sym.Function('phiSR')(t)),-sym.sin(sym.Function('phiSR')(t)),0],
                    [sym.sin(sym.Function('phiSR')(t)),sym.cos(sym.Function('phiSR')(t)),0],
                    [0,0,1]]);

#       Combine the 3 rotations
R1I=np.asmatrix(np.dot(np.dot(R1xI,R1yI),R1zI));

Я использовал sympy по причине нескольких шагов вычисления с этими матрицами, которые я хочу выполнить алгебраическим образом c (Умножения, производные по времени, поэтому углы должны быть время зависит)

Теперь я закончил вычисления алгебры c и хочу вставить реальные значения для этих углов.

Есть ли способ вставить их или есть лучший способ, чем использовать sym.Function для выполнения производных в зависимости от переменной?

Спасибо за ваш совет

1 Ответ

0 голосов
/ 07 февраля 2020

Возможно, оставайтесь в SymPy вместо преобразования в numpy: R1I = R1xI.dot(R1yI).dot(R1zI), а затем используйте R1I.subs(old, new), где old - это то, что вы хотите заменить, а new - это значение, которое вы хотите получить.

...