Mathematica:使用用户定义的函数简化

时间:2012-06-21 14:43:02

标签: wolfram-mathematica

输入:

f[x_] := Sqrt[x^2 + y^2]
f'[x]

输出:

x / Sqrt[x^2 + y^2]

如何让Mathematica用f[x]本身替换分母?(注意:这是一个更复杂的区分问题的简单例子,其中函数本身很复杂但是在衍生物中出现了很多。)

也就是说,所需的输出是:

x / f[x]

我试过

Simplify[f'[x], TransformationFunctions -> {f}]

但无济于事。任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:1)

我认为一般来说这很难做到;在您的具体示例中,可以使用诸如

之类的规则
rules = {z_^2 + y^2 -> Hold[f[z]^2]};

然后

f'[x] /. rules

(* x/Sqrt[Hold[f[x]^2]] *)

f''[x] /. rules

(* -(x^2/Hold[f[x]^2]^(3/2)) + 1/Sqrt[Hold[f[x]^2]] *)

使用平方根比较困难,我认为一条规则是不够的,基本原因是:

Sqrt[x^2 + y^2] // FullForm
1/Sqrt[x^2 + y^2] // FullForm    

答案 1 :(得分:1)

我认为你可以这样做:

Clear[f,g]
g[expr_]:=expr/.(x_^2+y_^2):> (f[x])^2
Simplify[D[Sqrt[x^2+y^2],x],TransformationFunctions->{Automatic,g},Assumptions->f[x]>0]

结果会给x/f[x]