第8章 MATLAB 数值积分与数值微分实例解析
matlab微分与积分
[I,n]=quadl('fname',a,b,tol,trace) 其中参数的含义和quad函数相似,只是用高
阶自适应递推法,该函数可以更精确地求 出定积分的值,且一般情况下函数调用的 步数明显小于quad函数,从而保证能以更 高的效率求出所需的定积分值。
(3) fft(X,[],dim)或fft(X,N,dim):这是对于矩 阵而言的函数调用格式,前者的功能与 FFT(X)基本相同,而后者则与FFT(X,N) 基本相同。只是当参数dim=1时,该函数 作用于X的每一列;当dim=2时,则作用于 X的每一行。
数值微积分以及数值分析
2020/5/17
1
数值微分
数值微分的实现 两种方式计算函数f(x)在给定点的数值导数:1.用多项式或
者样条函数 2. 利用数据的有限差分
在MATLAB中,没有直接提供求数值导数的函数,只有计 算向前差分的函数diff,其调用格式为:
DX=diff(X):计算向量X的向前差分,DX(i)=X(i+1)-X(i), i=1,2,…,n-1。
I=
2.4674
2020/5/17
8
3.Trapz : 计算梯形面积的和来计算定积分 在MATLAB中,对由表格形式定义的函数关系的求定积分
问题用trapz(X,Y)函数。其中向量X,Y定义函数关系 Y=f(X)。
例 用trapz函数计算定积分。 命令如下:
X=1:0.01:2.5; Y=exp(-X); %生成函数关系数据向量 trapz(X,Y) ans =
• Help dell2
2020/5/17
3
数值积分
数值积分基本原理 求解定积分的数值方法多种多样,如简单 的梯形法、辛普生(Simpson)•法、牛顿- 柯特斯(Newton-Cotes)法等都是经常采用 的方法。它们的基本思想都是将整个积分 区i积=1间分,2[问,a…,题b,n]分就,成分其n解中个为x子1=求区a和,间问x[nx+题1i,=x。bi+。1],这样求定
MATLAB数值积分及算例
6.2.3 被积函数由一个表格定义
(要求积分,但是函数没有直接给出,只是自己在 做实验时得到的一组相关联的数据)
在MATLAB中,对由表格形式定义的函数关系的求定积分问 题用trapz(X,Y)函数。其中向量X,Y定义函数关系Y=f(X)。
例4 用trapz函数计算定积分。
命令如下:
X=1:0.01:2.5; Y=exp(-X); trapz(X,Y)
例2 求定积分:
x sin x
dx
0 (1 cos x cos x)
(1) 被积函数文件fx.m。
function f=fx(x) f=x.*sin(x)./(1+cos(x).*cos(x));
(2) 调用函数quad8求定积分。
I=quad8('fx',0,pi)
例3
分别用quad函数和quad8函数求定积分
global ki;ki=0; I=dblquad('fxy',-2,2,-1,1) ki
6.2 数值积分的实现方法
6.2.1 变步长辛普生法
基于变步长辛普生法,MATLAB给出了quad函数来 求定积分。该函数的调用格式为:
[I, n] = quad('fname', a, b, tol, trace) 其中fname是被积函数名。a和b分别是定积分的下 限 和 上 限 。 tol 用 来 控 制 积 分 精 度 , 缺 省 时 取 tol=0.001。trace控制是否展现积分过程,若取非0则 展现积分过程,取0则不展现,缺省时取trace=0。 返回参数I即定积分值,n为被积函数的调用次数。
2.5 exdx
1
的近似值,并在相同的积分精度下,比较函数的调
数值积分与数值微分matlab
2 数值微分
2.1 数值差分与差商
任意函数f(x)在x点的导数是通过极限定义的:
f ( x h) f ( x ) f ( x) lim h 0 h f ( x ) f ( x h) f ( x) lim h 0 h f ( x h / 2) f ( x h / 2) f ( x) lim h 0 h
( x2k , f 2k ), ( x2k 1, f 2k 1 ), ( x2k 2 , f 2k 2 ) k 0,1, , m 1
数值积分的实现方法
1.变步长辛普生法 基于变步长辛普生法,MATLAB给出了quad 函数来求定积分。该函数的调用格式为: [I,n]=quad('fun',a,b,tol,trace) 其中fun是被积函数名。a和b分别是定积分 的下限和上限。tol用来控制积分精度,缺 省时取tol=10-6。返回参数I即定积分值,n为被积函数
1
2
x2 / x
sin( x y)dxdy
2
clear • f=@(x,y)(exp(-x.^2/2).*sin(x.^2+y)); • I=dblquad(f,-2,2,-1,1) I= 1.5745
1 2
I
1 2
e
x2 / x
sin( x y)dxdy
2
例6 计算三重定积分 命令如下: fxyz=@(x,y,z)(4*x.*z.*exp(-z.*z.*y-x.*x)); triplequad(fxyz,0,pi,0,pi,0,1,1e-7) ans= 1.7328
数值积分
• • • •
z1=trapz(x,y1); z2=trapz(x,y2); z=z2-z1; area=(z/(18*18))*40*40
matlab-008
Newton-cotes法 Newton-cotes法求数值积分用quadl()函数,其原理为:
I =
∫
b a
nh n f ( x ) dx ≈ ⋅ ∑ Ai f ( a + ih ) N i=0
其中,Ai为科茨数,可以查表得到 梯形法调用格式为:I=quadl(‘fun’,a,b,tol) ,即用牛顿-科 茨法计算被积函数fun在(a,b)区间内的定积分;tol指定了 迭代精度,默认为.000001
矩阵除法求解
例:采用直接法解方程组:
3 1 0 1 1 −5 2 6 −4 0 1 −1 1 x1 13 7 x2 − 9 = x3 6 −1 x −4 4 0
-0 .1 5 8 7 1 . 1 5 8 6 X = 0 0
-0 .6 4 9 4 -0 .1 2 1 4 + k1 0 .7 3 3 3 -0 .1 6 0 8
+ k2
0 .0 1 8 2 -0 .9 0 0 5 -0 .0 3 8 1 0 .4 3 2 9
例:>>I=quadl('exp(-0.4*x).*cos(x+pi/3)',0,3*pi) I= -0.5874
重积分 二重积分用dblquad()函数求数值积分,其调用格式为: I=dblquad(fun,xmin,xmax,ymin,ymax,tol,method) 三重积分用triplequad()函数求数值积分,其调用格式为: I=triplequad(fun,xmin,xmax,ymin,ymax,zmin,zmax,tol)
第8章 积分的MATLAB求解
无穷限的反常积分
对于无穷区间上的反常积分通常有两种解决方法,下面分别介绍: 无穷区间逼近 为叙述方便,仅考虑积分 的求解,由于
因此,取
且
,有
上式中的每个积分都是正常积分,利用前面介绍的方法求解。当
时停止计算。
变量替换
在某些情况下,可以通过变量替换将无穷区间的积分变成有限区间的积分。例如,用 变量替换
1.不定积分的定义
如果在区间 上,可导函数
称为被积函数,
称为被积表达式, 称为积分变量,也
。
2.不定积分的几何意义
函数 的一个原函数 的图像称为 的一条积分曲线。对于任意常数 , 表示的是一族曲线,我们称这个曲线族为 的积分曲线族。因此, 在几何上表示的是 的积分曲线族,而 正是积分曲线的斜率。积分曲线族中的每一条曲线在对应于同一横 坐标 处的切线都有相同的斜率 ,所以在这些点处,它们的切线相互平行,并且任意 两条积分曲线的纵坐标之间相差一个常数。因此,积分曲线族中的每一条曲线都可以由曲线 沿 轴上下移动而得到,如图所示。
1.无穷限的反常积分
这时也称反常积分 收敛;如果上述极限不存在,则函数 就没有意义,习惯上称为反常积分 发散,这时记号 类似地,设函数 在无穷区间 在区间 上连续,取 上的反常积分,记作 ,如果极限 ,即
在区间 上的反常积分 不再表示数值。 存在,则称此极限为函
数
这时也称反常积分 设函数 在区间
收敛;如果上述极限不存在,则称反常积分 发散。 上连续,如果反常积分 和 都收敛,则称上述两反常积分之和为函数 在无穷区间 上的反常积分,记作
这时也称反常积分 类似地,设函数 存在,则定义
收敛,如果上述极限不存在,则称反常积分 发散。 在 上连续,点 为函数 的瑕点,取 ,如果极限
(完整版)MATLAB数值积分解读
6.3 二重定积分的数值求解
使用MATLAB提供的dblquad函数就可以直接求出 上述二重定积分的数值解。该函数的调用格式为:
I = dblquad(f,a,b,c,d,tol,trace) 该函数求f(x,y)在[a,b]×[c,d]区域上的二重定积分。 参数tol,trace的用法与函数quad完全相同。 a,b
通过对表达式尝试多种丌同的算法迚行化简以寻求符号表达式为返回的简化形式how为化简过程中使用的主要方法simple函数综合使用了下列化简方法
6 MATLAB 数值积分
定积分:函数f (x)在区间[a, b]上的定积分定义为
其中
b
n
I
a
f (x)dx lim max(xi )0 i1
f (i )xi
分的下限和上限。该函数求被积函数在区间 [a,b]上的定积分。a和b可以是两个具体的数, 也可以是一个符号表达式,还可以是无穷(inf)。 当函数f关于变量x在闭区间[a,b]上可积时,函 数返回一个定积分结果。当a,b中有一个是inf 时,函数返回一个广义积分。当a,b中有一个 符号表达式时,函数返回一个符号函数。
6.2.3 被积函数由一个表格定义
trapz(x,y) 为梯形积分法,x表示积分区间的离散化 向量,y是与x同维数的向量,表示被积函数在x处的 函数值,z返回积分值。
例4 用trapz函数计算定积分。 命令如下:
X=1:0.01:2.5; Y=exp(-X); %生成函数关系数据向量 trapz(X,Y)
运行结果为ans =64/5
用trapz求数值解,相应的Matlab代码为
clear; x=-2:0.1:2; y=x.^4; %积分步长为0.1(可改变,演示)
matlab求解微分方程数值解与解析解
matlab求解微分方程数值解与解析解微分方程是数学中的重要内容,它描述了物理、工程、经济等领域中的许多现象和问题。
在实际应用中,我们经常需要求解微分方程的解析解或数值解。
本文将以Matlab为工具,探讨如何求解微分方程并对比解析解与数值解的差异。
一、引言微分方程是描述自然界中许多现象和问题的数学语言,它包含了未知函数及其导数与自变量之间的关系。
微分方程的求解可以帮助我们了解问题的性质和变化规律,并为实际应用提供参考。
在许多情况下,微分方程的解析解很难求得,这时我们可以利用计算机进行数值求解。
二、微分方程的数值解法1.欧拉法欧拉法是最简单的数值求解微分方程的方法之一。
它通过将微分方程转化为差分方程,然后利用离散的点逼近连续的解。
具体步骤如下:(1)将微分方程转化为差分方程,即用近似的导数代替真实的导数;(2)选择初始条件,即确定初始点的值;(3)选择步长和求解区间,即确定求解的范围和步长;(4)使用迭代公式计算下一个点的值;(5)重复步骤(4),直到达到指定的求解区间。
2.改进的欧拉法欧拉法存在精度较低的问题,为了提高精度,可以使用改进的欧拉法。
改进的欧拉法是通过使用两次导数的平均值来计算下一个点的值,从而提高了数值解的精度。
3.龙格-库塔法龙格-库塔法是一种常用的数值求解微分方程的方法,它通过使用多个点的导数来逼近连续解。
龙格-库塔法的步骤如下:(1)选择初始条件和步长;(2)使用迭代公式计算下一个点的值;(3)计算下一个点的导数;(4)根据导数的值和步长计算下一个点的值;(5)重复步骤(3)和(4),直到达到指定的求解区间。
龙格-库塔法的精度较高,适用于求解一阶和高阶微分方程。
三、微分方程的解析解解析解是指能够用公式或函数表示的方程的解。
有些微分方程具有解析解,可以通过数学方法求得。
例如,一阶线性常微分方程和某些特殊类型的二阶微分方程等。
解析解的优势在于精确性和直观性,能够帮助我们深入理解问题的本质。
如何在Matlab中进行数值积分和数值解
如何在Matlab中进行数值积分和数值解在数学和工程领域,数值积分和数值解是常见的技术手段,可以帮助我们求解复杂的数学问题和实际工程中的模型。
本文将介绍如何使用Matlab进行数值积分和数值解,以及一些注意事项和常用的方法。
一、数值积分数值积分是计算定积分的近似值的方法,可以通过数值逼近或数值插值来实现。
在Matlab中,有几种常用的函数可以用于数值积分,比如trapz、quad等。
1. trapz函数trapz函数是用梯形法则计算积分的函数。
它的使用方法是将要积分的函数作为输入的第一个参数,x轴上的点作为输入的第二个参数。
例如,要计算函数f(x)在区间[a, b]上的积分,可以使用以下代码:result = trapz(x, f(x));2. quad函数quad函数是使用自适应数值积分算法计算积分的函数。
它的使用方法是将要积分的函数作为输入的第一个参数,积分区间的下限和上限作为输入的第二个和第三个参数。
例如,要计算函数f(x)在区间[a, b]上的积分,可以使用以下代码:result = quad(@(x) f(x), a, b);二、数值解数值解是使用数值方法求解复杂的数学问题或实际工程中的模型的近似解。
在Matlab中,有几种常用的函数可以用于数值解,比如fsolve、ode45等。
1. fsolve函数fsolve函数是用于求解非线性方程组的函数。
它的使用方法是将非线性方程组表示为一个函数,然后将该函数作为输入的第一个参数。
例如,要求解方程组f(x) = 0,可以使用以下代码:x = fsolve(@(x) f(x), x0);其中x0是方程的初始猜测值。
2. ode45函数ode45函数是求解常微分方程初值问题的函数。
它的使用方法是将微分方程表示为一个函数,然后将该函数作为输入的第一个参数。
例如,要求解常微分方程dy/dx = f(x, y),可以使用以下代码:[t, y] = ode45(@(t, y) f(t, y), tspan, y0);其中tspan是时间区间,y0是初始条件。
matlab中的微分方程的数值积分
MATLAB是一种流行的数学软件,用于解决各种数学问题,包括微分方程的数值积分。
微分方程是许多科学和工程问题的数学描述方式,通过数值积分可以得到微分方程的数值解。
本文将介绍在MATLAB中如何进行微分方程的数值积分,以及一些相关的技巧和注意事项。
一、MATLAB中微分方程的数值积分的基本方法1. 常微分方程的数值积分在MATLAB中,常微分方程的数值积分可以使用ode45函数来实现。
ode45是一种常用的数值积分函数,它使用4阶和5阶Runge-Kutta 方法来求解常微分方程。
用户只需要将微分方程表示为函数的形式,并且提供初值条件,ode45就可以自动进行数值积分,并得到微分方程的数值解。
2. 偏微分方程的数值积分对于偏微分方程的数值积分,在MATLAB中可以使用pdepe函数来实现。
pdepe可以求解具有定解条件的一维和二维偏微分方程,用户只需要提供偏微分方程的形式和边界条件,pdepe就可以进行数值积分,并得到偏微分方程的数值解。
二、在MATLAB中进行微分方程数值积分的注意事项1. 数值积分的精度和稳定性在进行微分方程的数值积分时,需要注意数值积分的精度和稳定性。
如果数值积分的精度不够,可能会导致数值解的误差过大;如果数值积分的稳定性差,可能会导致数值解发散。
在选择数值积分方法时,需要根据具体的微分方程来选择合适的数值积分方法,以保证数值解的精度和稳定性。
2. 初值条件的选择初值条件对微分方程的数值解有很大的影响,因此在进行微分方程的数值积分时,需要选择合适的初值条件。
通常可以通过对微分方程进行分析,或者通过试验求解来确定合适的初值条件。
3. 数值积分的时间步长在进行微分方程的数值积分时,需要选择合适的时间步长,以保证数值积分的稳定性和效率。
选择时间步长时,可以通过试验求解来确定合适的时间步长,以得到最优的数值解。
三、MATLAB中微分方程数值积分的实例以下通过一个简单的例子来演示在MATLAB中如何进行微分方程的数值积分。
第八章matlab数值积分与微分
28.02.2019
10
例8-5 计算二重定积分
(1) 建立一个函数文件fxy.m: function f=fxy(x,y) global ki; ki=ki+1; %ki用于统计被积函数的调用次数 f=exp(-x.^2/2).*sin(x.^2+y); (2) 调用dblquad函数求解。 global ki;ki=0; I=dblquad('fxy',-2,2,-1,1) ki I= 1.57449318974494 ki = 1050
28.02.2019 6
例8-2 求定积分。 (1) 被积函数文件fx.m。 function f=fx(x) f=x.*sin(x)./(1+cos(x).*cos(x)); (2) 调用函数quadl求定积分。 I=quadl('fx',0,pi) I= 2.4674
28.02.2019 7
例8-3 分别用quad函数和quadl函数求定积分的 近似值,并在相同的积分精度下,比较函数 的调用次数。
28.02.2019 11
8.2 数值微分
8.2.1 数值微分的实现
在MATLAB中,没有直接提供求数值导数的 函数,只有计算向前差分的函数diff,其调用格 式为: DX=diff(X):计算向量X的向前差分, DX(i)=X(i+1)-X(i),i=1,2,…,n-1。 DX=diff(X,n):计算X的n阶向前差分。例如, diff(X,2)=diff(diff(X))。 DX=diff(A,n,dim):计算矩阵A的n阶差分, dim=1时(缺省状态),按列计算差分;dim=2, 按行计算差分。
28.02.2019
8
3. 被积函数由一个表格定义 在MATLAB中,对由表格形式定义的函数 关系的求定积分问题用trapz(X,Y)函数。其中 向量X,Y定义函数关系Y=f(X)。 例8-4 用trapz函数计算定积分。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
编写程序example_8_end.m,得到结果如图。
-5
-10
0
5
10 x
15
20
25
30
【练1】
• • • • • • • • 编写如下程序: f1=@(x)1./x.^2; f2=@(x)x.*(x>=0&x<=1)+sin(x).*(x>1&x<2)+... +cos(x).*(x>=2&x<3)+(x.^2-3*x).*(x>=3&x<=4); f3=@(z)1./(2*z-1); I1=quadgk(f1,1,inf) I2=quadgk(f2,0,4,'waypoints',[1,2,3],'AbsTol',1e-3) I3=quadgk(f3,0,0,'waypoints',[1+i,1-i]) 运行结果: I1 =1 I2 =2.5216 I3 =-0.0000 - 3.1416i
【练2】
• • • • • • 编写如下语句: I1=dblquad(@(x,y)sin(x+y),0,2,0,pi,'quadl') I2=dblquad(@(x,y)sin(x.^2-2*y).*(x.^2/2+y.^2/3<=1),... -sqrt(2),sqrt(2),-sqrt(3),sqrt(3)) I3=triplequad(@(x,y,z)x.*sin(y+z),0,3,0,2,0,1) I4=triplequad(@(x,y,z)(sin(x.^2)+z.^2.*cos(y)).*(x.^2/2+y.^2/ 3+z.^2/4<=1),-sqrt(2),sqrt(2),-sqrt(3),sqrt(3),-2,2)
【例8-6】重积分的计算示例。
I1 = ∫
1 −1 −2
∫
2
e
− x 2 /2
sin( x + y )dxdy
2
I2 = ∫
1
−1/2 − 1− x 2 /2
∫
1− x 2 /2
e − x /2sin( x 2 + y )dydx
2
I3 = ∫
• • • • • • • • • •
2
0
∫ ∫
0
π
π
【例8-1】复化求积示例(具体题目见书本例8-1)。
• • • • • • • • 解:编写如下语句: v=simple(dsolve('Dv=g-c_d/m*v^2','v(0)=0','t')) % 微分方程解析解 f=eval(['@(t,g,m,c_d)',char(v)]); % 将符号表达式写成匿名函数 g=9.81;m=68.1;c_d=0.25; v_3=subs(v,{'t','g','m','c_d'},{3,g,m,c_d}) % 第3秒的下降速度 x1=trape(f,0,3,[],g,m,c_d) % 复化梯形公式求积 x2=simpson(@(t)f(t,g,m,c_d),0,3) % 复化辛普森公式求积 x3=Cotes(@(t)f(t,g,m,c_d),0,3) % 复化Cotes公式求积 运行结果: x1=41.9480 x2 =41.9481 x3 =41.9481
10
ϕ = arctan( f ′( x0 )) 1 x0 2 θ = R ∫0 1 + [ f ′( x)] dx
Rf ′( x0 ) x = x0 − − r sin(θ − ϕ ) 2 1 + [ f ′( x0 )] 饰物的运动轨迹为: 5 R y = f (x ) + − r cos(θ − ϕ ) 0 2 1 + [ f ′( x0 )]
【例8-3】Gauss求积方法示例。I = ∫1
• • • • • • • • • •
5
sin x dx x
解:编写如下程序求得Gauss求积数值解与解析解的误差: format short e f=@(x)sin(x)./x; % 定义被积函数 for m=1:4 I1=Gauss_legendre(f,1,5,m); % 高斯-勒让德公式求积分 I2=Gauss_Lobatto(f,1,5,m); % Gauss_Lobatto公式求积 err(1,m)=abs(I1-double(int('sin(x)/x',1,5))); % 计算绝对误差 err(2,m)=abs(I2-double(int('sin(x)/x',1,5))); % 计算绝对误差 end err % 显示误差结果 输出结果: err = 1.9400e-006 4.8918e-010 2.8755e-014 3.0192e-011 2.9093e-006 6.9217e-010 1.8661e-009 2.3371e-009
【例8-2】自适应求积方法示例(具体题目见 书本例8-9)。
• • • • • • • • • • • 解:首先编写如下被积函数描述文件Dampedsinewave.m,程序如下: function f=Dampedsinewave(t,xi) alpha=atan(-xi/sqrt(1-xi^2)); % 计算alpha f=exp(-xi*t).*cos(t*sqrt(1-xi^2)+alpha)/cos(alpha); % 求函数值 主程序: format long xi=0.1; I1=adapt_trape(@Dampedsinewave,0,20,[],xi) % 自适应梯形求积 I2=adapt_simp(@Dampedsinewave,0,20,[],xi) % 自适应辛普森求积 I3=adapt_Cotes(@Dampedsinewave,0,20,[],xi) % 自适应Cotes求积 I4=Romberg(@Dampedsinewave,0,20,[],xi) % Romberg求积 运行结果: I1 =0.302173980392894 I2 =0.302174200120611 I3 =0.302174464839673 I4 =0.302174214269305
1000, x=2 10 • 2、间断函数积分: = ∫ f ( x)dx f ( x) = −100, x=5 I 1 x 5e − x sin x, 其他 π x • 3 3、震荡积分: ( f ) = e cos1000 xdx I ∫
0
0
I • 1、无穷积分: =
∫
∞
e dx
4
x0.8
sin 5 x
解:编写如下程序: x 10 4000 2 syms x; 2000 y=exp(x^0.8)*sin(5*x); 1 %求1~4阶导数的解析解 0 0 y1=diff(y,x);y2=diff(y,x,2);y3=diff(y,x,3);y4=diff(y,x,4); -2000 h=0.05;x=0:h:10; -4000 -1 0 5 10 0 5 10 Y=subs(y);y11=subs(y1);y22=subs(y2);y33=subs(y3);y44=subs(y4); y=[y11;y22;y33;y44]; x 10 x 10 1 4 %求1~4阶导数的数值解,并和解析解比较 0.5 2 for k=1:4 0 0 [dy,dx]=diff_ctr(Y,h,k); subplot(2,2,k) -0.5 -2 plot(x,y(k,:),dx,dy,':') -1 -4 0 5 10 0 5 10 end
运行结果: I1 =1.574493189744944 I22 =0.411929546211955
I21 =0.411933530828984 I3 =3.108079443936880
【例8-7】数值微分示例(具体题目见书本例8-29)。
y=e
• • • • • • • • • • • • • •
0 t 1 − 1− t
2
运行结果: I =0.8862
1 dt 2 (1 − t )
– f=@(x)exp(-(x./(1-x)).^2)./(1-x).^2; % 定义被积函数 – I=simpson(f,eps,1-eps) % 复化辛普森公式求积分
【例8-5】quadgk()函数示例。
− x2
• 4、复数积分: = I
∫
6 − j5
2
e
− x2 − j x
sin(7 + j2) xdx
• • • • • • • • • • •
解:编写如下语句: format long f1=@(x)exp(-x.^2); % 定义被积函数 I1=quadgk(f1,0,inf) % quadgk函数求解无穷积分 f2=@(x)x.^5.*exp(-x).*sin(x); % 定义被积函数 [I2,errbnd] = quadgk(f2,1,10,'Waypoints',[2 5]) % 其中2,5为间断点 f3=@(x)exp(x).*cos(1000*x); I3_quad=quad(f3,0,pi) % quad函数求解 I3_quadgk=quadgk(f3,0,pi,'MaxIntervalCount',1000) % quadgk函数求解 i=sqrt(-1);f4=@(x)exp(-x.^2-i*x).*sin((7+2i)*x); % 定义被积函数 I4=quadgk(f4,2,6-5i) % 调用quadgk函数求解复数积分问题 运行结果: I1 =0.886226925452758 I2 =-10.940771682195063 I3_quad =-0.001476265473678 I3_quadgk =2.214067045837320e-005 I4 =-0.924460417702933 +25.792072810727394i