1

我是一个偶尔的 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 确定转换是可能的?谢谢!

4

1 回答 1

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

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

如果这很重要,有一种更紧凑的方法可以做同样的事情。Simplify可以接受第二个参数,即在简化过程中假定为真的事物。因此

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

会给你完全相同的结果

于 2018-05-09T02:35:11.560 回答