查看代码和错误。我已经尝试过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
答案 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工作表来尝试此示例,并查看您是否获得了与我相同的结果。
希望这足以让你取得进步。