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

时间:2015-10-28 20:55:22

标签: matlab function integration polynomials

我想整合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不是函数句柄。

非常感谢帮助!

1 个答案:

答案 0 :(得分:0)

是的,p2不是函数句柄 - 它是一个符号表达式,但是integral执行数字集成并需要一个返回浮点值的函数句柄。即使p2是函数句柄,乘法函数句柄(例如funct*p2)也无效。此外,funct需要进行矢量化。

而不是poly2sym,您可以使用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

返回4.533333333333333。或者您可以使用int符号计算此特定积分:

p = [2,3,4,5];
syms x;
funct = x^2;
p2 = poly2sym(p,x);
int(funct*p2,x,-1,1)

返回68/15的确切有理值(分别使用vpadouble转换为十进制或浮点数。)