【问题标题】:Mathematica: integrate symbolic vector functionMathematica:整合符号向量函数
【发布时间】:2013-06-12 15:35:50
【问题描述】:

我写了一个程序,定义了两个分段函数“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...]

【问题讨论】:

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


    【解决方案1】:

    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 *)
    

    【讨论】:

      【解决方案2】:

      根据上面的模型,用

      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]

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-08
        • 1970-01-01
        • 2015-07-19
        • 1970-01-01
        • 1970-01-01
        • 2022-10-05
        相关资源
        最近更新 更多