如何总结由导入数据集的元素组成的函数?

时间:2017-07-12 17:28:59

标签: import sum wolfram-mathematica

查看代码和错误。我已经尝试过Do,For,......而且它没有用。

来自Mathematica的

CODE +错误: 导入生存概率_ {k} p_x和_ {k} p_y(以excel计算)

px = Import["C:\Users\Eva\Desktop\kpx.xlsx"];
px = Flatten[Take[px, All], 1]; 

注意:概率_ {k} p_x可以在位置px [[k + 2,x -16]

找到
i = 0.04;

v = 1/(1 + i);

JointLifeIndep[x_, y_, n_] =   Sum[v^k*px[[k + 2, x - 16]]*py[[k + 2, y - 16]], {k , 0, n - 1}]

Part::pkspec1: The expression 2+k cannot be used as a part specification.

Part::pkspec1: The expression 2+k cannot be used as a part specification.

Part::pkspec1: The expression 2+k cannot be used as a part specification.

General::stop: Further output of Part::pkspec1 will be suppressed during this calculation.

Part of dataset (left corner of the dataset):
k\x 18  19  20
0   1   1   1
1   0.999478086278185   0.999363078716059   0.99927911905056
2   0.998841497412202   0.998642656911039   0.99858030519133
3   0.998121451605207   0.99794428814123    0.99788275311401
4   0.997423447323642   0.997247180349674   0.997174407432264
5   0.996726703362208   0.996539285828369   0.996437857252448
6   0.996019178300768   0.995803204773039   0.99563600297737
7   0.995283481416241   0.995001861216016   0.994823584922968
8   0.994482556091416   0.994189960607964   0.99405569519175
9   0.993671079225432   0.99342255996206    0.993339856748282
10  0.992904079096455   0.992707177451333   0.992611817294026
11  0.992189069953677   0.9919796017009 0.991832027835091

1 个答案:

答案 0 :(得分:3)

如果没有完全相同的数据文件,我们每个人都很容易犯错,而另一个人无法重现或理解错误。

从您的数据集快照我使用Mathematica中的Export尝试重现您的.xlsx文件。然后我尝试了以下

px = Import["kpx.xlsx"];
px = Flatten[Take[px, All], 1];
py = px; (* fake some py data *)
i = 0.04;
v = 1/(1 + i);
JointLifeIndep[x_, y_, n_] := Sum[v^k*px[[k+2,x-16]]*py[[k+2,y-16]], {k,0,n-1}];
JointLifeIndep[17, 17, 12]

并显示362.402

注意我在JointLifeIndep的定义中使用了:=而不是=。 :=和=在Mathematica中做不同的事情。 =将立即评估该定义的右侧。这可能是您收到错误的原因。

您还应该小心下标值,并确保每个下标都在1和矩阵中的行数(或列数)之间。

因此,看看您是否可以使用仅包含您显示的数据快照的Excel工作表来尝试此示例,并查看您是否获得了与我相同的结果。

希望这足以让你取得进步。