3

エラーの伝播を実行する短いコードを作成しようとしています。これまでのところ、関数 f(x1,x2,...,xi,...,xn) のエラー delta_f の式を Mathematica にエラー dx1,dx2,...,dxi,.. で生成させることができます。 .dxn:

fError[f_, xi__, dxi__] := 
  Sum[(D[f[xi], xi[[i]]]*dxi[[i]])^2, {i, 1, Length[xi]}]^(1/2)

fError では、入力関数 f のすべての変数が {...} で囲まれている必要があります。例えば、

d[{mv_, Mv_, Av_}] := 10^(1/5 (mv - Mv + 5 - Av))
FullSimplify[fError[d, {mv, Mv, Av}, {dmv, dMv, dAv}]]

戻り値

2 Sqrt[10^(-(2/5) (Av - mv + Mv)) (dAv^2 + dmv^2 + dMv^2)] Log[10]

私の質問は、これをどのように評価できますか?理想的には、fError を次のように変更したいと思います。

fError[f_, xi__, nxi__, dxi__]

ここで、 nxi は xi の実際の値のリストです (xi を数値に設定すると上記の微分ステップが破棄されるため、分離されています) 。解決策は、Hold[] や With[] などと同じくらい単純である必要があると思いますが、それを取得できないようです。

4

3 に答える 3