2013-03-05 407 views
3

我刚开始使用Mathematica并遇到了问题。我想更优雅地解决。我有{x,y,z}形式的测量数据,并希望将这些数据转换为精确坐标。我知道如何使用简单的功能来做到这一点。但代码变得很难看。 我想是这样的:Mathematica 8:从直角坐标转换为球坐标

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

我已经看过的文件中,只找到了9个版本,我使用8,当我尝试它没有奏效。另外我还没有在其他地方找到明确的解决方案。希望这里的某个人知道简单的解决方案。

+0

请注意http://mathematica.stackexchange.com/questions是一个比这更适合您的数学相关问题的地方 – 2013-03-08 16:31:24

回答

1

该等式为given on Wikipedia,并且是简单的功能评估。 什么阻止你简单地计算它们,以及它如何变得丑陋?

enter image description here

enter image description here

enter image description here

确保在Mathematica中,其计算四象限反正切使用ArcTan[x, y]。欲了解更多信息,请参阅article about atan2

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},...}笛卡尔坐标,你可以这样

cartesianList = RandomReal[{0, 1}, {4, 3}]; 

CoordinateTransform["Cartesian" -> "Spherical", #] & /@ cartesianList 

申请CoordinateTransform在早期版本的

<< Calculus`VectorAnalysis` 

SetCoordinates[Spherical] 

在mathworld.wolfram.com网站页面有一个笔记本用于球形坐标。接近开始就是你正在做的一个例子。