我偶尔会遇到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确定转换是否可行? 谢谢!
答案 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]
会给你完全相同的结果