我必须在Mathematica中实现此算法:
我的问题是我不太了解Mathematica语法,因为那里没有很多有用的示例。我做了什么:
(* Input: 4 Points*)
Array[sx, 4, 0];
Array[sy, 4, 0];
sx[0] = -1;
sy[0] = 0;
sx[1] = 0;
sy[1] = 2;
sx[2] = 1;
sy[2] = 4;
sx[3] = 3;
sy[3] = 32;
P[x,0]:=sy[0];
P[x, k_] :=
P[x, k - 1] + (sy[k] - P[sx[k], k - 1])*
Sum[(x - sx[j])/sx[k] - sx[j], {j, 0, x}];
(我尝试实现几何平均值,但由于无法计算总和而失败了。)
如何正确实现递归? (几何平均值)
最佳答案
您可以这样定义函数P:
P[x_, 0] := sy[0]
P[x_, k_] := P[x, k - 1] + (sy[k] - P[sx[k], k - 1])*
Product[(x - sx[j])/(sx[k] - sx[j]), {j, 0, k - 1}] // Simplify
像上面定义的那样设置值
sx
和sy
我们得到:In[13]:= P[x, 1]
Out[13]= 2 (1 + x)
In[14]:= P[x, 2]
Out[14]= 2 (1 + x)
In[15]:= P[x, 3]
Out[15]= 2 + x + x^3
关于recursion - 用Mathematica实现插值多项式算法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8641049/