Mathematica:集成符号向量函数

时间:2013-06-12 15:35:51

标签: vector wolfram-mathematica symbolic-math integrate calculus

我编写了一个程序来定义两个分段函数“gradino[x_]”和“gradino1[x_]”,其中x是m个分量的向量。

我无法使用x_i显式编写这些函数,我需要将x保持为向量。

我需要测量这两个函数之间的距离:

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...]

2 个答案:

答案 0 :(得分:0)

re:“它不工作”发布实际的错误消息通常是一个好主意, 在这种情况下,“零件规格x [[1]]比对象的深度长。”..告诉你究竟是什么问题。如果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 *)

答案 1 :(得分:0)

根据上面的模型,

x = Array[z, 2];

为什么以下是可以的:

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]