Matlab: точечный продукт интеграции

Можно ли интегрировать по векторному произведению? Например:

integral(@(x) [x,1]*[x;1],0,1)
integral(@(x) dot([x;1],[x,1]),0,1)

person Christian    schedule 04.02.2014    source источник


Ответы (1)


Проблема в том, как Matlab вызывает вашу функцию. Внутри вызывается что-то вроде fkt(0:.1:1), что невозможно с вашей функцией. Вы можете обернуть свою функцию в arrayfun, чтобы получить интеграл:

fkt=@(x) dot([x;1],[x,1])
afkt=@(a)arrayfun(fkt,a)
integral(afkt,0,1)

В то время как fkt и afkt возвращают одно и то же для скаляра (например, fkt(.3) afkt(.3)), функция afkt может обрабатывать векторные входные данные, такие как afkt(0:.1:1), чтобы получить несколько значений одновременно.

person Daniel    schedule 04.02.2014