Matlab: как вычислить определенный интеграл функции по нескольким пределам? - PullRequest
2 голосов
/ 16 октября 2011

Предположим:

z = [0.4 0.5 0.75]'  
function y = myfunct(x)  
y = quad(@sin, 0, x)

Я бы хотел вычислить определенный интеграл от sin (x) от 0 до 0,4, до 0,5 и 0,75, используя:

myfunct(z)

Однако Matlab возвращает:

??? Error using ==> quad at 70  
The limits of integration must be scalars.  

Буду благодарен за любые конструктивные предложения.

Ответы [ 2 ]

2 голосов
/ 16 октября 2011

Вы можете использовать функцию arrayfun в последних версиях MATLAB:

z = [0.4 0.5 0.75]';
y = arrayfun(@(upperLim)(quad(@sin,0,upperLim)),z);
1 голос
/ 16 октября 2011

Вы также можете использовать quadv для этого.НО, вместо того, чтобы создавать вектор пределов интеграции, создайте функцию со значением массива, чтобы при интеграции каждого элемента диапазон интеграции составлял от 0 до 1.

Точнее, вы хотите интегрировать sin(х) от х = 0 до я.Это то же самое, что интегрирование sin (uz) * z от u = 0 до 1 (u-замена).Сделайте функцию массива

F = @(u) [sin( .4 * u) * .4, sin( .5 * u ) * .5, sin( .75 * u ) * .75 ];

Затем выполните

quadv(F,0,1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...