为了指导你,我将构建一些(方形)矩阵函数
%// 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)
为了将解决方案推广到任意域,我们可以在 (x,z) 中构建一个新函数
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 将包含所有积分,存储在单元格的一维数组中。
作为检查,我们可以通过调用获得 (x,z) = (0,0) 处的结果
C{sub2ind([11 21], 6, 11)}