TypeError:abs()的操作数类型错误:“ReferenceFrame”,但我没有abs()函数

2024-04-24 11:34:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着用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运算符穿过向量。你知道吗


Tags: thefromimportalphainitsincoscurl
1条回答
网友
1楼 · 发布于 2024-04-24 11:34:20

使用R[0]而不是x。我从curl示例中推断出这一点(并尝试复制一些Wiki示例)

正在运行isympy

(无法从sympy导入curl

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,或者显示Calpha*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

相关问题 更多 >