4第八章matlab数值积讲义分与微分
MATLAB_简介(5)MATLAB数值积分与微分

二重积分dblquad()与三重积分
0
2
[ y sin(x ) x cos(y )]dxdy
fun=inline('y*sin(x)+x*cos(y)')
Q=dblquad(fun,pi,2*pi,0,pi) Q = -9.8698 [x,y]=meshgrid(pi:.1:2*pi,0:.1:pi); z=fun(x,y); mesh(x,y,z)
>> plot(x,y,'o',x,y)
>> title('y(x) data plot') >> ylabel('y(x)'), xlabel('x') >> dy=diff(y)./diff(x); >> xd=x(1:length(x)-1); >> plot(xd,dy) >> title('Approximate derivative using diff') >> ylabel('dy/dx'), xlabel('x')
注意二者皆以后向差分计算且数据点只剩 4 个 而不是5个。而 dy/dx 的 数值微分则为 dy/dx=diff(y)./diff(x)。 因此要计算下列多项式在 [-4, 5] 区间的微分
>> x=linspace(-4,5); % 产生100个x的离散点
>> p=[1 -3 -11 27 10 -24]; %被积函数各项的系数
%函数计算的次数n
q= -0.4605 n= 53
再来看一个积分式
第8章 MATLAB数值微积分与最优化

8.1.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为被积函数的 调用次数。
例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 = 1038
Aeq=[]; beq=[]; vlb=[0;0;0;0;0;0]; vub=[];
[x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub)
例2
min z 6x1 3x2 4x3 s.t. x1 x2 x3 120 x1 30 0 x2 50 x3 20
x1 1 x2 1 0 x 3 x1 3 0 0 x 2 2 0 x3 1
120 50
• 8.3.2 整数规划 求解0-1 整数规划: x = bintprog(f) x = bintprog(f,A,b) x = bintprog(f,A,b,Aeq,beq) x = bintprog(f,A,b,Aeq,beq,x0) x = bintprog(f,A,b,Aeq,Beq,x0,options) [x,fval] = bintprog(...)
数值积分与数值微分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
数值积分与微分

a
1
8.1 数值积分 8.1.1 数值积分基本原理
求解定积分的数值方法多种多样,如简单 的 特梯 斯(形N法ew、to辛n-C普o生tes()S法im等ps都on是)•法经、常牛采顿用-的柯方 法。它们的基本思想都是将整个积分区间 [中 为a,求xb1]=分和a,成问xn题n个+。1=子b区。间这[样xi,求xi+定1],积i分=1问,2,题…就,n分,解其
%求函数f的导函数g在假设点的导数
plot(x,dpx,x,dx,'.',x,gx,'-'); %作图
a
14
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
就可以直接求出二重定积分的数值 解。该函数的调用格式为:
I=dblquad(f,a,b,c,d,tol,trace) 该二法函重 与数定函求积数f(xq分,uy。a)在d参完[a数全,bt相]o×l[,同c,dt。r]a区ce域的上用的
a
10
例8-5 计算二重定积分 (1) 建立一个函数文件fxy.m:
ki =
1038
a
11
8.2 数值微分 8.2.1 数值差分与微分 8.2.2 数值微分的实现 在M算A向T前LA差B分中的,函没数有d直iff接,提其供调求用数格值式导为数:的函数,只有计 DXi==1d,i2ff,…(X,)n:-1计。算向量X的向前差分,DX(i)=X(i+1)-X(i), DX=diff(X,n):计算X的n阶向前差分。例如,
Matlab中的数值积分和微分方法

Matlab中的数值积分和微分方法在数学和工程领域,数值积分和微分是解决问题的常见方法之一。
而在计算机科学中, Matlab作为一种强大的数值计算软件,提供了许多数值积分和微分的函数,使得这两个问题的解决变得更加简单和高效。
本文将探讨 Matlab 中常用的数值积分和微分方法,包括不定积分、定积分、数值微分和高阶数值微分。
我们将逐一讨论这些方法的原理和使用方法,并展示一些实际的应用案例,以帮助读者更好地理解和应用这些技术。
一、不定积分不定积分是指求一个函数的原函数。
在 Matlab 中,我们可以使用 `int` 函数来实现不定积分的计算。
例如,如果我们想求解函数 f(x) = x^2 的不定积分,可以使用下面的代码:```syms x;F = int(x^2);```这里的 `syms x` 表示将 x 定义为一个符号变量,`int(x^2)` 表示求解函数 x^2 的不定积分。
得到的结果 F 将是一个以 x 为变量的符号表达式。
除了求解简单函数的不定积分外,Matlab 还支持求解复杂函数的不定积分,例如三角函数、指数函数等。
我们只需要将函数表达式作为 `int` 函数的参数即可。
二、定积分定积分是指求函数在一个闭区间上的积分值。
在 Matlab 中,我们可以使用`integral` 函数来计算定积分。
例如,如果我们想计算函数 y = x^2 在区间 [0, 1] 上的积分值,可以使用下面的代码:```y = @(x) x^2;result = integral(y, 0, 1);```这里的 `@(x)` 表示定义一个匿名函数,`integral(y, 0, 1)` 表示求解函数 y = x^2 在区间 [0, 1] 上的积分。
得到的结果 result 将是一个数值。
与不定积分类似,Matlab 还支持对复杂函数求解定积分,只需要将函数表达式作为 `integral` 函数的第一个参数,并指定积分的区间。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
12.02.2021
5
2. 牛顿-柯特斯法 基于牛顿-柯特斯法,MATLAB给出了
quad8函数来求定积分。该函数的调用格式 为:
[I,n]=quadl('fname',a,b,tol,trace) 其中参数的含义和quad函数相似,只是tol 的缺省值取10-6。 该函数可以更精确地求出 定积分的值,且一般情况下函数调用的步数 明显小于quad函数,从而保证能以更高的效 率求出所需的定积分值。
12.02.2021
4
例8-1 求定积分。
(1) 建立被积函数文件fesin.m。 function f=fesin(x) f=exp(-0.5*x).*sin(x+pi/6); (2) 调用数值积分函数quad求定积分。 [S,n]=quad('fesin',0,3*pi) S=
0.9008 n=
4第八章matlab数值积分与微分
精品jin
数值积分 数值微分
12.02.2021
2
8.1 数值积分
8.1.1 数值积分基本原理
求解定积分的数值方法多种多样,如简单 的梯形法、辛普生(Simpson)•法、牛顿-柯 特斯(Newton-Cotes)法等都是经常采用的方 法。它们的基本思想都是将整个积分区间 [a,b]分成n个子区间[xi,xi+1],i=1,2,…,n, 其中x1=a,xn+1=b。这样求定积分问题就 分解为求和问题。
12.02.2021
8
3. 被积函数由一个表格定义 在MATLAB中,对由表格形式定义的函数
关系的求定积分问题用trapz(X,Y)函数。其中 向量X,Y定义函数关系Y=f(X)。 例8-4 用trapz函数计算定积分。
12.02.2021
9
8.1.3 二重定积分的数值求解
使用MATLAB提供的dblquad函数就可以直接 求出上述二重定积分的数值解。该函数的调用 格式为:
12.02.2021
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
12.02.2021
7
例8-3 分别用quad函数和quadl函数求定积分的 近似值,并在相同的积分精度下,比较函数 的调用次数。
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阶向前差分。例如,
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
12.02.2021
diff(X,2)=diff(diff(X))。
DX=diff(A,n,dim):计算矩阵A的n阶差分,
dim=1时(缺省状态),按列计算差分;dim=2,
按行计算差分。
12.02.2021
12
谢谢观看
12.02.2021
3
8.1.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为被积 函数的调用次数。
I=dblquad(f,a,b,c,d,tol,trace) 该函数求f(x,y)在[a,b]×[c,d]区域上的二重定 积分。参数tol,trace的用法与函数quad完全相 同。
12.02.2021
10
例8-5 计算二重定积分
(1) 建立一个函数文件fxy.m:
function f=fxy(x,y)