Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
我正在研究一个将为给定的有序对集合生成多项式插值的函数。当前,您在一个向量中输入节点点的索引,在第二个向量中输入要插值的函数的值。然后,我为拉格朗日多项式生成一个符号表达式,该符号表达式会对该点集进行插值。我希望能够从此符号形式转换为矢量形式,以便与测试功能等进行比较。也就是说,我有一些东西根据某些符号变量x生成多项式P(x)。然后,我想将此多项式采样为一个向量,并在linspace(-1,1,1000)上获取多项式的值。如果有可能,我该怎么办?
我想我将包含到目前为止的代码: function l_poly = lpoly(x,f) % Returns the polynomial interpolant as computed by lagrange's formula syms a n=size(x,2); l_poly_vec = 1; l_poly=0; for k=1:n, for l=1:n, if (k ~= l) l_poly_vec=l_poly_vec*(ax(l))/(x(k)-x(l)); end end l_poly=l_poly+f(k)*l_poly_vec; l_poly_vec = 1; end 我计划根据解决问题的方式添加第三(或可能第四)输入。我猜我只需要要采样的向量的长度和端点即可。 回答: 如果我对您的理解正确,那么您已经使用符号工具箱构造了Lagrange插值多项式,现在希望通过值向量对其进行求值。一种方法是使用函数sym2poly提取符号多项式的系数,然后使用polyval对其进行求值。另外,您可以使用matlabFunction将符号表达式转换为常规的Matlab函数。或使用sub代替数字值“ x”。 但是,最好完全避免使用符号工具箱,而直接构造Lagrange插值多项式的系数,或者最好还是完全使用其他插值方案。函数interp1可能是一个不错的起点。 更多&回答... |
![]() |
![]() |