#python #curl #vector #typeerror #sympy
#python #curl #вектор #ошибка типа #симпатичный
Вопрос:
Я пытаюсь вычислить curl вектора с помощью его оператора del, и поэтому я использую curl из sympy и просто пересекаю вектор с системой отсчета, но я получаю эту ошибку: что именно я делаю не так?
import sympy
import numpy as np
import math
from sympy import Symbol, diff, Array, sin, cos, curl
from sympy import init_printing
from sympy.physics.vector import curl, ReferenceFrame
init_printing()
# Variables being used - B0 is the initial mag field, alpha is a constant. x/y/z are for the direction
alpha = Symbol('u03B1')
B0 = Symbol('B0')
x = Symbol('x')
y = Symbol('y')
z = Symbol('z')
print ('Symbols: ', alpha, B0, x, y, z)
# This has the reference frame and the vector
R = ReferenceFrame('R')
V = B0*sin(alpha*x)*R.y B0*cos(alpha*x)*R.z
print(V)
C = curl(V,R)
print(C)
Я ожидаю, что оператор / nabla пересечет вектор.
Комментарии:
1. Показать полную обратную трассировку (как правильно отформатированный текст в вопросе).
2. Что такое B0, альфа, R? символы? Покажите, как вы их вводите. Дайте нам что-нибудь, что работает с copy-n-paste .
3. Я отредактировал свой вопрос с помощью константы и для чего они используются
4. Согласно документам и коду,
curl
расширяется вычисление сdot
помощью и так далее. Он запускается для меня и печатается0
.5. Я буквально должен вернуть альфа * вектор обратно в виде завитка. Но я не понимаю, как я получаю ошибку, которая у меня есть
Ответ №1:
Используйте R[0]
вместо x
. Я вывел это из curl
примеров (и пытаюсь воспроизвести некоторые примеры вики)
Запуск в isympy
(Не удается импортировать curl
из sympy
)
In [2]: from sympy.physics.vector import curl, ReferenceFrame
...: alpha = Symbol('u03B1')
...: B0 = Symbol('B0')
...: R = ReferenceFrame('R')
...: V = B0*sin(alpha*R[0])*R.y B0*cos(alpha*R[0])*R.z
...: print(V)
...: C = curl(V,R)
...: print(C)
...:
...:
B0*sin(R_x*α)*R.y B0*cos(R_x*α)*R.z
B0*α*sin(R_x*α)*R.y B0*α*cos(R_x*α)*R.z
Может быть способ разложить на множители alpha
или иным образом показать, что C
это alpha*V
так. Я просто работаю с sympy
учебниками.
In [4]: expand(C-alpha*V)
Out[4]: 0
In [8]: V
Out[8]: B₀⋅sin(Rₓ⋅α) r_y B₀⋅cos(Rₓ⋅α) r_z
In [9]: C
Out[9]: B₀⋅α⋅sin(Rₓ⋅α) r_y B₀⋅α⋅cos(Rₓ⋅α) r_z