- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数值积分的matlab实现
实验10 数值积分
实验目的:
1.了解数值积分的基本原理;
2.熟练掌握数值积分的MATLAB实现;
3.会用数值积分方法解决一些实际问题。
实验内容:
积分是数学中的一个基本概念,在实际问题中也有很广泛的应用。同微分一样,在《微积分》中,它也是通过极限定义的,由于实际问题中遇到的函数一般都以列表形式给出,所以常常不能用来直接进行积分。此外有些函数虽然有解析式,但其原函数不是初等函数,所以仍然得不到积分的精确值,如不定积分。这时我们一般考虑用数值方法计算其近似值,称为数值积分。
10.1 数值微分简介
设函数在可导,则其导数为
(10.1)
如果函数以列表形式给出(见表10-1),则其精确值无法求得,但可由下式求得其近似值
(10.2)
表 10-1
…… ……
一般的,步长越小,所得结果越精确。(10.2)式右端项的分子称为函数在的差分,分母称为自变量在的差分,所以右端项又称为差商。数值微分即用差商近似代替微商。常用的差商公式为:
(10.3)
(10.4)
(10.5)
其误差均为,称为统称三点公式。
10.2 数值微分的MATLAB实现
MATLAB提供了一个指令求解一阶向前差分,其使用格式为:
dx=diff(x)
其中x是维数组,dx为维数组,这样基于两点的数值导数可通过指令diff(x)/h实现。对于三点公式,读者可参考例1的M函数文件diff3.m。
例1 用三点公式计算在1.0,1.2,1.4处的导数值,的值由下表给出。
1.0 1.1 1.2 1.3 1.4 0.2500 0.2268 0.2066 0.1890 0.1736 解:建立三点公式的M函数文件diff3.m如下:
function f=diff3(x,y)
n=length(x);h=x(2)-x(1);
f(1)=(-3*y(1)+4*y(2)-y(3))/(2*h);
for j=2:n-1
f(j)=(y(j+1)-y(j-1))/(2*h);
end
f(n)=(y(n-2)-4*y(n-1)+3*y(n))/(2*h);
在MATLAB指令窗中输入指令:
x=[1.0,1.1,1.2,1.3,1.4];y=[0.2500,0.2268,0.2066,0.1890,0.1736];diff3(x,y)
运行得各点的导数值为:-0.2470,-0.2170,-0.1890,-0.1650,-0.0014。所以在1.0,1.2,1.4处的导数值分别为-0.2470,-0.1890和-0.0014。
对于高阶导数,MATLAB提供了几个指令借助于样条函数进行求导,详细使用步骤如下:
step1:对给定数据点(x,y),利用指令pp=spline(x,y),获得三次样条函数数据pp,供后面ppval等指令使用。其中,pp是一个分段多项式所对应的行向量,它包含此多项式的阶数、段数、节点的横坐标值和各段多项式的系数。
step2:对于上面所求的数据向量pp,利用指令[breaks,coefs,m,n]=unmkpp(pp)进行处理,生成几个有序的分段多项式pp。
step3:对各个分段多项式pp的系数,利用函数ppval生成其相应导数分段多项式的系数,再利用指令mkpp生成相应的导数分段多项式
step4:将待求点xx代入此导数多项式,即得样条导数值。
上述过程可建立M函数文件ppd.m实现如下:
function dy=ppd(pp)
[breaks,coefs,m]=unmkpp(pp);
for i=1:m
coefsm(i,:)=polyder(coefs(i,:));
end
dy=mkpp(breaks,coefsm);
于是,如果已知节点处的值x,y,可用下面指令计算xx处的导数dyy:
pp=spline(x,y),dy=ppd(pp);dyy=ppval(dy,xx);
例2 基于正弦函数的数据点,利用三点公式和三次样条插值分别求导,并与解析所求得的导数进行比较。
解:编写M脚本文件bijiao.m如下:
h=0.1*pi;x=0:h:2*pi;y=sin(x);
dy1=diff3(x,y);
pp=spline(x,y);dy=ppd
您可能关注的文档
最近下载
- 25题技术研发工程师岗位常见面试问题含HR问题考察点及参考回答.docx VIP
- 2025年《开学第一课》.ppt VIP
- 烟草物流师3级专业知识复习提纲下发版课件.docx
- Grundfos格兰富计量泵SMART Digital S, DDA, DDC, DDE up to 30 lph (Data Booklet)产品选型手册.pdf
- 2023年新版GMP成品运输确认.docx VIP
- 河北省阜平县石漕沟水库枢纽工程可行性研究报告的审查意见.docx
- 22G101 三维彩色立体图集.docx VIP
- 预留预埋施工.pdf VIP
- 某公司卓越绩效管理手册.pdf VIP
- 中国石化零售管理系统站级平台用户操作手册.doc VIP
文档评论(0)