Mathematica 8:从笛卡尔坐标转换为球坐标

时间:2013-03-05 00:42:10

标签: math wolfram-mathematica data-conversion

我刚刚开始使用Mathematica并遇到了一个问题。我想更优雅地解决。我有{x,y,z}形式的测量数据,并希望将它们转换为精确的坐标。我知道如何使用简单的功能。但代码变得丑陋。 我想要像:

v={x,y,z}
TranformSpherical[v]

我查看了文档并且只找到了版本9的内容,我使用的是8,当我尝试它时它没有用。另外,我还没有在其他地方找到明确的解决方案。希望有人知道这个探测器的简单解决方案。

2 个答案:

答案 0 :(得分:1)

方程是given on Wikipedia,是简单的函数评估。 什么阻止你简单地计算它们,以及它是如何变得丑陋的?

enter image description here

enter image description here

enter image description here

确保在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网站页面上有一个用于球面坐标的笔记本。接近开头就是你正在做的事情的一个例子。