Численное интегрирование Полиномы Лежандра MATLAB

Полиномы Лежандра реализованы в MATLAB как векторы, где вы также получаете все связанные полиномы Лежандра, вычисленные в определенной точке x. Таким образом, я не знаю, как я могу использовать эти функции внутри интеграла. Мой вопрос:

Как я могу оценить (ЧИСЛЕННО ВЫЧИСЛЕННЫЙ (!)) интеграл от -1 до 1 по n-му полиному Лежандра в Matlab?

EDIT: поскольку я получил ответ, который на самом деле не то, что я хочу: я хочу использовать реализацию полиномов Лежандра в MATLAB, потому что другие предложения могут быть очень нестабильными.


person Pritam Bemis    schedule 22.09.2014    source источник
comment
Функции Matlab для численного интегрирования: trapz и cumtrapz.   -  person thewaywewalk    schedule 22.09.2014
comment
@thewaywewalk да, но я не понимаю, как заставить его интегрировать полином Лежандра.   -  person Pritam Bemis    schedule 22.09.2014


Ответы (2)


n=3 % degree of Legendre polynomial
step=0.1 % integration step
trapz(legendre(n,-1:step:1)')*step

это должно делать то, что вы хотите

person yakoudbz    schedule 22.09.2014

Как упоминал @thewaywewalk, вы можете использовать trapz для численной интеграции.

Полиномы Лежандра степени n определяются как:

введите здесь описание изображения

Поэтому вы можете определить их в Matlab следующим образом:

sym x % You probably have to define x as being symbolic since you integrate as a function of x.
x = -1:0.1:1;

n = 1; Change according to the degree of the polynomial.

F = (x.^2)-1).^n;

Pol_n = (1./((2.^n).*factorial(n))).*diff(F,x,n) % n is the degree of the polynomial

Затем с помощью trapz :

Output = trapz(x,Pol_n)

Это должно вас завести.

person Benoit_11    schedule 22.09.2014
comment
нет, я хотел бы использовать их так, как они реализованы в MATLAB, так как это прямое определение очень нестабильно (численно). См. здесь mathworks.de/de/help/matlab/ref/legendre. html - person Pritam Bemis; 22.09.2014