MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   资料存档 (https://www.labfans.com/bbs/forumdisplay.php?f=72)
-   -   在MATLAB中如何从符号表达式转换为向量 (https://www.labfans.com/bbs/showthread.php?t=26315)

poster 2019-12-14 20:13

在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 我计划根据解决问题的方式添加第三(或可能第四)输入。我猜我只需要要采样的向量的长度和端点即可。



[B]回答:[/B]

如果我对您的理解正确,那么您已经使用符号工具箱构造了Lagrange插值多项式,现在希望通过值向量对其进行求值。一种方法是使用函数[B][URL="http://www.mathworks.com/help/toolbox/symbolic/sym2poly.html"]sym2poly[/URL][/B]提取符号多项式的系数,然后使用[B][URL="http://www.mathworks.com/help/techdoc/ref/polyval.html"]polyval[/URL][/B]对其进行求值。另外,您可以使用[URL="http://www.mathworks.com/help/toolbox/symbolic/matlabfunction.html"]matlabFunction[/URL]将符号表达式转换为常规的Matlab函数。或使用[URL="http://www.mathworks.com/help/toolbox/symbolic/subs.html"]sub[/URL]代替数字值“ x”。

但是,最好完全避免使用符号工具箱,而直接构造Lagrange插值多项式的系数,或者最好还是完全使用其他插值方案。函数[B][URL="http://www.mathworks.com/help/techdoc/ref/interp1.html"]interp1[/URL][/B]可能是一个不错的起点。



[url=https://stackoverflow.com/questions/4951071]更多&回答...[/url]


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

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