带有trig函数的Mathematica转换规则

时间:2018-05-09 00:36:23

标签: wolfram-mathematica coordinate-transformation spherical-coordinate

我偶尔会遇到Mathematica用户,我正在尝试将表达式从球形转换为笛卡尔坐标。

我的功能定义为:

g[theta_, phi_] := Cos[phi](Sin[theta])^2 Sin[phi]

我希望使用以下规则转换该功能:

Sin[theta]Sin[phi] -> x
Cos[theta]-> y
Sin[theta]Cos[phi]-> z

为了得到结果:

zx

以下是我用来执行此操作的代码:

g[theta, phi] //. {Sin[theta]Sin[phi] -> x, Cos[theta] -> y, Sin[theta] Cos[phi] -> z}

我得到的结果是:

Cos[phi] Sin[phi] Sin[theta]^2

所以没有发生转变。

我是否可以添加一个函数或选项来帮助Mathematica确定转换是否可行? 谢谢!

1 个答案:

答案 0 :(得分:2)

也许这就足够了

Assuming[Sin[theta]Sin[phi]==x&&Cos[theta]==y&&Sin[theta]Cos[phi]==z,
  Simplify[Cos[phi]Sin[theta]^2 Sin[phi]]]

立即返回

x z

这并没有向您展示它用于得出该结果的步骤或规则,但是因为它认为x z比您的trig表达式“更简单”,所以评估过程朝着那个方向发展。

如果重要的话,有一种更紧凑的做同样事情的方式。 Simplify可以接受第二个参数,这些参数是在简化过程中被认为是真的。因此

Simplify[Cos[phi]Sin[theta]^2 Sin[phi],
  Sin[theta]Sin[phi]==x&&Cos[theta]==y&&Sin[theta]Cos[phi]==z]

会给你完全相同的结果