Выражение как функция символов ⇐ Python
-
Anonymous
Выражение как функция символов
Я новичок в использовании sympy, поэтому мой вопрос может быть тривиальным.
Я пытаюсь найти способ генерировать выражение как функцию других символов.
Если быть более кратким, у меня возникла следующая проблема. Я хочу создать символическое представление связи между углами ориентации RPY и создаваемой ими матрицей вращения. Это прямолинейно. Я могу определить матрицу Rz(a), матрицу Ry(b) и Rx(g), а затем вычислить их произведение
Rz=Matrix([[cos(a),-sin(a),0],[sin(a),cos(a),0],[0,0,1]]) Ry=Матрица([[cos(b),0,sin(b)],[0,1,0],[-sin(b),0,cos(b)]]) Rx=Матрица([[1,0,0],[0,cos(g),-sin(g)], [0,sin(pg),cos(pg)]]) R=Rz*Ry*Rx Как и ожидалось, R будет комплексным матричным выражением a,b,g Теперь предположим, что я хочу также вычислить матрицу вращения для второго поворота на разные углы. Я мог бы скопировать приведенный выше код, используя другие символы
Rz1=Matrix([[cos(a1),-sin(a1),0],[sin(a1),cos(1a),0],[0,0,1]]) Ry1=Матрица([[cos(b1),0,sin(b1)],[0,1,0],[-sin(b1),0,cos(b1)]]) Rx1=Матрица([[1,0,0],[0,cos(g1),-sin(g1)], [0,sin(g1),cos(g1)]]) R1=Rz1*Ry1*Rx1 Тогда R1 будет сложным выражением a1,b1,g1
Мне было интересно, есть ли способ определить «символическую функцию», которая давала бы тот же результат, повторно используя один и тот же код.
def SymRot(s1,s2,s3): = ... так что
SymRot(a,b,g) == R SymRot(a1,b1,g1) == R1 где R и R1 — выражения, упомянутые выше
Я новичок в использовании sympy, поэтому мой вопрос может быть тривиальным.
Я пытаюсь найти способ генерировать выражение как функцию других символов.
Если быть более кратким, у меня возникла следующая проблема. Я хочу создать символическое представление связи между углами ориентации RPY и создаваемой ими матрицей вращения. Это прямолинейно. Я могу определить матрицу Rz(a), матрицу Ry(b) и Rx(g), а затем вычислить их произведение
Rz=Matrix([[cos(a),-sin(a),0],[sin(a),cos(a),0],[0,0,1]]) Ry=Матрица([[cos(b),0,sin(b)],[0,1,0],[-sin(b),0,cos(b)]]) Rx=Матрица([[1,0,0],[0,cos(g),-sin(g)], [0,sin(pg),cos(pg)]]) R=Rz*Ry*Rx Как и ожидалось, R будет комплексным матричным выражением a,b,g Теперь предположим, что я хочу также вычислить матрицу вращения для второго поворота на разные углы. Я мог бы скопировать приведенный выше код, используя другие символы
Rz1=Matrix([[cos(a1),-sin(a1),0],[sin(a1),cos(1a),0],[0,0,1]]) Ry1=Матрица([[cos(b1),0,sin(b1)],[0,1,0],[-sin(b1),0,cos(b1)]]) Rx1=Матрица([[1,0,0],[0,cos(g1),-sin(g1)], [0,sin(g1),cos(g1)]]) R1=Rz1*Ry1*Rx1 Тогда R1 будет сложным выражением a1,b1,g1
Мне было интересно, есть ли способ определить «символическую функцию», которая давала бы тот же результат, повторно используя один и тот же код.
def SymRot(s1,s2,s3): = ... так что
SymRot(a,b,g) == R SymRot(a1,b1,g1) == R1 где R и R1 — выражения, упомянутые выше