TypeError: неверный тип операнда для abs(): 'ReferenceFrame', но у меня нет функции abs()

Я пытаюсь вычислить завиток вектора с помощью его оператора del, поэтому я использую завиток из 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 пересечет вектор.

Показать полную трассировку (как правильно отформатированный текст в вопросе).

Michael Butscher 21.04.2019 22:23

Что такое B0, альфа, R? СИМВОЛЫ? Покажите, как вы инициализируете их. Дайте нам некоторые, которые работают с копированием и вставкой.

hpaulj 21.04.2019 22:25

Я отредактировал свой вопрос с константой и для чего они используются

becky.rrr 21.04.2019 22:26

Согласно документам и коду, curl расширяет расчет, с dot и так далее. Он работает для меня и печатает 0.

hpaulj 21.04.2019 22:36

Я буквально должен вернуть alpha* вектор как завиток. Но я не понимаю, как я получаю ошибку, которая у меня есть

becky.rrr 21.04.2019 22:39
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
5
575
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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

Другие вопросы по теме