Материал, производный или извлекающий / получающий векторный компонент (векторный модуль sympy) - PullRequest
0 голосов
/ 25 апреля 2019

Я работаю над проектом, и я должен сделать некоторые материальные производные.Я не могу найти функцию в модуле, которая может выполнить этот тип операции для меня.Даже если эта функция не существует, я могу сделать это сам, но тогда есть другая проблема.Я не знаю, как извлечь компонент вектора из вектора.Если у меня есть вектор (5,10), я не могу извлечь только один компонент y (10), не добавляя компонент x рядом с ним.

Я много читал о подобных проблемах на этом форуме, а также читаю документациюдля симпози векторного модуля.Кажется, я не могу найти ответ.

import sympy.physics.vector
A = ReferenceFrame('A')
v = 5*A.x + 10*A.y

Я хотел бы сделать материальную производную от вектора "v".Если это невозможно, я бы сам хотел создать функцию (определенно весело ...), но я также не знаю, как получить один компонент из вектора.

Я представлял, что извлечение компонента будет выглядеть примерно как v [0] или что-то подобное, но это не работает.

1 Ответ

0 голосов
/ 13 июля 2019

1) Что касается материальных производных, вам, вероятно, лучше написать свою собственную функцию, которая не должна быть слишком сложной. В противном случае вы можете использовать другие модули в sympy.physics, например, модуль mechanics. Я не уверен, поможет ли это или нет, но это определенно стоит посмотреть.

2) К вашему второму вопросу (как извлечь компоненты векторного симпли-объекта):

Это немного глупо, потому что после преобразования в матричную форму базовая информация о системе отсчета теряется, но вы можете сделать что-то вроде этого:

from sympy.physics import vector

A = vector.ReferenceFrame('A')
v = 5*A.x + 10*A.y

x_component = v.to_matrix(A)[0]
y_component = v.to_matrix(A)[1]

Если вы все еще хотите, чтобы он был в векторной форме, а не только скалярный коэффициент, вы могли бы сразу же умножить его на базисный вектор следующим образом:

x_vec = (v.to_matrix(A)[0])*A.x
y_vec = (v.to_matrix(A)[0])*A.y
...