如何积分 p(x)*f(x) 其中 p(x) 是多项式而 f(x) 是函数?软件

How to integrate p(x)*f(x) where p(x) is a polynomial and f(x) is a function? MATLAB

我想对 p(x)*f(x) 求积分,其中 p(x) 是多项式,f(x) 是函数。我在 MATLAB 工作。 我在向量中有多项式的系数。

p=[2,3,4,5];
funct=@(x) xˆ2;

我知道如何自积分函数,也知道如何自积分多项式。但是,我就是找不到任何关于如何计算乘积积分的信息。

这是我尝试过的:

p2=poly2sym(p)
integral(funct*p2,-1,1)

但 p2 不是函数句柄。

感谢帮助!

是的,p2 不是一个函数句柄——它是一个符号表达式,但是 integral 执行 数值 积分并且需要一个函数句柄 returns 浮点值。即使 p2 是一个函数句柄,乘法函数句柄(例如 funct*p2)也是无效的。此外,funct 需要矢量化。

而不是像这样 poly2sym, you can evaluate your integral numerically with polyval

p = [2,3,4,5];
funct = @(x)x.^2;                  % use element-wise power to vectorize
p2 = @(x)polyval(p,x);
integral(@(x)funct(x).*p2(x),-1,1) % evaluate two handles into one

其中 returns 4.533333333333333。或者您可以使用 int:

象征性地计算这个特定的积分
p = [2,3,4,5];
syms x;
funct = x^2;
p2 = poly2sym(p,x);
int(funct*p2,x,-1,1)

其中 returns 68/15 的精确有理值(分别使用 vpa or double 转换为小数或浮点数)。