2012-06-21 44 views
0

輸入:數學:以簡化用戶自定義功能

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

輸出:

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

我如何通過數學本身f[x]更換分母?(注意:這是一個比較複雜的分化問題,其中,所述函數本身是複雜的,但示出了很多在衍生物的一個簡單的例子。)

即,期望的輸出是:

x/f[x] 

我試圖

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

,但無濟於事。任何幫助表示讚賞!

+2

如果你確實定義了'f',它將不可能在輸出中顯示,因爲它會立即自動評估。如果你輸入'x/f [x] '並按shift-enter,它也會給你'x/Sqrt [x^2 + y^2] ' – Szabolcs

回答

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

我認爲你可以做這樣的:

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]