我刚开始使用Mathematica并遇到了问题。我想更优雅地解决。我有{x,y,z}
形式的测量数据,并希望将这些数据转换为精确坐标。我知道如何使用简单的功能来做到这一点。但代码变得很难看。 我想是这样的:Mathematica 8:从直角坐标转换为球坐标
v={x,y,z}
TranformSpherical[v]
我已经看过的文件中,只找到了9个版本,我使用8,当我尝试它没有奏效。另外我还没有在其他地方找到明确的解决方案。希望这里的某个人知道简单的解决方案。
我刚开始使用Mathematica并遇到了问题。我想更优雅地解决。我有{x,y,z}
形式的测量数据,并希望将这些数据转换为精确坐标。我知道如何使用简单的功能来做到这一点。但代码变得很难看。 我想是这样的:Mathematica 8:从直角坐标转换为球坐标
v={x,y,z}
TranformSpherical[v]
我已经看过的文件中,只找到了9个版本,我使用8,当我尝试它没有奏效。另外我还没有在其他地方找到明确的解决方案。希望这里的某个人知道简单的解决方案。
该等式为given on Wikipedia,并且是简单的功能评估。 什么阻止你简单地计算它们,以及它如何变得丑陋?
确保在Mathematica中,其计算四象限反正切使用ArcTan[x, y]
。欲了解更多信息,请参阅article about atan2。
在版本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网站页面有一个笔记本用于球形坐标。接近开始就是你正在做的一个例子。
请注意http://mathematica.stackexchange.com/questions是一个比这更适合您的数学相关问题的地方 – 2013-03-08 16:31:24