我有一个Matlab函数,以非显式方式评估一个点中的多项式(即,我无法访问其系数)
y = @(t) P(t)
有没有办法可以计算其系数(通过插值或其他方法),以便我可以使用Matlab根函数找到它的根。
有一种方法可以使用符号变量来实现,但我想知道是否存在不使用符号计算的解决方案:
syms y ;
coefficients=sym2poly(feval(P,y));
谢谢
答案 0 :(得分:2)
您可以使用polyfit
来拟合多项式。
假设您的多项式的次数小于或等于d
,那么您最多需要d
+ 1个点来估算系数:
P = @(t) 4*t.^2-2.*t+1; # an example of deg2 poly
d = 5; # we estimate P to of at most deg 5
x = 0:d;
y = P(x);
coeff = polyfit(x,y,d)
coeff =
-0.0000 0.0000 -0.0000 4.0000 -2.0000 1.0000
如您所见,当我们高估度数时,高阶系数为零。