如何总结由导入数据集的元素组成的函数?
How can I sum up functions that are made of elements of the imported dataset?
查看代码和错误。我已经尝试过 Do, For,... 但它不起作用。
代码 + 来自 Mathematica 的错误:
导入生存概率 _{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
如果没有完全相同的数据文件来使用,我们每个人通常很容易犯下对方无法重现或理解的错误。
根据您的数据集快照,我在 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 sheet 来尝试这个示例,看看您是否会得到与我相同的结果。
希望这足以让您取得进步。
查看代码和错误。我已经尝试过 Do, For,... 但它不起作用。
代码 + 来自 Mathematica 的错误: 导入生存概率 _{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
如果没有完全相同的数据文件来使用,我们每个人通常很容易犯下对方无法重现或理解的错误。
根据您的数据集快照,我在 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 sheet 来尝试这个示例,看看您是否会得到与我相同的结果。
希望这足以让您取得进步。