Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
 
 
主题工具 显示模式
旧 2019-12-14, 20:13   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 在MATLAB中如何从符号表达式转换为向量

我正在研究一个将为给定的有序对集合生成多项式插值的函数。当前,您在一个向量中输入节点点的索引,在第二个向量中输入要插值的函数的值。然后,我为拉格朗日多项式生成一个符号表达式,该符号表达式会对该点集进行插值。我希望能够从此符号形式转换为矢量形式,以便与测试功能等进行比较。也就是说,我有一些东西根据某些符号变量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可能是一个不错的起点。



更多&回答...
poster 当前离线   回复时引用此帖
 


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 04:57


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.