欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    Matlab编程技巧二则_代西武.pdf

    • 资源ID:70332574       资源大小:788.09KB        全文页数:3页
    • 资源格式: PDF        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Matlab编程技巧二则_代西武.pdf

    ?文章编号:1004-6011(2008)02-0059-02Matlab 编程技巧二则代西武(北京建筑工程学院 理学院,北京?100044)摘?要:通过两个示例,研究了 Matlab 编程的向量化方法,并且与一般的编程方法进行比较,发现向量化编程确实很简单.关键词:Matlab;向量化;编程中图分类号:TP319文献标志码:ATwo Tips in Matlab ProgrammingDai Xiwu(School of Science,BU CEA Beijing 100044)Abstract:The vectorization programming method in Matlab is studied by two examples.Compared tothe popular programming method,the vectorization programming method is very simple.Key words:MATLAB;vectorization;programming?收稿日期:2007-04-14作者简介:代西武(1963?),男,副教授,硕士,研究方向:计算机科学、图论、数学建模.?我们学习计算机编程,一般是从BASIC、C 语言等开始的,对数组或矩阵的操作运算都是用循环语句来实现的,比较麻烦,并且受到了一些限制,如:变量(特别是数组变量)在使用之前必须定义、只能对数组的单个元素进行存储操作等.而 Matlab 中的矩阵运算很丰富,也很灵活,对矩阵的操作运算非常方便,可以对矩阵进行整体操作,在用 Matlab 编写程序时,应该摒弃原来的思维习惯,充分利用 Mat?lab 矩阵的整体操作功能,即学会?向量化?编程.下面以两个例子说明向量化编程方法,并且与一般的编程方法进行比较,发现向量化编程确实简单.1?矩阵的副转置在线性代数里,我们对矩阵的转置是很熟悉的,也就是将一个矩阵的第一行变为第一列,第二行变为第二列,?,直到最后一行变为最后一列,这样得到的新矩阵就是原来矩阵的转置.下面我们给出矩阵的副转置的定义.定义:对于给定的矩阵 A,将其第一行颠倒后变为最后一列,第二行颠倒后变为倒数第二列,?,直到最后一行颠倒后变为第一列,这样得到的新矩阵称为原来矩阵的副转置,记为 AS.其实,对于方阵而言,其副转置,可以理解为是按照副对角线对称得到的矩阵.下面的例子是矩阵A 及其副转置AS.A=129821399314976978,AS=863279799989141312下面的程序段给出了计算矩阵副转置的三种方法:%Initial the matrix a.a=12?98?213?99?314?97?69?7?8第 24 卷 第 2期2008年 6月北 京 建 筑 工 程 学 院 学 报Journal of Beijing University of Civil Engineering and ArchitectureVol.24 No.2Jun.2008%The first method,i.e.C language version.m,n=size(a);d=zeros(n,m);for i=1:m?for j=1:n?d(n-j+1,m-i+1)=a(i,j);?endend%T he second method,i.e.Vectorization pro?gramming by using the Matlab functions.c=fliplr(a);c=flipud(c);c=c?%T he third method,i.e.Vectorization pro?gramming.b=a(end:-1:1,end:-1:1)?从程序段中,可以看出这三种方法的特点:第一种方法是按照 C 语言的思想方法编写出来的,用到了二重循环,比较繁琐,在 Matlab 编程时应当避免使用这样的方法.第二种方法是向量化编程,有三个语句,利用了 Matlab 的两个函数 fliplr、flipud,第三个语句是求矩阵的转置,此方法比较简单,并且思路也很清楚.第三种方法也是向量化编程,只是一个语句,就计算出矩阵 a 的副转置,存放在矩阵 b里,这种方法很简单,只是利用了 Matlab 的关键字end,并且计算了矩阵的转置,是 Matlab 编程中提倡的方法.2?将矩阵里的某些行颠倒问题的提出:给一个矩阵,其元素本应该都是大于零的,但由于某些行的元素较少,就将这些行的非零元素排在相应行的左边,右边的空位置以 0 补齐.如矩阵 AA=3520113026390112200056776699现在的任务是将含有零的行左右颠倒,并且保持相应行的起始元素为非零元素,零元素还排在右边保持不动.如:A 矩阵经过将含有零元素的行左右颠倒后得到矩阵 BB=3520113093620221100056776699下面,我们给出解决这一问题的两个不同的程序段,首先给出用 C 语言的思想方法编写出的 Mat?lab 程序段如下:%Chose some lines,to flip the non-zeros elementsby left and right way.%The first version,i.e.the C language version.a=3?5?20?11?30;2?6?3?9?0;11?22?0?0?0;5?6?77?66?99;m,n=size(a);te=zeros(1,n);for i=1:m?if a(i,n)=0?k=0;?for j=n:-1:1?if a(i,j)=0?k=k+1;?te(k)=a(i,j);?end?end?for j=1:k?a(i,j)=te(j);?end?end?end注意到,此程序段有这样的特点:整体是一个双重循环,对单个的元素进行操作,比较复杂.计算后的结果矩阵还存放在矩阵 a 里.其次,给出具有 Matlab 特点的向量化编程如下:%Chose some lines,to flip the non?zeroselements byleft and right way.%The second version,i.e.Vectorization program?ming.(下转第 63 页)60北 京 建 筑 工 程 学 院 学 报2008 年qkxk+f(k,xk)yk,所以由条件?知(J?(?),y)=0,因此 J?(?)=?,所以?是J 的一个临界点.由条件?中的?k f?u(k,0)知存在?1 0,当|u|?1时,f(k,u)u?k+?1,其中?1=12(?-r)0,所以 F(k,u)?12(?k+?1)u2,|u|?1.所以当 x?V1=span?1,?2,?N-1并且?x?1时,根据文献 1 中的(3?11)式有J(x)?-?12?x?,(6)这说明?是J 的一个非极小临界点.又因为 f?u(k,0)-qk,所以存在?2 0,?2 0,当|u|?2时,f(k,u)u?-qk+?2,所以 F(k,u)?12(-qk+?2)u2,|u|?2.于是当 x?V2=span?N 并且?x?2时,J(x)=-12xTAx+12?Nk=1qk|xk|2+?Nk=1Fk(k,xk)?12?Nk=1qk|xk|2+12?Nk=1(-qk+?2)|xk|2=12?2?x?2.(7)由(6)及(7)式,根据引理 1?4 知?是J 的一个同调非平凡临界点.再由条件?、?及引理 1?3 知 J 在H 上有下界,并且满足 P?S?条件.于是,由引理1?5知 J 在H 上至少有三个临界点,所以问题(1)至少有三个不同的解.参考文献:1?Liang H,Weng P.Existence and multiple solutions forsecond?order difference boundary value problem via criti?cal point theoryJ.J.Math.Anal.Appl,2007(326):511-5202?Liu J,Su J.Remarks on multiple nontrivial solutions forquasi?linear resonant problems J.J.Math.Anal.Ap?pl,2001(258):209-2223?张恭庆.临界点理论及其应用 M.上海:上海科学技术出版社,1985 责任编辑:佟启巾(上接第 60 页)a=3?5?20?11?30;2?6?3?9?0;11?22?0?0?0;5?6?77?66?99;m,n=size(a);for i=1:m?if a(i,n)=0?a(i,a(i,:)0)=fliplr(a(i,a(i,:)0);?endend注意到,此程序段有以下特点:整体是一个单循环,循环体是一个语句,非常简单.因为我们是对某些行的元素进行整体操作,所以循环体就只含有一个语句.计算后的结果矩阵仍然存放在矩阵 a 里.用到了 Matlab 里的函数fliplr,也用到了逻辑矩阵 a(i,a(i,:)0)等 Matlab的特有功能.3?结束语Matlab软件以其功能强大、操作简单而被公认为是准确、可靠、优秀的科学和工程计算软件,近些年来愈加流行.但是缺少研究介绍 Matlab 向量化编程方面的资料和书籍,上面研究的只是两个示例,希望能够对应用 Matlab 软件的人员有所启发和帮助.参考文献:1?MathWorks.Matlab 7.0.20042?张志涌,杨祖樱.Matlab 教程M.北京:北京航空航天大学出版社,20063?刘宁元,李小平.数学绘图实验中如何选择 Matlab 函数 J.电脑知识与技术(学术交流),2007,14(05)责任编辑:佟启巾63?第 2 期王庆云:非线性二阶差分方程边值问题的多解性

    注意事项

    本文(Matlab编程技巧二则_代西武.pdf)为本站会员(asd****56)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开