Mathematica中关于Mathematica中拉格朗日插值多项式的列表操作

Mathematica中关于Mathematica中拉格朗日插值多项式的列表操作,math,wolfram-mathematica,Math,Wolfram Mathematica,我试图使用一个列表,它以一种我可以 获取该列表的长度 获取要操作的单个x和y值 我试图操纵的列表如下所示: dataTan = Table[{x, Tan[x]}, {x, -1.5, 1.5, .75}]; 这个问题是所见问题的后续问题。我最终想用mathematica编写自己的函数,生成给定点集的拉格朗日插值多项式 {{x0, y0}, ... , {xn, yn}} 我需要一些方法来访问上述各点,以便我可以使用以下代码: Sum[Subscript[y, j]*Product[If[

我试图使用一个列表,它以一种我可以

获取该列表的长度 获取要操作的单个x和y值 我试图操纵的列表如下所示:

dataTan = Table[{x, Tan[x]}, {x, -1.5, 1.5, .75}];
这个问题是所见问题的后续问题。我最终想用mathematica编写自己的函数,生成给定点集的拉格朗日插值多项式

 {{x0, y0}, ... , {xn, yn}}
我需要一些方法来访问上述各点,以便我可以使用以下代码:

Sum[Subscript[y, j]*Product[If[j != m, (x - Subscript[x, m])/
       (Subscript[x, j] - Subscript[x, m]), 1], {m, 0, k}], {j, 0, k}]
我猜你指的是a,所以

我们可以用切线函数来测试它

In[2]:= points = Table[{x, Tan[x]}, {x, -1.2, 1.2, .2}]
Out[2]= {{-1.2, -2.57215}, {-1., -1.55741}, {-0.8, -1.02964}, 
         {-0.6, -0.684137}, {-0.4, -0.422793}, {-0.2, -0.20271}, 
         {0., 0.}, {0.2, 0.20271}, {0.4, 0.422793}, 
         {0.6, 0.684137}, {0.8, 1.02964}, {1., 1.55741}, {1.2, 2.57215}}

In[3]:= Plot[Evaluate[Expand[LagrangePoly[points, x]]], {x, -1.2, 1.2}, 
     Epilog -> Point[points]]
在这种情况下,插值效果良好,与原始函数的最大偏差为

In[4]:= FindMaximum[{Abs[Tan[x] - LagrangePoly[points, x]], -1.2<x<1.2}, x]   
Out[4]= {0.000184412, {x -> 0.936711}}
在比较之前,我必须将它们都展开,因为插值多项式以有效的形式返回结果,而拉格朗日多项式以非常无效的形式返回

我们可以用切线函数来测试它

In[2]:= points = Table[{x, Tan[x]}, {x, -1.2, 1.2, .2}]
Out[2]= {{-1.2, -2.57215}, {-1., -1.55741}, {-0.8, -1.02964}, 
         {-0.6, -0.684137}, {-0.4, -0.422793}, {-0.2, -0.20271}, 
         {0., 0.}, {0.2, 0.20271}, {0.4, 0.422793}, 
         {0.6, 0.684137}, {0.8, 1.02964}, {1., 1.55741}, {1.2, 2.57215}}

In[3]:= Plot[Evaluate[Expand[LagrangePoly[points, x]]], {x, -1.2, 1.2}, 
     Epilog -> Point[points]]
在这种情况下,插值效果良好,与原始函数的最大偏差为

In[4]:= FindMaximum[{Abs[Tan[x] - LagrangePoly[points, x]], -1.2<x<1.2}, x]   
Out[4]= {0.000184412, {x -> 0.936711}}
在比较之前,我必须将它们展开,因为插值多项式以有效的形式返回结果,而我的拉格朗日多项式以非常无效的形式返回。

如果你有一个列表,那么你可以使用First@Dimensions@l。假设列表的形式为{x1,y1},{x2,y2},…},则只需使用部分[l,index]或其缩写l[[index]],即可获得位置索引处的任何x和y值

编辑:如果你想用你能想到的简单方式做事Length@l用于列表的长度。

如果您有列表,则可以使用First@Dimensions@l。假设列表的形式为{x1,y1},{x2,y2},…},则只需使用部分[l,index]或其缩写l[[index]],即可获得位置索引处的任何x和y值



编辑:如果你想用你能想到的简单方式做事Length@l查找列表的长度。

有一个函数可以查找列表的长度。它叫。。。长度:@Yoda:天空中有月亮,它叫月亮。@Yoda:啊!我非常习惯于标注,因为它可以让我查看列表中是否有格式错误。有一个函数可以查找列表的长度。它叫。。。长度:@Yoda:天空中有月亮,它叫月亮。@Yoda:啊!我已经习惯了标注,因为它可以让我查看列表中是否有格式错误。非常感谢。不过我有一些奇怪的输出。我将发布另一个关于它的问题。我希望那是好的。输出正常,我只是有一个奇怪的$符号,我以前从未见过。@MatthewKemnetz你应该投票选出对你有用的答案。。。比如说西蒙在这里。@yoda我接受它的时候以为我在这里,但我一定错过了。谢谢你的提醒!非常感谢你。不过我有一些奇怪的输出。我将发布另一个关于它的问题。我希望那是好的。输出正常,我只是有一个奇怪的$符号,我以前从未见过。@MatthewKemnetz你应该投票选出对你有用的答案。。。比如说西蒙在这里。@yoda我接受它的时候以为我在这里,但我一定错过了。谢谢你的提醒!马修,你能澄清你的问题吗?马修:我会否决你的问题,直到你解决它…@Simon,我现在就解决它@西蒙:投票支持使用XKCD!我希望我能投更多的票!马修,你能澄清你的问题吗?马修:我会否决你的问题,直到你解决它…@Simon,我现在就解决它@西蒙:投票支持使用XKCD!我希望我能投更多的票!