Skip to content

MATLAB - 积分

积分是微积分中的核心概念,主要有两个应用:从导数中求函数(不定积分或反微分),以及计算某个量的总累积,例如曲线下的面积(定积分)。MATLAB 为这两种情况提供了强大且独特的工具。

  • 符号积分:用于找到积分的精确解析解。它将变量视为抽象符号,而非数值。这由符号数学工具箱 (Symbolic Math Toolbox) 中的 int 函数处理。
  • 数值积分:用于找到定积分的数值近似值。当无法找到精确解或不需要精确解时,这是必要的。现代函数是 integral。

符号积分(不定积分和定积分)

Section titled “符号积分(不定积分和定积分)”

当您需要精确的数学表达式作为结果时,符号积分是正确的选择。它需要符号数学工具箱。

% 声明符号变量
syms x t n
% 不定积分
F = int(f, x) % 对函数 f 关于变量 x 进行积分
% 定积分
A = int(f, x, a, b) % 对 f 关于 x 从 a 到 b 进行积分

让我们求解 f(x) = ax^2 + sin(x) 的不定积分。

syms x a
% 定义函数
f = a*x^2 + sin(x);
% 计算不定积分
F = int(f, x)
% 注意:MATLAB 的符号积分不添加积分常数 '+ C'。

MATLAB 返回精确的解析结果:

F =
(a*x^3)/3 - cos(x)

让我们计算曲线 y = x^3 从 x=0 到 x=2 的精确面积。

syms x
% 计算定积分
area = int(x^3, x, 0, 2)
% 要从符号结果获取数值,请使用 double()
double_area = double(area);

结果是:

area =
4

当处理没有简单反导数的复杂函数,或者处理数值数据而非符号表达式时,您必须使用数值积分。现代推荐的函数是 integral。

弃用通知:quad、quadl 和 quadgk 等旧函数不再推荐使用。integral 函数更健壮,通常更快,应在所有新代码中使用。

% 使用函数句柄定义要积分的函数
fun = @(x) ... your_expression_in_x ...;
% 计算积分
Q = integral(fun, xmin, xmax)

最佳实践:使用匿名函数 (@(x) ...) 是为 integral 定义被积函数的标准且最有效的方法。它避免了符号变量的开销,并且可读性强。

让我们找出高斯曲线 f(x) = exp(-x^2) 从 -Inf 到 Inf 下方的面积。这是一个经典积分,其解析值为 sqrt(pi)。

% 1. 将被积函数定义为匿名函数
gaussian_fun = @(x) exp(-x.^2);
% 2. 指定积分上下限
xmin = -Inf;
xmax = Inf;
% 3. 计算数值积分
area = integral(gaussian_fun, xmin, xmax);
% 让我们用已知的解析解进行验证
analytical_solution = sqrt(pi);
fprintf('Numerical Result: %f\n', area);
fprintf('Analytical Result: %f\n', analytical_solution);

输出显示了高度精确的数值近似:

area =
1.7725
Numerical Result: 1.772454
Analytical Result: 1.772454

可视化您正在积分的函数通常很有帮助。现代的 fplot 函数非常适合绘制表达式或函数句柄。

弃用通知:ezplot 函数不推荐用于新代码。fplot 具有更优的控制和性能,应优先使用。

% 定义函数句柄
f = @(x) x .* sin(x);
% 定义积分上下限
a = 0;
b = 2*pi;
% 计算积分
result = integral(f, a, b);
% 绘制函数以进行可视化
figure;
fplot(f, [a, b]);
hold on;
% 填充曲线下方的区域以表示积分
x_fill = linspace(a, b, 200);
y_fill = f(x_fill);
fill(x_fill, y_fill, 'c', 'FaceAlpha', 0.3); % 'c' 代表青色
title('Integral of f(x) = x*sin(x) from 0 to 2*pi');
xlabel('x');
ylabel('f(x)');
grid on;
legend('f(x)', 'Integrated Area');

这段代码不仅计算积分,还生成了一个清晰、专业的绘图,直观地展示了积分的概念。