Чтобы направить вас устрою некоторые (квадратные) матричные функции
%// Problem size.
n = 3;
%// Auxiliary constant matrices.
D1 = rand(n, n);
D2 = rand(n, n);
D3 = rand(n, n);
D4 = rand(n, n);
%// Matrix functions and product.
A = @(x,y) x^2*D1.^2 + y*D2;
B = @(y,z) (log(y)+z)*D3.^3 - z*sin(D4);
P = @(x,y,z) A(x,y)*B(y,z);
Таким образом P
является функцией трех переменных, теперь мы будем интегрировать его в y, когда x и z равны 0.
a = 0;
b = 1;
integral(@(y) P(0,y,0), a, b, 'ArrayValued', true)
Для обобщения решения произвольных областей мы можем построить новую функцию в (х, г)
Int = @(x,z) integral(@(y) P(x,y,z), a, b, 'ArrayValued', true);
и определяют сетку
x = linspace(-1, 1, 11);
z = linspace(-2, 2, 21);
[X, Z] = meshgrid(x, z);
Теперь мы можем вычислить интеграл по всей сетке.
C = arrayfun(Int, X(:), Z(:), 'UniformOutput', false);
Таким образом C
будет содержать все интегралы, которые хранятся в массиве 1D клеток.
В качестве проверки мы можем получить результат в (х, г) = (0,0) по телефону
C{sub2ind([11 21], 6, 11)}
Я опечатался: А и В 2-мерных массивах – user2969317
Я рекомендую работать на нем в бит себя и задать более конкретный вопрос. Если кто-то здесь не решил точную проблему, о которой вы спрашиваете, маловероятно, что сообщество stackoverflow сможет помочь. trapz, вероятно, сработает для вас, поэтому поиграйте с ним и посмотрите, что вы можете придумать самостоятельно – Trogdor