MATLAB_简介(5)MATLAB数值积分与微分

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

和 trapz比较,quad, quad8不同之处在于这二
者类似解析式的积分式,只须设定上下限及
定义要积分 的函数;而 trapz则是针对离散点
型态的数据做积分。
我们看一简单积分式 以下为 MATLAB 的程式
>> a=0; b=0.5;
>> kq=quad('sqrt',a,b)
kq =
0.2357
而高阶微分项可以利用低阶微分项来计算,举 例来说一个二阶微分式可以表示为
对应的差分式有
第六次实习
1. 练习Matlab数值积分和数值微分: 2. 分别利用Matlab命令行trapz(x,y),
quad ('function',a,b), quad8 ('function', a, b) 和M文件形式计算以下数值积分:
>> deno=x(3:length(f))-x(1:length(f)-2); % 注意中
央差分是 x(k+1)-x(k-1)
>> df_c=num./deno;
>> xd=x(2:length(x)-1); % xd的点数只有98个
>> plot(xd,df_c)
>> title('Derivative of fifth-deg. polynomial')
应x2,x3,...,x100的点
>> plot(xd,dfb ) % 将多项式的微分项绘图 >> title('Derivative of fifth-deg. equation')
>> num=f(3:length(f))-f(1:length(f)-2); % 注意中
央差分是 f(k+1)-f(k-1)
注意二者皆以后向差分计算且数据点只剩 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]; %被积函数各项的系数
>> kq8=quad8('sqrt',a,b)
kq8 =
0.2357

clear fun=inline('1./(x.^3-2*x-5)')
2
0
1 dx 3 x 2x 5
ezplot(fun,[0,2])
[q,n]=quad(fun,0,2) % [q,n] = quad(fun,a,b,⋯) %同时返回
4 0 1 x 2 dx 3.14159
1
3. 分别利用Matlab命令行和M文件形式计算以下 函数的一阶导数(分别利用后向差分和中央差 分): exp(x)
以下的例子是针对数据组为离散型态,要注意 的是原数据所代表的函数分布并无明显的折角,
但是它的 一阶微分经数值微分计算后的微分函
数分布却有极大的曲折变化。 >> x=0:0.1:1;
>> y=[-.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56
9.48 9.30 11.2];
Matlab数值微分
若有一函数 f(x) 在x=a 的微分可表示为
上述微分项在几何上的意义为在 x=a 点的切 线斜率. 下面介绍的差分表示式,数值差分 即是用来求数值微分的方法。
差分表示法
我们知道一微分项的计算,可以在二相邻点 x+h 和 x 间函数取下列极限求得
若将原连续的空间以多个离散点取代。则上述 的极限以离散点的方式计算, 即是以下的差分 式 (difference equation)
>> 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')
Matlab数值积分
>> x=0:pi/100:pi;
>> y=sin(x);
>> k=trapz(x,y)
k=
1.9998
clear x=sort(rand(1,101)*pi); y=sin(x); trapz(x,y) ans = 1.9981
rand(1,101)产生 101个均匀随机数, 每个数都介于0-1 之间
差分表示法
上式被称为前向差分
而高阶微分项可以利用低阶微分项来计算,举例 来说一个二阶微分式可以表示为
上述提及的后向差分式
,在
MATLAB 有对应的diff 函数来计算二相邻点
的差值, 它的语法为 diff(x),其中 x代表一组
离散点 。假设有x, y(x)的数
据为 x=[1 3 5 7 9], y=[1 4 9 16 25] 则 diff(x)=[2 2 2 2], diff(y)=[3 5 7 9],
MATLAB_简介(4) MATLAB数值积分与微分
Matlab数值积分 MATLAB提供最简单的积分函数是梯形法
trapz,我们先说明梯形法语法trapz(x,y),其 中x,y分别代表数目相同 的阵列或矩阵,而y 与x的关系可以由是一函数型态(如y=sin(x)) 或是不以函数描述的离散型态。 我们看一简单积分式 以下为 MATLAB 的程式
>> f=polyval(p,x);
>> plot(x,f) % 将多项式函数绘图
>> title('Fifth-deg. equation')
>> dfb=diff(f)./diff(x); % 注意要分别计算diff(f)和diff(x) >> xd=x(2:length(x)); % 注意只有99个df值,而且是对
MATLAB 另外提供二种积分函数,它们分别
是辛普森法 quad 和Fra Baidu bibliotek顿-康兹法 quad8。三种
方法的精确度由低 而高,分别为 trapz, quad,
quad8。
由于这二种方法依据的积分法不同于梯形法, 因此它们的语法就和 trapz 不同;其语法为 quad('function',a,b) (quad8语法相同),其 中function是一已定义函数的名称(如sin, cos, sqrt, log 等),而 a, b是积分的下限和 上限。
二重积分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)
%函数计算的次数n
q= -0.4605 n= 53
再来看一个积分式
L
2
0
cos(t ) 4 sin(2t ) 1dt
2 2
Function f=len(t) f=sqrt(cos(t),^2+4*sin(2t),^2+1);
存为Len.m
>>Lenth=quad(‘Len’,0,2*pi)
相关文档
最新文档