MATLAB中的梯形数值积分(不使用trapz函数)
梯形数值积分简介
梯形数值积分是一种用于求解定积分近似值的方法。它也被称为梯形法则。在梯形数值积分方法中,我们使用梯形来计算曲线下的面积。
在梯形法则中,我们要积分的总区间被分成较小的子区间。然后,使用梯形近似每个子区间下的曲线面积。之后,通过子梯形面积之和来估计曲线下的总面积。这将是定积分的近似值。
梯形法则公式
以下表达式是梯形数值积分的公式,它给出了定积分的近似值。
$$\mathrm{\int_{a}^{b}f(x)dx\approx \frac{h}{2}[f(a)+2\lbrace{^{n-1}_{i=1}} f(x_{i})+f(b)\rbrace]}$$
其中,
$$\mathrm{x_{i}=a+ih}$$
$$\mathrm{h=\frac{(b-a)}{n}}$$
这里,“h”是步长或每个子区间的宽度,“n”是子区间的数量,“a”是积分的下限,“b”是积分的上限。
MATLAB中不使用'trapz'函数的梯形数值积分
在MATLAB中,我们可以使用内置函数“trapz”来数值逼近定积分。但是,在本文中,我们将学习不使用“trapz”函数实现梯形数值积分的方法。
为此,让我们在MATLAB中考虑一些示例程序。
问题(1):使用15个子区间估计曲线$\mathrm{^{2}_{0}(\frac{1}{1+x^{3}})dx}$下的面积。
示例
% MATLAB program demonstrate the trapezoidal numerical integration without using trapz function. % MATLAB program to find area under the curve ∫_0^2 1/(1+x^3) dx using 15 subintervals. % Create a dynamic variable x by using syms function syms x % Specify the lower and upper limits of the integration a = 0; b = 2; % Specify the number of subintervals n = 15; % Define the function to integrate fun1 = 1 / (1+x^3); % Create a function of string containing in fun1 fun = inline(fun1); % h is the step size h = (b - a) / n; % Create a variable S1 that stores the sum of first and last subintervals S1 = fun(a) + fun(b); % Create a variable S that stores the sum of all the subintervals from 1 to (n-1) S = 0; for i = 1:1:n-1 xi = a + (i * h); S = S + fun(xi); end % Apply the formula to perform the numerical integration using Trapezoidal Rule I = (h / 2) * (S1 + 2 * S); % Display the result of the integration disp('Area under the curve 1/(1+x^3) = '); disp(I);
输出
Area under the curve 1/(1+x^3) = 1.0898
解释
在这个MATLAB程序中,函数“fun1”指定了我们要积分的函数。变量“a”和“b”分别定义了积分的下限和上限。函数“inline”生成创建了一个包含在函数“fun1”中的字符串的函数“fun”。然后,调用表达式“h”来计算步长。之后,我们计算第一个和最后一个子区间的和,并将总和存储在“S1”中。然后,我们指定一个变量“S”来存储从1到(n-1)的所有子区间的和。之后,我们使用梯形法则公式执行数值积分。最后,我们调用“disp”函数来显示结果。
问题(2):使用10个子区间估计曲线 $\mathrm{^{\pi}_{0}(sin(x))dx}$下的面积。
示例
% MATLAB program demonstrate the trapezoidal numerical integration without using trapz function. % MATLAB program to find area under the curve ∫_0^π sin(x) dx using 10 subintervals. % Create a dynamic variable x by using syms function syms x % Specify the lower and upper limits of the integration a = 0; b = pi; % Specify the number of subintervals n = 10; % Define the function to integrate fun1 = sin(x); % Create a function of string containing in fun1 fun = inline(fun1); % h is the step size h = (b - a) / n; % Create a variable S1 that stores the sum of first and last subintervals S1 = fun(a) + fun(b); % Create a variable S that stores the sum of all the subintervals from 1 to (n-1) S = 0; for i = 1:1:n-1 xi = a + (i * h); S = S + fun(xi); end % Apply the formula to perform the numerical integration using Trapezoidal Rule I = (h / 2) * (S1 + 2 * S); % Display the result of the integration disp('Area under the curve sin (x) = '); disp(I);
输出
Area under the curve sin (x) = 1.9835
结论
这就是关于在MATLAB中不使用“trapz”函数执行梯形数值积分的所有内容。上述MATLAB示例程序说明了不使用“trapz”函数执行梯形数值积分的简单实现。