0

2 つの区分関数 " gradino[x_]" と " "を定義するプログラムを作成しgradino1[x_]ました。x は m 成分のベクトルです。

x_i を使用してこれらの関数を明示的に記述することはできません。x をベクトルとして保持する必要があります。

これら 2 つの関数間の距離を測定する必要があります。

Integrate[Abs[gradino[x]-gradino1[x]],{x[[1]],0,100},{x[[2],0,100},{x[[3]],0,100}...{x[[m]],0,100}]

しかし、それは機能していません。

これを行う方法はありますか?単純に表現できないことを思い出しgradino[x1_,x2_ etc...]ます。

4

2 に答える 2

0

上記のモデルによると、

x = Array[z, 2];

以下がOKな理由:

f[y_] := NIntegrate[y[[1]] y[[2]] t, {t, 0, 1}];
NIntegrate[f[x], {z[1], 0, 1}, {z[2], 0, 1}]

しかし、以下はそうではありません:

f[y_] := NIntegrate[y[[1]] y[[2]] Exp[t], {t, 0, 1}];
NIntegrate[f[x], {z[1], 0, 1}, {z[2], 0, 1}]

唯一の違いは、内部積分の t を に変更することExp[t]です。

于 2014-07-04T11:15:20.623 に答える
0

再: 「動作していません」実際のエラー メッセージを投稿することは、通常は良い考えです。x がまだリストとして定義されていない場合、リスト要素を統合変数として使用することはできません。

f[y_] := y[[1]]  y[[2]];
Integrate[ f[x] , {x[[1]], 0, 1}, {x[[2]], 0, 1}]

(* error  Part specification x[[1]] is longer than depth of object. *)

最初に x をリストとして定義すると、次のように機能します。

x = Array[z, 2];
Integrate[ f[x] , {x[[1]], 0, 1}, {x[[2]], 0, 1}]

(*1/4*)

nintegrate ではこれを行うことができないことに注意してください。

NIntegrate[ f[x] , {x[[1]], 0, 1}, {x[[2]], 0, 1}]

(*error  Tag Part in x[[1]] is Protected *)

明示的な要素を使用する必要があります。

NIntegrate[ f[x] , {z[1], 0, 1}, {z[2], 0, 1}]
(* 0.25 *)
于 2013-06-13T14:22:26.390 に答える