我刚刚开始使用Mathematica并遇到了一个问题。我想更优雅地解决。我有{x,y,z}
形式的测量数据,并希望将它们转换为精确的坐标。我知道如何使用简单的功能。但代码变得丑陋。
我想要像:
v={x,y,z}
TranformSpherical[v]
我查看了文档并且只找到了版本9的内容,我使用的是8,当我尝试它时它没有用。另外,我还没有在其他地方找到明确的解决方案。希望有人知道这个探测器的简单解决方案。
答案 0 :(得分:1)
方程是given on Wikipedia,是简单的函数评估。 什么阻止你简单地计算它们,以及它是如何变得丑陋的?
确保在Mathematica中使用ArcTan[x, y]
,它计算四象限反正切。有关详细信息,请参阅article about atan2。
答案 1 :(得分:1)
在第9版中
CoordinateTransformData["Cartesian" -> "Spherical", "Mapping", {x, y, z}]
给你 {Sqrt [x ^ 2 + y ^ 2 + z ^ 2],ArcTan [z,Sqrt [x ^ 2 + y ^ 2]],ArcTan [x,y]}
以{x,y,z}
表示三个球面坐标CoordinateTransform["Cartesian" -> "Spherical", {x, y, z}]
会给你同样的东西,但也可以用于转换。 如果您有笛卡尔坐标的列表{{x0,y0,z0},{x1,y1,z1},...},则可以像这样应用CoordinateTransform
cartesianList = RandomReal[{0, 1}, {4, 3}];
CoordinateTransform["Cartesian" -> "Spherical", #] & /@ cartesianList
在早期版本中
<< Calculus`VectorAnalysis`
SetCoordinates[Spherical]
在mathworld.wolfram.com网站页面上有一个用于球面坐标的笔记本。接近开头就是你正在做的事情的一个例子。