(将来の) クライアントから受信した関数を、いくつかのパラメーターを使用してループで実行するコードを作成しました。func(名前を付けます)と呼びます。
関数内では、クライアントは通常、同じ変数で式を生成します (GetUncertainty によって - 各変数は使用前にクリアする必要があります)。これを行うには、単純なアイデアはブロックを使用することです。後で、関数の外で di と i を処理するコードが実行されます。そのため、di と i はグローバルでなければなりません (さらに多くの可能性がありますが、柔軟です)。
ところで、効率的ではないことはわかっていますが、効率は問題ではありません。
func[v_, a_, r_] :=
(V = v; A = a; R = r;
Block[{V, A, R},i = V A + A 10 + R 100; di = GetUncertainty[i, {V, A, R}];] ;
Print[di])
問題は、クライアントが変数を手動でリセットしなければならないことです。つまり、関数パラメーターを V_,A_,R_ にすることはできません。それ以外の場合、ブロック内の変数は値に置き換えられます。他の方法でこれを克服することはできませんでした。
同様の問題の別の質問。vars = {V,A,R,DR} がある場合、Block[vars , ..code.. ] は、リストではないというエラーをスローします。一方、Block[ {V,A,R,DR},. .code..] 動作します。これを克服する方法は?
ありがとう。