Skip to content

MATLAB - 二重积分

积分是微积分中的一个基本概念,用于计算面积、体积和总累积量等。虽然有些函数可以进行解析积分,但许多实际问题需要使用数值积分来近似求解。

MATLAB 提供了一套强大的数值积分器,用于计算单重、二重和三重积分,旨在处理各种函数和积分域。

  • 单重积分,$$\int_a^b f(x) , dx$$,计算二维曲线下的面积。
  • 二重积分,$$\iint_R f(x,y) , dA$$,计算三维区域 R 上表面下的体积。
  • 三重积分,$$\iiint_V f(x,y,z) , dV$$,计算超空间体积或在三维体积 V 上累积量。

现代 MATLAB 中用于数值积分的主要函数是:

  • integral(fun, xmin, xmax):用于单重积分。
  • integral2(fun, xmin, xmax, ymin, ymax):用于二重积分。
  • integral3(fun, xmin, xmax, ymin, ymax, zmin, zmax):用于三重积分。

对于所有这些函数,fun 是一个函数句柄(function handle),通常使用 @ 语法定义。例如:f = @(x,y) x.^2 + y.^2;。

integral2 函数数值计算函数 fun(x,y) 在平面区域上的二重积分。

% 对于矩形区域
q = integral2(fun, xmin, xmax, ymin, ymax)
% 对于非矩形区域(y 限制取决于 x)
q = integral2(fun, xmin, xmax, ymin, ymax)
% 带有附加选项
q = integral2(fun, xmin, xmax, ymin, ymax, Name, Value)
  • fun:待积分函数的句柄。它必须是向量化的(vectorized),这意味着它可以接受 x 和 y 的数组作为输入。
  • xmin,xmax:x 的积分限制,必须是有限的标量。
  • ymin,ymax:y 的积分限制。它们可以是标量(用于矩形区域)或取决于 x 的函数句柄(用于非矩形区域)。

计算在由 $$0 \leq x \leq 1$$ 和 $$0 \leq y \leq 2$$ 定义的矩形区域上,曲面 $$f(x,y) = x^2 + y^2$$ 下方的体积。

% 1. 定义向量化函数句柄
fun = @(x, y) x.^2 + y.^2;
% 2. 定义积分限制
xmin = 0;
xmax = 1;
ymin = 0;
ymax = 2;
% 3. 计算二重积分
volume = integral2(fun, xmin, xmax, ymin, ymax);
% 4. 显示结果
fprintf('The calculated volume is: %f\n', volume);
% 输出:计算出的体积为:3.333333

让我们在由 x 轴、直线 $$y=2x$$ 和直线 $$x=1$$ 围成的三角形区域上积分函数 $$f(x,y) = e^{-x^2}y$$。

积分限制为:$$0 \leq x \leq 1$$ 和 $$0 \leq y \leq 2x$$。

% 1. 定义向量化函数句柄
fun = @(x, y) exp(-x.^2) .* y;
% 2. 定义 x 限制(外层积分)
xmin = 0;
xmax = 1;
% 3. 定义 y 限制为 x 的函数句柄(内层积分)
ymin = @(x) 0;
ymax = @(x) 2*x;
% 4. 计算积分
result = integral2(fun, xmin, xmax, ymin, ymax);
% 5. 显示结果
fprintf('The integral over the triangle is: %f\n', result);
% 输出:三角形区域上的积分值为:0.632121

你可以使用 Name,Value 对来控制积分的精度:

  • 'RelTol':相对容差,默认值为 1e-6。
  • 'AbsTol':绝对容差,默认值为 1e-10。

例如,要请求更高的精度:

q = integral2(fun, xmin, xmax, ymin, ymax, 'AbsTol', 1e-12, 'RelTol', 1e-9);

MATLAB 的积分器是自适应的,通常可以处理积分域边界处的奇异点。然而,对于复杂情况或域内部的奇异点,你可能需要将积分拆分为多个部分以避免问题点。

'Method' 选项允许你选择积分算法('auto'、'tiled'、'iterated')。默认值 'auto' 通常是最佳选择,因为它会根据提供的限制选择最优方法。