请问Mathematica里列向量怎么叉乘呀?
mathematica吧
全部回复
仅看楼主
level 2
AllstarsVoice 楼主
velocity = {{Subscript[v, x]}, {Subscript[v, y]}, {Subscript[v, z]}}
Bf = {{Subscript[b, x]}, {Subscript[b, y]}, {Subscript[b, z]}};
Corss[velocity,Bf]
无法进行运算
2015年10月27日 07点10分 1
吧务
level 15
这个月还真是一口气冒出了很多有意思的问题呢。
无法相乘的原因其实已经在警告信息里说了,那就是Cross的参数必须是向量(Vector)。
“我这个是向量啊。”嗯,以传统数学记号来说确实是这样,但是,这里的向量概念和传统数学符号中的向量概念并不完全一致——不,或许该说,这是Mathematica对传统数学表达的模糊之处规范化后的结果。总之,你来试试下面的代码:
{{a}, {b}, {c}} // VectorQ
(* False *)
{a, b, c} // VectorQ
(* True *)
没错,从列表的角度来说,Mathematica只认为一维列表是向量(Vector)。也就是说,Cross这个函数只认长度相同的一维列表。非要用传统的行列视角来解释的话,那就是Cross使用的相乘规则是行乘行(其实不止Cross,和矩阵计算相关的函数好像全是这样)。
到这里为止楼主的问题算是答完了,不过最后我还是要补充一句,使用行和列来思考向量运算,并不是一个好主意,这点在考虑高维向量的时候尤为明显,应该立足于列表的层次结构——再这么啰嗦下去今晚暑不完版了,打住。楼主有兴趣来看看这帖:https://tieba.baidu.com/p/2597584262
2015年11月07日 13点11分 2
1