【问题标题】:How can I compute the coefficients of a polynomial from a function handle that evaluates the polynomial in matlab?如何从在 matlab 中评估多项式的​​函数句柄计算多项式的系数?
【发布时间】:2016-06-30 18:47:09
【问题描述】:

我有一个 Matlab 函数,它以非显式方式在一个点上计算多项式(即,我无法访问它的系数)

y = @(t) P(t)   

有没有一种方法可以计算它的系数(通过插值或其他方式),以便我可以使用 Matlab 根函数找到它的根。

有一种使用符号变量的方法,但我想知道是否有不使用符号计算的解决方案:

 syms y ; 
 coefficients=sym2poly(feval(P,y));  

谢谢

【问题讨论】:

  • 你知道多项式的次数吗?
  • @Shai 我知道最多20个

标签: matlab


【解决方案1】:

您可以使用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

如您所见,当我们高估度数时,高阶系数为零。

【讨论】:

  • @YacineE.Faris 如果您估计您的学位最多为 20,则需要在此演示代码中设置 d=20; 而不是 5。
猜你喜欢
  • 2013-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多