您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > Matlab分支和循环.
1Matlab与科学计算计算机学院刘咏梅Email:liuyongmei@hrbeu.edu.cn2Whatcharacteristicsmustanalgorithmhave?一个算法必须具备的5个特性:(1)有穷性(Termination)。有穷性是指算法需在有穷步骤、有穷时间内结束。(2)确定性(Definiteness)。确定性是指每个步骤都有确切的意义,相同的输入有相同的输出。(3)有效性(Effectiveness)。有效性是指可通过已实现的运算在有限次完成,或叫可行性。(4)输入(Input)。(5)输出(Output)。3m文件简介•用户如想灵活应用Matlab去解决实际问题,充分调用Matlab的科学技术资源,就需要编辑m文件。•包含Matlab语言代码的文件称为m文件,其扩展名为m。•编辑m文件可使用各种文本编辑器。•m文件的语法类似于c语言,但又有其自身特点。它只是一个简单的ASCII码文本文件,执行程序时逐行解释运行程序。4m文件的类型m文件有两类:独立的m文件—称命令文件可调用m文件—称函数文件(1)命令文件—简单的m文件命令文件实际上是一串指令的集合,与在命令窗口逐行执行文件中的所有指令,其结果是一样的。没有输入输出参数。(2)matlab内置函数文件matlab自定义的函数文件称内置函数文件。(3)函数m文件—需要输入变量,返回输出变量matlab用户可以根据需要编辑自己的m文件,它们可以像库函数一样方便的调用,从而极大地扩展了matlab的能力。注:Matlab的函数极其使用将在第四章介绍)5第三章MATLAB编程(分支和循环)•Branching•Loops6Objectives(BranchingandLoops)TheLogicalDataTypeRelationalOperators(==,~=,,,=,=)LogicOperators(&,&&,|,||,xor,~)LogicalFunctions(ischar,isempty,….)Branching–(if-else)Statement–switchStatement–try-catchStatementLoops–whileStatement–forStatement7TheLogicalDataType(true,false)Logicalscanhavethevalues0and1correspongdingtofalseandtrue,respectively.Anynon-zerorealelementofinputarrayXforfunctionlogicalisconvertedtoalogical1whilezerosinXbecomelogical0.8RelationalOperators(==,~=,,,=,=)Somerelationaloperationsandtheirresults9RelationalOperators(==,~=,,,=,=)ComparearraybyavalueComparearraybyanotherone(ofthesamesize)Becarefulbecauseofroundofferrors10舍入误差(roundofferrors)•数值计算时由于计算是有限位的(计算机的字长有限),所以在进行数值计算的过程中,对原始数据、计算得到的中间结果和最后结果的数据都要进行舍入,要使用四舍五入等规则取近似值,因而使计算过程有误差。这种误差称为舍入误差。•例如1/3写成0.3333,π≈3.1416等等,都有舍入误差。补充:11其它类型的误差•模型误差:建模过程是对实际问题的抽象和归纳。这种数学描述上的近似所引入的误差称为模型误差。•观测误差:确定数学模型中的各种参数需要实际观测到的数据,观测值与真实值之间的误差称为观测误差。•截断误差:数字计算机只能对离散数值进行有限次运算,因为对许多数学运算,如微积分、无穷级数求和等极限过程采用有限项的截断或计算方法上的近似而产生的误差称为截断误差。例如,采用矩形公式和梯形公式计算积分的近似值。补充:12LogicOperatorsOperatorOperation&(逻辑与)LogicalANDforarrays&&(逻辑与)LogicalANDforlogicalexpressions|(逻辑或)LogicalORforarrays||(逻辑或)LogicalORforlogicalexpressionsxor(逻辑异或)LogicalexclusiveOR~(逻辑非)LogicalNOT13LogicOperators•EXAMPLE14LogicalFunctions若是字符数组则为真若是空矩阵则为真若是Inf则为真若是NaN则为真若是数值数组则为真15分支语句AnOverview•在复杂的计算中,常常需要根据表达式的情况判断是否满足条件,来确定下一步该做什么。•MATLAB提供了if-else-end结构和switch-case-otherwise结构来实现分支功能。•try-catch结构是分支选择结构的一种特殊形式。如果程序的bugs在try语句块中,那么程序将会执行catch语句块。try-catch语句可以用于捕捉错误。16分支语句Branches:a)ifStatement17Branches(if-Statement)Optional这种结构实现了一种多路选择,比较复杂。可替代另一种分支结构switch-case-end语句。18Branches(if-Statement)Example1:Writeaprogramthatdeterminewhetheraquadraticequation:hasreal(identical/different)orcomplexroots.(Useinputcommandforenteringthecoefficients(a,b,c)oftheequationanddispcommandstodisplaytheoutput).Theprogramcancalculatestherootsineachcase.Testtheprogramonthefollowingequations:19SolutionWecanwriteaM-filelikethis:20Solution21Solution22Branches(if-Statement)Example2:evaluatingaFunctionofTwoVariablesTestitusingthefollowing(x,y)values:23分支语句Branches:b)switchStatement24Branches(switch-Statement)Theswitchstatementsyntaxisameansofconditionallyexecutingcode.Inparticular,switchexecutesonesetofstatementsselectedfromanarbitrarynumberofalternatives.Theswitch_exprandcase_exprmaybeascalarorastringOptional25Branches(switch-Statement)Remarks:Thecaseexpressioncouldbemorethanoneenclosedby{}Atmostonecodeblockcanbeexecuted.Iftheswitch_expmatchesmorethancase_expthefirstoneisexecuted.26Branches(switch-Statement)Example:27Branches(switch-Statement)Example28分支语句Branches:c)try/catchStatement29Branches(try/catch)Thetry/catchstatementisdesignedtotraperrors.InMATLABwhenanerrorisencounteredwhilerunningtheprogramtheprogramexecutionisaborted.Usetry/catchstatementtorunapartoftheprogramsusceptibletoproduceerrorwhenexecuted.MATLABwilltrytoexecutethispart.Ifanerrorisproduced,theninsteadofaborting,itexecutesthepartoftheprogramfoundinthecatchstatement.Ifnoerrorisproducedinthetryblock,thecatchblockwillnotbeexecuted.Theprogrammercanhandleerrorsintheprogramwithoutcausingtheprogramtostop.30Branches(try/catch)31Branches(try/catch)Example32循环语句AnOverview•在实际问题中,有时需要有规律的重复运算,相应的程序中就需要反复的执行某些语句。一组被重复执行的语句称为循环体。每循环一次,都要进行判断,判断的依据称为循环的终止条件。•for语句循环的特点是判断条件通常是对循环次数的判断,一般循环次数预先设定好;而while语句的控制条件是一个逻辑判断语句,因此,它的适用范围更广一些。33循环语句Loops:a)while-loopStatement34Loops(while-loop)Thewhileloopstatementsyntaxisablockofstatementsisrepeatedaslongassomeconditionexpressionissatisfied.•Iftheexpressionisnon-zero(true),thecodeblockwillbeexecuted,andthencontrolwillreturntothewhilestatement.Theprocesswillberepeateduntiltheexpressionbecomezero(false).35循环语句Loops:b)for-loopStatement36Loops(for-loop)Theforloopstatementsyntaxisaloopthatexecutesablockofstatementsaspecifiednumberoftimes.For-loophastheformasfollows:•Wheretheindexistheloopvariableandexpristheloopcontrolexpression,whichusuallyhastheformofavectorinnotationfirst:incr:last.Thestatementsbetweentheforstatementandtheendstatementareknownasthebodyoftheloop.37Loops(for-loop)•SomespecificexamplesControlexpressionisa1×10array.Controlexpressionisa1×5array.Controlexpressionisa1×3array.Controlexpressionisa2×3array.38Example•Writeaprogramtofindtheindexofthemaximumvalueinamatrix.–First,writeyourprogramwithafor…end
本文标题:Matlab分支和循环.
链接地址:https://www.777doc.com/doc-2887188 .html