【问题标题】:TypeError: Bad Operand Type for abs(): 'ReferenceFrame' but I have no abs() functionTypeError: Bad Operand Type for abs(): 'ReferenceFrame' 但我没有 abs() 函数
【发布时间】:2019-09-11 04:10:07
【问题描述】:

我正在尝试使用其 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 运算符穿过向量。

【问题讨论】:

  • 显示完整的回溯(问题中格式正确的文本)。
  • 什么是 B0、alpha、R?符号?展示你如何初始化它们。给我们一些适用于 copy-n-paste 的东西。
  • 我用常量和它们的用途编辑了我的问题
  • 根据文档和代码,curl 扩展了计算,dot 等等。它为我运行并打印0
  • 我确实应该将 alpha* 向量作为 curl 恢复。但我不明白我是如何得到错误的

标签: python curl vector typeerror sympy


【解决方案1】:

使用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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-04
    • 1970-01-01
    • 2012-07-05
    • 2023-02-17
    • 2012-11-07
    • 2022-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多