Как интегрировать p(x)*f(x), где p(x) — многочлен, а f(x) — функция? МАТЛАБ

Я хочу интегрировать p(x)*f(x), где p(x) — многочлен, а f(x) — функция. Я работаю в МАТЛАБ. У меня есть коэффициенты многочлена в векторе.

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

Я знаю, как интегрировать функцию саму по себе, а также как интегрировать многочлен сам по себе. Однако я просто не могу найти информацию о том, как взять интеграл произведения.

Вот что я пробовал:

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

но p2 не является дескриптором функции.

Помощь приветствуется!


person user3900757    schedule 28.10.2015    source источник


Ответы (1)


Да, 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 (используйте vpa или double для преобразования в десятичную или с плавающей точкой соответственно).

person horchler    schedule 28.10.2015