【发布时间】:2014-12-28 16:56:23
【问题描述】:
设u=u(x),v=v(x)为SAGE中定义的两个向量函数,如下:
import numpy as np
x = var('x')
f,g = function('f',x), function('g',x)
f(x), g(x) = 2*x, sin(x)
u,v = np.array([f,g]),np.array([g,f])
c = np.cross(u,v)
当试图穿越u,v 时,我收到以下错误(这似乎很奇怪,因为np.dot(u,v) 工作正常)
错误:
sage: np.cross(u,v,axisa=0,axisb=0)
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-12-4f0f99d7c55e> in <module>()
----> 1 np.cross(u,v,axisa=Integer(0),axisb=Integer(0))
/usr/lib/sagemath/local/lib/python2.7/site-packages/numpy/core/numeric.py in cross(a, b, axisa, axisb, axisc, axis)
1329 if (b.shape[0] == 2):
1330 cp = a[0]*b[1] - a[1]*b[0]
-> 1331 if cp.ndim == 0:
1332 return cp
1333 else:
/usr/lib/sagemath/local/lib/python2.7/site-packages/sage/structure/element.so in sage.structure.element.Element.__getattr__ (sage/structure/element.c:3846)()
AttributeError: 'sage.symbolic.expression.Expression' object has no attribute 'ndim'
更新(解决方案):在 3D 向量上使用 SAGE 的 u.cross_product(v)
【问题讨论】:
-
再澄清一下,你的
f,g=...行可能不会做任何事情,因为下一行将覆盖它,并且假设你有 symbolic 元素 @987654328 @无论如何,Numpy 不太可能真的能够用它们做很多事情。如果您正在寻找“纯 Python”解决方案,Sympy 应该有很多您正在寻找的东西(并且是 Sage 中的内置标准)。祝你好运!