免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一般区域二重、三重积分MATLAB计算方法这里讨论的计算方法指的是利用现有的MATLAB函数来求解,而不是根据具体的数值计算方法来编写相应程序。目前最新版的2009a有关于一般区域二重积分的计算函数quad2d(详细介绍见/viewthread.php?tid=873479),但没有一般区域三重积分的计算函数,而NIT工具箱似乎也没有一般区域三重积分的计算函数。 本文目的是介绍一种在7.X版本MATLAB(不一定是2009a)里求解一般区域二重三重积分的思路方法。需要说明的是,上述链接里已经讨论了一种求解一般区域二重三重积分的思路方法,就是将被积函数“延拓”到矩形或者长方体区域,但是这种方法不可避免引入很多乘0运算浪费时间。因此,新的思路将避免这些。由于是调用已有的MATLAB函数求解,在求一般区域二重积分时,效率和2009a的quad2d相比有一些差距,但是相对于延拓函数的做法,效率大大提高了。下面结合一些简单例子说明下计算方法。diff(x) 如果x是向量,返回向量x的差分;如果x是矩阵,则按各列作差分diff(x,k) k阶差分q=polyder(p) 求得由向量p表示的多项式导函数的向量表示qFx=gradient(F,x) 返回向量F表示的一元函数沿x方向的导函数F(x),其中x是与F同维数的向量z=trapz(x,y) x表示积分区间的离散化向量;y是与x同维数的向量,表示被积函数;z返回积分的近似值z=guad(fun,a,b,tol) 自适应步长Simpson积分法求得Fun在区间a,b上的定积分,Fun为M文件函数句柄,tol为积分精度z=dblquad(fun,a,b,c,d,tol,method) 求得二元函数Fun(x,y)的重积分z=triplequad(fun,a,b,c,d,e,f,tol,method) 求得三元函数Fun(x,y,z)的重积分 譬如二元函数f(x,y) = x*y,y从sin(x)积分到cos(x),x从1积分到2,这个积分可以很容易用符号积分算出结果 1. syms x y2. int(int(x*y,y,sin(x),cos(x),1,2) 结果是 -1/2*cos(1)*sin(1)-1/4*cos(1)2+cos(2)*sin(2)+1/4*cos(2)2 = -0.635412702399943如果你用的是2009a,你可以用 1. quad2d(x,y) x.*y,1,2,(x)sin(x),(x)cos(x),AbsTol,1e-12)得到上述结果。 如果用的不是2009a,那么你可以利用NIT工具箱里的quad2dggen函数。 那么我们如果既没有NIT工具箱用的也不是2009a,怎么办呢?答案是我们可以利用两次quadl函数,注意到quadl函数要求积分表达式必须写成向量化形式,所以我们构造的函数必须能接受向量输入。见如下代码 1. function IntDemo2. function f1 = myfun1(x)3. f1 = zeros(size(x);4. for k = 1:length(x)5. f1(k) = quadl(y) x(k)*y,sin(x(k),cos(x(k);6. end7. end8. y = quadl(myfun1,1,2)9. endmyfun1函数就是构造的原始被积函数对y积分后的函数,这时候是关于x的函数,要能接受向量形式的x输入,所以构造这个函数的时候考虑到x是向量的情况。利用arrayfun函数(7.X后的版本都有这个函数,不了解这个函数的朋友可以查看帮助文档,或者搜索本版)可以将IntDemo函数精简成一句代码: 1. quadl(x) arrayfun(xx) quadl(y) xx*y,sin(xx),cos(xx),x),1,2)上面这行代码体现了用MATLAB7.X求一般区域二重积分的一般方法。可以这么理解这句代码:首先 1. (x) arrayfun(xx) quadl(y) xx*y,sin(xx),cos(xx),x)定义了一个关于x的匿名函数,供quadl调用求最外重(x从1到2的)积分,这时候,x对于 1. arrayfun(xx) quadl(y) xx*y,sin(xx),cos(xx),x) 就是已知的了。而 1. (xx) quadl(y) xx*y,sin(xx),cos(xx)定义的是对于给定的xx,求xx*y关于y的积分函数,这就相当于数学上积完第一重y的积分后得到一个关于xx的函数而 1. arrayfun(xx) quadl(y) xx*y,sin(xx),cos(xx),x)只是对 1. (xx) quadl(y) xx*y,sin(xx),cos(xx)加了一个循环的壳,保证“积完第一重y的积分后得到一个关于xx的函数”能够接受向量化的xx的输入,从而能够被quadl调用。有了这个模板,我们可以方便求其他一般积分区域(上下限是函数)形式的二重积分,例如被积函数f = (x,y) exp(sin(x)*ln(y),y从5*x积分到x2,x从10积分到20。用quad2d,上面介绍的方法,还有dblquad帮助文档里给的延拓函数的方法 1. tic,y1 = quad2d(x,y) exp(sin(x).*log(y),10,20,(x)5*x,(x)x.2),toc2. tic,y2 = quadl(x) arrayfun(x) quadl(y) exp(sin(x).*log(y),5*x,x.2),x),10,20),toc3. tic,y3 = dblquad(x,y) exp(sin(x).*log(y).*(y=5*x & y=x.2),10,20,50,400),toc4. y1 =5. 9.368671342614414e+0036. Elapsed time is 0.021152 seconds.7. y2 =8. 9.368671342161189e+0039. Elapsed time is 0.276614 seconds.10. y3 =11. 9.368671498376889e+00312. Elapsed time is 1.674544 seconds.可见上述方法在2009a以外的版本中不失为一种方法,起码效率高于dblquad帮助文档里推荐的做法。更重要的是,这给我们求解一般区域三重积分提供了一种途径。由于时间太晚了,求一般区域三重积分的方法留待下来有时间再写。 对于积分补充一点,有人经常会问对于有参数的积分怎么做。问题:y=sin(a*x)在不同的a参数情形下如何计算x从pi/4,pi/2的积分这里给出个matlab的数值积分函数的一个用法 1. a = 0.1:0.1:1;2. result = zeros(1,length(a);3. for i = 1: length(a)4. result (i)=quadl(x,a) sin(a*x),pi/4,pi/2,a(i)5. endquadl类函数在输入其自身的5个参数外,还可以将被积函数的除被积变量外的其他函数参数按照顺序放在函数参数后面。 上述用法需要注意quadl函数自身的参数需要写全,比如示例中的两个需要写上,其代表的参数含义可参考help文档。quadl(fun,a,b,tol,trace) with non-zero trace shows the values of fcnt a b-a q during the recursion. 上述用法quadl函数的help文档中没有给出,但在Anonymous Functions的介绍中有说明,包括rocwoods所说的多重匿名函数PS:另外这个问题当然也可以采用其他常规的方法,如应用符号工具箱及多重循环技术分 + 3 技术分 发短消息 加为好友 rocwoods 当前离线 帖子1183积分2865技术分150 技术分研学币1286 研学币学历研究方向职业所在地在线时间91 小时注册时间2005-9-13最后登录2009-8-30前面讨论的一般二重积分的例子: 1. quadl(x) arrayfun(xx) quadl(y) xx*y,sin(xx),cos(xx),x),1,2)写成模板即: 1. quadl(x) arrayfun(xx) quadl(y) 被积二元函数f(xx,y),y的积分下限表达式g1(xx),y的积分上限表达式g2(xx),x),x积分下限值,x积分上限值)现在来看一般区域三重积分的做法,有两种思路,一种是quadl+quad2d函数,这需要2009a来支持,另一个是用三个quadl函数。前者还可细分成先quad2d后quadl,以及先quadl后quad2d。我们可以得到三种模板,同时结合f(x,y,z) = x*y*z ;z从x*y到2*x*y积分,y从x到2*x积分,x从1到2积分这个简单的三重积分例子说明 1. 模板1:quadl(x) arrayfun(xx) quad2d(被积函数f(xx,y,z)关于y,z变量的函数句柄,y积分下限y1(xx),y积分上限y2(xx),z积分下限z1(xx,y),z积分上限z2(xx,y),x),x积分下限值,x积分上限值)2. 实例:quadl(x) arrayfun(xx) quad2d(y,z) xx.*y.*z,xx,2*xx,(y) xx*y,(y) 2*xx*y),x),1,2)3. 模板2:quad2d(x,y) arrayfun(xx,yy) quadl(被积函数f(xx,yy,z)关于z变量的函数句柄,z积分下限z1(xx,yy),z积分上限z2(xx,yy),x,y),x积分下限值,x积分上限值,y积分下限y1(x),y积分上限y2(x)4. 实例:quad2d(x,y) arrayfun(xx,yy) quadl(z) xx.*yy.*z,xx*yy,2*xx*yy),x,y),1,2,(x)x,(x)2*x)5. 模板3:quadl(x) arrayfun(xx) quadl(y) arrayfun(yy) quadl(被积函数f(xx,yy,z)关于z变量的函数句柄,z积分下限z1(xx,yy),z积分上限z2(xx,yy),y),y积分下限y1(xx),y积分上限y2(xx),x),x积分下限值,x积分上限值)6. 实例:quadl(x) arrayfun(xx) quadl(y) arrayfun(yy) quadl(z) xx.*yy.*z,xx*yy,2*xx*yy),y),xx,2*xx),x),1,2)模板使用说明:x,y,z是积分变量,模板中除了用语言描述的参量用相应表达式替换掉外,其余结构保持不变。大家可以实际运行这三个实例,都比用triplequad 拓展函数法快得多,而且triplequad拓展函数得到的结果还不精确,在我的电脑上结果如下: 1. tic;quadl(x) arrayfun(xx) quad2d(y,z) xx.*y.*z,xx,2*xx,(y) xx*y,(y) 2*xx*y),x),1,2),toc2. tic;quad2d(x,y) arrayfun(xx,yy) quadl(z) xx.*yy.*z,xx*yy,2*xx*yy),x,y),1,2,(x)x,(x)2*x),toc3. tic;quadl(x) arrayfun(xx) quadl(y) arrayfun(yy) quadl(z) xx.*yy.*z,xx*yy,2*xx*yy),y),xx,2*xx),x),1,2),toc4. tic;triplequad(x,y,z) x.*y.*z.*(z=x.*y&y=x),1,2,1,4,1,16),toc5. ans =6. 179.29697. Elapsed time is 0.037453 seconds.8. ans =9. 179.296910. Elapsed time is 0.223533 seconds.11. ans =12. 179.296913. Elapsed time is 0.090477 seconds.14. ans =15. 178.930116. Elapse
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年沙溪镇城市建设和管理局招聘道班工作人员的备考题库附答案详解
- 中国信达河南分公司2026年招聘备考题库及参考答案详解
- 2026年深圳市建筑工务署面向社会公开招聘员额人员备考题库及完整答案详解一套
- 2026年青海物产爆破技术服务有限公司招聘备考题库带答案详解
- 2026年未央区大明宫社区卫生服务中心招聘备考题库及答案详解一套
- 中共西藏自治区委员会政策研究室2026年度急需紧缺人才引进备考题库附答案详解
- 2026年长三角赵巷新兴产业经济发展(上海)有限公司招聘备考题库及参考答案详解1套
- 中国保险保障基金有限责任公司2026年校园招聘备考题库及参考答案详解一套
- 2026年深圳市大鹏新区葵涌办事处公开招聘编外人员备考题库及一套参考答案详解
- 2026年玉林市玉州区城西街道社区卫生服务中心招聘编外人员备考题库完整参考答案详解
- 2026年及未来5年市场数据中国汽车车身电子控制行业全景评估及投资规划建议报告
- 征信修复协议书
- 黑龙江省哈尔滨市五区2025-2026学年八年级(五四学制)上学期期中语文试题(含答案)
- 2026年宁夏贺兰工业园区管委会工作人员社会化公开招聘备考题库及参考答案详解1套
- 2025-2026学年教科版三年级科学上册期末阶段综合培优卷
- 电子数据取证分析师安全培训水平考核试卷含答案
- 上海市园林工程估算指标(SHA2-12-2025)
- 涉水工程影响国家基本水文测站影响评价分析报告
- 黄芪中药课件
- 沈阳盛京军胜农业发展科技有限公司及所属企业2025年面向社会招聘备考题库带答案详解
- 运营总监2025年年底工作总结及2026年度工作计划
评论
0/150
提交评论