一般來說,數學總是採用最一般的情況下,也就是,如果我設置的功能與真正的功能在數學工作
a[s_]:={a1[s],a2[s],a3[s]}
,並要計算其規範Norm[a[s]]
,例如,它將返回:
Sqrt[Abs[a1[s]]^2 + Abs[a2[s]]^2 + Abs[a3[s]]^2]
不過,如果我知道,所有ai[s]
是真實的,我可以調用:
Assuming[{a1[s], a2[s], a3[s]} \[Element] Reals, Simplify[Norm[a[s]]]]
這將返回:
Sqrt[a1[s]^2 + a2[s]^2 + a3[s]^2]
這是我所期望的。嘗試,例如當
問題發生,得到a[s]
然後(注意D
):
Assuming[{a1[s], a2[s], a3[s]} \[Element] Reals, Simplify[Norm[D[a[s],s]]]]
再次返回涉及絕對值的結果 - 從假設未來這些數字可能是虛構的。
解決此問題的方法是什麼?我想定義一個實值函數,並且像這樣使用它。例如,我希望它的衍生物是真實的。
我選擇的答案是不是最一般的,但首先它解決了我的問題。其次,它教會了我的道德「你應該照顧你的代碼」。感謝所有其他好的和有益的答案! – Dror