1

我有一个代表概率分布的数据点列表。我需要整合这个分布。但是,由于我没有函数并且只有一组数据点,因此我想出了以下代码来表示概率分布:

dList1 = Import["Z-1.txt", "Table"];
dList2 = Import["Z_over-1.txt", "Table"];

dDist[X_,sym_] := (

  dList = 0;

  If[sym,
    dList = dList1;
  ,
    dList = dList2;
  ];

  val = 0;

  If[Abs[X] < Pi,
    i = 2;
    While[dList[[i]][[1]] < X, i++];

    width = dList[[i]][[1]] - dList[[i-1]][[1]];

    difX = dList[[i]][[1]] - X;
    difY = dList[[i]][[2]] - dList[[i-1]][[2]];

    val = dList[[i-1]][[2]] + (1-(difX/width)) difY;
  ];

  Return[val];
);

其中数据点集在文本文件中。

执行以下命令:

Plot[dDist[x, True], {x, -1, 1}]

给出了这个:

绘图[dDist[x, True], {x, -1, 1}]

鉴于,执行此操作:

NIntegrate[dDist[x, True], {x, -1, 1}]

评估为零,以及此警告: 警告

我尝试增加 MinRecursion 无济于事。我不确定该怎么做,并且愿意接受任何建议,包括修改 dDist 函数。

4

1 回答 1

0

没有您的数据可玩,我建议使用表格来创建在不连续处分离的分段函数。NIntegrate 应该处理那些没有问题的。

于 2012-12-13T02:47:40.017 回答