You are on page 1of 154

‫ﻛﺎرﺑﺮد ﻛﺎﻣﭙﻴﻮﺗﺮ در ﻣﻬﻨﺪﺳﻲ‬

‫ﻣﺼﻄﻔﻲ ﻫﻤﺖآﺑﺎدي‬

‫داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﻴﺮاز‬


‫ﭘﺎﺋﻴﺰ ‪1385‬‬ ‫وﻳﺮاﻳﺶ ‪4‬‬
MATLAB ‫ﺑﺨﺶ ﻳﻚ‬

II
‫ﻓﺼﻞ ‪ 1‬ﻛﻠﻴﺎت و اﺻﻮل ‪14 .....................................................................................‬‬
‫‪ 1-1‬ﻣﻘﺪﻣﻪ ‪14..........................................................................................................................‬‬
‫واژه ‪14 ............................................................................................................................. MATLAB‬‬
‫ﺳﻴﻤﺎي ‪14 ......................................................................................................................... MATLAB‬‬
‫روش اﻳﻦ ﻛﺘﺎب ‪15 ...........................................................................................................................‬‬
‫ﻋﻼﺋﻢ و دورﭼﻴﻦ ﻫﺎي اﺳﺘﻔﺎده ﺷﺪه در ﻣﺘﻦ ‪15 ....................................................................................‬‬
‫‪ 2-1‬ﻣﺤﻴﻂ ﻛﺎر ﻣﺘﻠﺐ‪16...........................................................................................................‬‬
‫‪ 3-1‬آﻏﺎز ﻛﺎر ﺑﺎ ﻣﺘﻠﺐ ‪18.........................................................................................................‬‬
‫ﻣﺎﺗﺮﻳﺲ ‪18 ............................................................................................................................ Matrix‬‬
‫ﺑﺮدار ‪18 ............................................................................................................................................‬‬
‫آراﻳﻪ‪ ،‬ﻣﺘﻐﻴﺮ‪ ،‬ﻋﻤﻠﻴﺎت آراﻳﻪ اي ‪18 .....................................................................................................‬‬
‫ﺗﻌﺮﻳﻒ و ﻣﻘﺪار دﻫﻲ ﺑﻪ ﻳﻚ ﻣﺘﻐﻴﺮ ‪18 ................................................................................................‬‬
‫ﻣﺸﺎﻫﺪه ﻳﻚ ﻣﺘﻐﻴﺮ و ﻧﻮﺷﺘﻦ ﺗﻮﺿﻴﺢ‪19 ..............................................................................................‬‬
‫ﺑﺮدار‪ -‬ﻫﻨﺪﺳﻲ ‪19 .............................................................................................................................‬‬
‫آراﻳﻪ ﺳﻠﻮﻟﻲ ‪19 ............................................................................................................... Cell Array‬‬
‫ﺗﻮاﺑﻊ اﻧﺪازه ﮔﻴﺮ ‪20 ...........................................................................................................................‬‬
‫ﻣﺘﻐﻴﺮ داﺧﻠﻲ ‪20 .......................................................................................................................... ans‬‬
‫اﻋﻼم ﻧﻮع ﻣﺘﻐﻴﺮ‪20 ............................................................................................................................‬‬
‫‪ 4-1‬ﻧﻮﺷﺘﻦ دﺳﺘﻮرات و ﻣﺸﺎﻫﺪه ﻧﺘﺎﻳﺞ ‪20..................................................................................‬‬
‫ﭘﻨﺠﺮه ﻓﻮري و ﭘﻨﺠﺮه ﺑﺮﻧﺎﻣﻪ‪20 ..........................................................................................................‬‬
‫ﺷﻜﺴﺘﻦ ﻳﻚ دﺳﺘﻮر در ﭼﻨﺪ ﺳﻄﺮ ‪20 .................................................................................................‬‬
‫ﻧﻮﺷﺘﻦ ﭼﻨﺪ دﺳﺘﻮر در ﻳﻚ ﺳﻄﺮ‪21 ....................................................................................................‬‬
‫ﺗﻔﺎوتِ ﺣﺮوف ﺑﺰرگ و ﻛﻮﭼﻚ‪21 ....................................................................................................‬‬
‫ﻗﻄﻊ اﺟﺮا ‪21 ......................................................................................................................................‬‬
‫دﺳﺘﻮر ‪21 ................................................................................................................................ more‬‬
‫اﺟﺮا و ﺿﺒﻂ دﺳﺘﻮرات ﻗﺒﻠﻲ ‪21 .........................................................................................................‬‬
‫اﺟﺮاي دﺳﺘﻮرات ﺳﻴﺴﺘﻢ ﻋﺎﻣﻞ ‪22 ......................................................................................................‬‬

‫‪I‬‬
‫ﺗﺎﺑﻊ )(‪22 ................................................................................................................................... eval‬‬
‫دﺳﺘﻮر ‪22 .............................................................................................................................. lasterr‬‬
‫ﺑﻠﻮك ‪22 .......................................................................................................................... try...catch‬‬
‫ﺗﻔﺎوت دﺳﺘﻮرات ﭘﻨﺠﺮه ﻓﺮﻣﺎن و ﺑﺮﻧﺎﻣﻪ ‪23 .........................................................................................‬‬
‫دﺳﺘﻮرﻫﺎﺋﻲ در ﻣﻮرد ﻣﺘﻐﻴﺮﻫﺎ ‪23 .........................................................................................................‬‬
‫‪ 5-1‬درﻳﺎﻓﺖ اﻃﻼع و راﻫﻨﻤﺎﺋﻲ از ﻣﺪارك راﻫﻨﻤﺎي ﻣﺘﻠﺐ ‪23......................................................‬‬
‫‪ 6-1‬ﺗﻤﺮﻳﻦ ‪24..........................................................................................................................‬‬

‫ﻓﺼﻞ ‪ 2‬آﺷﻨﺎﺋﻲ ﺑﺎ ﻣﺘﻐﻴﺮﻫﺎ و ﺗﻮاﺑﻊ ‪25 .....................................................................‬‬


‫‪ 1-2‬آﺷﻨﺎﺋﻲ ﺑﺎ اﻧﻮاع ﻣﺘﻐﻴﺮ و داده ‪25.........................................................................................‬‬
‫اﻧﻮاع داده ‪25 .....................................................................................................................................‬‬
‫دادﻫﻬﺎي ﻋﺪدي‪ ،‬و دﺳﺘﻮر )(‪25 ..................................................................................................... isa‬‬
‫ﻧﻜﺎﺗﻲ ﭘﻴﺮاﻣﻮن ‪25 .................................................................................................................. single‬‬
‫ﻧﻜﺎﺗﻲ ﭘﻴﺮاﻣﻮن ‪25 ........................................................................................................................ int‬‬
‫ﻧﻜﺎﺗﻲ ﭘﻴﺮاﻣﻮن ‪ char‬و ﺗﺮﻛﻴﺐ اﻧﻮاع ‪25 .............................................................................................‬‬
‫ﻣﺘﻐﻴﺮﻫﺎي داﺧﻠﻲ ﻳﺎ ﺗﻮﻛﺎر ﻣﺘﻠﺐ ‪27 ....................................................................................................‬‬
‫دﺳﺘﻮر ﻓﺮﻣﺖ ‪28 .................................................................................................................... format‬‬
‫ﺿﺮﻳﺐ در ﻧﻤﺎﻳﺶ اﻋﺪاد ‪29 ................................................................................................................‬‬
‫‪ 2-2‬ﻋﻤﻠﮕﺮﻫﺎ ‪29......................................................................................................................‬‬
‫ﻋﻤﻠﮕﺮﻫﺎي آراﻳﻪ اي ‪29 .....................................................................................................................‬‬
‫اوﻟﻮﻳﺖ ﻋﻤﻠﮕﺮﻫﺎ ‪30 ..........................................................................................................................‬‬
‫‪ 3-2‬ﺗﻮاﺑﻊ ﻛﺘﺎب ﺧﺎﻧﻪ اي ‪30.....................................................................................................‬‬
‫ﺗﻮﻟﻴﺪ ﻋﺪد ﺗﺼﺎدﻓﻲ ‪30 .......................................................................................................................‬‬
‫ﺗﻮﻟﻴﺪ آراﻳﻪ ﺑﺎ ﺗﻜﺮار آراﻳﻪ دﻳﮕﺮ ‪30 ...................................................................................................‬‬
‫ﺗﻮاﺑﻊ ﺗﺤﻠﻴﻞ داده ﻫﺎ ‪30 ......................................................................................................................‬‬
‫ﺗﻮاﺑﻊ زﻣﺎﻧﻲ ‪31 .................................................................................................................................‬‬
‫ﺗﻮاﺑﻊ ﺧﺎص ‪31 ..................................................................................................................................‬‬
‫ﺗﻮاﺑﻊ ﻛﺎرﺑﺮ‪ -‬ﺗﻌﺮﻳﻒ ‪31 ....................................................................................................................‬‬

‫‪II‬‬
‫ﺑﻌﻀﻲ از ﺗﻮاﺑﻊ رﻳﺎﺿﻲ ﻛﺘﺎب ﺧﺎﻧﻪ اي ‪32 ..........................................................................................‬‬
‫‪ 4-2‬اﻋﺪاد و ﻣﺘﻐﻴﺮﻫﺎي ﻣﺨﺘﻠﻂ‪32..............................................................................................‬‬
‫ﺗﻮاﺑﻊ ﻣﺮﺑﻮط ﺑﻪ ﻣﺘﻐﻴﺮﻫﺎي ﻣﺨﺘﻠﻂ ‪32 .................................................................................................‬‬
‫ﻓﺮم ﻧﻮﺷﺘﺎري ﻋﺪد ﻣﺨﺘﻠﻂ ‪32 .............................................................................................................‬‬
‫‪ 5-2‬ﺗﻤﺮﻳﻦ ‪34..........................................................................................................................‬‬

‫ﻓﺼﻞ ‪ 3‬ﻣﺎﺗﺮﻳﺲ ﻫﺎ ‪35 ...........................................................................................‬‬


‫‪ 1-3‬ﺗﺸﺎﺑﻪ ﻣﺎﺑﻴﻦ ﻣﺎﺗﺮﻳﺲ ﻫﺎ ‪35................................................................................................‬‬
‫‪ 2-3‬ﻣﺎﺗﺮﻳﺲ ﻫﺎي ﭘﺎﻳﻪ ‪35..................................................................... Elementary Matrices‬‬
‫ﻣﺎﺗﺮﻳﺲ ﻳﮕﺎﻧﻲ ‪35 ..................................................................................................... identity matrix‬‬
‫ﻣﺎﺗﺮﻳﺲ ﻫﺎي )(‪ ones‬و )(‪35 .................................................................................................... zeros‬‬
‫‪ 3-3‬اﻳﺠﺎد ﺗﻐﻴﻴﺮات ﺑﺮ روي ﻣﺎﺗﺮﻳﺲ‪36.....................................................................................‬‬
‫اﺳﺘﺨﺮاج ﻗﺴﻤﺘﻲ از ﻳﻚ ﻣﺎﺗﺮﻳﺲ ‪36 ..................................................................................................‬‬
‫ﺗﻐﻴﻴﺮ ﻣﻘﺪار ﻋﻨﺎﺻﺮ ﻣﺎﺗﺮﻳﺲ ‪36 ..........................................................................................................‬‬
‫ﻗﺮار دادن ﻳﻚ ﻣﺎﺗﺮﻳﺲ در ﻣﺎﺗﺮﻳﺲ دﻳﮕﺮ‪37 ......................................................................................‬‬
‫اﺳﺘﺨﺮاج ﻳﺎ ﺣﺬف ردﻳﻒ و ﺳﺘﻮن‪37 ...................................................................................................‬‬
‫‪ 4-3‬ﻋﻤﻞ ﮔﺮﻫﺎي ﻣﺎﺗﺮﻳﺴﻲ ‪37..................................................................................................‬‬
‫ﺿﺮب ﻣﺎﺗﺮﻳﺴﻲ‪37 ............................................................................................................................‬‬
‫ﺗﻮان ﻣﺎﺗﺮﻳﺴﻲ ‪38 ..............................................................................................................................‬‬
‫‪ 5-3‬ﺑﻌﻀﻲ از ﺗﻮاﺑﻊ ﻣﺎﺗﺮﻳﺴﻲ‪39...............................................................................................‬‬
‫ﭼﻨﺪ ﺗﺎﺑﻊ ﻣﻌﻤﻮل ‪39 ...........................................................................................................................‬‬
‫اﺳﺘﺨﺮاج ﻣﺎﺗﺮﻳﺲ از ﻣﺎﺗﺮﻳﺲ دﻳﮕﺮ ‪39 ...............................................................................................‬‬
‫ﺗﻮاﺑﻌﻲ ﻛﻪ ﺑﻪ روي ﻣﺠﻤﻮﻋﻪ ﻋﻨﺎﺻﺮ ﻣﺎﺗﺮﻳﺲ ﻋﻤﻞ ﻣﻴﻜﻨﻨﺪ ‪39 ..............................................................‬‬
‫ﻣﺎﺗﺮﻳﺲ ﺳﻪ ﺑﻌﺪي )ﻓﻀﺎﺋﻲ(‪39 ...........................................................................................................‬‬
‫‪ 6-3‬ﻣﺎﺗﺮﻳﺲ ﻫﺎي ﻧﻤﻮﻧﻪ ‪40......................................................................................................‬‬
‫ﻣﺎﺗﺮﻳﺲ ﺟﺎدوﺋﻲ ‪40 ...........................................................................................................................‬‬
‫ﻣﺎﺗﺮﻳﺲ ﭘﺎﺳﻜﺎل ‪41 ...........................................................................................................................‬‬
‫‪ 7-3‬ﺑﺮدار‪41................................................................................................................ Vector‬‬

‫‪III‬‬
‫ﻋﻤﻠﮕﺮ ﻛﺎﻟﻦ ‪41 .................................................................................................................................‬‬
‫ﺗﺎﺑﻊ )(‪41 ............................................................................................................................ linspace‬‬
‫ﻛﺎرﺑﺮد ﻳﻚ ﺑﺮدار در ﺗﻌﺮﻳﻒ ﺑﺮدار دﻳﮕﺮ ‪42 .......................................................................................‬‬
‫ﺑﺮدار ﺗﻬﻲ ‪42 ....................................................................................................................................‬‬
‫اﻧﺪﻳﺲ اﻋﻀﺎء ﺑﺮدار ‪42 ......................................................................................................................‬‬
‫‪ 8-3‬ﺑﺮدارﻫﺎي ﻣﻨﻄﻘﻲ ‪43..........................................................................................................‬‬
‫ﺗﺒﺪﻳﻞ ﺑﺮدار ﻋﺪدي ﺑﻪ ﻣﻨﻄﻘﻲ ﺑﺎ ﺗﺎﺑﻊ )(‪43 ............................................................................... logical‬‬
‫ﺣﺬف ﺑﻌﻀﻲ ﻋﻨﺎﺻﺮ آراﻳﻪ ‪43 .............................................................................................................‬‬
‫ﺿﺮب ﺑﺮدار ﻋﺪدي در ﺑﺮدار ﻣﻨﻄﻘﻲ ‪44 ..............................................................................................‬‬
‫ﻳﺎﻓﺘﻦ ﻣﺤﻞ ﻋﻨﺎﺻﺮي ﺑﺎ ﻣﻘﺪار ﻣﻌﻴﻦ ‪44 ...............................................................................................‬‬
‫ﻳﺎﻓﺘﻦ اﻧﺪﻳﺲ ﻋﻨﺎﺻﺮ ﻣﻮرد ﻧﻈﺮ ﺑﺎ ﺗﺎﺑﻊ )(‪44 ................................................................................. find‬‬
‫‪ 9-3‬ﺗﻤﺮﻳﻦ ‪46..........................................................................................................................‬‬

‫ﻓﺼﻞ ‪ 4‬دﺳﺘﻮرﻫﺎ و ﺗﻮاﺑﻊ ورودي ﺧﺮوﺟﻲ ‪47 .........................................................‬‬


‫‪ 1-4‬درﻳﺎﻓﺖ ورودي ‪47...........................................................................................................‬‬
‫درﻳﺎﻓﺖ ﺑﺎ )(‪47 ......................................................................................................................... input‬‬
‫درﻳﺎﻓﺖ ﺑﺎ ‪47 .................................................................................................................... keyboard‬‬
‫‪ 2-4‬ارﺳﺎل ﺧﺮوﺟﻲ ‪47.............................................................................................................‬‬
‫ارﺳﺎل ﺧﺮوﺟﻲ ﺑﻪ ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ‪ ،‬دﺳﺘﻮر )‪47 ........................................................................ disp(var‬‬
‫ارﺳﺎل ﺧﺮوﺟﻲ ﺑﻪ ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ‪ ،‬دﺳﺘﻮر )(‪48 ...........................................................................fprintf‬‬
‫دﺳﺘﻮر ‪49 ...................................................................................................................... echo off/on‬‬
‫دﺳﺘﻮر ‪49 ...............................................................................................................................pause‬‬
‫‪ 3-4‬ﺿﺒﻂ ﺑﺮ روي دﻳﺴﻚ‪49...................................................................................................‬‬
‫ارﺳﺎل ﺧﺮوﺟﻲ ﺑﻪ ﻓﺎﻳﻞ ﻣﺘﻦ ‪49 ................................................................................................. .TXT‬‬
‫ﺿﺒﻂ ﻣﺎﺗﺮﻳﺲ در ﻓﺎﻳﻞ ﻣﺘﻦ ‪49 ................................................................................................. .TXT‬‬
‫ﺿﺒﻂ ﻣﺎﺗﺮﻳﺲ در ﻓﺎﻳﻞ ﺑﺎﻳﻨﺮي ‪50 ............................................................................................ .MAT‬‬
‫ﺑﺎز ﻛﺮدن درﮔﺎه ‪50 .................................................................................................................... port‬‬
‫‪ 4-4‬ﺗﻤﺮﻳﻦ ‪51..........................................................................................................................‬‬

‫‪IV‬‬
‫ﻓﺼﻞ ‪ 5‬آﺷﻨﺎﺋﻲ ﺑﺎ ﺗﺮﺳﻴﻤﺎت‪52 ...............................................................................‬‬
‫‪ 1-5‬ﺻﻔﺤﻪ ﻫﺎي ﻣﺨﺘﺼﺎت ‪52....................................................................................................‬‬
‫ﺻﻔﺤﻪ ﻣﺨﺘﺼﺎت ﻗﺎﺋﻢ ‪52 ....................................................................................................................‬‬
‫ﺻﻔﺤﻪ ﻣﺨﺘﺼﺎت ﻗﻄﺒﻲ ‪52 ..................................................................................................................‬‬
‫ﺗﺒﺪﻳﻞ ﻣﺨﺘﺼﺎت ﻗﺎﺋﻢ و ﻗﻄﺒﻲ ‪52 ........................................................................................................‬‬
‫‪ 2-5‬ﺑﺮدار و رﺳﻢ ﻣﻨﺤﻨﻲ‪ ،‬دﺳﺘﻮرﻫﺎي )(‪52........................................................... plot(), comet‬‬
‫دﺳﺘﻮرﻫﺎي ‪53 ............................................................................. figure(), subplot(), hold on/off, clf‬‬
‫اﻓﺰودن ﺗﻮﺿﻴﺤﺎت روي ﻣﻨﺤﻨﻲ‪53 .....................................................................................................‬‬
‫ﭘﻨﺠﺮه ‪53 .................................................................................................................. Data Statistics‬‬
‫ﭼﻨﺪ ﻣﻨﺤﻨﻲ در ﻳﻚ ﺻﻔﺤﻪ ‪53 ............................................................................................................‬‬
‫‪ 3-5‬دﺳﺘﻮرﻫﺎي ﻫﻢ ﺧﺎﻧﻮاده )(‪55.........................................................................................plot‬‬
‫‪ 4-5‬روش ﻫﺎي دﻳﮕﺮ ﻧﻤﻮدار ﺳﺎزي ‪56......................................................................................‬‬
‫ﻧﻤﻮدار ﺳﺘﻮﻧﻲ)(‪56 .......................................................................................................................bar‬‬
‫ﭘﻴﺸﻴﻨﻪ ﻧﮕﺎر )(‪56 ........................................................................................................................ hist‬‬
‫ﻧﻤﻮدار داﻳﺮه )(‪56 ........................................................................................................................ pie‬‬
‫‪ 5-5‬رﺳﻢ ﻧﻤﻮداري ﻣﺎﺗﺮﻳﺲ ‪58.................................................................................................‬‬
‫ﻧﻤﻮدار ﺳﺘﻮﻧﻲ ﻣﺎﺗﺮﻳﺲ ‪58 .................................................................................................................‬‬
‫ﻧﻤﻮدار ﻣﻨﺤﻨﻲ ﻣﺎﺗﺮﻳﺲ ‪58 .................................................................................................................‬‬
‫ﻧﻤﻮدار ﻗﻄﺒﻲ ‪59 ................................................................................................................................‬‬
‫ﻧﻤﻮدار ﻋﻘﺮﺑﻪ اي‪ ،‬دﺳﺘﻮر )(‪59 ............................................................................................ compass‬‬
‫ﻧﻤﺎﻳﺶ ﻫﻨﺪﺳﻲ ﻋﺪد ﻣﺨﺘﻠﻂ ﺑﺎ )(‪60 ..................................................................................... compass‬‬
‫رﺳﻢ ﻋﺪد ﻣﺨﺘﻠﻂ ﺑﺎ )(‪61 ............................................................................................................. plot‬‬
‫‪ 6-5‬رﺳﻢ آﺳﺎن ﺑﺎ )(‪62.................................................................................................. ezplot‬‬
‫رﺳﻢ ﺗﻮاﺑﻊ آﺷﻜﺎر‪62 ............................................................................................. explicit functions‬‬
‫رﺳﻢ ﺗﻮاﺑﻊ ﺿﻤﻨﻲ ‪62 .............................................................................................implicit functions‬‬
‫رﺳﻢ ﺗﻮاﺑﻊ ﭘﺎراﻣﺘﺮﻳﻚ ‪62 ..................................................................................................................‬‬
‫‪ 7-5‬ﺗﺎﺑﻊ داﺧﻠﻲ )(‪63........................................................................................................ fplot‬‬

‫‪V‬‬
‫‪ 8-5‬وﻳﺮاﻳﺶ ﮔﺮاف ‪64.............................................................................................................‬‬
‫ﺗﻌﻴﻴﻦ ﻣﺤﺪوده ﻣﺤﻮرﻫﺎ‪64 ..................................................................................................................‬‬
‫ﺗﻮري روي ﮔﺮاف از ﭘﻨﺠﺮه ﻓﺮﻣﺎن ‪64 ................................................................................................‬‬
‫ﺑﺮﭼﺴﺐ ﮔﺬاري ﺑﺎ ﻣﺎوس ‪64 ..............................................................................................................‬‬
‫ﻣﺆﻟﻔﻪ ﻫﺎي ‪64 ...........................................................................................................................RGB‬‬
‫رﻧﮕﻲ ﻛﺮدن ﺑﺎ )(‪64 .......................................................................................................................fill‬‬
‫ادﻳﺖ از روي ﭘﻨﺠﺮه ﮔﺮاف ‪64 ...........................................................................................................‬‬
‫‪ 9-5‬ﮔﻴﺮه ﻫﺎي ﮔﺮاﻓﻴﻚ ‪65.......................................................................... graphics handles‬‬
‫‪ 10-5‬ﺗﻤﺮﻳﻦ ‪66.......................................................................................................................‬‬

‫ﻓﺼﻞ ‪ 6‬ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ‪67 .......................................................................................‬‬


‫‪ 1-6‬ام‪ -‬ﻓﺎﻳﻞ ‪67......................................................................................................................‬‬
‫ﺗﺸﻜﻴﻞ ام‪ -‬ﻓﺎﻳﻞ‪67 ...........................................................................................................................‬‬
‫ام‪ -‬ﻓﺎﻳﻞِ اﺳﻜﺮﻳﭙﺖ و ام‪-‬ﻓﺎﻳﻞِ ﺗﺎﺑﻌﻲ ‪67 .............................................................................................‬‬
‫‪ 2-6‬ﻣﺜﺎل ﻫﺎي رﻳﺎﺿﻲ ‪67.........................................................................................................‬‬
‫‪ 3-6‬ﻣﺜﺎل ﻫﺎي آﻣﺎري ‪69..........................................................................................................‬‬
‫‪ 4-6‬ﻣﺜﺎل ﻫﺎي ﻣﻜﺎﻧﻴﻚ ‪70.......................................................................................................‬‬
‫‪ 5-6‬ﻣﺜﺎل ﻫﺎي اﻟﻜﺘﺮﻳﻜﻲ‪71......................................................................................................‬‬
‫‪ 6-6‬ﺗﻤﺮﻳﻦ ‪75..........................................................................................................................‬‬

‫ﻓﺼﻞ ‪ 7‬ﮔﺮاﻓﻴﻚ ﺳﻪ ﺑ‪‬ﻌﺪي ‪76 ................................................................................‬‬


‫‪ 1-7‬ﺗﺮﺳﻴﻢ ﻣﻨﺤﻨﻲ ﻓﻀﺎﺋﻲ ‪76....................................................................................................‬‬
‫ﺗﺎﺑﻊ )(‪76 .................................................................................................................................. plot3‬‬
‫ﺗﺎﺑﻊ )(‪76 ..............................................................................................................................comet3‬‬
‫‪ 2-7‬ﺗﺮﺳﻴﻢ ﺳﻄﻮح ﻓﻀﺎﺋﻲ ‪76....................................................................................................‬‬
‫دﺳﺘﻮر )‪76 .................................................................................................................. meshgrid(a,b‬‬
‫ﺻﻔﺤﻪ ﻣﺨﺘﺼﺎت ‪77 ...........................................................................................................................‬‬
‫دﺳﺘﻮر )‪77 .................................................................................................................... mesh(X,Y,Z‬‬
‫دﺳﺘﻮر )‪ ، mesh(M‬ﻧﻤﺎﻳﺶ ﺳﻪ ﺑﻌﺪي ﻳﻚ ﻣﺎﺗﺮﻳﺲ ‪78 .........................................................................‬‬

‫‪VI‬‬
‫‪ 3-7‬ﺗﻮاﺑﻊ ﻓﻀﺎﺋﻲ ﻛﺘﺎب ﺧﺎﻧﻪ اي ‪79..........................................................................................‬‬
‫رﺳﻢ ﻛُﺮه ﺑﺎ ‪ sphere‬و اﻳﺠﺎد اﻓﻜﺖ ﻫﺎي ﺗﺼﻮﻳﺮي ‪79 ..........................................................................‬‬
‫رﺳﻢ اﺳﺘﻮاﻧﻪ ﺑﺎ ‪79 ............................................................................................................... cylinder‬‬
‫رﺳﻢ ﻗﻠﻪ ﻫﺎ ﺑﺎ ﺗﺎﺑﻊ ﻧﻤﻮﻧﻪ ‪79 ................................................................................................... peaks‬‬
‫‪ 4-7‬ﺑﻌﻀﻲ از ﻗﺎﺑﻠﻴﺖ ﻫﺎي ﮔﺮاﻓﻴﻜﻲ ﻣﺘﻠﺐ ‪79.............................................................................‬‬
‫زاوﻳﻪ دﻳﺪ ﻳﻚ ﺗﺼﻮﻳﺮ ‪79 ..................................................................................................................‬‬
‫ﺗﺼﻮﻳﺮﺑﺮداري ﺑﺎ ‪80 ........................................................................................................... getframe‬‬
‫ﺑﺎز ﻧﻤﺎﻳﺶ ﻓﻴﻠﻢ ﺑﺎدﺳﺘﻮر )(‪80 .................................................................................................. movie‬‬
‫‪ 5-7‬ﺗﻐﻴﻴﺮات روي ﻗﺴﻤﺘﻲ از ﺳﻄﺢ ﺗﺮﺳﻴﻢ ﺳﻪ ﺑﻌﺪي‪81..............................................................‬‬
‫ﺣﺬف ﻗﺴﻤﺘﻲ از ﺳﻄﺢ‪81 ...................................................................................................................‬‬
‫‪ 6-7‬ﺳﺎﻳﺮ دﺳﺘﻮر ﻫﺎي ﺗﺮﺳﻴﻢ ﺳﻪ ﺑﻌﺪي ‪81.................................................................................‬‬
‫‪ 7-7‬ﺗﻤﺮﻳﻦ ‪82..........................................................................................................................‬‬

‫ﻓﺼﻞ ‪ 8‬ﺳﺎﺧﺘﺎرﻫﺎي ﺗﺼﻤﻴﻢ و ﺗﻜﺮار‪83 ...................................................................‬‬


‫‪ 1-8‬ﺳﺎﺧﺘﺎرﻫﺎي ﺗﺼﻤﻴﻢ و ﻋﻮاﻣﻞ آن ‪83....................................................................................‬‬
‫ﻋﻤﻠﮕﺮﻫﺎي ﻧﺴﺒﺘﻲ )راﺑﻄﻪ اي( ‪83 .................................................................... Relational Operators‬‬
‫ﻋﻤﻠﮕﺮﻫﺎي ﻣﻨﻄﻘﻲ ‪83 .......................................................................................... Logical Operators‬‬
‫ﺑﻠﻮك ‪83 ........................................................................................................................................ if‬‬
‫ﺑﻠﻮك ‪83 ................................................................................................................................ switch‬‬
‫‪ 2-8‬ﺳﺎﺧﺘﺎرﻫﺎي ﺗﻜﺮار‪84.........................................................................................................‬‬
‫ﺣﻠﻘﻪ ‪84 ....................................................................................................................................... for‬‬
‫ﺣﻠﻘﻪ ‪ while‬و دﺳﺘﻮر ‪86 .......................................................................................................... break‬‬
‫‪ 3-8‬ﻣﻨﻴﻮ‪86.............................................................................................................................‬‬
‫‪ 4-8‬ﺗﻤﺮﻳﻦ ‪87..........................................................................................................................‬‬

‫ﻓﺼﻞ ‪ 9‬ﻧﻜﺎﺗﻲ ﭘﻴﺮاﻣﻮن ﺗﻮاﺑﻊ و ﺗﺎﺑﻊ ﻛﺎرﺑﺮ‪ -‬ﺗﻌﺮﻳﻒ ‪88 ...........................................‬‬


‫‪ 1-9‬ﺗﺎﺑﻊ ﺧﻂ ﻓﺮﻣﺎن ‪88.................................................................................... inline function‬‬
‫‪ 2-9‬ام‪ -‬ﻓﺎﻳﻞ ﺗﺎﺑﻌﻲ ‪88.................................................................................... function M-file‬‬
‫ام‪ -‬ﻓﺎﻳﻞ ﺗﺎﺑﻌﻲ ﺑﺎ ﭼﻨﺪ آرﮔﻮﻣﺎن ﺧﺮوﺟﻲ ‪89 .......................................................................................‬‬

‫‪VII‬‬
‫ﺗﺎﺑﻊ ﺑﺪون ﻣﻘﺪار‪ ،‬ﻣﺘﻐﻴﺮ ‪90 ............................................................................................... Persistent‬‬
‫زﻳﺮ ﺗﺎﺑﻊ ‪91 ................................................................................................................... subfunction‬‬
‫‪ 3-9‬ﺗﺎﺑﻊِ ﺗﺎﺑﻊ ‪92......................................................................................................................‬‬
‫ﮔﻴﺮه ﺗﺎﺑﻊ ‪92 ............................................................................................. feval() ، function handle‬‬
‫ﺗﺎﺑﻊِ ﺗﺎﺑﻊِ ﻛﺎرﺑﺮ‪ -‬ﺗﻌﺮﻳﻒ ‪92 ...............................................................................................................‬‬
‫ﺗﺎﺑﻊ ﺗﺎﺑﻊ ﻛﺘﺎب ﺧﺎﻧﻪ اي‪93 ................................................................................................................‬‬
‫‪ 4-9‬ﺗﺒﺪﻳﻞ ﻓﺎﻳﻞ ﻫﺎي ﻣﺘﻠﺐ ‪93..................................................................................................‬‬
‫ﺗﺒﺪﻳﻞ ام‪ -‬ﻓﺎﻳﻞ ﺑﻪ ﭘﺮوﻧﺪه ﭘﻲ‪ -‬ﻛﺪ ‪93 .............................................................................. pcode file‬‬
‫ﺗﻮﻟﻴﺪ ﺑﺮﻧﺎﻣﻪ ‪ C‬ﺑﺎ ﻛﺎﻣﭙﺎﻳﻠﺮ ﻣﺘﻠﺐ ‪94 ....................................................................MATLAB Compiler‬‬
‫ﺗﺒﺪﻳﻞ ﺑﺮﻧﺎﻣﻪ ﮔﺮاﻓﻴﻜﻲ ﺑﻪ زﺑﺎن ‪94 ..............................................................................................C++‬‬
‫ﺧﻼﺻﻪ دﺳﺘﻮرات ﻛﺎﻣﭙﺎﻳﻠﺮ ‪94 ............................................................................................................‬‬
‫ﺳﺎزﻧﺪه اﻛﺴﻞ ‪95 ........................................................................................................ Excel Builder‬‬
‫‪ 5-9‬ﺗﻤﺮﻳﻦ ‪95..........................................................................................................................‬‬

‫)‪96 ........ (Symbolic Math Tool Box‬‬ ‫‪Symbolic Math‬‬ ‫ﻓﺼﻞ ‪ 10‬رﻳﺎﺿﻴﺎت ﻧﻤﺎدﻳﻦ‬
‫آراﻳﻪ ﻳﺎ ﻣﺘﻐﻴﺮ ﻋﺪدي ﺑﺎ دﻗﺖ اﻓﺰوده ‪96 ........................................................................ double array‬‬
‫آراﻳﻪ ﻳﺎ ﻣﺘﻐﻴﺮ ﻛﺎراﻛﺘﺮي‪96 ...............................................................................................................‬‬
‫ﺷﻴﺊ ﻳﺎ ﻣﺘﻐﻴﺮ ﻧﻤﺎدﻳﻦ ‪96 .....................................................................................................................‬‬
‫اﻧﻮاع دﻳﮕﺮ داده ‪96 ............................................................................................................................‬‬
‫ﻧﻤﺎﻳﺶ ﻣﺘﻐﻴﺮﻫﺎ در ﭘﻨﺠﺮه ‪96 ............................................................................................ workspace‬‬
‫‪ 2-10‬ﻣﺘﻐﻴﺮﻫﺎي ﻧﻤﺎدﻳﻦ‪97........................................................................................................‬‬
‫ﺟﺎي ﮔﺰﻳﻨﻲ ﻋﺪد ﻧﻤﺎدﻳﻦ در ﻣﺘﻐﻴﺮ ﻧﻤﺎدﻳﻦ ‪97 ......................................................................................‬‬
‫ﻳﺎﻓﺘﻦ ﻣﺘﻐﻴﺮﻫﺎي ﻧﻤﺎدﻳﻦ ‪97 .................................................................................................................‬‬
‫ﻧﻤﺎﻳﺶ اﻋﺪاد ﻧﻤﺎدﻳﻦ ‪97 .....................................................................................................................‬‬
‫ﻧﻤﺎﻳﺶ ﻣﺘﻐﻴﺮﻫﺎي ﻧﻤﺎدﻳﻦ ‪98 ...............................................................................................................‬‬
‫ﻣﺘﻐﻴﺮ ﻣﺴﺘﻘﻞ ﻧﻤﺎدﻳﻦ ‪98 .....................................................................................................................‬‬
‫ﺟﺎي ﮔﺰﻳﻨﻲ ﻋﺪد ﻧﻤﺎدﻳﻦ در ﻣﺘﻐﻴﺮ ﻧﻤﺎدﻳﻦ ‪98 ......................................................................................‬‬
‫ﻳﺎﻓﺘﻦ ﻣﺘﻐﻴﺮﻫﺎي ﻧﻤﺎدﻳﻦ ‪99 .................................................................................................................‬‬

‫‪VIII‬‬
‫ﻧﻤﺎﻳﺶ اﻋﺪاد ﻧﻤﺎدﻳﻦ ‪99 .....................................................................................................................‬‬
‫‪ 3-10‬ﻋﻤﻠﻴﺎت رﻳﺎﺿﻲ ‪99.........................................................................................................‬‬
‫رﻳﺸﻪ دوم ‪99 ....................................................................................................................................‬‬
‫ﺗﻮان‪99 .............................................................................................................................................‬‬
‫ﻣﺸﺘﻖ ‪99 ...........................................................................................................................................‬‬
‫اﻧﺘﮕﺮال ‪99 ........................................................................................................................................‬‬
‫اﻧﺘﮕﺮال ﻣﺤﺪود ‪99 .............................................................................................................................‬‬
‫ﺗﺒﺪﻳﻞ ﺑﻪ ﻛﺴﺮﻫﺎي ﺟﺰﺋﻲ و رﻳﺸﻪ و ﻗﻄﺐ ﻳﻚ ﺗﺎﺑﻊ ﺗﺒﺪﻳﻞ ‪100...........................................................‬‬
‫ﺗﺒﺪﻳﻞ ﻋﺒﺎرت ﺟﺒﺮي ﺑﻪ ﻛﺴﺮ ﻣﺘﻌﺎرﻓﻲ ﮔﻮﻳﺎ ‪100.................................................................................‬‬
‫‪ 4-10‬اﻋﺪاد ﻣﺨﺘﻠﻂ ﻧﻤﺎدﻳﻦ ‪100 ...............................................................................................‬‬
‫ﻣﺰدوج ﻳﻚ ﻋﺪد ﻣﺨﺘﻠﻂ ‪100.............................................................................................................‬‬
‫‪ 5-10‬ﺗﻮاﺑﻊ ﻧﻤﺎدﻳﻦ ‪101 ...........................................................................................................‬‬
‫ﻣﻌﺮﻓﻲ ﻳﻚ ﺗﺎﺑﻊ ﻛﻠﻲ‪101..................................................................................................................‬‬
‫ﺟﺎي ﮔﺰﻳﻨﻲ ﻳﻚ ﻋﺒﺎرت ﺑﻪ ﺟﺎي ‪101........................................................... (subs = substitution) x‬‬
‫ﺗﺎﺑﻊ ﻧﻤﺎدﻳﻦ ﻣﺨﺘﻠﻂ ‪101.....................................................................................................................‬‬
‫‪ 6-10‬ﺣﺪ ﺗﺎﺑﻊ ‪101 ..................................................................................................................‬‬
‫‪ 7-10‬ﺗﺎﺑﻊ ام‪ -‬ﻓﺎﻳﻠﻲ ﻧﻤﺎدﻳﻦ ‪102 .............................................................................................‬‬
‫‪ 8-10‬ﺳﺮي ﻫﺎ ‪102 ..................................................................................................................‬‬
‫‪ 9-10‬ﺗﻮاﺑﻊ آﺳﺎن ﺳﺎز ‪102 ......................................................................................................‬‬
‫ﺗﺎﺑﻊ )(‪103...............................................................................................................................pretty‬‬
‫ﺗﻮاﺑﻊ )(‪ collect‬و )(‪103........................................................................................................ expand‬‬
‫ﻓﺎﻛﺘﻮرﮔﻴﺮي )(‪103.................................................................................................................. factor‬‬
‫ﺳﺎده ﻛﺮدن ﺑﺎ )(‪103..............................................................................................................simplify‬‬
‫ﺳﺎده ﻛﺮدن ﺑﺎ )(‪103............................................................................................................... simple‬‬
‫‪ 10-10‬ﻣﺎﺗﺮﻳﺲ ﻫﺎي ﻧﻤﺎدﻳﻦ ‪103 .............................................................................................‬‬
‫ﻣﺎﺗﺮﻳﺲ ﺑﺎ ﻋﻨﺎﺻﺮي از ﻣﺘﻐﻴﺮﻫﺎي ﻧﻤﺎدﻳﻦ ‪103.....................................................................................‬‬
‫ﻣﺎﺗﺮﻳﺲ ﺑﺎ ﻋﻨﺎﺻﺮي از ﺗﻮاﺑﻊ ﻧﻤﺎدﻳﻦ ‪104...........................................................................................‬‬

‫‪IX‬‬
‫‪ 11-10‬رﺳﻢ ﺗﺎﺑﻊ ﻧﻤﺎدﻳﻦ ﺑﺎ )(‪105 ................................................................................. ezplot‬‬
‫‪ 12-10‬درﻳﺎﻓﺖ راﻫﻨﻤﺎ در ﻣﻮرد رﻳﺎﺿﻴﺎت ﻧﻤﺎدﻳﻦ ‪105 ..............................................................‬‬
‫‪ 13-10‬ﺗﻤﺮﻳﻦ ‪106 ..................................................................................................................‬‬

‫ﻓﺼﻞ ‪ 11‬ﻋﻤﻠﻴﺎت ﻣﺤﺎﺳﺒﺎﺗﻲ ‪107 ...........................................................................‬‬


‫‪ 1-11‬ﺣﻞ ﻣﻌﺎدﻻت ‪107 ...........................................................................................................‬‬
‫ﻣﻌﺎدﻟﻪ ﭼﻨﺪ ﺟﻤﻠﻪ اي‪ ،‬دﺳﺘﻮرﻫﺎي )(‪ roots‬و )(‪107....................................................................... poly‬‬
‫ﺣﻞ ﻣﻌﺎدﻟﻪ ﺑﺎ ﺗﺎﺑﻊ ﻛﺘﺎب ﺧﺎﻧﻪ اي )(‪107.....................................................................................fzero‬‬
‫ﺣﻞ دﺳﺘﮕﺎه ﻣﻌﺎدﻻت ﻏﻴﺮ ﺧﻄﻲ ﺑﺎ)(‪) fsolve‬ﺟﻌﺒﻪ اﺑﺰار ﺑﻬﻴﻨﻪ ﺳﺎزي ‪108.......... (Optimization Toolbox‬‬
‫ﺣﻞ دﺳﺘﮕﺎه ﻣﻌﺎدﻻت ﺧﻄﻲ ‪108..........................................................................................................‬‬
‫ﺣﻞ ﻣﻌﺎدﻻت ﺑﺎ دﺳﺘﻮر )(‪) solve‬ﺟﻌﺒﻪ اﺑﺰار رﻳﺎﺿﻴﺎت ﺳﻤﺒﻠﻴﻚ ‪109............(Symbolic Math Toolbox‬‬
‫ﺣﻞ ﻣﻌﺎدﻟﻪ دﻳﻔﺮاﻧﺴﻴﻞ ﻋﺎدي ﺑﺎ ‪110....................................................................................... ODE45‬‬
‫ﺣﻞ ﻣﻌﺎدﻻت دﻳﻔﺮاﻧﺴﻴﻞ ﻋﺎدي )ﺟﻌﺒﻪ اﺑﺰار رﻳﺎﺿﻴﺎت ﺳﻤﺒﻠﻴﻚ ‪111............ (Symbolic Math Toolbox‬‬
‫ﺗﺎﺑﻊ ﻣﻌﻜﻮس ﻳﻚ ﺗﺎﺑﻊ ﺑﺎ )(‪112........................................................................................... finverse‬‬
‫ﺗﺮﻛﻴﺐ ﺗﺎﺑﻌﻲ ﺑﺎ ‪112.......................................................................................................... compose‬‬
‫‪ 2-11‬ﺗﻘﺮﻳﺐ ﺟﺒﺮي ﻣﻨﺤﻨﻲ ﻣﻌﺎدﻻت ‪112 ..................................................................................‬‬
‫ﺑﺮﺧﻮراﻧﺪن ﻳﻚ ﻣﻨﺤﻨﻲ در ﻣﻌﺎدﻟﻪ ﭼﻨﺪ ﺟﻤﻠﻪ اي )(‪112....... Curve Fitting with polyfit(x,y,n), polyval‬‬
‫درﻳﺎﻓﺖ ﻣﺨﺘﺼﺎت ﻧﻘﺎط ﻣﻨﺤﻨﻲ ﺑﺎ ‪113....................................................................................ginput‬‬
‫ﺣﻞ ﺗﺮﺳﻴﻤﻲ ‪113...............................................................................................................................‬‬
‫‪ 3-11‬ﺗﻤﺮﻳﻦ ‪114 ....................................................................................................................‬‬

‫ﻓﺼﻞ ‪ 12‬ﻣﺒﺎﺣﺜﻲ ﭘﻴﺮاﻣﻮن رﺷﺘﻪ ﻫﺎ ‪115 .................................................................‬‬


‫‪ 1-12‬رﺷﺘﻪ ﺑﻪ ﻣﺜﺎﺑﻪ آراﻳﻪ )ﺑﺮدار( ‪115 .....................................................................................‬‬
‫دﺳﺘﺮﺳﻲ ﺑﻪ ﺣﺮوف رﺷﺘﻪ ‪115............................................................................................................‬‬
‫ﻋﺪد اﺳﻜﻲ ﻳﻚ ﻛﺎراﻛﺘﺮ ‪115.............................................................................................................‬‬
‫رﺷﺘﻪ ‪115.............................................................................................................................. m × n‬‬
‫‪ 2-12‬ﻣﺮﺗﺐ ﺳﺎزي رﺷﺘﻪ ‪116 ..................................................................................................‬‬
‫ﻣﺮﺗﺐ ﺳﺎزي ﺑﺎ ﺗﺎﺑﻊ ﻛﺘﺎب ﺧﺎﻧﻪ اي )(‪116................................................................................... sort‬‬
‫ﻣﺮﺗﺐ ﺳﺎزي رﺷﺘﻪ ﺑﺎ ﺗﺎﺑﻊ ﺣﺒﺎﺑﻲ و ﻣﻘﺎﻳﺴﻪ ﺑﺎ )(‪116.................................................................... sort‬‬

‫‪X‬‬
‫‪ 3-12‬ﺗﻮاﺑﻊ رﺷﺘﻪ اي ‪117 ........................................................................................................‬‬
‫ﺗﺎﺑﻊ )‪ strcmp(s1,s2‬و ﻋﻤﻠﮕﺮﻫﺎي ﻣﻘﺎﻳﺴﻪ اي ﺑﺮاي رﺷﺘﻪ ﻫﺎ ‪117.........................................................‬‬
‫ﺟﻤﻊ ﻛﺮدن رﺷﺘﻬﻬﺎ ﺑﺎ دﺳﺘﻮر )(‪118.......................................................................................... strcat‬‬
‫‪ 4-12‬ﻗﺎﻟﺒﺒﻨﺪي رﺷﺘﻪ ‪118 .......................................................................... String Formatting‬‬
‫ﺗﻌﻴﻴﻦ ﻓﺮﻣﺖ ﺑﺮاي ﻧﻤﺎﻳﺶ رﺷﺘﻪ ﺑﺎ )(‪118.................................................................................. fprintf‬‬
‫ﻧﮕﻪ داري رﺷﺘﻪ در ﻳﻚ ﻣﺘﻐﻴﺮ ﺑﺎ )(‪118................................................................................... sprintf‬‬
‫‪ 5-12‬ﺗﻤﺮﻳﻦ ‪119 ....................................................................................................................‬‬

‫ﻓﺼﻞ ‪ 13‬ﺳﻴﮕﻨﺎل‪ ،‬ﺳﻴﺴﺘﻢ‪ ،‬ﻓﻴﻠﺘﺮ ‪120 ......................................................................‬‬


‫‪ 1-13‬ﺗﺒﺪﻳﻼت ﻓﻮرﻳﻪ ‪120 .......................................................................................................‬‬
‫ﺗﺒﺪﻳﻞ ﻓﻮرﻳﻪ ﮔﺴﺴﺘﻪ )(‪120........................................................................................................... fft‬‬
‫ﺗﺒﺪﻳﻞ ﻓﻮرﻳﻪ ﮔﺴﺴﺘﻪ وارون )‪120............................................................................................... ifft(t‬‬
‫‪ 2-13‬ﺗﻮاﺑﻊ ﺳﻴﺴﺘﻢ ﻫﺎ‪122 .......................................................................................................‬‬
‫دﺳﺘﻮر اﻳﺠﺎد ﺗﺎﺑﻊ ﺗﺒﺪﻳﻞ زﻣﺎن ﭘﻴﻮﺳﺘﻪ ‪122..................................................................................... tf‬‬
‫ﺗﺮﺳﻴﻢ )(‪ bode‬ﺑﺮاي ﻳﻚ ﺳﻴﺴﺘﻢ‪122..................................................................................................‬‬
‫واﻛﻨﺶ ﭘﻠﻪ اي و واﻛﻨﺶ اﻳﻤﭙﺎﻟﺴﻲ )(‪122..................................................................step(), impulse‬‬
‫دﻳﺎﮔﺮام ﻧﺎﻳﻜﻮﻳﻴﺴﺖ ‪122....................................................................................... Nyquist Diagram‬‬
‫ﺗﻐﻴﻴﺮ ﺗﺎﺑﻊ ﺗﺒﺪﻳﻞ ﺑﻪ ﻓﺮم ﻓﻀﺎي ﺣﺎﻟﺖ ‪122..................................................................................tf2ss‬‬
‫دﺳﺘﻮر ‪ rlocus‬ﺑﺮاي رﺳﻢ ﻣﻜﺎن ﻫﻨﺪﺳﻲ رﻳﺸﻪ ﻫﺎ‪124..........................................................................‬‬
‫ﺳﻴﺴﺘﻢ ﻓﻴﺪﺑﻚ ﻣﻨﻔﻲ ﺑﺎ دﺳﺘﻮر )(‪124.................................................................................. feedback‬‬
‫‪ 3-13‬ﻣﺪل زﻣﺎن ﮔﺴﺴﺘﻪ ‪124 ............................................................. Discrete-Time Models‬‬
‫ﺗﺎﺑﻊ ﺗﺒﺪﻳﻞ زﻣﺎن ﮔﺴﺴﺘﻪ ﻣﺪار ‪124........................................................................................... Lead‬‬
‫‪ 4-13‬ﻓﻴﻠﺘﺮﻫﺎ‪125 ....................................................................................................................‬‬
‫ﻓﻴﻠﺘﺮ ‪ Butterworth‬آﻧﺎﻟﻮگ و دﻳﺠﻴﺘﺎل‪ ،‬دﺳﺘﻮر )(‪125................................................................ butter‬‬
‫‪ 5-13‬ﺗﻤﺮﻳﻦ ‪127 ....................................................................................................................‬‬

‫ﻓﺼﻞ ‪ 14‬واﺳﻂ ﮔﺮاﻓﻴﻜﻲ ﻛﺎرﺑﺮ ‪128 .....................................................................‬‬


‫‪ 1-14‬واﺳﻂ ﮔﺮاﻓﻴﻜﻲ ﻛﺎرﺑﺮ ‪128 ........................................... (GUI) graphical user interface‬‬
‫ﺷﺎﺧﺼﻪ ﻳﺎب ‪129................................................................................................ property inspector‬‬

‫‪XI‬‬
‫ﺷﺎﺧﺼﻪ ﻋﻨﻮان ‪129.................................................................................................. Name or String‬‬
‫ﺷﺎﺧﺼﻪ ﺑﺮﭼﺴﺐ ‪130................................................................................................................. Tag‬‬
‫ﺗﻮاﺑﻊ ﻓﺮاﺧﻮان ‪130.............................................................................................. Callback Function‬‬
‫ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ‪130.............................................................................................................................‬‬
‫‪ 2-14‬ﺗﻤﺮﻳﻦ ‪132 ....................................................................................................................‬‬

‫ﻓﺼﻞ ‪ 15‬ﻧﻜﺎﺗﻲ ﭘﻴﺮاﻣﻮن ﺻﻔﺤﻪ ﮔﺴﺘﺮده ‪135 .........................................................‬‬


‫‪ 1-15‬ﺑﺮﭼﺴﺐ ﮔﺬاري ‪135 ......................................................................................................‬‬
‫ﺑﺮﭼﺴﺐ ﭘﻴﺶ ﻓﺮض ﻳﻚ ﺳﻠﻮل ‪135...................................................................................................‬‬
‫ﺑﺮﭼﺴﺐ ﮔﺬاري دل ﺧﻮاه‪ ،‬ﻣﺘﻐﻴﺮ و آراﻳﻪ در اﻛﺴﻞ ‪135.......................................................................‬‬
‫ﻛﺘﺎﺑﺨﺎﻧﻪ داﺧﻠﻲ اﻛﺴﻞ‪137.................................................................................................................‬‬
‫‪ 2-15‬ﻓﺮﻣﻮل دﻫﻲ ‪137 ............................................................................................................‬‬
‫ﻣﻴﻠﻪ ﻓﺮﻣﻮل ‪137........................................................................................................... Formula Bar‬‬
‫رﺟﻮع ﻧﺴﺒﻲ و رﺟﻮع ﻣﻄﻠﻖ ﺑﻪ ﺳﻠﻮل‪138...........................................................................................‬‬
‫ﻧﺎﻣﮕﺬاري ‪139..................................................................................................................................‬‬
‫‪ 3-15‬ﭘﺮ ﻛﺮدن ﺳﻠﻮل ﻫﺎ ﺑﺎ ﻟﻴﺴﺖ ﻫﺎي ﻗﺮاردادي ‪140 ................................................................‬‬
‫‪ 4-15‬ﺗﻤﺮﻳﻦ ‪141 ....................................................................................................................‬‬

‫ﻓﺼﻞ ‪ 16‬ﻋﻤﻠﻴﺎت ﻣﺤﺎﺳﺒﺎﺗﻲ‪ ،‬ﺗﻮاﺑﻊ و ﻧﻤﻮدارﻫﺎ ‪142 ...............................................‬‬


‫‪ 1-16‬ﭼﻨﺪ ﺗﺎﺑﻊ ﻛﺘﺎب ﺧﺎﻧﻪ اي‪142 ...........................................................................................‬‬
‫‪ 2-16‬ﻧﻤﻮدارﻫﺎ ‪142 .................................................................................................................‬‬
‫ﻧﻤﻮدار ﺳﺘﻮﻧﻲ ‪142............................................................................................................................‬‬
‫ﺗﺮﺳﻴﻢ ﻣﻨﺤﻨﻲ ‪142.............................................................................................................................‬‬
‫ﺟﺒﺮي ﺳﺎزي ﻣﻨﺤﻨﻲ‪143....................................................................................................................‬‬
‫‪ 3-16‬ﻫﻴﺴﺘﻮﮔﺮام‪144 ..............................................................................................................‬‬
‫‪145 ..........................................................‬‬ ‫‪VBA in Excel‬‬ ‫‪ 4-16‬ﺗﺎﺑﻊ ﻛﺎرﺑﺮ‪ -‬ﺗﻌﺮﻳﻒ در اﻛﺴﻞ‬
‫ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ‪145.............................................................................................................................‬‬
‫اﺳﺘﻔﺎده از ﺗﺎﺑﻊ ‪ VBA‬در ﺻﻔﺤﻪ ﮔﺴﺘﺮده ‪146.......................................................................................‬‬
‫‪ 5-16‬ﺿﺒﻂ ﻣﺎﻛﺮو ‪147 ...........................................................................................................‬‬

‫‪XII‬‬
‫‪ 6-16‬اﺑﺰارﻫﺎي ﻣﺤﺎﺳﺒﺎﺗﻲ ‪148 .................................................................................................‬‬
‫‪148................................................................................................................................ Goal Seek‬‬
‫‪148....................................................................................................................................... Solver‬‬
‫ﺟﺪول داده ‪151.............................................................................................................. Data Table‬‬
‫‪ 7-16‬ﺗﻤﺮﻳﻦ ‪152 ....................................................................................................................‬‬

‫‪XIII‬‬
‫ﻓﺼﻞ ‪ 1‬ﻛﻠﻴﺎت و اﺻﻮل‬
‫‪ 1-1‬ﻣﻘﺪﻣﻪ‬
‫‪MATLAB‬‬ ‫واژه‬
‫ﻛﻠﻤﻪ ﻓﻮق‪ ،‬ﺳﺮ‪ -‬واژهي ﻋﺒﺎرت ‪ MATrix LABoratory‬اﺳﺖ‪ ،‬ﻛﻪ در اﻳﻦ ﻣﺘﻦ ﺑﻪﺷﻜﻞ ‪ MATLAB‬ﻳﺎ ﻣﺘﻠﺐ ﻣﻲآﻳﺪ‪.‬‬
‫ﺑﺮاي اﺟﺮاي ﻣﺜﺎلﻫﺎ و ﺗﻤﺮﻳﻦﻫﺎي اﻳﻦ ﻣﺘﻦ از ‪ MATLAB 6.5, Release 13‬اﺳﺘﻔﺎده ﺷﺪه‪ ،‬و اﺳﺘﻔﺎده از آن )ﻳﺎ‬
‫وﻳﺮاﺳﺖﻫﺎي ﺑﺎﻻﺗﺮ( ﺑﻪ داﻧﺸﺠﻮﻳﺎن ﺗﻮﺻﻴﻪ ﻣﻲﺷﻮد‪.‬‬
‫‪MATLAB‬‬ ‫ﺳﻴﻤﺎي‬
‫‪ MATLAB‬زﺑﺎﻧﻲ اﺳﺖ ﻛﻪ ﻛﺎرﺑﺮد ﻛﺎﻣﭙﻴﻮﺗﺮ در ﻣﻬﻨﺪﺳﻲ را ﺑﺎ ﻛﺎراﺋﻲ ﺑﺎﻻ ﺗﻀﻤﻴﻦ ﻛﺮده و اﻣﻜﺎﻧﺎت ﻣﺤﺎﺳﺒﺎﺗﻲ‪ ،‬ﺗﺼﻮﻳﺮي‪ ،‬و‬
‫ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ را در ﻣﺤﻴﻄﻲ آﺳﺎن و آﺷﻨﺎ ﻓﺮاﻫﻢ ﻣﻲﻛﻨﺪ‪ .‬ﻛﺎراﺋﻲ ‪ MATLAB‬در ﻣﻘﻮﻟﻪﻫﺎﺋﻲ ﻧﻈﻴﺮ‪ :‬ﻣﺤﺎﺳﺒﺎت رﻳﺎﺿﻲ‪ ،‬دﺳﺘﺮﺳﻲ‬
‫ﺑﻪ‪ /‬و آﻧﺎﻟﻴﺰ دادهﻫﺎ‪ ،‬ﻣ‪‬ﺪلﺳﺎزي و ﺷﺒﻴﻪﺳﺎزي‪ ،‬ﮔﺮاﻓﻴﻚ‪ ،‬و ﺗﻮﻟﻴﺪ ﻧﺮماﻓﺰار )ﺣﺘﻲ ﺑﺮاي ﻣﺤﻴﻂ وﻳﻨﺪوز( ﺑﻪ اﺛﺒﺎت رﺳﻴﺪه اﺳﺖ‪.‬‬
‫اﻳﻦ زﺑﺎن ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﻧﻈﺮات ﻛﺎرﺑﺮان داﻧﺸﮕﺎﻫﻲ و ﺻﻨﻌﺘﻲ دﺳﺖﺧﻮش ﺑﺎزﻧﮕﺮيﻫﺎي زﻳﺎدي ﺷﺪه و اﻛﻨﻮن ﺑﻪ زﺑﺎن اﺳﺘﺎﻧﺪارد‬
‫ﺟﻬﺖ آﻣﻮزشﻫﺎي ﻣﻘﺪﻣﺎﺗﻲ و ﻋﺎﻟﻲ و اﺑﺰار ﭘﮋوﻫﺶ و ﺗﻮﺳﻌﻪ در ﺻﻨﺎﻳﻊ ﺗﺒﺪﻳﻞ ﺷﺪه اﺳﺖ‪.‬‬
‫‪ MATLAB‬ﺟﻌﺒﻪاﺑﺰارﻫﺎﺋﻲ ﺑﺮاي ﻛﺎرﺑﺮدﻫﺎي ﺧﺎص در اﺧﺘﻴﺎر ﻗﺮار ﻣﻲدﻫﺪ‪ ،‬ﻛﻪ از ﺟﻤﻠﻪ آنﻫﺎ ﺟﻌﺒﻪاﺑﺰار رﻳﺎﺿﻴﺎت‪ ،‬ﻛﻨﺘﺮل‪،‬‬
‫ﺷﺒﻜﻪﻫﺎي ﻋﺼﺒﻲ‪ ،‬ﺑﺎزرﮔﺎﻧﻲ‪ . . . ،‬ﻣﻲﺑﺎﺷﻨﺪ‪ .‬ﺟﻌﺒﻪ اﺑﺰارﻫﺎ ﺑﺎ زﺑﺎن ﻣﺘﻠﺐ و ﺑﻪ ﺻﻮرت ﻣﺠﻤﻮﻋﻪاي از ام‪ -‬ﻓﺎﻳﻞﻫﺎ ﮔﺴﺘﺮش‬
‫ﻳﺎﻓﺘﻪاﻧﺪ و ﺑﺮاي ﻫﺮ ﻛﺎرﺑﺮ در زﻣﻴﻨﻪ ﺗﺨﺼﺼﻲاش ﻛﺎرﺑﺮد و اﻫﻤﻴﺖ زﻳﺎد دارﻧﺪ‪ .‬اﻣﻜﺎن ﺳﺎﺧﺖ ﺟﻌﺒﻪاﺑﺰارﻫﺎي ﺟﺪﻳﺪ و ﺷﺨﺼﻲ‬
‫ﻧﻴﺰ ﺑﺮاي ﻛﺎرﺑﺮان ﭘﻴﺸﺮﻓﺘﻪ ﻓﺮاﻫﻢ اﺳﺖ‪.‬‬
‫در اﻳﻦ ﻧﺮماﻓﺰار ﻫﺮ ﻣﺘﻐﻴﺮ ﺑﻪ ﻋﻨﻮان ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﻳﺎ ﻳﻚ ﺑﺮدار )ﺑﺮدار ﻣﺎﺗﺮﻳﺲ ﺗﻚ ﺳﻄﺮي ﻳﺎ ﺗﻚ ﺳﺘﻮﻧﻲ اﺳﺖ( ﺷﻨﺎﺧﺘﻪ ﻣﻲ‪-‬‬
‫ﺷﻮد‪ .‬ﻟﺬا ﺗﻌﺪادي ﻣﻘﺪار را ﻳﻚ ﺟﺎ ﻣﻲﺗﻮان ﺑﻪ ﻳﻚ ﻣﺘﻐﻴﺮِ ﺗﻚ‪ -‬ﻧﺎم )ﺑﺪون ﻧﻴﺎز ﺑﻪ اﻋﻼم ﻗﺒﻠﻲ ﺗﻌﺪاد اﻋﻀﺎء( ﻧﺴﺒﺖ داد‪ .‬اﻳﻦ‬
‫اﺑﺘﻜﺎر ﻣﺎ را از ﻣﻘﺪار دﻫﻲ ﺑﻪ و ﻧﻤﺎﻳﺶ ﺗﻚ ﺗﻚ ﻋﻨﺎﺻﺮ آراﻳﻪ ﻛﻪ در زﺑﺎنﻫﺎي ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ اﻧﺠﺎم ﻣﻲﺷﻮد ﺑﻲﻧﻴﺎز ﻣﻲﻛﻨﺪ‪.‬‬
‫ﻣﺘﻠﺐ داراي ﭘﻨﺞ وﻳﮋﮔﻲ ﺷﺎﻳﺎن ذﻛﺮ اﺳﺖ‪:‬‬
‫‪ -1‬ﭘﻨﺠﺮهي واﺳﻂ ﻛﺎرﺑﺮ ‪ (IDE) Integrated Development Environment‬ﺑﺴﻴﺎر دلﭘﺬﻳﺮ و‬
‫دﺳﺖﻳﺎﻓﺘﻨﻲ ﻛﻪ از اﻣﺘﻴﺎزات ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﻣﺘﻨﻲ و ﮔﺮاﻓﻴﻜﻲ ﻫﺮ دو اﺳﺘﻔﺎده ﻣﻲﻛﻨﺪ‪ .‬اﻳﻦ واﺳﻂ ﻛﺎرﺑﺮ‬
‫ﺷﺎﻣﻞ ﭘﻨﺠﺮهﻫﺎي‪ :‬ﻓﺮﻣﺎن‪ ،‬دﻳﺮﻛﺘﻮري ﺟﺎري‪ ،‬ﺗﺎرﻳﺨﭽﻪ ﻓﺮﻣﺎن‪ ،‬ﻓﻀﺎي ﻛﺎر‪ . . . ،‬اﺳﺖ‪ .‬ﭘﻨﺠﺮهي ﻓﺮﻣﺎن دﺳﺘﻮرات را‬
‫ﺑﻪ ﺻﻮرت ﻛﻨﺴﻮل ﻳﺎ ﺧﻂ ﻓﺮﻣﺎن‪ ،‬ﻣﺸﺎﺑﻪ ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ‪ ،DOS‬درﻳﺎﻓﺖ و اﺟﺮا ﻣﻲﻛﻨﺪ‪ .‬ﭘﻨﺠﺮه ﻓﻀﺎي ﻛﺎر ﻛﻠﻴﻪ‬
‫ﻣﺘﻐﻴﺮﻫﺎي ﻓﻀﺎي ﻛﺎر را ﺑﺎ ﻣﺸﺨﺼﺎت آنﻫﺎ ﻧﻤﺎﻳﺶ ﻣﻲدﻫﺪ‪ .‬ﭘﻨﺠﺮهﻫﺎي واﺳﻂ ﻛﺎرﺑﺮ دﻳﻨﺎﻣﻴﻚ ﺑﻮده و ﻣﻤﻜﻦ اﺳﺖ‬
‫ﺧﻮد ﺷﺎﻣﻞ ﭘﻨﺠﺮهﻫﺎي ﻓﺮﻋﻲ ﺑﺎﺷﻨﺪ‪ .‬ﻫﻤﻴﺸﻪ ﺑﺎ اﺟﺮاي زﻳﺮﻣﻨﻴﻮي ‪ Default‬از ﻣﻨﻴﻮي اﺻﻠﻲ ﻣﻲﺗﻮان ﭼﻬﺎر‬
‫ﭘﻨﺠﺮهي‪ Command, Command History, Workspace, Current Directory :‬را‬
‫ﻛﻪ ﻛﺎرﺑﺮديﺗﺮ ﻫﺴﺘﻨﺪ‪ ،‬ﻇﺎﻫﺮ ﻛﺮد و در دﺳﺘﺮس داﺷﺖ‪.‬‬
‫‪ -2‬ﻛﺘﺎبﺧﺎﻧﻪي ﻋﻈﻴﻤﻲ از ﺗﻮاﺑﻊ ﻣﻘﺪﻣﺎﺗﻲ و ﭘﻴﺸﺮﻓﺘﻪ‪.‬‬
‫‪ -3‬زﺑﺎن ﻗﻮي ﻫﻢ ﺑﺮاي ﻓﺮاﻣﻴﻦ ﻛﻮﺗﺎه و ﻳﻚﺑﺎر ﻣﺼﺮف و ﻫﻢ ﺑﺮاي ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﺑﺰرگ و ﻛﺎرﺑﺮدي‪.‬‬
‫‪ -4‬روشﻫﺎي ﻣﺘﻌﺪد ﺗﺮﺳﻴﻤﺎت دوﺑﻌﺪي و ﺳﻪﺑﻌﺪي‪.‬‬
‫‪ -5‬واﺳﻂ ﻣﻴﺎنﺑﺮﻧﺎﻣﻪاي )‪ Application Program Interface (API‬ﻛﻪ اﻣﻜﺎن ﻓﺮاﺧﻮاﻧﻲ‬
‫ﺑﺮﻧﺎﻣﻪﻫﺎي ﻣﺘﻠﺐ از زﺑﺎنﻫﺎي ‪ C‬و ‪ ، Fortran‬ﺗﺒﺪﻳﻞ ﻓﺎﻳﻞﻫﺎي ﻣﺘﻠﺐ )ام‪ -‬ﻓﺎﻳﻞﻫﺎ( ﺑﻪ زﺑﺎن ‪ ، C‬و اﺳﺘﻔﺎده از‬
‫ﻣﻮﺗﻮر ﻣﺤﺎﺳﺒﺎﺗﻲ ﻣﺘﻠﺐ در اﻳﻦ زﺑﺎنﻫﺎ را ﻓﺮاﻫﻢ ﻣﻲﻛﻨﺪ‪ .‬ﺑﺎ اﺳﻔﺎده از ﺗﺒﺪﻳﻼت ﻓﻮق ﻣﻲﺗﻮان ﺑﺮﻧﺎﻣﻪﻫﺎي ﻧﻮﺷﺘﻪ ﺷﺪه‬

‫‪14‬‬
‫در ﻣﺤﻴﻂ ﻣﺘﻠﺐ را ﺑﻪ ﺻﻮرت اﺟﺮاﺋﻲِ ﻛﻨﺴﻮﻟﻲ )ﻗﺎﺑﻞ اﺟﺮا از ﺧﻂ ﻓﺮﻣﺎن ﺳﻴﺴﺘﻢ ﻋﺎﻣﻞ( درآورد‪ .‬ﻫﻢﭼﻨﻴﻦ اﻣﻜﺎن‬
‫ﺗﻬﻴﻪ ﻓﺎﻳﻞﻫﺎي اﺟﺮاﺋﻲ ﺑﺎ واﺳﻂ ﮔﺮاﻓﻴﻜﻲ ﺑﺮاي وﻳﻨﺪوز وﺟﻮد دارد‪.‬‬
‫‪ -6‬دارا ﺑﻮدن راﻫﻨﻤﺎي ﺟﺎﻣﻊ و ﻛﺎﻣﻞِ ﻛﻨﺎرِ دﺳﺖ و وﺟﻮد ﻣﺪارك راﻫﻨﻤﺎي ﻗﺎﺑﻞ ﭼﺎپ ﺑﻪ ﺻﻮرت ‪ PDF‬ﻛﻪ ﺗﻮﺳﻂ‬
‫ﺷﺮﻛﺖ ‪) Mathworks‬ﺳﺎزﻧﺪه ﻣﺘﻠﺐ( اراﺋﻪ ﺷﺪهاﻧﺪ‪.‬‬
‫روش اﻳﻦ ﻛﺘﺎب‬
‫روش ﻛﺎر ﻣﺎ در اﻳﻦ ﻣﺘﻦ ﻳﺎدﮔﻴﺮي‪ -‬ﺑﺎ‪ -‬ﻣﺜﺎل ‪ Learn by Examples‬اﺳﺖ‪ .‬ازاﻳﻦرو اﺟﺮاي ﻣﺘﻠﺐ‪ ،‬ﻫﻢزﻣﺎن ﺑﺎ‬
‫ﻣﻄﺎﻟﻌﻪ ﻣﺘﻦ اﻛﻴﺪاٌ ﺗﻮﺻﻴﻪ ﻣﻲﺷﻮد‪ .‬در ﻣﺜﺎلﻫﺎي ﻛﺎرﺑﺮدي ﻧﻮع ﻛﺎرﺑﺮد ﻣﺸﺨﺺ اﺳﺖ‪.‬‬
‫‪ -‬در ﻛﻠﻴﻪ ﻣﺜﺎلﻫﺎ‪ ،‬دﺳﺘﻮرات ﻓﻮري ﻛﻪ روي ﭘﻨﺠﺮه ﻓﺮﻣﺎن ﻧﻮﺷﺘﻪ ﻣﻲﺷﻮﻧﺪ‪ ،‬ﺑﻌﺪاز ﻋﻼﻣﺖ >> )ﻧﺸﺎﻧﻪ ﺳﻄﺮ ﻓﺮﻣﺎن‬
‫‪ (Command Prompt‬آﻣﺪهاﻧﺪ‪ .‬در اﻧﺘﻬﺎي ﻫﺮ دﺳﺘﻮر ﻓﻮري ﺑﺎﻳﺴﺘﻲ ﻛﻠﻴﺪ >‪ <Enter‬زده ﺷﻮد‪.‬‬
‫‪ -‬ﺳﻄﺮﻫﺎﺋﻲ ﻛﻪ در ادﻳﺘﻮر ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﺑﻪ ﺻﻮرت ام‪ -‬ﻓﺎﻳﻞ ﻧﻮﺷﺘﻪ ﻣﻲﺷﻮﻧﺪ ﺑﺪون ﻋﻼﻣﺖ >> آﻣﺪهاﻧﺪ‪ .‬ﺑﺮاي اﺟﺮاي آنﻫﺎ‬
‫ﺑﺎﻳﺪ از داﺧﻞ ادﻳﺘﻮر دﻛﻤﻪ ‪ Run‬ﻳﺎ ﻛﻠﻴﺪ ‪ F5‬را زد‪.‬‬
‫‪ -‬ﻧﺘﺎﻳﺠﻲ ﻛﻪ روي ﭘﻨﺠﺮه ﻓﺮﻣﺎن ﻳﺎ ﭘﻨﺠﺮهﻫﺎي دﻳﮕﺮ ﻇﺎﻫﺮ ﻣﻲﺷﻮﻧﺪ )ﺗﺤﺖ ﻧﺎم ﺧﺮوﺟﻲ( داﺧﻞ ﻛﺎدرِ ﺧﻂﭼﻴﻦ آﻣﺪهاﻧﺪ‪.‬‬
‫‪ -‬اﮔﺮ در ﭘﺎﻳﺎن ﺑﻌﻀﻲ از دﺳﺘﻮرﻫﺎ ﻋﻼﻣﺖ ﺳﻤﻲﻛﺎﻟﻦ )ﻧﻘﻄﻪ‪ -‬وﻳﺮﮔﻮل( ﻗﺮار دﻫﻴﻢ ﻧﺘﻴﺠﻪ اﺟﺮا ﭘﺲ از زدن ﻛﻠﻴﺪ >‪<Enter‬‬
‫در ﭘﻨﺠﺮه ﻓﺮﻣﺎن ﻇﺎﻫﺮ ﻧﻤﻲﺷﻮد‪ .‬اﻳﻦ ﻣﻮﺿﻮع در ﻣﻮرد دﺳﺘﻮراﺗﻲ ﻧﻈﻴﺮ ‪ disp(), input(),...‬و دﺳﺘﻮرات‬
‫ﻧﻤﺎﻳﺶ ﮔﺮاف ﺻﺪق ﻧﻤﻲﻛﻨﺪ‪.‬‬
‫‪ -‬ﻋﻼﻣﺖ ‪ %‬ﺑﺮاي ﺗﻮﺿﻴﺤﺎت ‪ Comments‬ﻣﻲآﻳﺪ و آنﭼﻪ ﺑﻌﺪاز آن ﻧﻮﺷﺘﻪ ﺷﻮد ﺟﺰو دﺳﺘﻮرات ﻣﻨﻈﻮر ﻧﻤﻲﺷﻮد‪.‬‬
‫‪ -‬ﺧﺮوﺟﻲﻫﺎي ﮔﺮاﻓﻴﻜﻲ در ﭘﻨﺠﺮه ﮔﺮاﻓﻴﻚ ﻇﺎﻫﺮ ﻣﻲﺷﻮﻧﺪ‪.‬‬
‫‪ -‬ﺗﻤﺮﻳﻦﻫﺎي ﭘﺎﻳﺎن درس از ﻧﻜﺎت ﺑﺮﺟﺴﺘﻪ ﻣﺘﻦ ﮔﻞﭼﻴﻦ ﺷﺪه‪ ،‬ﻧﻘﺶ ﺧﻮدآزﻣﺎ را دارﻧﺪ‪ .‬اﻧﺠﺎم آنﻫﺎ ﺿﺮوري اﺳﺖ‪.‬‬
‫ﻋﻼﺋﻢ و دورﭼﻴﻦ ﻫﺎي اﺳﺘﻔﺎده ﺷﺪه در ﻣﺘﻦ‬
‫در ﻣﺜﺎلﻫﺎي اﻳﻦ ﻛﺘﺎب ﺑﺮاي ﺗﻔﻜﻴﻚ ﻗﺴﻤﺖﻫﺎ و اﻳﺠﺎد ﺧﻮاﻧﺎﺋﻲ ﺑﻴﺸﺘﺮ‪:‬‬
‫اﻟﻒ‪ -‬در ﻣﻘﺎﺑﻞ دﺳﺘﻮرات ﭘﻨﺠﺮه ﻓﺮﻣﺎن ﻋﻼﻣﺖ >> آﻣﺪه اﺳﺖ‪.‬‬
‫ب‪ -‬اﮔﺮ ﻋﻼﻣﺖ ﻓﻮق در ﻣﻘﺎﺑﻞ دﺳﺘﻮراﺗﻲ ﻧﺒﺎﺷﺪ ﺑﻪ اﻳﻦ ﻣﻌﻨﻲ اﺳﺖ ﻛﻪ دﺳﺘﻮران ﺑﻪ ﺻﻮرت ﺑﺮﻧﺎﻣﻪ در ام‪ -‬ﻓﺎﻳﻞ ﻧﻮﺷﺘﻪ و‬
‫اﺟﺮا ﺷﺪهاﻧﺪ‪.‬‬
‫ج‪ -‬ﻫﻢﭼﻨﻴﻦ از دورﭼﻴﻦﻫﺎي زﻳﺮ اﺳﺘﻔﺎده ﺷﺪه اﺳﺖ‪.‬‬

‫ﺧﺮوﺟﻲ‪ :‬ﻧﺘﻴﺠﻪي ﻋﻤﻠﻴﺎت در ﭘﻨﺠﺮه ﻓﺮﻣﺎن ﻳﺎ ﺧﺮوﺟﻲِ ﺗﺼﻮﻳﺮي ﻳﻚ ﺑﺮﻧﺎﻣﻪ‬

‫ﻧﻜﺎت آﻣﻮزﺷﻲ داﺧﻞ ﻣﺜﺎلﻫﺎ ﻳﺎ ﺟﺰﺋﻴﺎﺗﻲ ﻛﻪ در ﻣﺘﻦ ذﻛﺮ ﻧﺸﺪهاﻧﺪ‬ ‫راﻫﻨﻤﺎ‪:‬‬

‫دﻗﺖ ﻛﻨﻴﺪ‪ :‬ﻣﻮاردي ﻛﻪ ﻧﻴﺎز ﺑﻪ ﺗﺄﻛﻴﺪ ﺑﻴﺸﺘﺮ دارﻧﺪ و ﺟﻠﺐ ﺗﻮﺟﻪ ﺑﻪ ﻣﻮارد ﻣﻬﻢ‬

‫‪15‬‬
‫‪ 2-1‬ﻣﺤﻴﻂ ﻛﺎر ﻣﺘﻠﺐ‬
‫ﭘﺲ از ورود ﺑﻪ ﻣﺤﻴﻂ ﻛﺎر ﻣﺘﻠﺐ‪ ،‬ﻫﺮ زﻣﺎن ﻛﻪ ﮔﺰﻳﻨﻪ ‪ Default‬را ﻣﻄﺎﺑﻖ ﺷﻜﻞ زﻳﺮ ﻛﻠﻴﻚ ﻛﻨﻴﻢ‪:‬‬

‫ﺷﻜﻞ‪ 1-1‬اﻧﺘﺨﺎب ﮔﺰﻳﻨﻪ ‪ Default‬در ﻣﺘﻠﺐ وﻳﺮاﺳﺖ ‪6.5‬‬

‫ﺳﻪ ﭘﻨﺠﺮه ﺑﺎز ﻣﻲﺷﻮﻧﺪ ﻛﻪ ﺑﻴﺸﺘﺮﻳﻦ ﻣﻮرد اﺳﺘﻔﺎده را دارﻧﺪ‪:‬‬


‫‪ Command Window -1‬ﭘﻨﺠﺮه ﻓﺮﻣﺎن ﻛﻪ ﻣﺤﻞ اﺟﺮاي ﻛﻠﻴﻪ ﻓﺮﻣﺎنﻫﺎ و ﻣﻘﺪار دﻫﻲﻫﺎي ﻓﻮري ﺑﻪ ﻣﺜﻐﻴﺮﻫﺎ‪ ،‬و ﻧﻤﺎﻳﺶ‬
‫ﻧﺘﺎﻳﺞ اﺟﺮا اﺳﺖ‪.‬‬
‫‪ Workspace -2‬ﭘﻨﺠﺮه ﻓﻀﺎي ﻛﺎر ﻛﻪ ﻧﻤﺎﻳﺶ دﻫﻨﺪه ﻛﻠﻴﻪ ﻣﺘﻐﻴﺮﻫﺎي ﺗﻌﺮﻳﻒ ﺷﺪه از داﺧﻞ ﭘﻨﺠﺮه ﻓﺮﻣﺎن )ﻳﺎ ﺑﻪ ﻃﺮق‬
‫دﻳﮕﺮ( و ﻣﺸﺨﺼﻪﻫﺎي آنﻫﺎ اﺳﺖ‪.‬‬
‫ﻣﻲﺗﻮان ﺑﻪ ﺟﺎي ﭘﻨﺠﺮه ﻓﻀﺎي ﻛﺎر‪ ،‬ﭘﻨﺠﺮه دﻳﺮﻛﺘﻮري ﺟﺎري ‪ Current Durectory‬را ﻓﻌﺎل ﻛﺮد ﻛﻪ ﻛﻠﻴﻪ ﻓﺎﻳﻞﻫﺎي‬
‫ﻣﻮﺟﻮد در دﻳﺮﻛﺘﻮري ﻣﻮرد رﺟﻮع ﻣﺘﻠﺐ را ﻧﺸﺎن ﻣﻲدﻫﺪ‪.‬‬
‫‪ Command History -3‬ﭘﻨﺠﺮه ﻳﺎدداﺷﺖ ﻓﺮﻣﺎن ﻛﻪ ﻣﺤﻞ ﻧﮕﻪداري آنﭼﻪ ﺗﺎﻛﻨﻮن در ﭘﻨﺠﺮه ﻓﺮﻣﺎن آﻣﺪه ﻣﻲﺑﺎﺷﺪ‪.‬‬

‫ﭘﻨﺠﺮهﻫﺎي ﻣﺘﻠﺐ را ﻣﻲﺗﻮان ﺑﻪ اﻧﻮاع ﺷﻜﻞﻫﺎي دلﺧﻮاه درآورد‪ ،‬ﻣﺜﻼً ﺑﺎ ﻛﻠﻴﻚ ﭘﻴﻜﺎن ﻣﻮرب در ﮔﻮﺷﻪ راﺳﺖ ﻫﺮ ﭘﻨﺠﺮه ﻣﻲ‪-‬‬
‫ﺗﻮان آن را ﺑﻪ ﺗﻨﻬﺎ ﭘﻨﺠﺮه ﻣﻮرد ﻣﺸﺎﻫﺪه ﺗﺒﺪﻳﻞ ﻛﺮد‪.‬ﻟﻴﻜﻦ ﻣﺎ ﻣﻌﻤﻮﻻً در ﺣﺎﻟﺖ ‪ Default‬ﻛﺎر ﻣﻲﻛﻨﻴﻢ‪.‬‬

‫‪16‬‬
‫ﭘﻨﺠﺮه ﻓﻀﺎي ﻛﺎر ‪Workspace‬‬
‫ﭘﻨﺠﺮه ﻓﺮﻣﺎن ‪Command Window‬‬
‫ﻧﻤﺎﻳﺶ دﻫﻨﺪه ﻛﻠﻴﻪ ﻣﺘﻐﻴﺮﻫﺎي ﺗﻌﺮﻳﻒ ﺷﺪه‬
‫و ﻣﺸﺨﺼﻪﻫﺎي آنﻫﺎ‬ ‫ﻣﺤﻞ اﺟﺮاي ﻛﻠﻴﻪ ﻓﺮﻣﺎنﻫﺎ و ﻣﻘﺪار دﻫﻲﻫﺎي‬
‫ﻓﻮري‪ ،‬و ﻧﻤﺎﻳﺶ ﻧﺘﺎﻳﺞ اﺟﺮا‬

‫‪Command History‬‬
‫ﭘﻨﺠﺮه ﻳﺎدداﺷﺖ ﻓﺮﻣﺎن‬
‫ﻣﺤﻞ ﻧﮕﻪداري آنﭼﻪ ﺗﺎﻛﻨﻮن در ﭘﻨﺠﺮه ﻓﺮﻣﺎن‬
‫اﺟﺮا ﺷﺪه‬

‫ﺷﻜﻞ ‪ 2-1‬ﭘﻨﺠﺮهﻫﺎي ﺣﺎﻟﺖ ‪ Default‬در ﻣﺘﻠﺐ‬

‫ﺷﻜﻞ ‪ 3-1‬ﭘﻨﺠﺮه دﻳﺮﻛﺘﻮري ﺟﺎري‪ ،‬دﻳﺮﻛﺘﻮري ﻣﻮرد رﺟﻮع ﻣﺘﻠﺐ‬

‫‪17‬‬
‫‪ 3-1‬آﻏﺎز ﻛﺎر ﺑﺎ ﻣﺘﻠﺐ‬
‫‪Matrix‬‬ ‫ﻣﺎﺗﺮﻳﺲ‬
‫ﻣﺘﻠﺐ ﺑﺎ ﻣﺎﺗﺮﻳﺲ ﻳﺎ ﺑﺮدار ﻛﺎر ﻣﻲﻛﻨﺪ‪.‬اﻏﻠﺐ ﻣﺘﻐﻴﺮﻫﺎ و ﻣﻘﺎدﻳﺮ آنﻫﺎ در ﻣﺘﻠﺐ ﻓﺮم ﻣﺎﺗﺮﻳﺲ دو ﺑﻌﺪي ﺑﺎ ‪ m‬ردﻳﻒ )ﺳﻄﺮ( و ‪n‬‬
‫ﺳﺘﻮن دارﻧﺪ‪ ،‬ﻛﻪ ﺑﻪ آن ﻣﺎﺗﺮﻳﺲ ‪ m×n‬ﮔﻔﺘﻪ ﻣﻲﺷﻮد )ﻛﻪ در ﻧﺎمﮔﺬاري اﻳﻦ ﻧﺮماﻓﺰار‪ MATrix LABoratory‬ﻣﺴﺘﺘﺮ‬
‫اﺳﺖ(‪ .‬ﻫﺮ ﻋﻀﻮ ﻣﺎﺗﺮﻳﺲ )‪ (Matrix Member‬را ﻋﻨﺼﺮ ﻣﺎﺗﺮﻳﺲ ﻳﺎ دراﻳﻪ ﻣﻲﮔﻮﻳﻴﻢ‪ .‬ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﺑﺎ ﺗﻌﺪادي ﺳﻄﺮ‬
‫)ردﻳﻒ(‪ ،‬ﺗﻌﺪادي ﺳﺘﻮن‪ ،‬و ﺗﻌﺪادي ﻋﻀﻮ )ﻣﺎ ﺑﻴﺸﺘﺮ ﺑﺎ اﻋﻀﺎء ﻋﺪدي ﺳﺮوﻛﺎر دارﻳﻢ(‪ ،‬ﺗﺤﺖ ﻳﻚ ﻧﺎم واﺣﺪ ﺷﻨﺎﺧﺘﻪ ﻣﻲﺷﻮد‪.‬‬
‫ﻧﺎم ﻣﺎﺗﺮﻳﺲ و ﻣﻘﺪار آن ﻫﻢزﻣﺎن در ﺧﻂ ﻓﺮﻣﺎن ﻧﻮﺷﺘﻪ ﻣﻲﺷﻮﻧﺪ و ﺑﺮﺧﻼف زﺑﺎنﻫﺎي دﻳﮕﺮ ﻧﻴﺎز ﺑﻪ اﻋﻼم ﻗﺒﻠﻲ ﻧﺎم و ﺗﻌﺪاد‬
‫اﻋﻀﺎء وﺟﻮد ﻧﺪارد‪ .‬ﻣﻔﻬﻮم ﻣﺎﺗﺮﻳﺲ و ﺑﺮدار ﻛﻪ ﻣﻌﺎدل ﻣﻔﻬﻮم آراﻳﻪ ﻫﺴﺘﻨﺪ‪ ،‬ﻣﺎ را از ﻣﻘﺪار دﻫﻲ ﺑﻪ ﺗﻚ ﺗﻚ ﻋﻨﺎﺻﺮ آراﻳﻪ و‬
‫ﻧﻤﺎﻳﺶ ﺗﻚ ﺑﻪ ﺗﻚ آنﻫﺎ ﻛﻪ در زﺑﺎنﻫﺎي ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﻣﻌﻤﻮﻻٌ از ﻃﺮﻗﻲ ﻣﺎﻧﻨﺪ اﺳﺘﻔﺎده از ﺣﻠﻘﻪﻫﺎي ﺗﻜﺮار اﻧﺠﺎم ﻣﻲﺷﻮد ﺑﻲ‪-‬‬
‫ﻧﻴﺎز ﻣﻲﻛﻨﺪ‪ .‬ﻫﺮ ﻣﺎﺗﺮﻳﺲ ﻛﺎﻣﻼً دﻳﻨﺎﻣﻴﻚ اﺳﺖ و ﭘﺲاز ﺗﻌﺮﻳﻒ ﻣﻲﺗﻮان ﻣﻘﺪار و ﺗﻌﺪاد ﺳﻄﺮ و ﺳﺘﻮن آنرا ﺗﻐﻴﻴﺮ داد‪.‬‬
‫ﻣﺎﺗﺮﻳﺲ ﺳﻪ ﺑﻌﺪي ﺑﺎ ‪ m‬ردﻳﻒ )ﺳﻄﺮ( و ‪ n‬ﺳﺘﻮن و ‪ p‬ﺻﻔﺤﻪ ﻧﻴﺰ وﺟﻮد دارد ﻛﻪ ﺑﻌﺪاً ﺑﻪ آن اﺷﺎره ﺧﻮاﻫﺪ ﺷﺪ‪.‬‬
‫در ﻣﺘﻠﺐ اﻧﻮاع ﻣﺎﺗﺮﻳﺲ ﻧﻈﻴﺮ ﺑﺮدار‪ ،‬ﻣﺎﺗﺮﻳﺲ ﻋﺪدي ﺑﺎ اﻋﺪاد ﻣﺨﺘﻠﻂ‪ ،‬ﻣﺎﺗﺮﻳﺲ ﻛﺎراﻛﺘﺮي‪ ،‬ﻣﺎﺗﺮﻳﺲ ﻧﻤﺎدﻳﻦ‪ ،‬ﻣﺎﺗﺮﻳﺲ ﺳﺎﺧﺘﺎري‪،‬‬
‫ﻣﺎﺗﺮﻳﺲ ﺳﻠﻮﻟﻲ‪ . . . ،‬ﻧﻴﺰ وﺟﻮد دارﻧﺪ‪.‬‬
‫ﺑﺮدار‬
‫ﺑﺮدار‪ ،‬ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﺗﻚ ﺳﻄﺮي )ردﻳﻔﻲ( ﻳﺎ ﺗﻚ ﺳﺘﻮﻧﻲ اﺳﺖ ﻛﻪ داراي ﺗﻌﺪادي ﻋﻀﻮ )ﻣﻌﻤﻮﻻٌ ﻣﻘﺎدﻳﺮ ﻋﺪدي( ﺑﻮده و ﺗﺤﺖ‬
‫ﻳﻚ ﻧﺎم واﺣﺪ ﺷﻨﺎﺧﺘﻪ ﻣﻲﺷﻮد‪ .‬ﻣﻌﻤﻮﻻٌ ﻛﻠﻤﻪ ﺑﺮدار ﺑﻪ ﺗﻨﻬﺎﺋﻲ ﺑﺮاي ﺑﺮدار ردﻳﻔﻲ ﺑﻪ ﻛﺎر ﻣﻲرود‪ .‬در ﻣﺘﻠﺐ ﺑﺮدارﻫﺎ ﻛﺎرﺑﺮد‬
‫زﻳﺎدي دارﻧﺪ‪ .‬ﻧﺎم ﺑﺮدار و ﻣﻘﺪار آن ﻫﻢزﻣﺎن در ﺧﻂ ﻓﺮﻣﺎن ﻧﻮﺷﺘﻪ ﻣﻲﺷﻮﻧﺪ و ﺑﺮﺧﻼف زﺑﺎنﻫﺎي دﻳﮕﺮ ﻧﻴﺎز ﺑﻪ اﻋﻼم ﻗﺒﻠﻲ ﻧﺎم‬
‫و ﺗﻌﺪاد اﻋﻀﺎء وﺟﻮد ﻧﺪارد‪ .‬ﻣﻔﻬﻮم ﺑﺮدار در ﻣﺘﻠﺐ ﻣﺎ را از ﻣﻘﺪار دﻫﻲ ﺑﻪ ﺗﻚ ﺗﻚ ﻋﻨﺎﺻﺮ آراﻳﻪ ﻛﻪ در زﺑﺎنﻫﺎي ﺑﺮﻧﺎﻣﻪ‬
‫ﻧﻮﻳﺴﻲ ﻣﻌﻤﻮل اﺳﺖ ﺑﻲﻧﻴﺎز ﻣﻲﻛﻨﺪ‪ .‬از ﻃﺮف دﻳﮕﺮ ﺑﺮاي رﺳﻢ ﺗﺮﺳﻴﻤﺎت‪ ،‬ﻳﻚ ﻣﺘﻐﻴﺮ ﺑﺮداري ﻣﻲﺗﻮاﻧﺪ ﺑﻪ ﺗﻨﻬﺎﺋﻲ ﻣﻘﺎدﻳﺮ روي‬
‫ﻳﻚ ﻣﺤﻮر را ﭘﻮﺷﺶ دﻫﺪ‪.‬‬
‫ﻫﺮ ﺑﺮدار ردﻳﻔﻲ ﻳﻚ ﻣﺎﺗﺮﻳﺲ دو ﺑﻌﺪي ‪) 1×n‬ﺗﻚردﻳﻔﻲ( و ﻫﺮ ﺑﺮدار ﺳﺘﻮﻧﻲ ﻳﻚ ﻣﺎﺗﺮﻳﺲ دو ﺑﻌﺪي ‪) m×1‬ﺗﻚﺳﺘﻮﻧﻲ(‬
‫اﺳﺖ‪ .‬ﭘﺲ ﻳﻜﻲ از اﺑﻌﺎد ﻫﺮ ﻧﻮع ﺑﺮدار ﻳﻚ اﺳﺖ‪ .‬ﻋﺪد ﺗﻜﻲ ﻳﺎ اﺳﻜﺎﻟﺮ ﻳﻚ ﻣﺎﺗﺮﻳﺲ ‪ 1×1‬اﺳﺖ‪.‬‬
‫آراﻳﻪ‪ ،‬ﻣﺘﻐﻴﺮ‪ ،‬ﻋﻤﻠﻴﺎت آراﻳﻪ اي‬
‫ﻫﻤﺎنﮔﻮﻧﻪ ﻛﻪ در ﺳﺎﻳﺮ زﺑﺎنﻫﺎي ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﺗﻌﺮﻳﻒ ﻣﻲﺷﻮد‪ ،‬آراﻳﻪ ﻳﻚ ﻧﺎم ﻛﻠﻲ ﺑﺮاي اﻧﻮاع ﻣﺎﺗﺮﻳﺲ‪ ،‬ﺑﺮدار و ﻛﻼٌ‬
‫ﻣﺠﻤﻮﻋﻪﻫﺎي ﻳﻚ ﺗﺎ ﭼﻨﺪﻳﻦ ﻋﻨﺼﺮي اﺳﺖ‪ .‬اﻳﻦ ﻋﻨﺎﺻﺮ در ﺗﻌﺪادي ردﻳﻒ‪ ،‬ﺳﺘﻮن‪ ،‬و ﺻﻔﺤﻪ ﻗﺮار ﮔﺮﻓﺘﻪاﻧﺪ‪ .‬در اﻳﻦ ﻣﺘﻦ ﻛﻠﻤﻪ‬
‫آراﻳﻪ اﻋﻢ از ﻛﻠﻤﺎت ﻣﺎﺗﺮﻳﺲ‪ ،‬ﺑﺮدار‪ ،‬و ﻣﺘﻐﻴﺮ ﺑﻪ ﻛﺎر ﻣﻲرود‪ ،‬و ﻛﻠﻤﺎت ﻣﺘﻐﻴﺮ و آراﻳﻪ ﻧﻴﺰ ﺑﻪ ﺟﺎي ﻫﻢ ﺑﻪ ﻛﺎر ﻣﻲروﻧﺪ‪.‬‬
‫در ﻣﺘﻠﺐ ﻣﺘﻐﻴﺮِ ﺗﻚﻣﻘﺪاري )اﺳﻜﺎﻟﺮ( ﻳﻚ آراﻳﻪي ﺗﻚ ﻋﻨﺼﺮي اﺳﺖ‪.‬‬
‫ﻫﻢﭼﻨﻴﻦ ﻋﻤﻠﻴﺎﺗﻲ ﻛﻪ ﺑﺮ روي ﺗﻚﺗﻚ ﻋﻨﺎﺻﺮ آراﻳﻪ اﻧﺠﺎم ﺷﻮد‪ ،‬ﻋﻤﻠﻴﺎت آراﻳﻪاي ﻧﺎم دارد ﻛﻪ در ﻣﻘﺎﺑﻞ ﻋﻤﻠﻴﺎت ﻣﺎﺗﺮﻳﺴﻲ‬
‫ﻗﺮار ﻣﻲﮔﻴﺮد )ﺷﺮح ﺑﻴﺸﺘﺮ ﺑﻌﺪاٌ ﻣﻲآﻳﺪ(‪.‬‬
‫ﺗﻌﺮﻳﻒ و ﻣﻘﺪار دﻫﻲ ﺑﻪ ﻳﻚ ﻣﺘﻐﻴﺮ‬
‫‪ A‬را ﻛﻪ ﻳﻚ ﻣﺎﺗﺮﻳﺲ ‪ (m = 2, n = 3)2×3‬ﻋﺪدي اﺳﺖ‪ ،‬در ﺟﺒﺮ اﻳﻦﮔﻮﻧﻪ ﻣﻲﻧﻮﻳﺴﻴﻢ‪:‬‬
‫┌‬ ‫┐‬
‫│‪│1 2 3‬‬
‫│ = ‪A‬‬ ‫│‬
‫│‪│4 5 6‬‬
‫└‬ ‫┘‬

‫‪18‬‬
‫ﻣﻌﺮﻓﻲ ﻣﺎﺗﺮﻳﺲ ﻓﻮق ‪ ، declaration‬و ﻣﻘﺪار دﻫﻲ ﻫﻢزﻣﺎن آنرا در ﻣﺘﻠﺐ ﺗﻌﺮﻳﻒ ﻣﺘﻐﻴﺮ ‪ ،definition‬ﻣﻲ‪-‬‬
‫ﮔﻮﺋﻴﻢ‪ .‬ﻣﺎﺗﺮﻳﺲ ﻓﻮق دو ﺑ‪‬ﻌﺪي اﺳﺖ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫ﻣﺎﺗﺮﻳﺲ ﻓﻮق را در ﻣﺘﻠﺐ ﺗﻌﺮﻳﻒ‪ ،‬و ﺑ‪‬ﻌﺪ آن را ﺑﺎ ﺗﺎﺑﻊ داﺧﻠﻲ)(‪ ndims‬ﺗﻌﻴﻴﻦ ﻛﻨﻴﺪ )ﺑﺮاي اﻃﻼع ﺑﻴﺸﺘﺮ از )(‪ndims‬‬
‫ﺑﻪ ﻣﺒﺤﺚ ﺗﻮاﺑﻊ اﻧﺪازهﮔﻴﺮ در ﻫﻤﻴﻦ ﻓﺼﻞ ﻣﺮاﺟﻌﻪ ﻛﻨﻴﺪ(‪.‬‬
‫]‪>> A = [1 2 3; 4 5 6‬‬
‫‪A = 1 2 3‬‬
‫‪4 5 6‬‬

‫)‪>> n = ndims(A‬‬
‫‪n = 2‬‬
‫ﻣﺸﺎﻫﺪه ﻳﻚ ﻣﺘﻐﻴﺮ و ﻧﻮﺷﺘﻦ ﺗﻮﺿﻴﺢ‬
‫ﺑﺮاي ﻣﺸﺎﻫﺪه ﻣﻘﺪار ﻫﺮ ﻣﺘﻐﻴﺮ در ﭘﻨﺠﺮه ﻓﺮﻣﺎن ﻛﺎﻓﻲ اﺳﺖ ﻧﺎم آنرا وارد ﻛﻨﻴﻢ‪.‬‬
‫اﮔﺮ در ﭘﺎﻳﺎن ﻳﻚ ﺳﻄﺮ ﻋﻼﻣﺖ ﺳﻤﻲﻛﺎﻟﻦ )ﻧﻘﻄﻪ‪ -‬وﻳﺮﮔﻮل( ﻗﺮار دﻫﻴﻢ ﻧﺘﻴﺠﻪ اﺟﺮا در ﭘﻨﺠﺮه ﻓﺮﻣﺎن ﻇﺎﻫﺮ ﻧﻤﻲﺷﻮد‪ .‬اﻣﺎ ﻣﻘﺪار‬
‫در ﺣﺎﻓﻈﻪ ﻣﻲﻣﺎﻧﺪ‪.‬‬
‫ﻣﺸﺨﺼﻪﻫﺎي ﻧﺎم‪ ،‬ﻧﻮع )ﻋﺪدي‪ ،‬ﻣﻨﻄﻘﻲ‪ ،‬ﻧﻤﺎدﻳﻦ‪ ،‬رﺷﺘﻪاي‪ ،(... ،‬اﻧﺪازه )ﺗﻌﺪاد ردﻳﻒ و ﺳﺘﻮن(‪ ،‬و ﺗﻌﺪاد ﺑﺎﻳﺖِ ﻣﺘﻐﻴﺮ)آراﻳﻪ(ﻫﺎي‬
‫ﺗﻌﺮﻳﻒ ﺷﺪه‪ ،‬در ﭘﻨﺠﺮه ﻓﻀﺎي ﻛﺎر )ﻓﻀﺎي ﺣﺎﻓﻈﻪ( ‪ Workspace‬ﻧﻤﺎﻳﺶ داده ﻣﻲﺷﻮﻧﺪ‬
‫ﻋﻼﻣﺖ درﺻﺪ ‪ %‬ﺑﺮاي ﻧﻮﺷﺘﻦ ﺗﻮﺿﻴﺤﺎت ‪ Comments‬ﺑﻪ ﻛﺎر ﻣﻲرود‪.‬‬
‫ﻣﺜﺎل ﻫﺎ‪:‬‬
‫وارد ﻛﺮدن ﻧﺎم ﻣﺎﺗﺮﻳﺴﻲ ﻛﻪ ﻗﺒﻼً ﺗﻌﺮﻳﻒ ﺷﺪه‬
‫‪>> A‬‬
‫‪A = 1‬‬ ‫‪2‬‬ ‫‪3‬‬
‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬
‫ﺗﻌﺮﻳﻒ ﺑﺮدار ﺑﺎ ﻧﻘﻄﻪوﻳﺮﮔﻮل و ﻧﻮﺷﺘﻦ ﺗﻮﺿﻴﺢ‬
‫اﻳﻦ ﻣﺘﻐﻴﺮ در ﺣﺎﻓﻈﻪ ﻧﮕﻪداري ﻣﻲﺷﻮد‪ ،‬اﻣﺎ ﻧﻤﺎﻳﺶ داده ﻧﻤﻲﺷﻮد ‪>> M = [10.2 3.4 5.6]; %‬‬
‫ﺑﺮاي ﻣﺸﺎﻫﺪه ﻣﻘﺪار ﻣﺘﻐﻴﺮ ‪>> M %‬‬
‫‪M = 10.2‬‬ ‫‪3.4‬‬ ‫‪5.6‬‬
‫ﺑﺮدار‪ -‬ﻫﻨﺪﺳﻲ‬
‫ﺑﺮدارﻫﺎي ﻫﻨﺪﺳﻲ ﻳﺎ ﻓﻴﺰﻳﻜﻲ‪ ،‬درون ﻣﺨﺘﺼﺎت ﻗﻄﺒﻲ )ﻣﺪور( داراي دو ﻣﺨﺘﺼﻪ ﺑﺰرﮔﻲ‪ ، Magnitude‬و زاوﻳﻪ ﻫﺴﺘﻨﺪ‪ ،‬و‬
‫درون ﻣﺨﺘﺼﺎت ﻗﺎﺋﻢ داراي دو ﻣﺨﺘﺼﻪ ﻃﻮل ‪ X‬و ﻋﺮض ‪ Y‬ﻣﻲﺑﺎﺷﻨﺪ‪ .‬اﻳﻦ ﺑﺮدارﻫﺎ را دراﻳﻦ ﻣﺘﻦ ﺑﺮدار‪ -‬ﻫﻨﺪﺳﻲ ﻧﺎﻣﻴﺪهاﻳﻢ‪.‬‬
‫اﻳﻦ ﻧﺎمﮔﺬاري ﺑﺮاي اﻳﺠﺎد ﺗﻤﺎﻳﺰ ﻣﺎﺑﻴﻦ ﻣﻔﻬﻮم ﺑﺮدار در ﻣﺘﻠﺐ ﺑﺎ ﺑﺮدارِ ﻓﻴﺰﻳﻜﻲ ﻳﺎ ﻫﻨﺪﺳﻲ اﺳﺖ‪ .‬ﮔﺎﻫﻲ از اوﻗﺎت ﻧﻴﺰ ﺑﺎ وام از‬
‫ﻣﻌﺎدل اﻟﻜﺘﺮﻳﻜﻲ آن را ﻓﺎزور ﻧﺎم دادهاﻳﻢ‪.‬‬
‫‪Cell Array‬‬ ‫آراﻳﻪ ﺳﻠﻮﻟﻲ‬
‫آراﻳﻪاي ﻛﻪ ﻫﺮ دراﻳﻪ آن ﻳﻚ آراﻳﻪ دﻳﮕﺮ ﺑﺎﺷﺪ‪ ،‬آراﻳﻪ ﺳﻠﻮﻟﻲ ‪ Cell Array‬ﻧﺎم دارد‪ .‬ﺑﺮاي اﻃﻼع ﺑﻴﺸﺘﺮ ﺑﻪ ﻣﺪارك ﻣﺘﻠﺐ‬
‫ﻣﺮاﺟﻌﻪ ﻛﻨﻴﺪ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫ﻳﻚ آراﻳﻪ ﺳﻠﻮﻟﻲ ﻛﻪ داراي ﺳﻪ ﻧﻮع آراﻳﻪ در ﻫﺮ ﺳﻠﻮل ﺑﺎﺷﺪ اﻳﺠﺎد ﻛﻨﻴﺪ‪.‬‬
‫}]‪C = {logical([1 0 1 1 0]) 'Array' [1 2;3 4‬‬
‫]‪C = [1x5 logical‬‬ ‫'‪'Array‬‬ ‫]‪[2x2 double‬‬

‫‪19‬‬
‫ﺗﻮاﺑﻊ اﻧﺪازه ﮔﻴﺮ‬
‫ﺗﻮاﺑﻊ )(‪ ndims(), size(), length‬و ﻧﻈﺎﺋﺮﺷﺎن را ﻛﻪ در ﺳﻨﺠﺶ ﻛﻤﻴﺖ ﻣﺎﺗﺮﻳﺲﻫﺎ ﺑﻪ ﻛﺎر ﻣﻲروﻧﺪ‪ ،‬در‬
‫اﻳﻦ ﻣﺘﻦ ﺗﻮاﺑﻊ اﻧﺪازهﮔﻴﺮ ﻧﺎﻣﻴﺪهاﻳﻢ‪.‬‬
‫ﺗﺎﺑﻊ )(‪ size‬ﺗﻌﺪاد ﺳﻄﺮ و ﺳﺘﻮن )و ﺗﻌﺪاد ﺻﻔﺤﻪ در ﻣﻮرد ﻣﺎﺗﺮﻳﺴﻬﺎي ﺳﻪﺑ‪‬ﻌﺪي( را ﻣﻲدﻫﺪ‪ .‬ﺗﺎﺑﻊ )(‪length‬‬
‫ﻣﻌﺎدل))(‪ max(size‬اﺳﺖ ﻛﻪ در ﻣﻮرد ﺑﺮدارﻫﺎ ﺗﻌﺪاد ﻋﻨﺎﺻﺮ را ﻛﻪ ﻫﻤﺎن ﺗﻌﺪاد ﺳﺘﻮنﻫﺎ اﺳﺖ ﻣﻲدﻫﺪ‪ .‬ﺗﺎﺑﻊ‬
‫)(‪ ndims‬ﻣﻌﺎدل ))(‪ length(size‬اﺳﺖ ﻛﻪ ﺑﺮاي اﺳﻜﺎﻟﺮ و ﺑﺮدار و ﻣﺎﺗﺮﻳﺲ دو ﺑﻌﺪي داراي ﻣﻘﺪار ‪ 2‬و ﺑﺮاي‬
‫ﻣﺎﺗﺮﻳﺲﻫﺎي ﺳﻪ ﺑﻌﺪي داراي ﻣﻘﺪار ‪ 3‬اﺳﺖ‪.‬‬
‫ﺑﺎﻳﺪ ﺗﻮﺟﻪ داﺷﺖ ﻛﻪ اﻧﺪازه ‪ size‬و ﻧﻮع ‪ type‬ﻫﺮ آراﻳﻪ در ﭘﻨﺠﺮه ‪ Workspace‬ﻧﺸﺎن داده ﻣﻲﺷﻮد‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫ﻳﻚ ﺑﺮدار ردﻳﻔﻲ ‪ 4‬ﻋﻀﻮي ﺗﻮﻟﻴﺪ ﻛﻨﻴﺪ‪ .‬اﻧﺪازه‪ ،‬ﻃﻮل و ﺑ‪‬ﻌﺪ آنرا ﭼﺎپ ﻛﻨﻴﺪ‪.‬‬
‫;]‪>> rv = [2 -5 16 7.6‬‬
‫)‪>> size(rv‬‬
‫‪ans = 1‬‬ ‫‪4‬‬
‫)‪>> L = length(rv‬‬
‫‪L = 4‬‬
‫)‪>> m = ndims(rv‬‬
‫‪m = 2‬‬
‫‪ans‬‬ ‫ﻣﺘﻐﻴﺮ داﺧﻠﻲ‬
‫اﮔﺮ ﺑﻪ آﺧﺮﻳﻦ ﻣﻘﺪار ﺣﺴﺎب ﺷﺪه ﻧﺎﻣﻲ ﻧﺪاده ﺑﺎﺷﻴﻢ‪ ،‬در ﻣﺘﻐﻴﺮ داﺧﻠﻲ ‪ ans‬ﻗﺮار ﻣﻲﮔﻴﺮد‪..‬‬
‫ﻣﺜﺎل ﻫﺎ‪:‬‬
‫ﺑﺮدار ﺑﺪون ﻧﺎم‬
‫]‪>> [-2 3.4 56‬‬
‫‪ans = -2.0000‬‬ ‫‪3.4000‬‬ ‫‪56.0000‬‬
‫دراﻳﻪ واﻗﻊ در ردﻳﻒ‪ 2‬ﺳﺘﻮن‪ 3‬ﻣﺎﺗﺮﻳﺲ ‪A‬‬
‫]‪>> A = [1 2 3; 4 5 6‬‬
‫)‪>> A(2,3‬‬
‫‪ans = 6‬‬
‫اﻋﻼم ﻧﻮع ﻣﺘﻐﻴﺮ‬
‫ﻫﻤﺎنﻃﻮر ﻛﻪ ﮔﻔﺘﻪ ﺷﺪ در ﻣﺘﻠﺐ ﻧﻴﺎزي ﺑﻪ اﻋﻼم ﻳﺎ ﻣﻌﺮﻓﻲِ ‪ declaration‬ﻣﺘﻐﻴﺮﻫﺎ ﻗﺒﻞ از ﻛﺎرﺑﺮد آنﻫﺎ ﻧﻴﺴﺖ )ﺑﺮ‬
‫ﺧﻼف ‪ ،(C++‬ﺑﻠﻜﻪ ﺑﻪ ﻫﻨﮕﺎم ﻣﻘﺪار دﻫﻲ ﺑﻪ ﻳﻚ ﻣﺘﻐﻴﺮ‪ ،‬ﻧﻮع آن ﺧﻮدﺑﻪﺧﻮد ﺗﻌﻴﻴﻦ ﻣﻲﺷﻮد‪.‬‬

‫‪ 4-1‬ﻧﻮﺷﺘﻦ دﺳﺘﻮرات و ﻣﺸﺎﻫﺪه ﻧﺘﺎﻳﺞ‬


‫ﭘﻨﺠﺮه ﻓﻮري و ﭘﻨﺠﺮه ﺑﺮﻧﺎﻣﻪ‬
‫دﺳﺘﻮرات ﻣﺘﻠﺐ ﺑﻪ ﺻﻮرت اﺟﺮاي ﻓﻮري ‪ Immediate‬در ﭘﻨﺠﺮه ﻓﺮﻣﺎن‪ ،‬ﻳﺎ ﺑﻪ ﺻﻮرت ﺑﺮﻧﺎﻣﻪ در ﭘﻨﺠﺮه ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ‬
‫ﻣﻲآﻳﻨﺪ‪ .‬ﻓﺎﻳﻞﻫﺎي ﺑﺮﻧﺎﻣﻪ ام‪ -‬ﻓﺎﻳﻞ ﻧﺎم دارﻧﺪ )ﺷﺮح ام‪ -‬ﻓﺎﻳﻞ ﺑﻌﺪاٌ ﻣﻲآﻳﺪ(‪ .‬ﻋﻼﻣﺖ >> ﻧﺸﺎﻧﻪ ﺳﻄﺮ ﻓﺮﻣﺎن‬
‫‪ Command Prompt‬اﺳﺖ‪ .‬ﻫﺮ دﺳﺘﻮر در ﭘﻨﺠﺮه ﻓﺮﻣﺎن ﺑﺎ ﻓﺸﺮدن ﻛﻠﻴﺪ >‪ <Enter‬اﻧﺠﺎم ﻣﻲﺷﻮد‪.‬‬
‫ﺷﻜﺴﺘﻦ ﻳﻚ دﺳﺘﻮر در ﭼﻨﺪ ﺳﻄﺮ‬
‫ﻣﺘﻐﻴﺮ ‪ A‬ﻣﺜﺎل ﻗﺒﻞ را ﻣﻲﺗﻮان ﺑﺎ ﺷﻜﺴﺘﻦ ﺳﻄﺮ ﺑﻪ اﻳﻦ ﺻﻮرت‪:‬‬

‫;‪>> A = [1 2 3‬‬

‫‪20‬‬
‫]‪4 5 6‬‬
‫‪A = 1‬‬ ‫‪2‬‬ ‫‪3‬‬
‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬
‫ﻳﺎ ﺑﻪ اﻳﻦ ﺻﻮرت زﻳﺮ ﻣﻘﺪار دﻫﻲ ﻛﺮد‪:‬‬
‫‪>> A = [1 2 3‬‬
‫]‪4 5 6‬‬
‫‪A = 1‬‬ ‫‪2‬‬ ‫‪3‬‬
‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬
‫ﻧﻮﺷﺘﻦ ﻛﻠﻴﻪ ﻓﺮﻣﺎنﻫﺎ و ﻣﺘﻐﻴﺮﻫﺎ را ﻣﻲ ﺗﻮان ﺑﺎ ﮔﺬاﺷﺘﻦ ‪)...‬ﺳﻪ ﻧﻘﻄﻪ( در ﭘﺎﻳﺎن ﺳﻄﺮ‪ ،‬در ﺳﻄﺮ ﺑﻌﺪ اداﻣﻪ داد‪ .‬اﻣﺎ دﻗﺖ ﻛﻨﻴﺪ‬
‫ﻛﻪ ﮔﺬاﺷﺘﻦ ﺳﻪ ﻧﻘﻄﻪ دﻧﺒﺎلﻫﻢ ﻗﺮار ﻣﻲدﻫﺪ‪ ،‬ﻟﺬا ‪ B‬ﻣﺜﺎل زﻳﺮ ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﺗﻚﺳﻄﺮي )ﺑﺮدار ردﻳﻔﻲ( ﺧﻮاﻫﺪ ﺑﻮد و ﻧﻪ‬
‫ﻣﺎﺗﺮﻳﺲ ‪. 2×3‬‬
‫ﻣﺜﺎل‪:‬‬
‫‪>> B = [10 20 30 ...‬‬
‫]‪40 50 60‬‬
‫‪B = 10‬‬ ‫‪20‬‬ ‫‪30‬‬ ‫‪40‬‬ ‫‪50‬‬ ‫‪60‬‬
‫ﻧﻮﺷﺘﻦ ﭼﻨﺪ دﺳﺘﻮر در ﻳﻚ ﺳﻄﺮ‬
‫اﮔﺮ ﺑﻌﺪاز ﻫﺮ دﺳﺘﻮر ﻛﺎﻣﺎ ﺑﮕﺬارﻳﻢ ﻣﻲﺗﻮاﻧﻴﻢ دﺳﺘﻮر ﺑﻌﺪي را در اداﻣﻪ ﺑﻨﻮﻳﺴﻴﻢ‪ ،‬اﻣﺎ ﻧﺘﻴﺠﻪ اﺟﺮا در ﭘﻨﺠﺮه ﻓﺮﻣﺎن ﻧﻤﺎﻳﺶ داده‬
‫ﺧﻮاﻫﺪ ﺷﺪ‪ .‬آوردن ﺳﻤﻲﻛﺎﻟﻦ )ﻧﻘﻄﻪ‪ -‬وﻳﺮﮔﻮل( ﺑﺎﻋﺚ ﻣﻲﺷﻮد ﻧﺘﻴﺠﻪ اﺟﺮا ﻧﺸﺎن داده ﻧﺸﻮد‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫‪>> x = 3, y = 34; z = y ^ x‬‬
‫‪x = 3‬‬
‫‪z = 39304‬‬
‫ﺗﻔﺎوتِ ﺣﺮوف ﺑﺰرگ و ﻛﻮﭼﻚ‬
‫ﻣﺘﻠﺐ در ﻧﺎمﮔﺬاري ﻣﺘﻐﻴﺮﻫﺎ ﻣﺎﺑﻴﻦ ﺣﺮوف ﺑﺰرگ و ﻛﻮﭼﻚ اﻧﮕﻠﻴﺴﻲ ﻓﺮق ﻣﻲﮔﺬارد ) ‪ Case Sensitive‬اﺳﺖ(‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫;‪>> New = 3‬‬
‫‪>> new‬‬
‫‪??? Undefined function or variable 'new'.‬‬
‫ﻗﻄﻊ اﺟﺮا‬
‫ﻫﺮﮔﺎه اﺟﺮاي دﺳﺘﻮرات در ﭘﻨﺠﺮه ﻓﺮﻣﺎن ﻃﻮﻻﻧﻲ ﺷﺪ‪ ،‬در ﺻﻮرت ﺗﻤﺎﻳﻞ ﺑﺮاي ﻗﻄﻊ اﺟﺮا >‪ <Ctrl+C‬را ﺑﺰﻧﻴﺪ‪.‬‬
‫‪more‬‬ ‫دﺳﺘﻮر‬
‫اﻳﻦ دﺳﺘﻮر ﺧﺮوﺟﻲﻫﺎي ﻃﻮﻻﻧﻲ را ﺻﻔﺤﻪ ﺑﻪ ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ ﻣﻴﺪﻫﺪ‪ .‬اﮔﺮ زﻣﺎن ﻧﻤﺎﻳﺶ ﺧﺮوﺟﻲ ﻃﻮﻻﻧﻲ ﺷﺪ‪ ،‬ﺑﺮاي ﻗﻄﻊ‬
‫ﻧﻤﺎﻳﺶ و ﺑﺮﮔﺸﺖ ﺑﻪ ﺧﻂ ﻓﺮﻣﺎن ‪ Ctrl+C‬را ﺑﺰﻧﻴﺪ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫)‪>> more on, rand(10000,1‬‬
‫‪>> more off‬‬
‫اﺟﺮا و ﺿﺒﻂ دﺳﺘﻮرات ﻗﺒﻠﻲ‬
‫ﺗﻜﺮار دﺳﺘﻮرات ﻗﺒﻠﻲ ﻛﻪ در ﭘﻨﺠﺮه ﻓﺮﻣﺎن ﻧﻮﺷﺘﻪ ﺷﺪهاﻧﺪ‪ ،‬ﺑﺎ ﻛﻠﻴﺪﻫﺎي ↑ و ↓ اﻧﺠﺎم ﻣﻴﺸﻮد‪ .‬ﺑﺮاي اﺟﺮاي ﻳﻚ ﺳﻄﺮ ﻛﻠﻴﺪ‬
‫>‪ <Enter‬و ﺑﺮاي ﺣﺬف ﻳﻚ ﺳﻄﺮ ﺗﻜﺮاري ﻧﺎدلﺧﻮاه ﻛﻠﻴﺪ >‪ <Esc‬ﻳﺎ در اﺑﺘﺪاي ﺳﻄﺮ ﻛﻠﻴﺪ >‪ <Ctrl+K‬را ﺑﺰﻧﻴﺪ‪.‬‬
‫دﺳﺘﻮرات وارد ﺷﺪه در ﭘﻨﺠﺮه ﻓﺮﻣﺎن ﺧﻮد ﺑﻪ ﺧﻮد ﻧﮕﻪداري ﻣﻲﺷﻮﻧﺪ و ﺑﺮاي اﺟﺮاﻫﺎي ﺑﻌﺪي ﻣﺘﻠﺐ ﻫﻢ ﻗﺎﺑﻞ اﺳﺘﻔﺎده ﻫﺴﺘﻨﺪ‪.‬‬
‫ﭘﻨﺠﺮه ‪ Command History‬ﻫﻢ ﻓﺮﻣﺎنﻫﺎي ﻗﺒﻠﻲ را ﻧﮕﻪ ﻣﻲدارد‪.‬‬

‫‪21‬‬
‫اﮔﺮ ﺳﻄﺮ ﻓﺮﻣﺎﻧﻲ در ﻫﺮﻳﻚ از ﭘﻨﺠﺮهﻫﺎي ﻓﺮﻣﺎن ﻳﺎ ﺗﺎرﻳﺨﭽﻪ ﻓﺮﻣﺎن ﻳﺎ ادﻳﺘﻮر ام‪ -‬ﻓﺎﻳﻞ ﻣﺎرك ﺷﻮد‪ ،‬ﺑﺎ راﺳﺖ ﻛﻠﻴﻚ و اﻧﺘﺨﺎب‬
‫‪ Evaluate Selection‬آن دﺳﺘﻮر اﺟﺮا ﺧﻮاﻫﺪ ﺷﺪ‪.‬‬
‫ﻣﻲﺗﻮان ﺑﺎ اﺟﺮاي ‪ notebook‬از درون ﻣﺘﻠﺐ و ﺗﻤﻬﻴﺪات ﻣﺮﺑﻮط ﺑﻪ آن دﺳﺘﻮرات ﻣﺘﻠﺐ را ﺑﻪ داﺧﻞ ‪Microsoft‬‬
‫‪ Word‬ﺑﺮد‪.‬‬
‫دﺳﺘﻮر زﻳﺮ ﺳﻄﻮر ‪ command window‬را در ﻓﺎﻳﻞ ‪ filename‬ﻧﮕﺎﻫﺪاري ﻣﻲﻛﻨﺪ‪:‬‬
‫‪>> diary filename‬‬
‫ﻓﺮﻣﺎن زﻳﺮ‬
‫‪>> diary off‬‬
‫ﺿﺒﻂِ ﭘﻨﺠﺮه ﻓﺮﻣﺎن را ﻣﺘﻮﻗﻒ ﻣﻲﻛﻨﺪ‪ .‬اﺟﺮاي ﻣﺠﺪد ‪ diary‬ﺳﻄﻮر را ﺑﻪ اﻧﺘﻬﺎي ﻓﺎﻳﻞ ‪ filename‬اﺿﺎﻓﻪ ﻣﻲﻛﻨﺪ‪.‬‬
‫اﺟﺮاي دﺳﺘﻮرات ﺳﻴﺴﺘﻢ ﻋﺎﻣﻞ‬
‫دﺳﺘﻮرات ﺳﻴﺴﺘﻤﻲ ﻧﻈﻴﺮ ‪ dir, time, date‬را ﺑﺎ ﮔﺬاﺷﺘﻦ ﻋﻼﻣﺖ ! در ﻣﻘﺎﺑﻞ آنﻫﺎ از داﺧﻞ ﭘﻨﺠﺮه ﻓﺮﻣﺎن اﺟﺮا‬
‫ﻛﻨﻴﺪ‪.‬‬
‫)(‪eval‬‬ ‫ﺗﺎﺑﻊ‬
‫اﮔﺮ ﻳﻚ ﻋﺒﺎرت ﻗﺎﻧﻮﻧﻲِ ﻣﺘﻠﺐ را ﺑﻪ ﺻﻮرت رﺷﺘﻪ در داﺧﻞ دو آﭘﻮﺳﺘﺮوف ﺑﻨﻮﻳﺴﻴﻢ ‪ text macro‬ﻧﺎم ﻣﻲﮔﻴﺮد‪.‬‬
‫ﺗﺎﺑﻊ )(‪ eval‬ﺻﺤﺖ و ﺳ‪‬ﻘﻢ ﭼﻨﻴﻦ ﻋﺒﺎرﺗﻲ را ﺗﻌﻴﻴﻦ ﻣﻲﻛﻨﺪ‪ .‬در ﺻﻮرت ﺻﺤﺖ‪ ،‬ﺗﺎﺑﻊ )(‪ eval‬ﻣﻘﺪارِ ﻋﺒﺎرت ﻣﻮرد‬
‫ﺗﺴﺖ را ﺑﺮﻣﻲﮔﺮداﻧﺪ‪ ،‬وﮔﺮﻧﻪ ﭘﻴﻐﺎم ﺧﻄﺎي ﻣﺮﺑﻮﻃﻪ را ﭼﺎپ ﻣﻲﻛﻨﺪ‪ .‬ﻣﻲﺗﻮان آرﮔﻮﻣﺎن دوﻣﻲ ﺑﺮاي)(‪ eval‬ﻗﺮار داد ﻛﻪ ﺑﻪ‬
‫ﺟﺎي ﭘﻴﻐﺎم ﺧﻄﺎ ﭼﺎپ ﺷﻮد‪ .‬ﻫﺮ دو آرﮔﻮﻣﺎن )(‪ eval‬ﺑﺎﻳﺪ ﺑﻪ ﺻﻮرت رﺷﺘﻪ ﺑﺎﺷﻨﺪ‪.‬‬
‫ﻣﺜﺎل ﻫﺎ‪:‬‬
‫ﻋﺒﺎرت ﺻﺤﻴﺢ‬

‫;‪>> x = pi/6‬‬
‫;'‪>> sx = 'sin(x)^3 + cos(x)^3‬‬
‫)‪>> eval(sx‬‬
‫‪ans = 0.7745‬‬
‫ﻋﺒﺎرت ﻧﺎﺻﺤﻴﺢ ﺑﺎ ﭘﻴﻐﺎم ﻣﺘﻠﺐ‬
‫; ')‪sx1 = 'sin^2(x) + cos^2(x‬‬
‫)‪>> eval(sx1‬‬
‫‪Error: Missing operator, comma, or semicolon.‬‬
‫ﻋﺒﺎرت ﻧﺎﺻﺤﻴﺢ ﺑﺎ ﭘﻴﻐﺎم ﻛﺎرﺑﺮ‬
‫)')''‪>> eval(sx1,'disp(''wrong‬‬
‫‪wrong‬‬
‫ﺳﺆال‪ :‬در ﻣﺜﺎل ﻓﻮق اﮔﺮ ﻣﻘﺪار ‪ x‬را از ‪ workspace‬ﭘﺎك و ‪ eval‬را اﺟﺮا ﻛﻨﻴﻢ ﻧﺘﻴﺠﻪ ﭼﻴﺴﺖ؟ اﻣﺘﺤﺎن ﻛﻨﻴﺪ‪.‬‬
‫‪lasterr‬‬ ‫دﺳﺘﻮر‬
‫دﺳﺘﻮر ‪ lasterr‬آﺧﺮﻳﻦ ﭘﻴﻐﺎم ﺧﻄﺎي داﺧﻠﻲ را ﻧﺸﺎن ﻣﻲدﻫﺪ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫‪>> lasterr‬‬
‫‪ans = Error: Missing operator, comma, or semicolon.‬‬
‫‪try...catch‬‬ ‫ﺑﻠﻮك‬
‫ﺑﻠﻮك ‪ try...catch...end‬ﺑﺮاي ﺑﻪ دام اﻧﺪاﺧﺘﻦ ﺧﻄﺎ ‪ error trapping‬ﺑﻪ ﻛﺎر ﻣﻲرود‪.‬‬

‫‪22‬‬
‫در زﻳﺮِ ‪ try‬دﺳﺘﻮراﺗﻲ ﻣﻲآﻳﻨﺪ ﻛﻪ در ﺻﻮرت ﻋﺪم وﻗﻮع ﺧﻄﺎ ﺑﺎﻳﺪ اﺟﺮا ﺷﻮﻧﺪ‪ ،‬و در زﻳﺮِ ‪ catch‬دﺳﺘﻮراﺗﻲ ﻣﻲآﻳﻨﺪ ﻛﻪ‬
‫در ﺻﻮرت وﻗﻮع ﺧﻄﺎ ﺑﺎﻳﺪ اﺟﺮا ﺷﻮﻧﺪ‪ .‬ﺑﺮاي اﻃﻼع ﺑﻴﺸﺘﺮ ﺑﻪ ﻣﺜﺎل ﺣﻠﻘﻪﻫﺎي ﺗﻜﺮار ﻣﺮﺟﻌﻪ ﻛﻨﻴﺪ‪.‬‬
‫ﺗﻔﺎوت دﺳﺘﻮرات ﭘﻨﺠﺮه ﻓﺮﻣﺎن و ﺑﺮﻧﺎﻣﻪ‬
‫در ﭘﻨﺠﺮه ﻓﺮﻣﺎن دﺳﺘﻮر ﻓﻮراً اﺟﺮا ﻣﻲﺷﻮد‪ ،‬اﻣﺎ ﻧﺴﺒﺖ ﺑﻪ ﭘﻨﺠﺮه ﻫﺎي ‪ ِ immediate‬ﺑﻌﻀﻲ از ﻧﺮماﻓﺰارﻫﺎ اﻣﺘﻴﺎزاﺗﻲ دارد‪،‬‬
‫ﻣﺜﻼً دﺳﺘﻮرات ﺣﻠﻘﻪ‪ ،‬ﻳﺎ ﻓﺮﻣﺎﻧﻬﺎي دﻧﺒﺎل ﻫﻢ از درون ﭘﻨﺠﺮه ﻓﺮﻣﺎن ﻗﺎﺑﻞ اﺟﺮا ﻫﺴﺘﻨﺪ‪.‬‬
‫ﺑﺮﻧﺎﻣﻪﻫﺎ در ﻓﺎﻳﻞﻫﺎﺋﻲ ﺑﻪ ﻧﺎم ‪ M-File‬ﺿﺒﻂ ﻣﻲﺷﻮﻧﺪ‪ .‬ﺑﺮﻧﺎﻣﻪﻫﺎﺋﻲ ﻛﻪ در آنﻫﺎ ﺗﻌﺪادي ﻓﺮﻣﺎن ﻳﻚﺟﺎ اﺟﺮا ﻣﻲﺷﻮﻧﺪ‬
‫‪ Script M-File‬و ﺑﺮﻧﺎﻣﻪﻫﺎﺋﻲ ﻛﻪ ﻳﻚ ﺗﺎﺑﻊ را ﺗﻌﺮﻳﻒ ﻣﻲﻛﻨﻨﺪ ‪ Function M-File‬ﻧﺎم دارﻧﺪ‪.‬‬
‫اﻏﻠﺐ ﻗﻮاﻋﺪ ﻧﻮﺷﺘﺎري و اﺟﺮاﺋﻲ ﻛﻪ در ﺑﺎﻻ آﻣﺪ در ﻣﻮرد ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﻧﻴﺰ ﺻﺪق ﻣﻲﻛﻨﻨﺪ‪.‬‬
‫دﺳﺘﻮرﻫﺎﺋﻲ در ﻣﻮرد ﻣﺘﻐﻴﺮﻫﺎ‬
‫ﻧﺘﻴﺠﻪ اﺟﺮا‬ ‫ﻧﺎم دﺳﺘﻮر‬
‫‪ who‬ﻧﺎم ﻣﺘﻐﻴﺮﻫﺎ را ﻣﻲدﻫﺪ‬
‫‪ whos‬ﻧﺎم و اﻃﻼﻋﺎت ﺑﻴﺸﺘﺮي از ﻣﺸﺨﺼﻪﻫﺎي ﻣﺘﻐﻴﺮﻫﺎ ﻣﻲدﻫﺪ‬
‫‪ clear var‬ﻳﻚ ﻣﺘﻐﻴﺮ را ﭘﺎك ﻣﻲﻛﻨﺪ‬
‫‪ clear‬ﻛﻠﻴﻪ ﻣﺘﻐﻴﺮﻫﺎي ﺗﻌﺮﻳﻒ ﺷﺪه را ﭘﺎك ﻣﻲﻛﻨﺪ‬
‫‪ clear all‬ﺣﺎﻓﻈﻪ را ﻛﻼٌ ﭘﺎك ﻣﻲﻛﻨﺪ‬
‫‪ pack‬ﺣﺎﻓﻈﻪ را ﻣﻨﻈﻢ و ﺟﻤﻊ و ﺟﻮر ﻣﻲﻛﻨﺪ‬

‫‪ 5-1‬درﻳﺎﻓﺖ اﻃﻼع و راﻫﻨﻤﺎﺋﻲ از ﻣﺪارك راﻫﻨﻤﺎي ﻣﺘﻠﺐ‬


‫دﺳﺘﻮرات زﻳﺮ ﺷﺎﻣﻞ ﺑﺮﺧﻲ از روشﻫﺎي اﺳﺘﻔﺎده از ﻣﺪارك ﻏﻨﻲ ﻣﺘﻠﺐ اﺳﺖ‪ .‬اﺳﺘﻔﺎده ﻣﺮﺗﺐ از ﻣﺪارك راﻫﻨﻤﺎي ﻣﺘﻠﺐ ﺑﻪ‬
‫ﻛﺎرﺑﺮان و داﻧﺸﺠﻮﻳﺎن ﺗﻮﺻﻴﻪ ﻣﻲﺷﻮد‪ .‬اﻏﻠﺐ ﻣﺪارك راﻫﻨﻤﺎ ﺑﺎ ﻓﺮﻣﺖ ‪ PDF‬ﻧﻴﺰ ﻗﺎﺑﻞ دﺳﺘﺮﺳﻲ ﻫﺴﺘﻨﺪ‪.‬‬
‫ﻧﺘﻴﺠﻪ اﺟﺮا‬ ‫ﻣﺜﺎلِ دﺳﺘﻮر‬
‫‪ lookfor word‬ﺟﺴﺘﺠﻮ ﺑﺮاي ﻳﻚ ﻛﻠﻤﻪ داﺧﻞ ﻣﺘﻮن ﻣﺘﻠﺐ‬
‫‪ help rand‬راﻫﻨﻤﺎﺋﻲ ﻳﻚ ﻋﺒﺎرت ﻳﺎ دﺳﺘﻮر ﻣﺎﻧﻨﺪ ‪rand‬‬
‫‪ type realmin‬ﻧﻤﺎﻳﺶ ﻣﺤﺘﻮاي ﻳﻚ ﺗﺎﺑﻊ ﻛﺘﺎبﺧﺎﻧﻪاي ﻳﺎ ﺗﺎﺑﻊ ﻛﺎرﺑﺮ‪ -‬ﺗﻌﺮﻳﻒ در دﻳﺮﻛﺘﻮري ﺟﺎري‬
‫‪ info‬اﻃﻼﻋﺎت راﺟﻊ ﺑﻪ ﻣﺘﻠﺐ‬
‫‪ [st,n]=computer‬اﻃﻼع راﺟﻊ ﺑﻪ ﻛﺎﻣﭙﻴﻮﺗﺮ و ﺗﻌﺪاد ﻋﻨﺎﺻﺮ ﻣﺠﺎز ﻳﻚ ﻣﺎﺗﺮﻳﺲ‬
‫‪ version, ver‬وﻳﺮاﻳﺶِ ﻣﺘﻠﺐ‬
‫‪ doc sin‬درﻳﺎﻓﺖ راﻫﻨﻤﺎ از ﭘﻨﺠﺮه ‪MATLAB Help‬‬
‫‪ help‬ﻧﻤﺎﻳﺶ راﻫﻨﻤﺎي ﻣﺘﻠﺐ‬
‫‪ helpwin‬ﻧﻤﺎﻳﺶ راﻫﻨﻤﺎي ﻣﺘﻠﺐ در ﭘﻨﺠﺮه ‪MATLAB Help‬‬

‫‪23‬‬
‫‪ 6-1‬ﺗﻤﺮﻳﻦ‬
‫‪ -1‬ﻳﻚ ﻣﺎﺗﺮﻳﺲ ‪ 4×3‬ﻋﺪدي ﺗﻌﺮﻳﻒ و ﺑ‪‬ﻌﺪ آن را ﺗﻌﻴﻴﻦ ﻛﻨﻴﺪ‪.‬‬
‫‪ -2‬ﻳﻚ ﺑﺮدار ردﻳﻔﻲ ﻋﺪدي ‪ 6‬ﻋﻀﻮي ﺗﻮﻟﻴﺪ ﻛﻨﻴﺪ‪.‬‬
‫‪ -3‬ﻳﻚ آراﻳﻪ ﺳﻠﻮﻟﻲ ﻛﻪ داراي اﻧﻮاع ﻣﻨﻄﻘﻲ‪ ،‬رﺷﺘﻪاي‪ ،‬ﻋﺪدي‪ ،‬و ﺳﻤﺒﻠﻴﻚ )ﻧﻤﺎدﻳﻦ( ﺑﺎﺷﺪ اﻳﺠﺎد ﻛﻨﻴﺪ‪ .‬اﻧﺪازه‪ ،‬ﻃﻮل و‬
‫ﺑ‪‬ﻌﺪ آنرا ﭼﺎپ ﻛﻨﻴﺪ‪.‬‬
‫‪ -4‬دو ﺑﺮدار ﻋﺪدي و ﺣﺎﺻﻞﺟﻤﻊ آن دو را در ﻳﻚ ﺳﻄﺮ اﻳﺠﺎد ﻛﻨﻴﺪ‪.‬‬
‫‪ -5‬دﺳﺘﻮرات ‪ dir, time, date‬را ﺑﺎ ﮔﺬاﺷﺘﻦ ﻋﻼﻣﺖ ! در ﻣﻘﺎﺑﻞ آنﻫﺎ از داﺧﻞ ﭘﻨﺠﺮه ﻓﺮﻣﺎن اﺟﺮا ﻛﻨﻴﺪ‪.‬‬
‫‪ -6‬دﺳﺘﻮرات ‪ clear var ، whos ، who‬را در ﻣﻮرد ﻣﺘﻐﻴﺮﻫﺎﺋﻲ ﻛﻪ ﺑﻪ وﺟﻮد آوردهاﻳﺪ‪ ،‬اﺟﺮا ﻛﻨﻴﺪ‪.‬‬
‫‪ -7‬دﺳﺘﻮر ‪ lookfor‬را ﺑﺮاي ‪ exp‬اﺟﺮا ﻛﻨﻴﺪ )اﮔﺮ ﻃﻮﻻﻧﻲ ﺷﺪ از ‪ Ctrl-C‬ﻛﻤﻚ ﺑﮕﻴﺮﻳﺪ(‪.‬‬
‫‪ -8‬دﺳﺘﻮر ‪ help‬را ﺑﺮاي ﭼﻨﺪ ﺗﺎﺑﻊ ﻣﺜﻠﺜﺎﺗﻲ و ﺑﺮاي ‪ magic‬اﺟﺮا ﻛﻨﻴﺪ‪.‬‬
‫‪ -9‬دﺳﺘﻮر ‪ type‬را ﺑﺮاي ‪ realmax, realmin‬اﺟﺮا ﻛﻨﻴﺪ‪.‬‬
‫‪ -10‬دﺳﺘﻮر ‪ doc tan‬و‪ doc randn‬و ‪ helpwin‬را اﺟﺮا ﻛﻨﻴﺪ‪.‬‬
‫‪ -11‬دﺳﺘﻮرات ‪ info, [st,n]=computer, version, ver‬را اﺟﺮا ﻛﻨﻴﺪ‪.‬‬
‫‪ -12‬ﻳﻚ دﺳﺘﻮر ﻏﻠﻂ را ﺑﺎ ‪ eval‬و ‪ lasterr‬اﻣﺘﺤﺎن ﻛﻨﻴﺪ‪.‬‬

‫‪24‬‬
‫ﻓﺼﻞ ‪ 2‬آﺷﻨﺎﺋﻲ ﺑﺎ ﻣﺘﻐﻴﺮﻫﺎ و ﺗﻮاﺑﻊ‬
‫‪ 1-2‬آﺷﻨﺎﺋﻲ ﺑﺎ اﻧﻮاع ﻣﺘﻐﻴﺮ و داده‬
‫اﻧﻮاع داده‬
‫در ﻣﺘﻠﺐ دادهﻫﺎي ﻣﺨﺘﻠﻔﻲ وﺟﻮد دارﻧﺪ از ﺟﻤﻠﻪ‪ :‬دادهﻫﺎي ﻋﺪدي ﻛﻪ ﺑﻴﺸﺘﺮ ﺑﻪ آنﻫﺎ ﺧﻮاﻫﻴﻢ ﭘﺮداﺧﺖ‪ ،‬دادهﻫﺎي ﻛﺎراﻛﺘﺮي و‬
‫ﻣﻨﻄﻘﻲ ﻛﻪ در واﻗﻊ ﻧﻮﻋﻲ داده ﻋﺪدي ﻫﺴﺘﻨﺪ‪ .‬ﻣﺎﺗﺮﻳﺲ ﺳﻠﻮﻟﻲ ‪ cell matrix‬ﻛﻪ دادهﻫﺎﺋﻲ از اﻧﻮاع ﻣﺨﺘﻠﻒ را ﻧﮕﻪ‪-‬‬
‫داري ﻣﻲﻛﻨﺪ‪ ،‬ﻣﺎﺗﺮﻳﺲ ﺳﺎﺧﺘﺎري ﻛﻪ ﻣﺎﺗﺮﻳﺲﻫﺎﺋﻲ از اﻧﻮاع ﻣﺨﺘﻠﻒ را ﻧﮕﻪداري ﻣﻲﻛﻨﺪ‪، inline ،‬‬
‫‪... ، function_handle‬‬

‫)(‪isa‬‬ ‫دادهﻫﺎي ﻋﺪدي‪ ،‬و دﺳﺘﻮر‬


‫ﺑﻪ ﻋﻠﺖ اﻳﻦﻛﻪ ﻣﺘﻠﺐ ﻳﻚ ﻧﺮماﻓﺰار ﻣﻬﻨﺪﺳﻲ اﺳﺖ‪ ،‬دادهﻫﺎي ﻋﺪدي در آن اﻫﻤﻴﺖ ﺧﺎﺻﻲ دارﻧﺪ‪ .‬ﭘﻴﺶﻓﺮض ﻣﺘﻠﺐ اﻳﻦ ﮔﻮﻧﻪ‬
‫اﺳﺖ ﻛﻪ ﻫﺮ ﻣﺘﻐﻴﺮ ﻋﺪدي را ﺑﻪ ﻫﻨﮕﺎم ورود )ﻣﻌﺮﻓﻲ‪ ،‬ﻳﺎ اﻋﻼم ﻧﺎم و ﻣﻘﺪار ﻫﻢزﻣﺎن(‪ ،‬ﺑﺎ دﻗﺖ اﻓﺰوده )ﻣﻀﺎﻋﻒ( ‪double‬‬
‫در ﺣﺎﻓﻈﻪ ﻧﮕﻪداري ﻣﻲﻛﻨﺪ‪ .‬دﺳﺘﻮر )(‪ isa‬ﻧﻮع ﻣﺘﻐﻴﺮ ﻳﺎ داده را اﻣﺘﺤﺎن ﻣﻲﻛﻨﺪ ﺑﺮاي اﻃﻼع ﺑﻴﺸﺘﺮ از اﻧﻮاع داده در‬
‫ﻣﺘﻠﺐ ‪ help datatypes‬را اﺟﺮا ﻛﻨﻴﺪ‪ .‬ﻣﺸﺨﺼﻪﻫﺎي ﺑﻌﻀﻲ از اﻧﻮاع ﻋﺪدي در ﺟﺪول زﻳﺮ آﻣﺪه اﺳﺖ‪.‬‬
‫دﺳﺘﻮر ﺗﺒﺪﻳﻞ ﻧﻮع ﺟﺎ در ﺣﺎﻓﻈﻪ )ﺑﺎﻳﺖ( ﺗﻌﺪاد ارﻗﺎم ﺑﺎ ﻣﻌﻨﻲ‬ ‫ﻧﺎم‬
‫ﺑﻌﺪاز ﻣﻤﻴﺰ‬
‫‪15‬‬ ‫‪8‬‬ ‫)(‪double‬‬ ‫دﻗﺖ ﻣﻀﺎﻋﻒ ‪double‬‬
‫‪7‬‬ ‫‪4‬‬ ‫)(‪single‬‬ ‫دﻗﺖ ﺳﺎده ‪* single‬‬
‫‪N/A‬‬ ‫‪2‬‬ ‫)(‪int16‬‬ ‫ﺻﺤﻴﺢ ﺑﺰرگ ‪** long integer‬‬
‫‪N/A‬‬ ‫‪1‬‬ ‫)(‪int8‬‬ ‫ﺻﺤﻴﺢ ﻛﻮﭼﻚ ‪*** short integer‬‬
‫‪N/A‬‬ ‫‪1‬‬ ‫)(‪logical‬‬ ‫ﻣﻨﻄﻘﻲ ‪logical‬‬
‫‪N/A‬‬ ‫‪1‬‬ ‫)(‪char‬‬ ‫ﻛﺎراﻛﺘﺮي ‪**** character‬‬
‫‪single‬‬ ‫ﻧﻜﺎﺗﻲ ﭘﻴﺮاﻣﻮن‬
‫دﻗﺖ ﺳﺎده از ﻟﺤﺎظ ﺑﺎزه ﻣﺤﺪودﺗﺮ از دﻗﺖ ﻣﻀﺎﻋﻒ اﺳﺖ‪.‬‬
‫اﻏﻠﺐ ﻋﻤﻠﻴﺎت رﻳﺎﺿﻲ ﺑﺮاي ﻧﻮع ‪ single‬ﺗﻌﺮﻳﻒ ﻧﺸﺪه اﻧﺪ‪ .‬اﻣﺎ اﮔﺮ ﻣﺎﻳﻞ ﺑﺎﺷﻴﻢ ﻣﺜﻼً ﻋﻤﻞ ﺟﻤﻊ را ﺑﺮاي ﻧﻮع ‪single‬‬
‫ﺗﻌﺮﻳﻒ ﻛﻨﻴﻢ‪ ،‬ﺑﺎﻳﺪ ﻳﻚ ﻣﺘﺪ )ﺗﺎﺑﻊ( ﺑﺮاي اﻳﻦ ﻛﺎر ﺗﻌﺮﻳﻒ و در دﻳﺮﻛﺘﻮري ‪) @single‬ﻣﻨﺸﻌﺐ از دﻳﺮﻛﺘﻮري ‪ (work‬ﻗﺮار‬
‫دﻫﻴﻢ‪ .‬ﺑﺮاي ﺗﻮﺿﻴﺢ ﺑﻴﺸﺘﺮ ﺑﻪ ﻣﺜﺎل ﻓﺼﻞ ﺗﻮاﺑﻊ ﻛﺎرﻳﺮ‪ -‬ﺗﻌﺮﻳﻒ ﻣﺮاﺟﻌﻪ ﻛﻨﻴﺪ‪.‬‬
‫‪int‬‬ ‫ﻧﻜﺎﺗﻲ ﭘﻴﺮاﻣﻮن‬
‫ﺗﺒﺪﻳﻞ ﺑﻪ ﻫﺮ ﻧﻮع ﻋﺪد ﺻﺤﻴﺢ ارﻗﺎم ﺑﻌﺪاز ﻣﻤﻴﺰ را ﺣﺬف ﻣﻲﻛﻨﺪ‪.‬‬
‫ﺑﺎزه ﻋﺪد ﺻﺤﻴﺢِ ﻫﺸﺖ ﺑﻴﺘﻲ ‪ -128‬ﺗﺎ ‪ +127‬اﺳﺖ‪.‬‬
‫اﻏﻠﺐ ﻋﻤﻠﻴﺎت رﻳﺎﺿﻲ ﺑﺮاي ﻧﻮع ‪ int‬ﺗﻌﺮﻳﻒ ﻧﺸﺪه اﻧﺪ‪ .‬اﮔﺮ ﻣﺎﻳﻞ ﺑﺎﺷﻴﻢ ﻣﺜﻼً ﻋﻤﻞ ﺿﺮب را ﺑﺮاي ﻧﻮع ‪ int‬ﺗﻌﺮﻳﻒ ﻛﻨﻴﻢ‪،‬‬
‫ﺑﺎﻳﺪ ﺑﺎ روﺷﻲ ﻣﺸﺎﺑﻪ آنﭼﻪ در ﻣﻮرد ‪ singel‬آﻣﺪ ﻋﻤﻞ ﻛﻨﻴﻢ‪.‬‬
‫ﻧﻜﺎﺗﻲ ﭘﻴﺮاﻣﻮن ‪ char‬و ﺗﺮﻛﻴﺐ اﻧﻮاع‬
‫داده ﻛﺎراﻛﺘﺮي در ﻣﺤﺪوده اﺳﻜﻲ ﻣﻌﺎدل ﻋﺪد ﺻﺤﻴﺢ ﻫﺸﺖ ﺑﻴﺘﻲ اﺳﺖ‪.‬‬
‫در ﺗﺮﻛﻴﺐ ﻛﺎراﻛﺘﺮ‪ ،‬ﻣﻨﻄﻖ‪ ،‬و ﻋﺪد‪ ،‬ﺑﺮﺗﺮي ﺑﺎ ﻋﺪد ﺑﻮده و ﺣﺎﺻﻞ از ﻧﻮع ﻋﺪدي ﺧﻮاﻫﺪ ﺑﻮد‪.‬‬

‫‪25‬‬
‫ﻣﺜﺎل ﻫﺎ‪:‬‬
‫داده اﻋﺸﺎري ‪double‬‬
‫ﺑﺮاي ﻧﻤﺎﻳﺶ ارﻗﺎم ﺑﻴﺸﺘﺮي از ﻳﻚ ﻋﺪد ‪>> format long e %‬‬
‫)‪>> e = exp(1‬‬
‫ﺑﺮاي ﺑﻪ دﺳﺖ آوردن ﻋﺪد ﻧﭙﺮي از ﺗﺎﺑﻊ ﻛﺘﺎﺑﺨﺎﻧﻪاي )(‪ exp‬اﺳﺘﻔﺎده ﻛﺮدهاﻳﻢ ‪%‬‬
‫‪e = 2.718281828459046e+000‬‬
‫)'‪>> isa(e,'double‬‬
‫‪ans = 1‬‬
‫))‪>> pi, 4*atan(1), imag(log(-1‬‬
‫‪ans = 3.141592653589793e+000 ans = 3.141592653589793e+000‬‬
‫‪ans = 3.141592653589793e+000‬‬
‫داده اﻋﺸﺎري ‪single‬‬
‫)‪>> y = single(e‬‬
‫‪y = 2.718281745910645e+000‬‬
‫)'‪>> isa(y,'single‬‬
‫‪ans = 1‬‬

‫ﻧﻮع ‪ single‬ﻋﺪد اﻋﺸﺎري اﺳﺖ ﻛﻪ ﺗﺎ ﻫﻔﺖ رﻗﻢ ﺑﻌﺪاز ﻣﻤﻴﺰ دﻗﻴﻖ اﺳﺖ‪ ،‬ﻟﺬا ﻧﻤﺎﻳﺶ آن ﻓﻘﻂ ﺗﺎ رﻗﻢ ﻫﻔﺘﻢ اﻋﺘﺒﺎر‬
‫دارد‪ ،‬و ارﻗﺎم ﺑﻌﺪاز آن ﻓﺎﻗﺪ اﻋﺘﺒﺎر ﻫﺴﺘﻨﺪ )ﺑﺎ ﻧﻤﺎﻳﺶ ‪ e‬ﻣﻘﺎﻳﺴﻪ ﻛﻨﻴﺪ(‪.‬‬
‫ﻋﻤﻠﻴﺎت ﺑﺎ ﻧﻮع ‪single‬‬
‫اﻏﻠﺐ ﻋﻤﻠﻴﺎت رﻳﺎﺿﻲ ﺑﺮاي ﻧﻮع ‪ single‬ﺗﻌﺮﻳﻒ ﻧﺸﺪه اﻧﺪ‪.‬‬
‫)‪>> si1 = single(2.2), si2 = single(3.5‬‬
‫‪si1 = 2.2000‬‬ ‫‪si2 = 3.5000‬‬
‫‪>> si1 * si2‬‬
‫* >== ‪??? Error using‬‬
‫‪Function '*' is not defined for values of class 'single'.‬‬
‫اﻧﻮاع اﻋﺪاد ﺻﺤﻴﺢ‬
‫‪>> format‬‬
‫;‪>> x1 = 125.6‬‬ ‫ﻃﺒﻖ ﭘﻴﺶﻓﺮض ﻣﺘﻠﺐ ﺑﻪ ﺻﻮرت ﻋﺪد اﻋﺸﺎري ﺑﺎ دﻗﺖ اﻓﺰوده ﻧﮕﻪداري ﻣﻲﺷﻮد ‪%‬‬
‫)‪>> ix1 = int8(x1‬‬
‫‪ix1 = 125‬‬
‫)'‪>> isa(ix1,'int8‬‬
‫‪ans = 1‬‬
‫)‪>> ix2 = int16(x1‬‬
‫‪ix2 = 125‬‬
‫)'‪>> isa(ix2,'int16‬‬
‫‪ans = 1‬‬
‫ﻋﻤﻠﻴﺎت ﺑﺎ ﻧﻮع ‪int‬‬
‫اﻏﻠﺐ ﻋﻤﻠﻴﺎت رﻳﺎﺿﻲ ﺑﺮاي ﻧﻮع ‪ int‬ﺗﻌﺮﻳﻒ ﻧﺸﺪه اﻧﺪ‪.‬‬
‫)‪>> it1 = int16(14.4), it2=int16(12.3‬‬
‫‪it1 = 14‬‬ ‫‪it2 = 12‬‬
‫‪>> it1 + it2‬‬
‫‪??? Error using ==> +‬‬
‫‪Function '+' is not defined for values of class 'int16'.‬‬

‫‪26‬‬
‫داده ﻛﺎراﻛﺘﺮي و ﺗﺮﻛﻴﺐ اﻧﻮاع‬
‫‪>> x = 66; % double‬‬
‫‪>> cx = char(x) % character‬‬
‫‪cx = B‬‬
‫در ﺗﺮﻛﻴﺐ ﻛﺎراﻛﺘﺮ‪ ،‬ﻣﻨﻄﻖ‪ ،‬و ﻋﺪد‪ ،‬ﺣﺎﺻﻞ ﻋﺪدي اﺳﺖ ‪>> ar = 'A' + logical(1) + 1.3 %‬‬
‫‪var = 67.3000‬‬
‫داده ﻣﻨﻄﻘﻲ‬
‫‪>> t = [0 1]; % double‬‬
‫)‪>> tL = logical(t‬‬
‫‪tL = 0‬‬ ‫‪1‬‬
‫ﻣﺸﺎﻫﺪه در ﭘﻨﺠﺮه ﻓﻀﺎي ﻛﺎر‬
‫دادهﻫﺎي ﺗﻌﺮﻳﻒ ﺷﺪه در ﻣﺤﻴﻂ ﻣﺘﻠﺐ در ﻓﻀﺎي ﻛﺎر )ﻣﺸﺎﺑﻪ ﺷﻜﻞ ‪ (1-2‬ﻧﻤﺎﻳﺶ داده ﻣﻲﺷﻮﻧﺪ‪ .‬ﻟﺬا ﺗﻮﺻﻴﻪ ﻣﻲﺷﻮد ﻫﻤﻮاره‬
‫ار اﻧﺘﺨﺎب ‪ View‬از ﻣﻨﻴﻮي اﺻﻠﻲ‪ ،‬ﭘﻨﺠﺮه ‪ Workspace‬را ﺗﻴﻚ ﺑﺰﻧﻴﺪ ﺗﺎ ﺑﺘﻮاﻧﻴﺪ ﻣﺸﺨﺼﻪﻫﺎي ﻣﺘﻐﻴﺮﻫﺎي ﺧﻮد را در‬
‫ﻓﻀﺎي ﺣﺎﻓﻈﻪ ﻣﺸﺎﻫﺪه ﻧﻤﺎﺋﻴﺪ‪ .‬اﮔﺮ ﺑﻪ روي ﻳﻚ ﻣﺘﻐﻴﺮ در ﭘﻨﺠﺮه ‪ Workspace‬ﻛﻠﻴﻚ‪-‬ﻛﻠﻴﻚ ﻛﻨﻴﺪ‪ ،‬دﺳﺖرﺳﻲ ﺑﻴﺶﺗﺮي‬
‫ﺑﻪآن ﭘﻴﺪا ﻛﺮده‪ ،‬ﺣﺘﻲ ﻣﻲﺗﻮاﻧﻴﺪ آن را ادﻳﺖ ﻛﻨﻴﺪ )اﻣﺘﺤﺎن ﻛﻨﻴﺪ(‪.‬‬

‫ﺷﻜﻞ ‪1-2‬‬

‫ﻣﺘﻐﻴﺮﻫﺎي داﺧﻠﻲ ﻳﺎ ﺗﻮﻛﺎر ﻣﺘﻠﺐ‬


‫ﺑﻌﻀﻲ از ﻣﺘﻐﻴﺮﻫﺎ ﻛﻪ در داﺧﻞ ﻣﺘﻠﺐ ﭘﻴﺶ‪ -‬ﺗﻌﺮﻳﻒ ﺷﺪهاﻧﺪ‪ ،‬در ﺟﺪول زﻳﺮ آﻣﺪهاﻧﺪ‪:‬‬
‫ﻣﻘﺪار )ﺑﺮ روي ﻛﺎﻣﭙﻴﻮﺗﺮ ﻣﻦ(‬ ‫ﺗﻌﺮﻳﻒ‬ ‫ﻧﺎم‬
‫آﺧﺮﻳﻦ ﻣﻘﺪار ﺣﺴﺎب ﺷﺪه‬ ‫‪ ans‬ﻣﺘﻐﻴﺮ داﺧﻠﻲ ﻛﻪ‬
‫آﺧﺮﻳﻦ ﻣﻘﺪار ﺣﺴﺎب ﺷﺪه را ﻧﮕﻪ ﻣﻲدارد‬
‫)‪pow2(1,-52‬‬ ‫‪ eps‬ﻓﺎﺻﻠﻪ ﺑﻴﻦ ‪ 1‬و ﺑﺰرگﺗﺮﻳﻦ ﻋﺪد اﻋﺸﺎري ﺑﻌﺪ از آن‬
‫)‪2^(-52‬‬
‫‪2.220446049250313e-016‬‬
‫‪1.797693134862316e+308‬‬ ‫‪ realmax‬ﺑﺰرگﺗﺮﻳﻦ ﻋﺪد ﻣﻤﻜﻦ ﺑﺮ روي ﻛﺎﻣﭙﻴﻮﺗﺮ ﺷﻤﺎ‬
‫‪2.225073858507201e-308‬‬ ‫‪ realmin‬ﻛﻮﭼﻚﺗﺮﻳﻦ ﻋﺪد ﻣﻤﻜﻦ ﺑﺮ روي ﻛﺎﻣﭙﻴﻮﺗﺮ ﺷﻤﺎ‬
‫)‪4*atan(1‬‬ ‫‪ pi‬ﻋﺪد ﭘﻲ‬
‫))‪imag(log(-1‬‬
‫‪3.141592653589793e+000‬‬
‫‪ Infinity‬ﻧﺘﻴﺠﻪ ﺗﻘﺴﻴﻢ ﻋﺪد ﺑﺮ ﺻﻔﺮ‬ ‫‪Inf, inf‬‬

‫‪ Not a Number‬ﺗﻘﺴﻴﻢ ‪ inf‬ﺑﺮ ‪ inf‬و ﺻﻔﺮ ﺑﺮ ﺻﻔﺮ‬ ‫‪NaN,nan‬‬


‫‪n‬‬
‫* ﺗﺎﺑﻊ )‪ pow2(m,n‬ﻣﻌﺎدل اﺳﺖ ﺑﺎ ‪. m × 2‬‬

‫‪27‬‬
‫‪format‬‬ ‫دﺳﺘﻮر ﻓﺮﻣﺖ‬
‫دﺳﺘﻮر ‪ format‬ﻓﻘﻂ روش ﻧﻤﺎﻳﺶ اﻋﺪاد در ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ را ﺗﻌﻴﻴﻦ ﻣﻲﻛﻨﺪ‪ ،‬و ﺗﺄﺛﻴﺮي در دﻗﺖ ﻧﮕﻪداري اﻋﺪاد در‬
‫ﺣﺎﻓﻈﻪ ﻧﺪارد‪ .‬ﻓﻘﻂ اﻋﺪاد ﺻﺤﻴﺢ ﻗﺎﺑﻞ ﺗﺒﺪﻳﻞ ﺑﻪ و ﻧﻤﺎﻳﺶ در ﻣﺒﻨﺎي ﺷﺎﻧﺰده ﻫﺴﺘﻨﺪ‪ ،‬ﻟﺬا ﻫﺮ ﻋﺪد را ﺑﺎﻳﺪ اﺑﺘﺪا ﺑﻪ ﻋﺪد ﺻﺤﻴﺢ‬
‫ﺗﺒﺪﻳﻞ و ﺳﭙﺲ آنرا ﺑﺎ ﻓﺮﻣﺖ ﻫﮕﺰ ﻧﻤﺎﻳﺶ داد‪.‬‬
‫در ﺟﺪول زﻳﺮ ﭼﻨﺪ ﻧﻮع روش ﻧﻤﺎﻳﺶ اﻋﺪاد آﻣﺪه اﺳﺖ‪ ،‬ﺑﺮاي اﻃﻼع ﺑﻴﺸﺘﺮ ‪ help format‬را اﺟﺮا ﻛﻨﻴﺪ‪.‬‬
‫ارﻗﺎم ﺑﻌﺪ از ﻧﻘﻄﻪ‪ -‬اﻋﺸﺎر‬ ‫دﺳﺘﻮر‬ ‫ﻧﺎم‬
‫‪2‬‬ ‫‪format bank‬‬ ‫ﻓﺮﻣﺖ ﺑﺎﻧﻜﻲ )ﻓﻘﻂ ﺑﺮاي اﻋﺪاد ﺣﻘﻴﻘﻲ(‬
‫‪4‬‬ ‫‪format‬‬ ‫ﻓﺮﻣﺖ ﻛﻮﺗﺎه‬
‫‪format short‬‬
‫‪14‬‬ ‫‪format long‬‬ ‫ﻓﺮﻣﺖ ﺑﻠﻨﺪ‬
‫‪15‬‬ ‫‪format long e‬‬ ‫ﻓﺮﻣﺖ ﺑﻠﻨﺪِ ﻧﻤﺎﺋﻲ‬
‫‪N/A‬‬ ‫‪format hex‬‬ ‫ﻓﺮﻣﺖ ﻣﺒﻨﺎي ﺷﺎﻧﺰده )ﻓﻘﻂ ﺑﺮاي اﻋﺪاد ﺻﺤﻴﺢ(‬
‫‪N/A‬‬ ‫‪format rational‬‬ ‫ﻧﻤﺎﻳﺶ ﺑﻪ ﺻﻮرت ﻛﺴﺮ ﻣﺘﻌﺎرﻓﻲ‬
‫ﻣﺜﺎل ﻫﺎ‪:‬‬
‫ارزش ﻣﺤﺎﺳﺒﺎﺗﻲ ‪eps‬‬
‫ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ اﻳﻦﻛﻪ دﺳﺘﻮر ‪ format long e‬ﺧﺮوﺟﻲ را ﺑﺎ ﺗﻌﺪاد ارﻗﺎم زﻳﺎد و ﺑﻪ ﺻﻮرت ﻧﻤﺎﺋﻲ ﭼﺎپ ﻣﻲﻛﻨﺪ‪.‬‬
‫‪ 1 - eps‬را ﺑﺎ اﻳﻦ ﻓﺮﻣﺖ ﻧﻤﺎﻳﺶ دﻫﻴﺪ‪.‬‬
‫‪>> format long e‬‬
‫‪>> a = 1 - eps‬‬
‫‪a = 9.999999999999998e-001‬‬
‫ارزش ﻣﺤﺎﺳﺒﺎﺗﻲ ‪realmin‬‬
‫ﺑﺎ ﻓﺮﻣﺖ ﻓﻮق ﻣﻘﺪار ‪ eps‬و ‪ realmin + eps‬را ﻧﻤﺎﻳﺶ دﻫﻴﺪ‪.‬‬
‫‪>> eps‬‬
‫‪ans = 2.220446049250313e-016‬‬

‫‪>> realmin + eps‬‬


‫‪ans = 2.220446049250313e-016‬‬

‫ﻫﺮ دو ﻣﻘﺪار ﻣﺴﺎوي ﻫﺴﺘﻨﺪ‪ ،‬ﻟﺬا ﻧﺘﻴﺠﻪ ﻣﻲﮔﻴﺮﻳﻢ ﻛﻪ ﻛﻮﭼﻚﺗﺮﻳﻦ ﻋﺪدي ﻛﻪ ارزش ﻣﺤﺎﺳﺒﺎﺗﻲ دارد ‪ eps‬اﺳﺖ‪.‬‬
‫ﻣﺒﻨﺎي ﺷﺎﻧﺰده‬
‫;)‪>> ix = int8(125‬‬
‫‪>> format hex‬‬
‫‪>> ix‬‬
‫‪ix1 = 7d‬‬
‫ﻓﺮﻣﺖ ﻛﺴﺮ ﻣﺘﻌﺎرﻓﻲ‬
‫‪>> format rational‬‬
‫‪>> pi‬‬
‫‪ans = 355/113‬‬
‫‪>> format‬‬

‫‪28‬‬
‫ﺿﺮﻳﺐ در ﻧﻤﺎﻳﺶ اﻋﺪاد‬
‫در ﺻﻮرت دور ﺑﻮدن ﻣﻘﺪار ﻋﻨﺎﺻﺮ ﻳﻚ ﺑﺮدار از ﻫﻢ‪ ،‬اﻋﺪاد ﺑﺎ ﺿﺮﻳﺒﻲ ﺑﻪ ﻧﺎم ‪ scale factor‬در ﻣﻘﺎﺑﻠﺸﺎن ﻧﻤﺎﻳﺶ داده‬
‫ﻣﻲﺷﻮﻧﺪ‪ ،‬ﻛﻪ ﺑﺎﻳﺴﺘﻲ اﻳﻦ ﺿﺮﻳﺐ را در ﻋﺪد ﺿﺮب ﻛﺮد‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫‪>> format long‬‬
‫]‪>> x = [1e6 1e7 1e-1‬‬
‫* ‪x = 1.0e+007‬‬ ‫‪0.100000000‬‬ ‫‪1.00000000‬‬ ‫‪0.00000001‬‬
‫↑‬
‫‪scale factor‬‬
‫‪ 2-2‬ﻋﻤﻠﮕﺮﻫﺎ‬
‫ﻋﻤﻠﮕﺮﻫﺎي آراﻳﻪ اي‬
‫اﻳﻦ ﻋﻤﻠﮕﺮﻫﺎ ﺑﺮ روي آراﻳﻪﻫﺎي ﻣﻮرد ﻋﻤﻞ ﺑﻪ ﺻﻮرت ﻋﻨﺼﺮ ﺑﻪ ﻋﻨﺼﺮ ﻋﻤﻞ ﻣﻲﻛﻨﻨﺪ و در ﻣﻘﺎﺑﻞ ﻋﻤﻠﮕﺮﻫﺎي ﻣﺎﺗﺮﻳﺴﻲ ﻗﺮار‬
‫دارﻧﺪ ﻛﻪ ﺗﻌﺎرﻳﻒ ﺧﺎص ﺧﻮد را دارﻧﺪ‪ .‬ﺟﻤﻊ و ﺗﻔﺮﻳﻖ آراﻳﻪاي و ﻣﺎﺗﺮﻳﺴﻲ ﻳﻚﺳﺎن ﻫﺴﺘﻨﺪ‪ .‬ﻣﺎﺗﺮﻳﺲﻫﺎ ﻳﺎ ﺑﺮدارﻫﺎﺋﻲ ﻛﻪ در‬
‫ﻋﻤﻞ آراﻳﻪاي ﻣﺸﺎرﻛﺖ دارﻧﺪ ﺑﺎﻳﺪ ﻫﻤﺴﺎن ﺑﺎﺷﻨﺪ‪.‬‬
‫ﻋﻤﻠﮕﺮ ﺗﺮاﻧﻬﺎد ‪ Transpose‬ﺑﺎ ﻋﻼﻣﺖ آﭘﻮﺳﺘﺮوف‪ ،‬ﺟﺎي ﺳﺘﻮن و ردﻳﻒ ﻣﺎﺗﺮﻳﺲ را ﻋﻮض ﻣﻲﻛﻨﺪ‪ ،‬و در ﻣﻮرد ﺑﺮدارﻫﺎ‬
‫ﺑﺮدار ردﻳﻔﻲ را ﺑﻪ ﺑﺮدار ﺳﺘﻮﻧﻲ )و ﺑﺎﻟﻌﻜﺲ( ﺗﺒﺪﻳﻞ ﻣﻲﻛﻨﺪ‪.‬اﻳﻦ ﻋﻤﻠﮕﺮﻫﺎ در ﺟﺪول زﻳﺮ آﻣﺪهاﻧﺪ‪.‬‬
‫ﺟﻤﻊ ﺗﻔﺮﻳﻖ ﺗﻮان ﺿﺮب ﺗﻘﺴﻴﻢ )ﻣﻌﻤﻮﻟﻲ( ﺗﻘﺴﻴﻢ راﺳﺖ ﺑﻪ ﭼﭗ ﺗﺮاﻧﻬﺎد ‪Transpose‬‬
‫'‬ ‫\‪.‬‬ ‫‪./‬‬ ‫*‪.‬‬ ‫^‪.‬‬ ‫‪-‬‬ ‫‪+‬‬
‫ﻣﺜﺎل ﻫﺎ‪:‬‬
‫ﺿﺮب و ﺗﻘﺴﻴﻢ آراﻳﻪاي‬
‫;]‪>> a = [2 4 8‬‬
‫;]‪>> b = [3 2 2‬‬
‫‪>> a .* b‬‬
‫‪ans = 6‬‬ ‫‪8‬‬ ‫‪16‬‬
‫‪>> a ./ b‬‬
‫‪ans = 0.6667‬‬ ‫‪2.0000‬‬ ‫‪4.0000‬‬
‫‪>> ar = a .\ b‬‬
‫‪ar = 1.5000‬‬ ‫‪0.5000‬‬ ‫‪0.2500‬‬
‫ﺗﺮاﻧﻬﺎد )ﺗﺮاﻧﺴﭙﻮز(‬
‫' ]‪>> a = [2 3 -4.5‬‬
‫'‪>> at = a‬‬
‫‪at = 2.00‬‬
‫‪3.00‬‬
‫‪-4.50‬‬
‫;‪>> b = 0:30:180‬‬
‫]')‪>> table = [b' sin(b*pi/180‬‬
‫‪table = 0‬‬ ‫‪0‬‬
‫‪30.000‬‬ ‫‪0.500‬‬
‫‪60.000‬‬ ‫‪0.866‬‬
‫‪90.000‬‬ ‫‪1.000‬‬
‫‪120.000‬‬ ‫‪0.866‬‬
‫‪150.000‬‬ ‫‪0.500‬‬
‫‪180.000‬‬ ‫‪0.000‬‬

‫در ﻣﺜﺎل ﻓﻮق ‪ table‬ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﻋﺪدي اﺳﺖ و زواﻳﺎ و ﺳﻴﻨﻮس زواﻳﺎي ﺑﻴﻦ ﺻﻔﺮ و ‪ 180‬درﺟﻪ را ﻧﮕﻪﻣﻲدارد‪.‬‬

‫‪29‬‬
‫اوﻟﻮﻳﺖ ﻋﻤﻠﮕﺮﻫﺎ‬
‫ﺗﻮان ﺿﺮب و ﺗﻘﺴﻴﻢ ﺟﻤﻊ و ﺗﻔﺮﻳﻖ ﻛﺎﻟﻦ‬ ‫ﺗﺮاﻧﻬﺎد ﭘﺮاﻧﺘﺰ‬ ‫اوﻟﻮﻳﺖ‬
‫ﭼﭗ ﺑﻪ راﺳﺖ ﭼﭗ ﺑﻪ راﺳﺖ‬ ‫اوﻟﻮﻳﺖ در ﺻﻮرت ﻫﻢراﻫﻲ‬

‫‪ 3-2‬ﺗﻮاﺑﻊ ﻛﺘﺎب ﺧﺎﻧﻪ اي‬


‫ﻳﻜﻲ از ﻗﺎﺑﻠﻴﺖﻫﺎي ﻣﻬﻢ ﻣﺘﻠﺐ داﺷﺘﻦ ﺗﻌﺪاد ﻣﻌﺘﻨﺎﺑﻬﻲ ﺗﻮاﺑﻊ ﺗﻮﺳﺎﺧﺖ ‪ built in functions‬ﻳﺎ ﺗﻮاﺑﻊ داﺧﻠﻲ ﻳﺎ‬
‫ﺗﻮاﺑﻊ ﻛﺘﺎبﺧﺎﻧﻪاي اﺳﺖ‪ ،‬ﻛﻪ ﻧﻴﺎزﻫﺎي ﮔﻮﻧﺎﮔﻮن اﻧﻮاع ﻛﺎرﺑﺮان را ﻋﻤﺪﺗﺎٌ ﺑﺮآورده ﻣﻲﺳﺎزﻧﺪ‪ .‬ﻣﻌﺮﻓﻲ ﭼﻨﺪ ﺗﺎﺑﻊ در زﻳﺮ آﻣﺪه‪:‬‬
‫ﺗﻮﻟﻴﺪ ﻋﺪد ﺗﺼﺎدﻓﻲ‬
‫ﺗﺎﺑﻊ )‪ rand(m,n,p‬ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﺗﺼﺎدﻓﻲ ‪ p‬ﺻﻔﺤﻪاي ﺑﺎ ﺻﻔﺤﺎﺗﻲ داراي ‪ m‬ردﻳﻒ و ‪ n‬ﺳﺘﻮن ﺗﻮﻟﻴﺪ ﻣﻲﻛﻨﺪ‪ .‬ﺑﺮاي‬
‫اﻳﺠﺎد ‪ N‬ﻋﺪد ﺗﺼﺎدﻓﻲ ﺑﻴﻦ ‪ MinN‬و ‪ MaxN‬از ﻓﺮﻣﻮل زﻳﺮ اﺳﺘﻔﺎده ﻣﻲﻛﻨﻴﻢ‪:‬‬
‫‪rd = round((MaxN - MinN) * rand(1, N))+ MinN‬‬
‫ﻣﺜﺎل ﻫﺎ‪:‬‬
‫ﻣﺎﺗﺮﻳﺲ ﺗﺼﺎدﻓﻲ دو ﺻﻔﺤﻪاي‬
‫)‪>> B = rand(2,3,2‬‬
‫‪B(:,:,1) = 0.9218‬‬ ‫‪0.1763‬‬ ‫‪0.9355‬‬
‫‪0.7382‬‬ ‫‪0.4057‬‬ ‫‪0.9169‬‬
‫‪B(:,:,2) = 0.4103‬‬ ‫‪0.0579‬‬ ‫‪0.8132‬‬
‫‪0.8936‬‬ ‫‪0.3529‬‬ ‫‪0.0099‬‬
‫ﺑﺮدار ﻋﺪدي ﺑﺎ ‪ n‬ﻋﻨﺼﺮ ﺗﺼﺎدﻓﻲ‬
‫)‪>> d1 = rand(1,6‬‬
‫‪d1 = 0.9901‬‬ ‫‪0.7889‬‬ ‫‪0.4387‬‬ ‫‪0.4983‬‬ ‫‪0.2140‬‬ ‫‪0.6435‬‬

‫‪) m = 1‬ﺗﻚ ردﻳﻒ(‬ ‫‪) p = 1‬ﻣﺎﺗﺮﻳﺲ دو ﺑﻌﺪي‪ ،‬ﺗﻚ ﺻﻔﺤﻪ(‬ ‫در ﻣﺜﺎل ﻓﻮق ﻣﺎﺗﺮﻳﺴﻲ ﺑﺎ‬
‫‪ 6) n = 6‬ﺳﺘﻮن( ﺗﻮﻟﻴﺪ ﻣﻲﺷﻮد‪.‬‬
‫ﺑﺮدار ﻋﺪدي ﺑﺎ ‪ n‬ﻋﻨﺼﺮ ﺗﺼﺎدﻓﻲ‪ ،‬و ﺗﻌﻴﻴﻦ ﺑﺰرﮔﺎي ﻫﺮ ﻋﻀﻮ‬
‫‪>> rd = round(9 * rand(1, 6))+ 1‬‬
‫‪rd = 4‬‬ ‫‪10‬‬ ‫‪8‬‬ ‫‪5‬‬ ‫‪8‬‬ ‫‪3‬‬
‫ﺗﻮﻟﻴﺪ آراﻳﻪ ﺑﺎ ﺗﻜﺮار آراﻳﻪ دﻳﮕﺮ‬
‫ﺗﺎﺑﻊ )‪ B = repmat(A,M,N‬آراﻳﻪ ‪ A‬را ‪ M‬ﺑﺎر اﻓﻘﻲ و ‪ N‬ﺑﺎر ﻋﻤﻮدي ﺗﻜﺮار ﻛﺮده و در آراﻳﻪ ‪ B‬ﻗﺮار ﻣﻲدﻫﺪ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫ﻳﻚ ﺑﺮدار ﺑﺎ ده ﻋﻀﻮ ﻣﺘﻨﺎوب ﺻﻔﺮ وﻳﻚ ﺗﻮﻟﻴﺪ ﻛﻨﻴﺪ‪.‬‬
‫;]‪>> A = [1 0‬‬
‫)‪>> B = repmat(A, 1, 5‬‬
‫‪B = 1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬
‫ﺗﻮاﺑﻊ ﺗﺤﻠﻴﻞ داده ﻫﺎ‬
‫ﺑﺮﺧﻲ از ﺗﻮاﺑﻊ ﻛﻪ ﺟﻬﺖ ﺗﺤﻠﻴﻞ آﻣﺎري ﻣﺠﻤﻮﻋﻪاي از دادهﻫﺎ ﺑﻪ ﻛﺎر ﻣﻴﺮوﻧﺪ در ﺟﺪول زﻳﺮ آﻣﺪهاﻧﺪ‪.‬‬
‫ﺑﺮاي اﻃﻼع ﺑﻴﺸﺘﺮ ﺑﻪ ﻓﺼﻞ ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﻣﺜﺎلِ ﺗﺤﻠﻴﻞ آﻣﺎري ﻧﻤﺮات داﻧﺸﺠﻮﻳﺎن ﻣﺮاﺟﻌﻪ ﻛﻨﻴﺪ‪.‬‬
‫)(‪hist‬‬ ‫)(‪mean‬‬ ‫)(‪min‬‬ ‫)(‪max‬‬ ‫ﻧﺎم ﺗﺎﺑﻊ‬
‫ﭘﻴﺸﻴﻨﻪ ﻧﮕﺎر‬ ‫ﻋﻨﺼﺮ ﻣﺎﻛﺰﻳﻤﻢ ﻋﻨﺼﺮ ﻣﻲﻧﻴﻤﻢ ﻣﻘﺪار ﻣﻴﺎﻧﮕﻴﻦ ﻋﻨﺎﺻﺮ‬ ‫ﺧﺮوﺟﻲ ﺗﺎﺑﻊ‬

‫‪30‬‬
‫)(‪sum‬‬ ‫)(‪sort‬‬ ‫)(‪std‬‬ ‫ﻧﺎم ﺗﺎﺑﻊ‬
‫ﻣﺠﻤﻮع ﻋﻨﺎﺻﺮ‬ ‫ﻣﺮﺗﺐﺳﺎزي ﻋﻨﺎﺻﺮ‬ ‫ﻣﻘﺪار اﻧﺤﺮاف ﻣﻴﺎﻧﻪ ﻋﻨﺎﺻﺮ‬ ‫ﺧﺮوﺟﻲ ﺗﺎﺑﻊ‬

‫ﺗﻮاﺑﻊ زﻣﺎﻧﻲ‬
‫ﺟﺪول زﻳﺮ ﺑﻌﻀﻲ از ﺗﻮاﺑﻊ زﻣﺎﻧﻲ را ﻧﺸﺎن ﻣﻲدﻫﺪ‪:‬‬
‫ﺷﺮح‬ ‫دﺳﺘﻮر‬
‫‪ tic‬ﺷﺮوع ﺗﺎﻳﻤﺮ‬
‫‪ toc‬ﻧﺸﺎن دﻫﻨﺪه زﻣﺎن ﺗﺎﻳﻤﺮ‬
‫‪ clock‬روز و ﺳﺎﻋﺖ‬
‫)‪ etime(t1,t2‬ﻓﺎﺻﻠﻪ ﺑﻴﻦ ‪ t1‬و ‪t2‬‬
‫‪ cputime‬زﻣﺎن ‪ CPU‬ﺑﻌﺪ از ﺷﺮوع ﻣﺘﻠﺐ‬
‫‪ date‬ﺗﺎرﻳﺦ روز‬
‫‪ calendar‬ﺗﻘﻮﻳﻢ ﻣﺎه ﺟﺎري‬
‫)‪ calendar(yyyy,mm‬ﺗﻘﻮﻳﻢ ﺳﺎل و ﻣﺎه ﻣﻌﻴﻦ‬

‫ﻣﺜﺎل ﻫﺎ‪:‬‬
‫ﻓﺎﺻﻠﻪ زﻣﺎﻧﻲ ﺑﻴﻦ ﻧﻮﺷﺘﻦ ‪ tic‬و ‪toc‬‬
‫‪>> tic‬‬
‫‪>> toc‬‬
‫‪elapsed_time = 2.0330‬‬
‫ﻧﻤﺎﻳﺶ ﺗﺎرﻳﺦ‪ ،‬روز و ﺳﺎﻋﺖ‬
‫)‪>> fix(clock‬‬
‫ﺑﺮاي ﻧﻤﺎﻳﺶ واﺿﺢﺗﺮ از ﺗﺎﺑﻊ )(‪ fix‬اﺳﺘﻔﺎده ﻛﺮدهاﻳﻢ‪% .‬‬
‫‪ans = 2002‬‬ ‫‪5‬‬ ‫‪26‬‬ ‫‪11‬‬ ‫‪33‬‬ ‫‪8‬‬
‫ﻧﻤﺎﻳﺶ ﺗﺎرﻳﺦ ﻛﺎﻣﭙﻴﻮﺗﺮ‬
‫‪>> date‬‬
‫‪ans = 26-May-2002‬‬
‫ﺗﻮاﺑﻊ ﺧﺎص‬
‫ﻧﻤﻮﻧﻪﻫﺎﺋﻲ از ﺗﻮاﺑﻊ ﭘﻴﺸﺮﻓﺘﻪ رﻳﺎﺿﻲ در زﻳﺮ آﻣﺪهاﻧﺪ‪:‬‬
‫) ‪Γ ( x )Γ ( y‬‬ ‫∞‬
‫‪∫0‬‬
‫ﺗﺎﺑﻊ ﺑﺘﺎ‬ ‫= )‪Γ( x‬‬ ‫‪t x −1 e −t dt‬‬ ‫ﺗﺎﺑﻊ ﮔﺎﻣﺎ‬ ‫ﺗﺎﺑﻊ ﺑﺴﻞ‬ ‫ﺗﺎﺑﻊ ﻟﮋاﻧﺪر‬
‫) ‪Γ( x + y‬‬
‫)‪beta(x‬‬ ‫)‪gamma(x) bessel(n,x) legendre(n,x‬‬
‫ﺑﺮاي ﻛﺴﺐ اﻃﻼع ﺑﻴﺸﺘﺮ در ﻣﻮرد ﺗﻮاﺑﻊ ﺧﺎص از ‪ help‬ﻣﺮﺑﻮط ﺑﻪ آن ﺗﺎﺑﻊ اﺳﺘﻔﺎده ﻛﻨﻴﺪ‪.‬‬
‫ﺗﻮاﺑﻊ ﻛﺎرﺑﺮ‪ -‬ﺗﻌﺮﻳﻒ‬
‫ﺗﻮاﺑﻊ ﻛﺘﺎبﺧﺎﻧﻪاي ﻣﺘﻠﺐ ﺑﺎ ﺗﻤﺎم ﮔﺴﺘﺮدﮔﻲ ﺗﻤﺎم ﻧﻴﺎزﻫﺎ را ﺑﺮآورده ﻧﻤﻲﻛﻨﻨﺪ‪ ،‬ﻟﺬا ﻛﺎرﺑﺮان ﻣﻲﺗﻮﻧﻨﺪ ﺗﻮاﺑﻊ ﻣﻮرد ﻧﻴﺎز و ﺧﺎص‬
‫ﺧﻮد را در ﻓﺎﻳﻞﻫﺎﺋﻲ ﺑﻪ ﻧﺎم ‪ Function M-File‬ﺗﻌﺮﻳﻒ و ﻣﺸﺎﺑﻪ ﺑﺎ ﺗﻮاﺑﻊ ﻛﺘﺎبﺧﺎﻧﻪاي از آنﻫﺎ اﺳﺘﻔﺎده ﻛﻨﻨﺪ‪ .‬ﺷﺮح‬
‫ﺑﻴﺸﺘﺮ در ﻓﺼﻮل ﺑﻌﺪ ﻣﻲآﻳﺪ‪.‬‬

‫‪31‬‬
‫ﺑﻌﻀﻲ از ﺗﻮاﺑﻊ رﻳﺎﺿﻲ ﻛﺘﺎب ﺧﺎﻧﻪ اي‬
‫ﺗﺎﺑﻊ‬ ‫ﻧﺎم‬
‫)‪abs(x‬‬ ‫ﻗﺪر ﻣﻄﻠﻖ‬
‫)‪sqrt(x‬‬ ‫رﻳﺸﻪي دوم‬
‫)‪exp(x‬‬ ‫‪x‬‬
‫‪e‬‬
‫)‪log(x‬‬ ‫ﻟﮕﺎرﻳﻢ ﻃﺒﻴﻌﻲ‬
‫)‪log10(x‬‬ ‫‪log10x‬‬
‫)‪sin(x), cos(x), tan(x),cot(x‬‬ ‫ﺗﻮاﺑﻊ ﻣﺜﻠﺜﺎﺗﻲ‬
‫)‪asin(y), acos(y‬‬ ‫ﺗﻮاﺑﻊ ﻣﺜﻠﺜﺎﺗﻲ ﻣﻌﻜﻮس‬
‫* ]‪atan(y) [-π/2, π/2‬‬
‫* ]‪atan2(y,x) [-π, π‬‬
‫** )‪round(x‬‬ ‫ﮔﺮد ﻛﻨﻨﺪه ﺑﻪ ﻧﺰدﻳﻚﺗﺮﻳﻦ ﻋﺪد ﺻﺤﻴﺢ ﺑﻪ ‪x‬‬
‫** )‪fix(x‬‬ ‫ﮔﺮد ﻛﻨﻨﺪه ﺑﻪ ﻧﺰدﻳﻚﺗﺮﻳﻦ ﻋﺪد ﺻﺤﻴﺢ ﺑﻪ ‪ x‬در ﺟﻬﺖ ﺻﻔﺮ‬
‫** )‪ceil(x‬‬ ‫ﮔﺮد ﻛﻨﻨﺪه ﺑﻪ ﻧﺰدﻳﻚﺗﺮﻳﻦ ﻋﺪد ﺻﺤﻴﺢ ﺑﻪ ‪ x‬در ﺟﻬﺖ ∞‪+‬‬
‫** )‪floor(x‬‬ ‫ﮔﺮد ﻛﻨﻨﺪه ﺑﻪ ﻧﺰدﻳﻚﺗﺮﻳﻦ ﻋﺪد ﺻﺤﻴﺢ ﺑﻪ ‪ x‬در ﺟﻬﺖ ∞‪-‬‬
‫*** )‪rem(x,y‬‬ ‫ﺑﺎﻗﻲﻣﺎﻧﺪه ﺗﻘﺴﻴﻢ‪ ،‬ﺑﺎ ﻋﻼﻣﺖ ﻣﻮاﻓﻖ ‪x‬‬
‫*** )‪mod(x,y‬‬ ‫ﺑﺎﻗﻲﻣﺎﻧﺪه ﺗﻘﺴﻴﻢ‪ ،‬ﺑﺎ ﻋﻼﻣﺖ ﻣﻮاﻓﻖ ‪y‬‬
‫)‪gcd(x,y‬‬ ‫ﺑﺰرگﺗﺮﻳﻦ ﻣﻘﺴﻮم ﻋﻠﻴﻪ ﻣﺸﺘﺮك‬
‫)‪lcm(x,y‬‬ ‫ﻛﻮﭼﻚﺗﺮﻳﻦ ﻣﻀﺮب ﻣﺸﺘﺮك‬
‫)‪[t,n] = rat(x‬‬ ‫ﻧﺰدﻳﻚﺗﺮﻳﻦ ﻛﺴﺮ ﻣﺘﻌﺎرﻓﻲ ﺑﻪ ‪ x‬ﺑﻪ ﺻﻮرت ‪t/n‬‬
‫)‪rat(x‬‬ ‫ﻧﻤﺎﻳﺶ ‪ x‬ﺑﻪ ﺻﻮرت ﻣﺠﻤﻮﻋﻲ از ﻋﺪدﺻﺤﻴﺢ و ﻛﺴﺮ ﻣﺘﻌﺎرﻓﻲ‬
‫*‪ *** ،** ،‬اﻳﻦ ﺗﻮاﺑﻊ ﻋﻤﻞﻛﺮدﻫﺎي ﻣﺘﻔﺎوت اﻣﺎ ﻧﺰدﻳﻚ ﺑﻪﻫﻢ دارﻧﺪ‪ ،‬ﺑﺮاي اﻃﻼع ﺑﻴﺶﺗﺮ ﺑﻪ ‪ help‬ﻫﺮﻳﻚ ﻣﺮاﺟﻌﻪ ﻛﻨﻴﺪ‪.‬‬

‫‪ 4-2‬اﻋﺪاد و ﻣﺘﻐﻴﺮﻫﺎي ﻣﺨﺘﻠﻂ‬


‫در ﻣﺘﻠﺐ اﻋﺪاد ﻣﺨﺘﻠﻂ وﺟﻮد دارﻧﺪ و رﻳﺸﻪ دوم ‪ -1‬ﺑﺎ ﺣﺮف ‪ i‬ﻧﺸﺎن داده ﻣﻲﺷﻮد‪ .‬ﺣﺮف ‪ j‬ﻫﻢ ﺑﻪ ﻫﻤﺎن ﻣﻌﻨﺎ اﺳﺖ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫‪>> sqrt(-1), i, j‬‬
‫‪ans = 0 + 1.0000i‬‬
‫‪ans = 0 + 1.0000i‬‬
‫‪ans = 0 + 1.0000i‬‬
‫ﺗﻮاﺑﻊ ﻣﺮﺑﻮط ﺑﻪ ﻣﺘﻐﻴﺮﻫﺎي ﻣﺨﺘﻠﻂ‬
‫ﺗﻮاﺑﻊ ﻣﺨﺘﻠﻂ را ﻧﺴﺒﺖ ﺑﻪ ﻣﺘﻐﻴﺮ ‪ z = a + jb‬اﻋﻤﺎل ﻣﻲﻛﻨﻴﻢ‪ .‬ﻧﺘﺎﻳﺞ ﺣﺎﺻﻠﻪ در ﺟﺪول زﻳﺮ آﻣﺪه اﺳﺖ‪.‬‬
‫ﻓﺮم ﻧﻮﺷﺘﺎري ﻋﺪد ﻣﺨﺘﻠﻂ‬
‫ﻋﺪد ﻣﺨﺘﻠﻂ ‪ z‬را ﻣﻲﺗﻮان ﺑﻪﻳﻜﻲ از اﺷﻜﺎل ﻣﺸﺮوح در ﺣﺪول زﻳﺮ ﻧﻮﺷﺖ‪ .‬وﻗﺘﻲ ﻋﺪد ﻣﺨﺘﻠﻂ ﺑﻪ ﻋﻨﻮان ﻳﻚ ﻋﻀﻮ در‬
‫ﻣﺎﺗﺮﻳﺲ ﻗﺮار ﻣﻲﮔﻴﺮد‪ ،‬ﺑﺎﻳﺪ ﺑﻴﻦ ﻋﺪدﻫﺎ‪ ،‬ﻋﻼﺋﻢ‪ ،‬و ﺣﺮفِ ‪ i‬ﻓﺎﺻﻠﻪ ﻧﺒﺎﺷﺪ‪.‬‬

‫‪32‬‬
‫ﻣﻘﺪار‬ ‫ﺷﺮح‬ ‫ﺗﺎﺑﻊ‬
‫‪a‬‬ ‫)‪ real(z‬ﻗﺴﻤﺖ ﺣﻘﻴﻘﻲ را ﺑﺮﻣﻲﮔﺮداﻧﺪ‬
‫‪b‬‬ ‫)‪ imag(z‬ﻗﺴﻤﺖ ﻣﻮﻫﻮﻣﻲ را ﺑﺮﻣﻲﮔﺮداﻧﺪ‬

‫‪a2 + b2‬‬ ‫)‪ abs(z‬ﻗﺪر ﻣﻄﻠﻖ |‪ |z‬را ﺑﺮﻣﻲﮔﺮداﻧﺪ‬


‫)‪atan2(b,a‬‬ ‫)‪ angle(z‬زاوﻳﻪ را ﺑﺮﻣﻲﮔﺮداﻧﺪ‬
‫‪a - jb‬‬ ‫)‪ conj(z‬ﻣﺰدوج ‪ z‬را ﺑﺮﻣﻲﮔﺮداﻧﺪ‬
‫ﺗﻮاﺑﻊ ﻣﺮﺑﻮط ﺑﻪ ﻣﺘﻐﻴﺮﻫﺎي ﻣﺨﺘﻠﻂ‬
‫ﺗﻮﺿﻴﺢ‬ ‫ﻓﺮم ﻧﻮﺷﺘﺎري‬
‫‪ z = a + jb‬ﺑﺎﻳﺪ ‪ j‬ﺑﻪ ‪ b‬ﭼﺴﺒﻴﺪه ﺑﺎﺷﺪ‪.‬‬
‫‪z = a + j*b‬‬
‫‪ z = a + ib‬ﺑﺎﻳﺪ ‪ i‬ﺑﻪ ‪ b‬ﭼﺴﺒﻴﺪه ﺑﺎﺷﺪ‪.‬‬
‫‪z = a + i*b‬‬
‫)‪mg = abs(z‬‬ ‫)‪z = mg * exp(j*ang‬‬
‫)‪ang = angle(z‬‬
‫ﻓﺮمﻫﺎي ﻧﻮﺷﺘﺎري ﻋﺪد ﻣﺨﺘﻠﻂ‬
‫ﻣﺜﺎل‪:‬‬
‫ﻣﺎﺗﺮﻳﺲ ﻣﺨﺘﻠﻂ ‪ px‬را ﺑﺎ ﻗﺴﻤﺖﻫﺎي ﺣﻘﻴﻘﻲ و ﻣﺠﺎزي ‪ im,re‬ﺑﻪ دو ﻓﺮم ﻗﺎﺋﻢ و ﻗﻄﺒﻲ ﺑﻨﻮﻳﺴﻴﺪ‪ .‬ﻣﺨﺘﺼﺎت ﻗﻄﺒﻲ آنرا‬
‫‪ mag,tet‬ﺑﮕﻴﺮﻳﺪ‪.‬‬
‫;]‪>> re = [1 2 3]; im = [-4 -5 -6‬‬
‫‪>> px = re + j*im‬‬
‫‪px = 1.0000 - 4.0000i‬‬ ‫‪2.0000 - 5.0000i‬‬ ‫‪3.0000 - 6.0000i‬‬
‫)‪>> tet = angle(px), mag = abs(px‬‬
‫‪tet = -1.3258‬‬ ‫‪-1.1903‬‬ ‫‪-1.1071‬‬
‫‪mag = 4.1231‬‬ ‫‪5.3852‬‬ ‫‪6.7082‬‬
‫)‪>> px = mag .* exp(j*tet‬‬
‫‪px = 1.0000 - 4.0000i‬‬ ‫‪2.0000 - 5.0000i‬‬ ‫‪3.0000 - 6.0000i‬‬

‫‪33‬‬
‫‪ 5-2‬ﺗﻤﺮﻳﻦ‬
‫‪ -1‬ﺑﺎ ﻓﺮﻣﺖﻫﺎي ﻣﺨﺘﻠﻒ ﻣﻘﺪار ‪ rmn ± eps‬را ﻧﻤﺎﻳﺶ دﻫﻴﺪ‪.rmn = 2.22044604925031e-6 .‬‬
‫‪ -2‬ﺑﺎ ‪ format long‬ﻣﻘﺪار ]‪ m = [1e6 -1e7 1‬را ﺑﺎ ﻧﻤﺎﻳﺶ دﻫﻴﺪ‪ scale factor .‬را‬
‫ﻣﻼﺣﻈﻪ ﻛﻨﻴﺪ‪ .‬ﺳﭙﺲ ﺑﺎ ‪ format long e‬ﺗﻜﺮار ﻛﻨﻴﺪ‪.‬‬
‫‪ -3‬ﻋﺪد ﭘﻲ را ﺑﺎ اﻧﻮاع ﻣﻀﺎﻋﻒ‪ ،‬ﻣﺤﺪود‪ ،‬و ﺻﺤﻴﺢ در ﺣﺎﻓﻈﻪ ﻧﮕﻪداري ﻛﻨﻴﺪ‪ ،‬ﺳﭙﺲ ﺑﺎ ﻓﺮﻣﺖﻫﺎي ﻣﺨﺘﻠﻒ ﻧﺸﺎن‬
‫دﻫﻴﺪ‪ .‬ﻧﺘﺎﻳﺞ را ﺑﺎ )(‪ isa‬اﻣﺘﺤﺎن و در ﭘﻨﺠﺮه ﻓﻀﺎي ﻛﺎر ﻣﺸﺎﻫﺪه ﻛﻨﻴﺪ‪.‬‬
‫‪ -4‬ﺑﺎ ﻧﺤﻮه ﻧﻤﺎﻳﺶ ‪ ،format long‬و ﺑﺎ ﺗﻜﺮار ﺗﻌﻴﻴﻦ ﻛﻨﻴﺪ ‪ n‬ﭼﻪ ﻋﺪد ﺻﺤﻴﺤﻲ ﺑﺎﺷﺪ ﻛﻪ رﻗﻢ ﻳﻚ در اﻋﺪاد‬
‫ﺑﻌﺪاز ﻣﻤﻴﺰ ﺣﺎﺻﻞِ ﻋﺒﺎرت ‪ 1 + n*eps‬ﻇﺎﻫﺮ ﺷﻮد‪ .‬ﺑﻪ اﻳﻦ ﺷﻜﻞ‪1.00000000000001 :‬‬
‫‪ -5‬ﻣﺘﻐﻴﺮ ‪ x = 42235.62567889404296875‬را ﺑﺎ )‪ single(x‬ﺑﻪ ﺗﺎﺑﻊ ﻳﻜﺎ ﺗﺒﺪﻳﻞ و ﺑﺎ ﻓﺮﻣﺖ‬
‫ﺑﻠﻨﺪ‪ ،‬ﻛﻮﺗﺎه و ﻓﺮﻣﺖ ﺑﺎﻧﻚ ‪ format bank‬ﻧﻤﺎﻳﺶ دﻫﻴﺪ‪ .‬ﻣﺘﻐﻴﺮ ‪ x‬را ﺗﻘﺴﻴﻢ ﺑﺮ ﺻﻔﺮ ﻛﺮده ﺑﺮاﺑﺮ ‪ y‬ﻗﺮار دﻫﻴﺪ‪.‬‬
‫‪ -6‬ﻋﻤﻠﻴﺎت آراﻳﻪاي را در ﻣﻮرد ﺑﺮدارﻫﺎي ]‪ a = [-2.1 4 8‬و ]‪ b = [3 0 2‬اﻣﺘﺤﺎن ﻛﻨﻴﺪ‪ .‬ﺑﺮدارﻫﺎ را‬
‫ﺗﺮاﻧﻬﺎد )ﺗﺮاﻧﺴﭙﻮز( و ﻋﻤﻠﻴﺎت را ﺗﻜﺮار ﻛﻨﻴﺪ‪.‬‬
‫‪ -7‬ﺟﺪول ﻛﺴﻴﻨﻮس زواﻳﺎي ﺑﻴﻦ ‪ -360,+360‬درﺟﻪ را ﺗﻮﻟﻴﺪ ﻛﻨﻴﺪ و ﻧﻤﺎﻳﺶ دﻫﻴﺪ‪.‬‬
‫‪ -8‬ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﺗﺼﺎدﻓﻲ ‪ 5×4‬ﺗﻮﻟﻴﺪ ﻛﻨﻴﺪ‪.‬‬
‫‪ -9‬ﻳﻚ ﺑﺮدار ﻋﺪدي ﺑﺎ ‪ 14‬ﻋﻨﺼﺮ ﺗﺼﺎدﻓﻲ ﺗﻮﻟﻴﺪ ﻛﻨﻴﺪ‪ ،‬ﻛﻪ ﺑﺰرﮔﺎي ﻫﺮ ﻋﻀﻮ آن ﺑﻴﻦ ‪ 10‬ﺗﺎ ‪ 100‬ﺑﺎﺷﺪ‪.‬‬
‫‪ -10‬ﺑﺎ )(‪ repmat‬ﻳﻚ ﺑﺮدار ﺑﺎ دهﻫﺰار ﺻﻔﺮ ﺗﺎ ﻧُﻪ ﺗﻮﻟﻴﺪ ﻛﻨﻴﺪ‪.‬‬
‫‪ -11‬ﻓﺎﺻﻠﻪ زﻣﺎﻧﻲ ﺑﻴﻦ ﻧﻮﺷﺘﻦ ‪ tic‬و ‪ toc‬را در ﻛﺎﻣﭙﻴﻮﺗﺮ ﺧﻮدﺗﺎن ﺗﻌﻴﻴﻦ ﻛﻨﻴﺪ‪.‬‬
‫‪ -12‬ﺑﺎ اﺳﺘﻔﺎده از ‪ clock‬ﻓﻘﻂ ﺗﺎرﻳﺦ را ﺑﻪ ﻓﺮم ﻣﻨﺎﺳﺐ ﻧﻤﺎﻳﺶ دﻫﻴﺪ‪.‬‬
‫‪ -13‬ﺗﺎﺑﻊ )‪ calendar(2002,01‬را اﻣﺘﺤﺎن ﻛﻨﻴﺪ‪.‬‬
‫‪ -14‬ﻣﺘﻐﻴﺮ ‪ t‬را ﻣﺴﺎوي ﺻﻔﺮ ﺗﻌﺮﻳﻒ ﻛﺮده ‪ f = sin(t)/t‬را ﺑﻪ دﺳﺖ آورﻳﺪ‪.‬‬
‫‪ -15‬ﺗﻮاﺑﻊ ‪ realmax‬و ‪ realmin‬را اﻣﺘﺤﺎن ﻛﻨﻴﺪ‪ .‬ﻋﺒﺎرات ‪ type realmax‬و ‪ type realmin‬را‬
‫ﻣﺠﺪداً اﺟﺮا و ﺑﺮرﺳﻲ ﻛﻨﻴﺪ‪.‬‬
‫‪ -16‬ﻋﺪد ﮔﻨﮓِ ‪ e‬را ﺑﺎ ﻓﺮﻣﻮل )‪) e = exp(1‬ﻃﺮف راﺳﺖ‪ e1 ،‬اﺳﺖ( ﺑﻪ دﺳﺖ آورده ﺑﺎ ﻫﺮ دو ﻓﺮﻣﺖ ﻛﻮﺗﺎه و‬
‫ﺑﻠﻨﺪ و ﻓﺮﻣﺖ ﻛﺴﺮي ‪ format rational‬ﻧﻤﺎﻳﺶ دﻫﻴﺪ‪ .‬راﻫﻨﻤﺎ‪ e :‬ﻳﻚ ﻣﺘﻐﻴﺮ داﺧﻠﻲ ﻧﻴﺴﺖ‪.‬‬
‫‪ -17‬ﺗﻮاﺑﻊ ﻣﺜﻠﺜﺎﺗﻲ زاوﻳﻪ ‪ 30‬درﺟﻪ را ﭘﻴﺪا ﻛﺮده در ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﻧﻤﺎﻳﺶ دﻫﻴﺪ‪.‬‬
‫‪ -18‬ﺗﻮاﺑﻊ )(‪ round‬و )(‪ fix‬و )(‪ ceil‬و )(‪ floor‬را ﺑﺮاي ‪ 13/7‬و ‪ -13/7‬ﺑﻪ دﺳﺖ آورﻳﺪ‪.‬‬
‫‪ -19‬ﻣﺘﻐﻴﺮ ‪ x = 0.34‬را ﺑﻪ ﺗﻨﻬﺎﺋﻲ ﺑﻪ ﺻﻮرت ﻳﻚ ﻛﺴﺮ ﻣﺘﻌﺎرﻓﻲ و ﻣﺨﻠﻮﻃﻲ از ﻋﺪد و ﻛﺴﺮ ﻣﺘﻌﺎرﻓﻲ ﻧﺸﺎن دﻫﻴﺪ‪.‬‬
‫‪ -20‬ﺑﺎ اﺳﺘﻔﺎده از ﺗﻮاﺑﻊ ﻣﺨﺘﻠﻂ ﻣﻘﺪار اﻣﭙﺪاﻧﺲ و ﺿﺮﻳﺐ ﺗﻮان ﻣﺪار زﻳﺮ را ﺑﺎ ﻣﻘﺎدﻳﺮ داده ﺷﺪه ﭘﻴﺪا ﻛﻨﻴﺪ‪.‬‬
‫‪R = 1Ω, L = 1mH, C = 1µF,‬‬ ‫= ‪ω‬‬ ‫‪1000rad/s‬‬

‫‪34‬‬
‫ﻓﺼﻞ ‪ 3‬ﻣﺎﺗﺮﻳﺲ ﻫﺎ‬
‫‪ 1-3‬ﺗﺸﺎﺑﻪ ﻣﺎﺑﻴﻦ ﻣﺎﺗﺮﻳﺲ ﻫﺎ‬
‫راﺑﻄﻪ ﺗﺸﺎﺑﻪ ﺑﻪ ﻳﻜﻲ از اﺷﻜﺎل زﻳﺮ ﻣﺎﺑﻴﻦ ﻣﺎﺗﺮﻳﺲﻫﺎ ﺑﺮﻗﺮار اﺳﺖ‪ .‬در اﻳﻦ ﻣﺘﻦ از اﺻﻄﻼح ﻫﻢﺳﺎن اﺳﺘﻔﺎده زﻳﺎدي ﻣﻲﺷﻮد‪.‬‬
‫ﻛﺎرﺑﺮد‬ ‫ﺗﻌﺮﻳﻒ‬ ‫ﻧﺎم‬
‫ﺗﺮﺳﻴﻤﺎت‪... ،‬‬ ‫ﭼﻨﺪ ﻣﺎﺗﺮﻳﺲ ﺑﺎ ﺗﻌﺪاد ردﻳﻒﻫﺎ و ﺳﺘﻮنﻫﺎي ﻣﺴﺎوي‬ ‫ﻫﻢردﻳﻒ‪ -‬ﻫﻢﺳﺘﻮن )ﻫﻢﺳﺎن(‬
‫ﻫﻢ ردﻳﻒ‪ -‬ﺑﺎ ﺳﺘﻮن )ﺿﺮبﭘﺬﻳﺮ( دو ﻣﺎﺗﺮﻳﺲ ﺑﺎ ﺗﻌﺪاد ردﻳﻒﻫﺎي ﻳﻜﻲ ﻣﺴﺎوي ﺳﺘﻮنﻫﺎي دﻳﮕﺮي ﺿﺮب ﻣﺎﺗﺮﻳﺴﻲ‬
‫ﻋﻤﻠﻴﺎت رﻳﺎﺿﻲ‬ ‫ﭼﻨﺪ ﻣﺎﺗﺮﻳﺲ ﺑﺎ ﺗﻌﺪاد ردﻳﻒﻫﺎ و ﺳﺘﻮنﻫﺎي ﻣﺴﺎوي‬ ‫ﻣﺴﺎوي )ﻳﻜﺴﺎن(‬
‫و ﻣﻘﺪار دراﻳﻪﻫﺎي ﻣﺴﺎوي‬
‫ﻋﻤﻠﻴﺎت ﻣﺎﺗﺮﻳﺴﻲ‬ ‫ﭼﻨﺪ ﻣﺎﺗﺮﻳﺲ ﺑﺎ ﺗﻌﺪاد دراﻳﻪﻫﺎي ﻣﺴﺎوي‬ ‫ﻣﺘﺴﺎوياﻟﻌﻨﺼﺮ‬
‫اﻣﺎ ﺗﻌﺪاد ردﻳﻒﻫﺎ و ﺳﺘﻮنﻫﺎي ﻧﺎﻣﺴﺎوي‬

‫‪Elementary Matrices‬‬ ‫‪ 2-3‬ﻣﺎﺗﺮﻳﺲ ﻫﺎي ﭘﺎﻳﻪ‬


‫ﻣﺎﺗﺮﻳﺲﻫﺎﺋﻲ ﻧﻈﻴﺮ )(‪ zeros(), ones(), rand(), eye‬در ﻣﺘﻠﺐ ﻣﺎﺗﺮﻳﺲ ﭘﺎﻳﻪ ﻧﺎم دارﻧﺪ‪ .‬راﻫﻨﻤﺎي آنﻫﺎ و‬
‫ﺑﻌﻀﻲ اﻃﻼﻋﺎت دﻳﮕﺮ ﺑﺎ اﺟﺮاي ‪ help elmat‬روي ﭘﻨﺠﺮه ﻓﺮﻣﺎن ﻧﻤﺎﻳﺶ داده ﻣﻲﺷﻮﻧﺪ‪.‬‬
‫‪identity matrix‬‬ ‫ﻣﺎﺗﺮﻳﺲ ﻳﮕﺎﻧﻲ‬
‫دﺳﺘﻮر)‪ eye(n,m‬ﻣﺎﺗﺮﻳﺴﻲ ﺑﺎ ﻗﻄﺮي ﻣﺘﺸﻜﻞ از ﻳﻚﻫﺎ و ﺳﺎﻳﺮ ﻋﻨﺎﺻﺮ ﻣﺴﺎوي ﺑﺎ ﺻﻔﺮ اﻳﺠﺎد ﻣﻲﻛﻨﺪ‪ .‬دﺳﺘﻮر )‪eye(n‬‬
‫ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﻳﮕﺎﻧﻲ ﻣﺮﺑﻌﻲ ‪ n × n‬اﻳﺠﺎد ﻣﻲﻛﻨﺪ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫)‪>> x = eye(3‬‬
‫‪x = 1‬‬ ‫‪0‬‬ ‫‪0‬‬
‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬
‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬
‫)(‪zeros‬‬ ‫ﻣﺎﺗﺮﻳﺲ ﻫﺎي )(‪ ones‬و‬
‫دﺳﺘﻮر)‪ ones(n,m‬ﻣﺎﺗﺮﻳﺲ ‪ n × m‬ﺑﺎ ﻋﻨﺎﺻﺮ ﻳﻚ و دﺳﺘﻮر)‪ zeros(n,m‬ﻣﺎﺗﺮﻳﺲ ‪ n × m‬ﺑﺎ ﻋﻨﺎﺻﺮ ﺻﻔﺮ ﻣﻲ‪-‬‬
‫ﺳﺎزﻧﺪ‪ .‬دﺳﺘﻮرﻫﺎي)‪ ones(n‬و )‪ zeroz(n‬ﻣﺎﺗﺮﻳﺲﻫﺎي ﻣﺮﺑﻌﻲ ‪ n × n‬اﻳﺠﺎد ﻣﻲﻛﻨﻨﺪ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫)‪>> zeros(3,2‬‬
‫‪ans = 0‬‬ ‫‪0‬‬
‫‪0‬‬ ‫‪0‬‬
‫‪0‬‬ ‫‪0‬‬
‫)‪>> zeros(2‬‬
‫‪ans = 0‬‬ ‫‪0‬‬
‫‪0‬‬ ‫‪0‬‬
‫)‪>> ones(2‬‬
‫‪ans = 1‬‬ ‫‪1‬‬
‫‪1‬‬ ‫‪1‬‬

‫‪35‬‬
‫‪ 3-3‬اﻳﺠﺎد ﺗﻐﻴﻴﺮات ﺑﺮ روي ﻣﺎﺗﺮﻳﺲ‬
‫اﺳﺘﺨﺮاج ﻗﺴﻤﺘﻲ از ﻳﻚ ﻣﺎﺗﺮﻳﺲ‬
‫ﺑﺮاي اﺳﺘﺨﺮاج ﻗﺴﻤﺘﻲ از ﻳﻚ ﻣﺎﺗﺮﻳﺲ اﺑﺘﺪا ردﻳﻒﻫﺎ و ﺳﭙﺲ ﺳﺘﻮنﻫﺎي ﻣﺴﺘﺨﺮﺟﻪ از آنردﻳﻒﻫﺎ را ﻣﻲﻧﻮﻳﺴﻴﻢ‪ .‬ﻣﺜﻼً‬
‫ﻋﺒﺎرت )‪ A(1:2,2:3‬ﻧﺸﺎن دﻫﻨﺪه ردﻳﻒ‪ 1‬ﺗﺎ ردﻳﻒ ‪ 2‬ﻣﺤﺪود ﺑﻴﻦ ﺳﺘﻮن ‪ 2‬ﺗﺎ ﺳﺘﻮن‪ 3‬اﺳﺖ‪.‬‬
‫ﻣﺜﺎل ﻫﺎ‪:‬‬
‫اﺳﺘﺨﺮاج ﻳﻚ ردﻳﻒ از ﻣﺎﺗﺮﻳﺲ‬
‫;]‪>> A = [1 2 3; 4 5 6‬‬
‫ردﻳﻒ ‪ 1‬را اﺳﺘﺨﺮاج ﻣﻲﻛﻨﺪ ‪>> A1 = A(1,:) %‬‬
‫‪A1 = 1‬‬ ‫‪2‬‬ ‫‪3‬‬
‫اﺳﺘﺨﺮاج ﻳﻚ ﺳﺘﻮن از ﻣﺎﺗﺮﻳﺲ‬
‫;]‪>> A = [1 2 3; 4 5 6‬‬
‫ﺳﺘﻮن ‪ 2‬را اﺳﺘﺨﺮاج ﻣﻲﻛﻨﺪ ‪>> A2 = A(:,2) %‬‬
‫‪A2 = 2‬‬
‫‪5‬‬
‫‪-2‬‬
‫اﺳﺘﺨﺮاج ﻗﺴﻤﺘﻲ از ﻣﺎﺗﺮﻳﺲ‬
‫;]‪>> A = [1 2 3; 4 5 6‬‬
‫ﺳﺘﻮنﻫﺎي ‪ 2‬و ‪ 3‬از ردﻳﻒﻫﺎي ‪ 1‬و ‪ 2‬را اﺳﺘﺨﺮاج ﻣﻲﻛﻨﺪ ‪>> A23 = A(1:2,2:3) %‬‬
‫‪A23 = 2‬‬ ‫‪3‬‬
‫‪5‬‬ ‫‪6‬‬
‫ﺗﻐﻴﻴﺮ ﻣﻘﺪار ﻋﻨﺎﺻﺮ ﻣﺎﺗﺮﻳﺲ‬
‫ﻣﺜﺎل‪:‬‬
‫⎤‪⎡1 1 1‬‬ ‫⎤‪⎡1 0 0‬‬ ‫⎤‪⎡1 4 7‬‬
‫ﻣﺎﺗﺮﻳﺲ ⎥⎥‪ b = ⎢⎢2 5 8‬را ﺗﻮﻟﻴﺪ و ﺑﺎ آن ﻣﺎﺗﺮﻳﺲﻫﺎي ⎥‪ b1 = ⎢2 0 0‬و ⎥‪ b2 = ⎢2 1 1‬را ﺑﺴﺎزﻳﺪ‪.‬‬
‫⎢‬ ‫⎥‬ ‫⎢‬ ‫⎥‬
‫⎦⎥‪⎢⎣3 6 9‬‬ ‫⎦⎥‪⎢⎣3 6 9‬‬ ‫⎦⎥‪⎢⎣3 6 9‬‬
‫اﺑﺘﺪا ﻣﺎﺗﺮﻳﺲ ‪ b‬را ﺗﻌﺮﻳﻒ ﻣﻲﻛﻨﻴﻢ‪ .‬ﺑﺎ اﺳﺘﻔﺎده از ﺗﺮاﻧﻬﺎد ‪ b‬را راﺣﺖﺗﺮ ﺗﻌﺮﻳﻒ ﻛﺮدهاﻳﻢ‪.‬‬
‫']‪>> b = [1:3;4:6;7:9‬‬
‫‪b = 1‬‬ ‫‪4‬‬ ‫‪7‬‬
‫‪2‬‬ ‫‪5‬‬ ‫‪8‬‬
‫‪3‬‬ ‫‪6‬‬ ‫‪9‬‬
‫ﻣﺎﺗﺮﻳﺲ ‪ b1‬را ﻣﺴﺎوي ‪ b‬ﺗﻮﻟﻴﺪ ﻣﻲﻛﻨﻴﻢ‪:‬‬
‫;‪>> b1 = b‬‬
‫)‪>> b1(1:2,2:3) = zeros(2‬‬
‫‪b1 = 1.00‬‬ ‫‪0‬‬ ‫‪0‬‬
‫‪2.00‬‬ ‫‪0‬‬ ‫‪0‬‬
‫‪3.00‬‬ ‫‪6.00‬‬ ‫‪9.00‬‬
‫ﻣﺎﺗﺮﻳﺲ ‪ b2‬را ﻣﺴﺎوي ‪ b‬ﺗﻮﻟﻴﺪ ﻣﻲﻛﻨﻴﻢ‪:‬‬
‫;‪>> b2 = b‬‬
‫)‪>> b2(1:2,2:3) = ones(2‬‬
‫‪b2 = 1.00‬‬ ‫‪1.00‬‬ ‫‪1.00‬‬
‫‪2.00‬‬ ‫‪1.00‬‬ ‫‪1.00‬‬
‫‪3.00‬‬ ‫‪6.00‬‬ ‫‪9.00‬‬

‫‪36‬‬
‫ﻗﺮار دادن ﻳﻚ ﻣﺎﺗﺮﻳﺲ در ﻣﺎﺗﺮﻳﺲ دﻳﮕﺮ‬
‫ﻋﺒﺎرت ‪ d(:) = b‬ﻋﻨﺎﺻﺮ ‪ b‬را ﺑﻪ ﺗﺮﺗﻴﺐ ﺳﺘﻮن در داﺧﻞ ‪ d‬ﺟﺎﺳﺎزي ﻣﻲﻛﻨﺪ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫دو ﻣﺎﺗﺮﻳﺲ ‪ d‬و ‪ b‬ﻣﺘﺴﺎوياﻟﻌﻨﺼﺮ اﻣﺎ ﻧﺎﻫﻢﺳﺎن ﻫﺴﺘﻨﺪ‪ .‬ﻋﻨﺎﺻﺮ ‪ b‬را داﺧﻞ ‪ d‬ﻗﺮار دﻫﻴﺪ‪.‬‬
‫)‪>> d = zeros(3,2‬‬
‫‪d = 0‬‬ ‫‪0‬‬
‫‪0‬‬ ‫‪0‬‬
‫‪0‬‬ ‫‪0‬‬
‫]‪>> b = [1:3; 4:6‬‬
‫‪b = 1‬‬ ‫‪2‬‬ ‫‪3‬‬
‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬
‫‪>> d(:) = b‬‬
‫‪d = 1‬‬ ‫‪5‬‬
‫‪4‬‬ ‫‪3‬‬
‫‪2‬‬ ‫‪6‬‬
‫اﺳﺘﺨﺮاج ﻳﺎ ﺣﺬف ردﻳﻒ و ﺳﺘﻮن‬
‫ﻋﺒﺎرت )‪ a(:,n‬ﺳﺘﻮن ‪ ، n‬و ﻋﺒﺎرت )‪ a(m,:‬ردﻳﻒ ‪ m‬را ﺑﺮﻣﻲﮔﺮداﻧﻨﺪ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫ﺳﺘﻮن دوم و ردﻳﻒ اول ﻣﺎﺗﺮﻳﺲ ']‪ b = [1:3;4:6;7:9‬را ﺣﺬف ﻛﻨﻴﺪ‪.‬‬
‫']‪>> b = [1:3;4:6;7:9‬‬
‫‪b = 1‬‬ ‫‪4‬‬ ‫‪7‬‬
‫‪2‬‬ ‫‪5‬‬ ‫‪8‬‬
‫‪3‬‬ ‫‪6‬‬ ‫‪9‬‬
‫)‪>> b(:,2‬‬
‫‪ans = 4‬‬
‫‪5‬‬
‫‪6‬‬
‫)‪>> b(1,:‬‬
‫‪ans = 1‬‬ ‫‪4‬‬ ‫‪7‬‬
‫][=)‪>> b(:,2‬‬
‫‪b = 1‬‬ ‫‪7‬‬
‫‪2‬‬ ‫‪8‬‬
‫‪3‬‬ ‫‪9‬‬
‫][=)‪>> b(1,:‬‬
‫‪b = 2‬‬ ‫‪8‬‬
‫‪3‬‬ ‫‪9‬‬
‫‪ 4-3‬ﻋﻤﻞ ﮔﺮﻫﺎي ﻣﺎﺗﺮﻳﺴﻲ‬
‫ﻋﻼﺋﻢ ﺿﺮب‪ ،‬ﺗﻘﺴﻴﻢ‪ ،‬و ﺗﻮان‪ ،‬ﺑﺪون ﻧﻘﻄﻪ در ﺳﻤﺖ ﭼﭗ‪ ،‬ﻋﻤﻠﮕﺮﻫﺎي ﻣﺎﺗﺮﻳﺴﻲ ﻫﺴﺘﻨﺪ و ﺑﻪ ﺻﻮرت ﻋﻨﺼﺮ ﺑﻪ ﻋﻨﺼﺮ ﻋﻤﻞ‬
‫ﻧﻤﻲﻛﻨﻨﺪ‪ .‬ﺟﻤﻊ و ﺗﻔﺮﻳﻖ آراﻳﻪاي و ﻣﺎﺗﺮﻳﺴﻲ ﻳﻚﺳﺎن ﻫﺴﺘﻨﺪ‪ .‬اﻳﻦ ﻋﻤﻠﮕﺮﻫﺎ در ﺟﺪول زﻳﺮ آﻣﺪهاﻧﺪ‪.‬‬
‫ﺗﻮان ﺿﺮب ﺗﻘﺴﻴﻢ راﺳﺖ ﺑﻪ ﭼﭗ ﺟﻤﻊ ﺗﻘﺴﻴﻢ )ﻣﻌﻤﻮﻟﻲ( ﺗﻔﺮﻳﻖ‬
‫‪-‬‬ ‫‪/‬‬ ‫‪+‬‬ ‫\‬ ‫*‬ ‫^‬

‫ﺿﺮب ﻣﺎﺗﺮﻳﺴﻲ‬
‫ﺿﺮب ﻣﺎﺗﺮﻳﺴﻲ ﭘﺮﻛﺎرﺑﺮدﺗﺮﻳﻦ ﻋﻤﻞ ﻣﺎﺗﺮﻳﺴﻲ اﺳﺖ‪ .‬اﮔﺮ ‪ c‬ﺣﺎﺻﻞﺿﺮب ‪ a‬در ‪ b‬ﺑﺎﺷﺪ‪ ،‬ﻋﻨﺎﺻﺮ ردﻳﻒ ﻳﻚ ‪ a‬در ﻋﻨﺎﺻﺮ‬
‫ﺳﺘﻮن ﻳﻚ ‪ b‬ﺑﻪ ﺗﺮﺗﻴﺐ ﺿﺮب و ﺑﺎ ﻫﻢ ﺟﻤﻊ ﻣﻲﺷﻮﻧﺪ‪ ،‬ﻧﺘﻴﺠﻪ ﻋﻨﺼﺮ )‪ c(1,1‬اﺳﺖ‪ .‬ﻋﻨﺎﺻﺮ ردﻳﻒ ﻳﻚ ‪ a‬در ﻋﻨﺎﺻﺮ‬

‫‪37‬‬
‫ﺳﺘﻮن دو ‪ b‬ﺑﻪ ﺗﺮﺗﻴﺐ ﺿﺮب و ﺑﺎ ﻫﻢ ﺟﻤﻊ ﻣﻲﺷﻮﻧﺪ‪ ،‬ﻧﺘﻴﺠﻪ ﻋﻨﺼﺮ )‪ c(1,2‬اﺳﺖ‪ .‬و ﺑﻪ ﻫﻤﻴﻦ ﺗﺮﻧﻴﺐ ﻣﺎﺗﺮﻳﺲ ‪ c‬ﺑﻪ دﺳﺖ‬
‫ﻣﻲآﻳﺪ‪ .‬ﺣﺎﺻﻞﺿﺮب دو ﻣﺎﺗﺮﻳﺲ در ﺻﻮرﺗﻲ ﺑﺪون ﺧﻄﺎ ﺑﻪ دﺳﺖ ﻣﻲآﻳﺪ ﻛﻪ ﺳﺘﻮنﻫﺎي ‪ a‬ﺑﺎ ﺳﻄﺮﻫﺎي ‪ b‬ﺑﺮاﺑﺮ ﺑﺎﺷﻨﺪ‪ .‬اﮔﺮ‬
‫ﺑﺨﻮاﻫﻴﻢ ‪ a * b‬و ‪ b * a‬ﻫﺮ دو ﻣﻌﻨﻲدار ﺑﺎﺷﻨﺪ‪ ،‬ﻋﻼوه ﺑﺮ اﻳﻦﻛﻪ ﺑﺎﻳﺪ ﺳﺘﻮنﻫﺎي ‪ a‬ﺑﺎ ﺳﻄﺮﻫﺎي ‪ b‬ﺑﺮاﺑﺮ ﺑﺎﺷﻨﺪ‪ ،‬دو‬
‫ﻣﺎﺗﺮﻳﺲ ﺑﺎﻳﺪ ﻣﺘﺴﺎوياﻟﻌﻨﺼﺮ ﻫﻢ ﺑﺎﺷﻨﺪ‪ ،‬وﮔﺮﻧﻪ ﺑﺎ ﭘﻴﻐﺎم ﺧﻄﺎ ﻣﻮاﺟﻪ ﺧﻮاﻫﻴﻢ ﺷﺪ‪ .‬اﮔﺮ ‪ a * b‬و ‪ b * a‬ﻫﺮ دو ﻣﻌﻨﻲدار‬
‫ﺑﺎﺷﻨﺪ از ﺗﻌﺮﻳﻒ ﺿﺮب ﭘﻴﺪاﺳﺖ ﻛﻪ ‪ a * b‬ﻣﺴﺎوي ‪ b * a‬ﻧﺨﻮاﻫﺪ ﺑﻮد‪.‬‬
‫ﻣﺜﺎل ﻫﺎ‪:‬‬
‫ﺣﺎﺻﻞ اﺳﻜﺎﻟﺮ‬
‫>>‬ ‫;]‪am = [2 4 8‬‬
‫>>‬ ‫;]‪bm = [3; 2; 2‬‬
‫>>‬ ‫‪cm = am * bm‬‬
‫‪cm‬‬ ‫‪= 30‬‬
‫ﺣﺎﺻﻞ ﻣﺎﺗﺮﻳﺴﻲ‬
‫]‪>> a = [1 2 -6; 3 0 -3‬‬
‫‪a = 1‬‬ ‫‪2‬‬ ‫‪-6‬‬
‫‪3‬‬ ‫‪0‬‬ ‫‪-3‬‬
‫]‪>> b = [2 5 6; 0 1 4; 2 6 -8‬‬
‫‪b = 2‬‬ ‫‪5‬‬ ‫‪6‬‬
‫‪2‬‬ ‫‪6‬‬ ‫‪-8‬‬
‫‪0‬‬ ‫‪1‬‬ ‫‪4‬‬
‫‪>> c = a * b‬‬
‫‪c = -10‬‬ ‫‪-29‬‬ ‫‪62‬‬
‫‪0‬‬ ‫‪-3‬‬ ‫‪42‬‬
‫ﺧﻄﺎ در ﻧﺘﻴﺠﻪ ﺟﺎﺑﺠﺎﺋﻲ ﻋﻮاﻣﻞ ﺿﺮب‬
‫‪>> ci = b * a‬‬
‫* >== ‪??? Error using‬‬
‫‪Inner matrix dimensions must agree.‬‬
‫دو ﺟﻮاب ﻣﺨﺘﻠﻒ در ﻧﺘﻴﺠﻪ ﺟﺎﺑﺠﺎﺋﻲ ﻋﻮاﻣﻞ ﺿﺮب‬
‫;‪>> a = [1 2 -6‬‬ ‫]‪3 0 -3‬‬
‫‪a = 1‬‬ ‫‪2‬‬ ‫‪-6‬‬
‫‪3‬‬ ‫‪0‬‬ ‫‪-3‬‬
‫‪>> b = [2 5 ; 0‬‬ ‫]‪1 ; 2 6‬‬
‫‪b = 2‬‬ ‫‪5‬‬
‫‪0‬‬ ‫‪1‬‬
‫‪2‬‬ ‫‪6‬‬
‫‪>> a * b‬‬
‫‪ans = -10‬‬ ‫‪-29‬‬
‫‪0‬‬ ‫‪-3‬‬
‫‪>> b * a‬‬
‫‪ans = 17‬‬ ‫‪4‬‬ ‫‪-27‬‬
‫‪3‬‬ ‫‪0‬‬ ‫‪-3‬‬
‫‪20‬‬ ‫‪4‬‬ ‫‪-30:‬‬

‫ﺗﻮان ﻣﺎﺗﺮﻳﺴﻲ‬
‫‪ a ^ 2‬ﻛﻪ ﻣﻌﺎدل ‪ a * a‬اﺳﺖ ﻓﻘﻂ ﺑﺮاي ﻣﺎﺗﺮﻳﺲ ﻣﺮﺑﻌﻲ ﻣﻌﻨﻲ دارد‪ a ^ 2 .‬ﺑﺎ ‪ a .^ 2‬ﺗﻔﺎوت اﺳﺎﺳﻲ دارد‪.‬‬

‫‪38‬‬
‫‪ 5-3‬ﺑﻌﻀﻲ از ﺗﻮاﺑﻊ ﻣﺎﺗﺮﻳﺴﻲ‬
‫ﭼﻨﺪ ﺗﺎﺑﻊ ﻣﻌﻤﻮل‬
‫ﻧﺘﻴﺠﻪ‬ ‫ﺗﺎﺑﻊ‬ ‫ﻧﺎم‬
‫)‪ det(a‬دﺗﺮﻣﻴﻨﺎن ﻣﺎﺗﺮﻳﺲ ‪a‬‬ ‫دﺗﺮﻣﻴﻨﺎن ‪determinant‬‬
‫‪a‬‬ ‫ﺗﻮان ﻧﭙﺮي ﻣﺎﺗﺮﻳﺴﻲ ‪expm(a) matrix exponent‬‬
‫‪e‬‬
‫)‪ inv(a‬ﻣﻌﻜﻮس ﻣﺎﺗﺮﻳﺲ ‪a‬‬ ‫ﻣﺎﺗﺮﻳﺲ ﻣﻌﻜﻮس ‪inverse matrix‬‬

‫اﺳﺘﺨﺮاج ﻣﺎﺗﺮﻳﺲ از ﻣﺎﺗﺮﻳﺲ دﻳﮕﺮ‬


‫ﻧﺘﻴﺠﻪ‬ ‫ﺗﺎﺑﻊ‬ ‫ﻧﺎم‬
‫‪ diag() diagonal‬ﻗﻄﺮ ﻣﺎﺗﺮﻳﺲ را اﺳﺘﺨﺮاج ﻣﻲﻛﻨﺪ‬
‫‪ tril() lower triangle‬ﻣﺜﻠﺚ ﭘﺎﺋﻴﻦ ﻣﺎﺗﺮﻳﺲ را اﺳﺘﺨﺮاج ﻣﻲﻛﻨﺪ‬
‫‪ triu() upper triangle‬ﻣﺜﻠﺚ ﺑﺎﻻي ﻣﺎﺗﺮﻳﺲ را اﺳﺘﺨﺮاج ﻣﻲﻛﻨﺪ‬
‫ﺗﻮاﺑﻌﻲ ﻛﻪ ﺑﻪ روي ﻣﺠﻤﻮﻋﻪ ﻋﻨﺎﺻﺮ ﻣﺎﺗﺮﻳﺲ ﻋﻤﻞ ﻣﻲﻛﻨﻨﺪ‬
‫ﺑﻌﻀﻲ از ﺗﻮاﺑﻊ ﻣﺎﻧﻨﺪ )(‪ cumpro(),sum(),prod(),diff‬ﺑﻪ روي ﻣﺠﻤﻮﻋﻪ ﻋﻨﺎﺻﺮ ﻣﺎﺗﺮﻳﺲ ﻋﻤﻞ ﻣﻲﻛﻨﻨﺪ‪.‬‬
‫ﺑﺮاي اﻃﻼع ﺑﻴﺸﺘﺮ ﺑﻪ ‪ help‬ﻫﺮ ﺗﺎﺑﻊ ﻣﺮاﺟﻌﻪ ﺷﻮد‪.‬‬
‫ﻣﺎﺗﺮﻳﺲ ﺳﻪ ﺑﻌﺪي )ﻓﻀﺎﺋﻲ(‬
‫ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﺳﻪ ﺑﻌﺪيِ ‪ m × n × p‬داراي ‪ p‬ﺻﻔﺤﻪ اﺳﺖ ﻛﻪ ﻫﺮ ﺻﻔﺤﻪ ﻳﻚ ﻣﺎﺗﺮﻳﺲ دو ﺑﻌﺪي ‪ m × n‬اﺳﺖ‪.‬‬
‫اﻧﺘﺨﺎب ﻣﻘﺎدﻳﺮ ‪ m, n, p‬دلﺧﻮاه اﺳﺖ‪ ،‬اﻣﺎ ﺑﺎﻳﺪ دﻗﺖ ﻛﺮد ﻛﻪ ‪ n‬و ‪ m‬ﺑﺮاي ﺗﻤﺎﻣﻲ ﺻﻔﺤﺎت ﻳﻜﺴﺎن ﺑﺎﺷﻨﺪ‪ .‬در ﺷﻜﻞ زﻳﺮ‬
‫ﺷﻤﺎي ﻓﻀﺎﺋﻲ ﻣﺎﺗﺮﻳﺲ ‪ E‬ﻧﺸﺎن داده ﺷﺪه ﻛﻪ در آن ‪ p = 4‬اﺳﺖ‪:‬‬

‫‪D‬‬

‫‪C‬‬ ‫‪←E‬‬
‫‪B‬‬

‫‪A‬‬

‫ﺻﻔﺤﺎت ‪ 3 ،2 ،1‬و ‪ 4‬ﻣﺎﺗﺮﻳﺲ ﻓﻀﺎﺋﻲ ‪ E‬ﺑﻪ اﻳﻦ ﺻﻮرت ﺗﻌﺮﻳﻒ ﻣﻲﺷﻮﻧﺪ‪:‬‬


‫)‪E(:,:,1‬‬ ‫=‬ ‫‪A‬‬
‫)‪E(:,:,2‬‬ ‫=‬ ‫‪B‬‬
‫)‪E(:,:,3‬‬ ‫=‬ ‫‪C‬‬
‫)‪E(:,:,4‬‬ ‫=‬ ‫‪D‬‬

‫‪ A‬و ‪ B‬و ‪ C‬و ‪ D‬ﻣﺎﺗﺮﻳﺲﻫﺎي دو ﺑﻌﺪي ﻫﺴﺘﻨﺪ ﻛﻪ ﻗﺒﻼٌ ﺗﻌﺮﻳﻒ ﺷﺪهاﻧﺪ‪.‬‬


‫در زﺑﺎن ﻣﺘﻠﺐ ﺗﻌﺮﻳﻒ ﺻﻔﺤﻪي ‪n‬ام از ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﺳﻪ ﺑﻌﺪي ﺑﻪ ﻧﺎم ‪ E‬ﺑﻪﺻﻮرت ‪ E(:,:,n) = M‬اﺳﺖ‪ .‬ﺻﻔﺤﻪ‪-‬‬
‫ﻫﺎي ﺗﺸﻜﻴﻞ دﻫﻨﺪه ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﻓﻀﺎﺋﻲ ﺑﺎﻳﺪ ﻫﻢﺳﺎن )ﻫﻢردﻳﻒ و ﻫﻢﺳﺘﻮن( ﺑﺎﺷﻨﺪ‪ size(E).‬ﺗﻌﺪاد ردﻳﻒ‪ ،‬ﺳﺘﻮن‪ ،‬و‬
‫ﺻﻔﺤﻪﻫﺎي ﻣﺎﺗﺮﻳﺲ ﻓﻀﺎﺋﻲ را ﻧﺸﺎن ﻣﻲدﻫﺪ‪ .‬ﻋﺒﺎرت )‪ E(:‬ﻳﻚ ﺑﺮدار ﺗﻚﺳﺘﻮﻧﻲ ﻣﺘﺸﻜﻞ از ﺗﻤﺎم ﻋﻨﺎﺻﺮ ﻣﺎﺗﺮﻳﺲ ﻓﻀﺎﺋﻲ‬
‫اﻳﺠﺎد ﻣﻲﻛﻨﺪ‪ .‬ﻋﺒﺎرت )‪ E(:,:‬ﻳﻚ ﻣﺎﺗﺮﻳﺲ دو ﺑﻌﺪي ﻣﺘﺸﻜﻞ از ﻣﺎﺗﺮﻳﺲﻫﺎي ﺳﺎزﻧﺪهي ‪ E‬اﻳﺠﺎد ﻣﻲﻛﻨﺪ‪.‬‬

‫‪39‬‬
‫ﻣﺜﺎل‪:‬‬
‫ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﻓﻀﺎﺋﻲ ﺑﺎ ﭼﻬﺎر ﺻﻔﺤﻪ ﺗﻮﻟﻴﺪ ﻛﻨﻴﺪ‪ .‬ﺗﻌﺪاد ردﻳﻒ و ﺳﺘﻮنِ ﻫﺮ ﺻﻔﺤﻪ‪ ،‬و ﺗﻌﺪاد ﺻﻔﺤﻪﻫﺎي آنرا ﺑﺎ ﺗﺎﺑﻊ داﺧﻠﻲ‬
‫)(‪ size‬ﻧﻤﺎﻳﺶ دﻫﻴﺪ‪ .‬ﺑ‪‬ﻌﺪ آن را ﺑﺎ اﺳﺘﻔﺎده از ﺗﺎﺑﻊ داﺧﻠﻲ)(‪ ndims‬ﺗﻌﻴﻴﻦ ﻛﻨﻴﺪ‪.‬‬
‫>>‬ ‫‪A‬‬ ‫=‬ ‫;]‪[2 -5; 16 7.6; 13.3 -9‬‬
‫>>‬ ‫‪B‬‬ ‫=‬ ‫;] ‪[-2 -5.2; 6 7.3; 5 1.4‬‬
‫>>‬ ‫‪C‬‬ ‫=‬ ‫;] ‪[-2 2 ; 7 3; 1.55 1.4‬‬
‫>>‬ ‫‪D‬‬ ‫=‬ ‫;] ‪[-2.2 12 ; 7.3 30; 5.5 1.4‬‬
‫;‪>> E(:,:,1) = A‬‬
‫;‪>> E(:,:,2) = B‬‬
‫;‪>> E(:,:,3) = C‬‬
‫‪>> E(:,:,4) = D‬‬
‫‪E(:,:,1) = 2.0000‬‬ ‫‪-5.0000‬‬
‫‪16.0000‬‬ ‫‪7.6000‬‬
‫‪13.3000‬‬ ‫‪-9.0000‬‬
‫‪E(:,:,2) = -2.0000‬‬ ‫‪-5.2000‬‬
‫‪6.0000‬‬ ‫‪7.3000‬‬
‫‪5.0000‬‬ ‫‪1.4000‬‬
‫‪E(:,:,3) = -2.0000‬‬ ‫‪2.0000‬‬
‫‪7.0000‬‬ ‫‪3.0000‬‬
‫‪1.5500‬‬ ‫‪1.4000‬‬
‫‪E(:,:,4) = -2.2000‬‬ ‫‪12.0000‬‬
‫‪7.3000‬‬ ‫‪30.0000‬‬
‫‪5.5000‬‬ ‫‪1.4000‬‬
‫))‪>> size(E), ndims(E), length(size(E‬‬
‫‪ans = 3‬‬ ‫‪2‬‬ ‫‪4‬‬ ‫‪ans = 3‬‬ ‫‪ans = 3‬‬
‫‪ 6-3‬ﻣﺎﺗﺮﻳﺲ ﻫﺎي ﻧﻤﻮﻧﻪ‬
‫ﻣﺎﺗﺮﻳﺲ ﺟﺎدوﺋﻲ‬
‫دﺳﺘﻮر)‪ magic(n‬ﻳﻚ ﻣﺮﺑﻊ ﺟﺎدوﺋﻲ ‪ n*n‬ﻣﻲﺳﺎزد‪ .‬ﺧﺎﺻﻴﺖ ﻣﺮﺑﻊ ﺟﺎدوﺋﻲ اﻳﻦ اﺳﺖ ﻛﻪ ﺣﺎﺻﻞﺟﻤﻊ ﻋﻨﺎﺻﺮ آن در‬
‫ﻃﻮلِ ردﻳﻒ‪ ،‬ﻗﻄﺮ‪ ،‬و ﺳﺘﻮن ﺑﺮاﺑﺮﻧﺪ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫ﻳﻚ ﻣﺮﺑﻊ ﺟﺎدوﺋﻲ ‪ 3×3‬ﺑﻪ ﻧﺎم ‪ Mg‬ﺑﺴﺎزﻳﺪ‪ .‬ﺑﺎ ﺗﻜﺮار ‪ Mg‬ﻳﻚ ﻣﺎﺗﺮﻳﺲ‪ 6×3‬ﺑﻪ ﻧﺎم ‪ Mgr‬ﺑﺴﺎزﻳﺪ‪.‬‬
‫)‪>> Mg = magic(3‬‬
‫‪Mg = 8‬‬ ‫‪1‬‬ ‫‪6‬‬
‫‪3‬‬ ‫‪5‬‬ ‫‪7‬‬
‫‪4‬‬ ‫‪9‬‬ ‫‪2‬‬
‫)‪>> Mgr = repmat(Mg,2,1‬‬
‫‪Mgr = 8‬‬ ‫‪1‬‬ ‫‪6‬‬
‫‪3‬‬ ‫‪5‬‬ ‫‪7‬‬
‫‪4‬‬ ‫‪9‬‬ ‫‪2‬‬
‫‪8‬‬ ‫‪1‬‬ ‫‪6‬‬
‫‪3‬‬ ‫‪5‬‬ ‫‪7‬‬
‫‪4‬‬ ‫‪9‬‬ ‫‪2‬‬

‫ﻣﺎﺗﺮﻳﺲ ‪ Mgr‬ﻳﻚ ﻣﺮﺑﻊ ﺟﺎدوﺋﻲ ﻧﻴﺴﺖ‬

‫‪40‬‬
‫ﻣﺎﺗﺮﻳﺲ ﭘﺎﺳﻜﺎل‬
‫ﻣﺎﺗﺮﻳﺴﻲ اﺳﺖ ﻛﻪ از ﻣﺜﻠﺚ ﭘﺎﺳﻜﺎل ﺗﺸﻜﻴﻞ ﻣﻲﺷﻮد‪ .‬ﻳﻚ ﻧﻤﻮﻧﻪ ﻣﺜﻠﺚ ﭘﺎﺳﻜﺎل در زﻳﺮ آﻣﺪه اﺳﺖ‪:‬‬
‫‪1‬‬
‫‪1‬‬ ‫‪1‬‬
‫‪1‬‬ ‫‪2‬‬ ‫‪1‬‬
‫‪1‬‬ ‫‪3‬‬ ‫‪3‬‬ ‫‪1‬‬
‫‪1‬‬ ‫‪4‬‬ ‫‪6‬‬ ‫‪4 1‬‬
‫‪1‬‬ ‫‪5‬‬ ‫‪10‬‬ ‫‪10 5‬‬ ‫‪1‬‬
‫‪1‬‬ ‫‪6‬‬ ‫‪15‬‬ ‫‪20 15‬‬ ‫‪6‬‬ ‫‪1‬‬
‫در ﻣﺜﻠﺚ ﭘﺎﺳﻜﺎل ﺳﺘﻮنﻫﺎ ﺿﺮاﺋﺐ ﺑﻴﻨﻢ ‪ binomial coefficient‬ﻫﺴﺘﻨﺪ‪ ،‬ﻛﻪ از راﺑﻄﻪ زﻳﺮ ﺑﻪ دﺳﺖ ﻣﻲآﻳﻨﺪ‪:‬‬

‫‪( nr ) = r!( n-n! r )! = ( n-1‬‬


‫⎜ ﻛﻪ ﺧﻼﺻﻪﺗﺮ آن اﻳﻦ اﺳﺖ ) ‪r ) ( r-1‬‬
‫‪+ n-1‬‬ ‫⎛‬
‫⎝‬
‫)‪n ⎞ n(n-1)(n-2)...(n-r+1‬‬
‫=⎟‬
‫⎠‪r‬‬ ‫!‪r‬‬
‫ﻧﺘﻴﺠﻪ اﻳﻦ راﺑﻄﻪ ﺗﻌﺪاد ﭼﻴﻨﺶ ‪ r‬ﺷﻴﺊ از ﻣﻴﺎن ‪ n‬ﺷﻴﺊ ﻣﺘﻤﺎﻳﺰ اﺳﺖ‪.‬‬
‫ﺑﺎ ﺑﺮﻧﺎﻣﻪ زﻳﺮ ﻣﻲﺗﻮان ﺿﺮاﺋﺐ ﺑﻴﻨﻢ را ﻣﺤﺎﺳﺒﻪ ﻛﺮد‪ .‬ﺑﺮاي اﻃﻼع در ﻣﻮردﺣﻠﻘﻪ ‪ for‬ﺑﻪ ﻓﺼﻞ ﺳﺎﺧﺘﺎرﻫﺎي ﺗﺼﻤﻴﻢ و ﺗﻜﺮار‬
‫ﻣﺮاﺟﻌﻪ ﻓﺮﻣﺎﺋﻴﺪ‪.‬‬
‫;‪ncr = 1‬‬
‫;‪r = ...‬‬
‫;‪n = ...‬‬
‫‪for k = 1:r‬‬
‫;‪ncr = ncr*(n-k+1)/k‬‬
‫‪end‬‬
‫)‪disp(ncr‬‬
‫ﻣﺜﻼٌ اﮔﺮ ﻳﻚ ﺑﺎر ‪ r‬را ﻣﺴﺎوي ‪ 2‬و ﻳﻚﺑﺎر آن را ﻣﺴﺎوي ‪ 3‬ﺑﮕﻴﺮﻳﻢ‪ ،‬و ﻫﺮ ﺑﺎر ‪ n‬را ﺑﻴﻦ ‪ 2‬ﺗﺎ ‪ 6‬ﺗﻐﻴﻴﺮ دﻫﻴﻢ ﺳﺘﻮنﻫﺎي ﺳﻮم و‬
‫ﭼﻬﺎرم ﻣﺜﻠﺚ ﺑﻪ دﺳﺖ ﻣﻲآﻳﻨﺪ‪ .‬ﻣﺜﻠﺚ ﭘﺎﺳﻜﺎل اول ﺑﺎر ﺗﻮﺳﻂ ﺣﻜﻴﻢ ﻋﻤﺮ ﺧﻴﺎم ﻛﺸﻒ ﺷﺪ و داراي ﺧﻮاﺻﻲ اﺳﺖ ﻛﻪ در‬
‫رﻳﺎﺿﻴﺎت ﻫﻨﻮز ﻫﻢ ﻣﻮرد ﺗﺤﻘﻴﻖ ﻫﺴﺘﻨﺪ‪ ،‬از ﺟﻤﻠﻪ اﻳﻦ ﻛﻪ ﻫﺮ ﻋﻨﺼﺮ آن از ﺣﺎﺻﻞ ﺟﻤﻊ ﻗﻄﺮ ﺑﺎﻻي ﺳﺮش ﺑﻪ دﺳﺖ ﻣﻲآﻳﺪ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﭘﺎﺳﻜﺎل ‪ 4×4‬ﺗﻮﻟﻴﺪ ﻛﻨﻴﺪ‪.‬‬
‫)‪>> ps = pascal(4‬‬
‫‪ps = 1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬
‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬
‫‪1‬‬ ‫‪3‬‬ ‫‪6‬‬ ‫‪10‬‬
‫‪1‬‬ ‫‪4‬‬ ‫‪10‬‬ ‫‪20‬‬
‫ﺑﺮدار ‪Vector‬‬ ‫‪7-3‬‬
‫ﻋﻤﻠﮕﺮ ﻛﺎﻟﻦ‬
‫ﻋﻤﻠﮕﺮ ﻛﺎﻟﻦ در ﻣﺘﻠﺐ ﺑﺮاي ﺗﻌﻴﻴﻦ داﻣﻨﻪ ‪ range‬و ﮔﺎم ‪ step‬ﺑﺮدار ﺑﻪ ﻛﺎر ﻣﻲرود‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫‪>> x = 1:5‬‬
‫‪x = 1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬
‫‪>> x = -1: 0.5: 1‬‬
‫‪x = -1.0000‬‬ ‫‪-0.5000‬‬ ‫‪0‬‬ ‫‪0.5000‬‬ ‫‪1.0000‬‬
‫)(‪linspace‬‬ ‫ﺗﺎﺑﻊ‬
‫ﺗﺎﺑﻊ )‪ linspace(m,n,p‬ﺗﻌﺪاد ‪ p‬ﻋﻨﺼﺮ ﺑﻴﻦ اﻋﺪاد ‪ m‬و ‪ n‬ﺗﻮﻟﻴﺪ ﻣﻲﻛﻨﺪ‪ .‬ﭘﻴﺶﻓﺮض ‪ p‬ﻳﻚﺻﺪ ﻋﻨﺼﺮ اﺳﺖ‪.‬‬

‫‪41‬‬
‫ﻣﺜﺎل‪:‬‬
‫ده ﻋﺪد ﺑﻴﻦ ﺻﻔﺮ و ‪ pi‬را داﺧﻞ ﺑﺮدار ‪ x‬ﻗﺮار دﻫﻴﺪ‪ .‬ﺳﭙﺲ ‪ x‬را ﺑﻪ درﺟﻪ ﺗﺒﺪﻳﻞ ﻛﻨﻴﺪ‪.‬‬
‫‪>> format bank‬‬
‫)‪>> x = linspace(0,pi,10‬‬
‫‪x = 0 0.35 0.70 1.05 1.40‬‬ ‫‪1.75‬‬ ‫‪2.09 2.44 2.79 3.14‬‬
‫‪>> dgx = x * 180/pi‬‬
‫‪dgx = 0 20.00 40.00 60.00 80.00 100.00 120.00 140.00 160.00 180.00‬‬
‫ﻛﺎرﺑﺮد ﻳﻚ ﺑﺮدار در ﺗﻌﺮﻳﻒ ﺑﺮدار دﻳﮕﺮ‬
‫ﻣﺜﺎل‪:‬‬
‫;]‪>> a = [2 3 -4.5‬‬
‫;]‪>> b = [-2.2 3 0.5‬‬
‫]‪>> c = [a b‬‬
‫‪c = 2.00‬‬ ‫‪3.00‬‬ ‫‪-4.50‬‬ ‫‪-2.20‬‬ ‫‪3.00‬‬ ‫‪0.50‬‬
‫ﺑﺮدار ﺗﻬﻲ‬
‫ﻋﺒﺎرت ][ = ‪ x‬ﺑﺮدار ﺗﻬﻲ را ﺑﻪ ‪ x‬ﻧﺴﺒﺖ ﻣﻲدﻫﺪ‪ .‬اﻳﻦ ﺗﻌﺮﻳﻒ ﺑﺎ ‪ x = 0‬ﻳﺎ ﭘﺎك ﻛﺮدن ‪ (clear x) x‬ﻓﺮق دارد‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫ﺑﺮاي ﺣﺬف ﻋﻨﺼﺮ ‪ 2‬آن را ﺑﺮاﺑﺮ ﺑﺮدار ﺗﻬﻲ ﻗﺮار ﻣﻲدﻫﻴﻢ )ﺗﻮﺿﻴﺢ ﺑﻴﺸﺘﺮ راﺟﻊ ﺑﻪ ﺷﻤﺎره ﻋﻨﺎﺻﺮ ﺑﻌﺪاٌ ﻣﻲآﻳﺪ(‪.‬‬
‫‪>> c = [2‬‬ ‫‪3‬‬ ‫‪-4.5‬‬ ‫‪-2.2‬‬ ‫‪3‬‬ ‫;]‪0.5‬‬
‫][ = )‪>> c(2‬‬
‫‪c = -2.0000‬‬ ‫‪4.5000‬‬ ‫‪2.2000‬‬ ‫‪-3.0000‬‬ ‫‪-0.5000‬‬
‫اﻧﺪﻳﺲ اﻋﻀﺎء ﺑﺮدار‬
‫ﻫﺮ ﻋﻨﺼﺮ از ﺑﺮدار ﺟﺎيﮔﺎه ﻳﺎ اﻧﺪﻳﺴﻲ دارد ﻛﻪ ﺑﺎ آن ﺷﻨﺎﺧﺘﻪ ﻣﻲﺷﻮد‪ .‬در ﻣﺘﻠﺐ ﺷﻤﺎره ﺟﺎيﮔﺎه ﺑﺎ ‪ 1‬ﺷﺮوع ﻣﻲﺷﻮد‪ ،‬ﻟﺬا‬
‫ﻣﺮاﺟﻌﻪ ﺑﻪ ﻳﻚ ﻋﻀﻮ ﺑﺮدار ﺑﺴﻴﺎر آﺳﺎنﺗﺮ از زﺑﺎﻧﻲ ﻣﺎﻧﻨﺪ ‪ C++‬اﺳﺖ ﻛﻪ در آن اﻧﺪﻳﺲ از ﺻﻔﺮ ﺷﺮوع ﻣﻲﺷﻮد ﻣﺜﺎل زﻳﺮ‬
‫روشﻫﺎي ﻣﺮاﺟﻌﻪ ﺑﻪ ﻋﻨﺎﺻﺮ ﺑﺮدار را ﺗﻮﺿﻴﺢ ﻣﻲدﻫﺪ‪.‬‬
‫ﻣﺜﺎل ﻫﺎ‪:‬‬
‫ﻣﺮاﺟﻌﻪ ﺑﻪ ﻋﻨﺎﺻﺮ ﺑﺮدار ﺑﺎ ﭼﻨﺪ روشﻫﺎ‬
‫‪>> x = 0:3:23‬‬
‫‪x = 0‬‬ ‫‪3‬‬ ‫‪6‬‬ ‫‪9‬‬ ‫‪12‬‬ ‫‪15‬‬ ‫‪18‬‬ ‫‪21‬‬
‫)‪>> x(1), x(3‬‬
‫‪ans = 0‬‬
‫‪ans = 6‬‬
‫)‪>> x(2:4‬‬
‫‪ans = 3‬‬ ‫‪6‬‬ ‫‪9‬‬
‫)‪>> x(1:2:8‬‬
‫‪ans = 0‬‬ ‫‪6‬‬ ‫‪12‬‬ ‫‪18‬‬
‫)]‪>> x([1 5 8‬‬
‫‪ans = 0‬‬ ‫‪12‬‬ ‫‪21‬‬
‫ﺣﺬف ﻋﻨﺎﺻﺮ اول‪ ،‬دوم‪ ،‬و ﻫﻔﺘﻢ ﺑﺮدار‬
‫‪>> x = 1:7‬‬
‫‪x = 1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬ ‫‪7‬‬
‫][ = )]‪>> x([1 2 7‬‬
‫‪x = 3‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬

‫‪42‬‬
‫‪ 8-3‬ﺑﺮدارﻫﺎي ﻣﻨﻄﻘﻲ‬
‫ﻋﻨﺎﺻﺮ ﺑﺮدار ﻣﻨﻄﻘﻲ‪ ،‬ﻣﺠﻤﻮﻋﻪاي از ﺻﻔﺮ و ﻳﻚﻫﺎي ﻣﻨﻄﻘﻲ ﻫﺴﺘﻨﺪ‪ .‬ﺻﻔﺮ و ﻳﻚ ﻣﻨﻄﻘﻲ از ﻟﺤﺎظ ﻧﻮع ﺑﺎ ﺻﻔﺮ و ﻳﻚ ﻋﺪدي‬
‫ﻓﺮق دارﻧﺪ‪ .‬ﻣﺜﺎلﻫﺎي زﻳﺮ اﻳﻦ ﻣﻮرد را ﺗﻮﺿﻴﺢ ﻣﻲدﻫﻨﺪ‪ .‬ﺑﺮاي اﻃﻼع ﺑﻴﺸﺘﺮ‪ help logical‬را اﺟﺮا ﻛﻨﻴﺪ‪.‬‬
‫)(‪logical‬‬ ‫ﺗﺒﺪﻳﻞ ﺑﺮدار ﻋﺪدي ﺑﻪ ﻣﻨﻄﻘﻲ ﺑﺎ ﺗﺎﺑﻊ‬
‫ﺗﺎﺑﻊ )(‪ ، logical‬ﻳﻚ ﺑﺮدار ﺑﺎ اﻋﻀﺎء ﻋﺪدي را ﺑﻪ ﻳﻚ ﺑﺮدار ﺑﺎ اﻋﻀﺎء ﺻﻔﺮ و ﻳﻚِ ﻣﻨﻄﻘﻲ ﺗﺒﺪﻳﻞ ﻣﻲﻛﻨﺪ‪ .‬ﻣﺘﻐﻴﺮ ﻣﻨﻄﻘﻲ‬
‫ﻓﻘﻂ دو ﻣﻘﺪار درﺳﺘﻲ )ﻣﻨﻄﻖ ﻳﻚ( و ﻧﺎدرﺳﺘﻲ )ﻣﻨﻄﻖ ﺻﻔﺮ( را ﻣﻲﮔﻴﺮد‪ ،‬ﻛﻪ از ﻟﺤﺎظ ﻧﻮع ‪ type‬ﺑﺎ ‪ 0‬و ‪ 1‬ﻋﺪدي ﻣﺘﻔﺎوت‬
‫ﻫﺴﺘﻨﺪ‪ .‬ﻣﻘﺎدﻳﺮ ﻣﻨﻄﻘﻲ ﻳﻚ ﺑﺎﻳﺖ از ﺣﺎﻓﻈﻪ را اﺷﻐﺎل ﻣﻲﻛﻨﻨﺪ‪ ،‬در ﺣﺎﻟﻲﻛﻪ ﻣﻘﺎدﻳﺮ ﻋﺪدي )از ﻧﻮع ‪ double‬ﻛﻪ ﭘﻴﺶﻓﺮض‬
‫ﻣﺘﻠﺐ اﺳﺖ( ﻫﺸﺖ ﺑﺎﻳﺖ ﺟﺎ ﻣﻲﮔﻴﺮﻧﺪ‪ .‬اﮔﺮﭼﻪ آراﻳﻪﻫﺎي ﻋﺪدي ﺑﺎ اﻋﻀﺎء ﻏﻴﺮ از ﺻﻔﺮ و ﻳﻚ را ﻣﻲﺗﻮان ﺑﻪ آراﻳﻪ ﻣﻨﻄﻘﻲ‬
‫ﺗﺒﺪﻳﻞ ﻛﺮد‪ ،‬اﻣﺎ ﺗﻮﺻﻴﻪ ﻣﻲﺷﻮد ﻓﻘﻂ آراﻳﻪﻫﺎﺋﻲ ﺑﺎ اﻋﻀﺎء ﺻﻔﺮ و ﻳﻚِ ﻋﺪدي ﺑﻪ آراﻳﻪ ﻣﻨﻄﻘﻲ ﺗﺒﺪﻳﻞ ﺷﻮﻧﺪ‪ .‬ﻣﻨﻄﻘﻲ ﺑﻮدن ﻳﻚ‬
‫آراﻳﻪ ﺑﺎ ﺗﺎﺑﻊ )(‪ islogical‬اﻣﺘﺤﺎن ﻣﻲﺷﻮد‪.‬‬
‫ﺗﻮاﺑﻌﻲ ﻛﻪ ﺻﺤ‪‬ﺖ ﻳﺎ ﺳ‪‬ﻘﻢِ اﻣﺮي را اﻣﺘﺤﺎن ﻣﻲﻛﻨﻨﺪ‪ ،‬در ﺻﻮرت ﺻﺤﺖ‪ ،‬ﻣﻨﻄﻖ ﻳﻚ و در ﺻﻮرت ﻛﺬب‪ ،‬ﻣﻨﻄﻖ ﺻﻔﺮ ﺑﺮﻣﻲ‪-‬‬
‫ﮔﺮداﻧﻨﺪ‪ .‬ﻣﻌﻤﻮﻻٌ اﻳﻦ ﮔﻮﻧﻪ ﺗﻮاﺑﻊ ﺑﺎ ‪ is...‬ﺷﺮوع ﻣﻲﺷﻮﻧﺪ‪.‬‬
‫ﻣﺜﺎل ﻫﺎ‪:‬‬
‫ﺳﺎﺧﺘﻦ ﺑﺮدار ﻣﻨﻄﻘﻲ‬
‫‪>> oz = [1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫;]‪1‬‬
‫)‪>> islogical(oz‬‬
‫‪ans = 0‬‬

‫ﻣﻘﺎدﻳﺮ ﺑﺮدار ‪ oz‬ﻳﻚ وﺻﻔﺮ ﻋﺪدي ﻫﺴﺘﻨﺪ‪.‬‬


‫)‪>> ozL = logical(oz‬‬
‫‪ozL = 1 0 1 1 0 8‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬
‫)‪>> islogical(ozL‬‬
‫‪ans = 1‬‬

‫اﮔﺮﭼﻪ ﻣﻘﺎدﻳﺮ دو ﺑﺮدار ‪ oz‬و ‪ ozL‬ﺷﺒﻴﻪ ﻫﺴﺘﻨﺪ اﻣﺎ ﻧﻮع آنﻫﺎ ﻣﺘﻔﺎوت اﺳﺖ‪ Workspace .‬را ﺑﺒﻴﻨﻴﺪ‪.‬‬
‫ﻣﺸﺎﻫﺪه در ﭘﻨﺠﺮه ﻓﻀﺎي ﻛﺎر ‪Workspace‬‬
‫>>‬ ‫‪ad = 1‬‬
‫‪ad‬‬ ‫‪= 1‬‬
‫>>‬ ‫)‪ag = logical(1‬‬
‫‪ag‬‬ ‫‪= 1‬‬
‫‪Workspace‬‬

‫ﺷﻜﻞ ‪1-3‬‬

‫ﺣﺬف ﺑﻌﻀﻲ ﻋﻨﺎﺻﺮ آراﻳﻪ‬


‫اﮔﺮ ﺑﺮدار ﻣﻨﻄﻘﻲ را اﻧﺪﻳﺲ ﺑﺮدار ﻋﺪدي ﻗﺮار دﻫﻴﻢ )اﻧﺪﻳﺲﮔﺬاري ﻣﻨﻄﻘﻲ ‪ ( Logical Indexing‬ﻓﻘﻂ ﻋﻨﺎﺻﺮ‬
‫ﻣﺘﻨﺎﻇﺮ ﺑﺎ ﻳﻚﻫﺎي ﻣﻨﻄﻘﻲ ﺑﺎﻗﻲ ﻣﻲﻣﺎﻧﻨﺪ‪ .‬ﻋﻨﺎﺻﺮ ﺑﺮدار اﻧﺪﻳﺲ ﻣﻲﺗﻮاﻧﺪ از ﻋﻨﺎﺻﺮ ﺑﺮدار ﻋﺪدي ﻛﻢﺗﺮ ﺑﺎﺷﺪ‪ ،‬اﻣﺎ ﺑﻴﺶﺗﺮ ﻧﻤﻲ‪-‬‬
‫ﺗﻮاﻧﺪ ﺑﺎﺷﺪ‪.‬‬

‫‪43‬‬
‫ﻣﺜﺎل ﻫﺎ‪:‬‬
‫ﺣﺬف ﭼﻨﺪ ﻋﻨﺼﺮ‬
‫‪>> Li = [2 4 5 6 8‬‬ ‫;]‪10 11 12‬‬
‫‪>> Lg = logical([1‬‬ ‫;)]‪1 0 1 1 1 0 1‬‬
‫‪>> LiEv = Li(Lg) %‬‬ ‫‪Logical Indexing‬‬
‫‪LiEv = 2‬‬ ‫‪4‬‬ ‫‪6‬‬ ‫‪8‬‬ ‫‪10‬‬ ‫‪12‬‬
‫ﻧﮕﻪ داري ﭼﻨﺪ ﻋﻨﺼﺮ‬
‫;]‪>> Li = [2 4 5 6 8 10 11 12‬‬
‫;)]‪>> Lg = logical([1 1 1‬‬
‫)‪>> LiEv = Li(Lg‬‬
‫‪LiEv = 2‬‬ ‫‪4‬‬ ‫‪5‬‬
‫ﺿﺮب ﺑﺮدار ﻋﺪدي در ﺑﺮدار ﻣﻨﻄﻘﻲ‬
‫ﺑﺮاي ﺿﺮب ﻋﻨﺼﺮ ﺑﻪ ﻋﻨﺼﺮ‪ ،‬ﻋﻼﻣﺖ ﺿﺮب آراﻳﻪاي *‪ .‬ﺑﻪ ﻛﺎر ﻣﻲرود‪ ،‬و دو آراﻳﻪ ﺑﺎﻳﺪ ﻫﻤﺴﺎن ﺑﺎﺷﻨﺪ‪ .‬ﻧﺘﻴﺠﻪ ﺿﺮب ﻣﻨﻄﻖ‬
‫در ﻋﺪد از ﻧﻮع ﻋﺪدي اﺳﺖ‪..‬‬
‫ﻣﺜﺎل ﻫﺎ‪:‬‬
‫ﻣﺸﺎﺑﻪ ﺿﺮب ﻋﺪد در ﻋﺪد‬
‫;]‪>> Li = [2 4 5 6 8 10 11 12‬‬
‫;)]‪>> Lg = logical([1 1 0 1 1 1 0 1‬‬
‫‪>> Lip = Li .* Lg‬‬
‫‪Lip = 2‬‬ ‫‪4‬‬ ‫‪0‬‬ ‫‪6‬‬ ‫‪8‬‬ ‫‪10‬‬ ‫‪0‬‬ ‫‪12‬‬
‫)‪>> islogical(Lip‬‬
‫‪ans = 0‬‬
‫)‪>> isnumeric(Lip‬‬
‫‪ans = 1‬‬
‫اﺳﺘﺨﺮاج ﺑﺮدار از ﺑﺮدار دﻳﮕﺮ‬
‫; ‪>> r = 1 : 5‬‬
‫)‪>> rL = (r <= 3‬‬
‫‪rL = 1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬
‫‪>> s = r .* rL‬‬
‫‪s = 1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪0‬‬ ‫‪0‬‬
‫ﻳﺎﻓﺘﻦ ﻣﺤﻞ ﻋﻨﺎﺻﺮي ﺑﺎ ﻣﻘﺪار ﻣﻌﻴﻦ‬
‫ﻣﺜﺎل‪:‬‬
‫ﻣﺤﻞ ﻋﻨﺎﺻﺮ ﻣﺴﺎوي ﺑﺎ ‪ 9‬ﺑﺮدار ]‪ ab = [2 0 9 5 0 1.5 -6 9 0 -4.35‬را ﺗﻌﻴﻴﻦ ﻛﻨﻴﺪ‪ .‬ﺗﻮﺟﻪ ﻛﻨﻴﺪ ﻛﻪ‬
‫دو ﻋﻼﻣﺖ ﻣﺴﺎوي ﭘﻴﻮﺳﺘﻪ )==( ﺗﺴﺎوي دو ﺑﺮدار را ﺗﺴﺖ ﻣﻲﻛﻨﺪ‪.‬‬
‫;]‪>> ab = [2 0 9 5 0 1.5 -6 9 0 -4.35‬‬
‫‪>> ab == 9‬‬
‫‪ans = 0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬

‫ﻋﻨﺎﺻﺮ ﻣﺴﺎوي ﺑﺎ ‪ ِ 9‬ﺑﺮدار ‪ ab‬در ﻣﻜﺎنﻫﺎي ﺳﻮم و ﻫﺸﺘﻢ ﻗﺮار دارﻧﺪ‪.‬‬

‫)(‪find‬‬ ‫ﻳﺎﻓﺘﻦ اﻧﺪﻳﺲ ﻋﻨﺎﺻﺮ ﻣﻮرد ﻧﻈﺮ ﺑﺎ ﺗﺎﺑﻊ‬


‫ﺗﺎﺑﻊ )(‪ find‬اﻧﺪﻳﺲ ﻋﻨﺎﺻﺮ ﻣﻮرد ﻧﻈﺮ را در ﻳﻚ ﺑﺮدار دﻳﮕﺮ ﻗﺮار داده و ﺑﺮﻣﻲﮔﺮداﻧﺪ‪ ،‬و آرﮔﻮﻣﺎن آن ﺑﺎﻳﺪ ﻳﻚ ﺑﺮدار‬
‫ﻣﻨﻄﻘﻲ ﺑﺎﺷﺪ‪ .‬ﻋﺒﺎرت )‪ find(a‬ﺑﺎ )‪ find(a ~= 0‬ﻣﻌﺎدل اﺳﺖ‪.‬‬

‫‪44‬‬
‫ﻣﺜﺎل ﻫﺎ‪:‬‬
‫ﻳﺎﻓﺘﻦ اﻧﺪﻳﺲ ﻋﻨﺎﺻﺮ ﻣﺴﺎوي ﺑﺎ ‪9‬‬
‫;]‪>> ab = [2 0 9 5 0 1.5 -6 9 0 -4.35‬‬
‫)‪>> find(ab == 9‬‬
‫‪ans = 3 8‬‬
‫)‪>> ab(3),ab(8‬‬
‫‪ans = 9‬‬
‫‪ans = 9‬‬
‫راه ﺣﻞ دﻳﮕﺮ‪:‬‬
‫)‪>> k = (ab == 9‬‬
‫‪k = 0 0 1 0 0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬
‫)‪find(k‬‬
‫‪ans = 3 8‬‬
‫)‪>> ab(3),ab(8‬‬
‫‪ans = 9‬‬
‫‪ans = 9‬‬

‫‪ k‬ﻳﻚ ﺑﺮدار ﻣﻨﻄﻘﻲ اﺳﺖ ﻛﻪ در ازاي ﻋﻨﺎﺻﺮ ﻣﺴﺎوي ‪ 9‬ﺑﺮدارِ ‪ ab‬داراي ﻣﻨﻄﻖ ﻳﻚ )درﺳﺘﻲ( اﺳﺖ‪.‬‬
‫ﻳﺎﻓﺘﻦ اﻧﺪﻳﺲ ﻋﻨﺎﺻﺮ‪ :‬ﻏﻴﺮﺻﻔﺮ‪ ،‬ﻣﻨﻔﻲ‪ ،‬و ﻧﺎﻣﻮﺟﻮد‬
‫;]‪>> ab = [2 0 9 5 0 1.5 -6 9 0 -4.35‬‬
‫)‪>> af1 = find(ab‬‬
‫‪af1 = 1‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪6‬‬ ‫‪7‬‬ ‫‪8‬‬ ‫‪10‬‬
‫)‪>> af2 = find(ab < 0‬‬
‫‪af2 = 7‬‬ ‫‪10‬‬
‫‪find(ab == 8) % Not found‬‬
‫‪ans = Empty matrix: 1-by-0‬‬

‫‪45‬‬
‫‪ 9-3‬ﺗﻤﺮﻳﻦ‬
‫‪ -1‬ﻋﺒﺎرات ][ = ‪ x‬و ‪ x = 0‬و ‪ clear x‬را اﺟﺮا ﻛﻨﻴﺪ و ﻧﺘﺎﻳﺞ آنﻫﺎ را در ﭘﻨﺠﺮه ﻓﻀﺎي ﻛﺎر ﺑﺒﻴﻨﻴﺪ‪.‬‬
‫‪ -2‬ﻋﻨﺼﺮ ﺷﻤﺎره ‪ 5‬از ﺑﺮدار ‪ c = 1:10‬را ﺣﺬف ﻛﻨﻴﺪ‪.‬‬
‫‪ -3‬ﻋﻨﺎﺻﺮ ﺷﻤﺎر ‪ 1‬و ‪ 2‬و ‪ 8‬را از ﺑﺮدار ‪ x = 10:-1:1‬ﺣﺬف ﻛﻨﻴﺪ‪.‬‬
‫‪ -4‬ﻧﻤﺮهﻫﺎي ﺗﺮم ﺧﻮد را داﺧﻞ ﻳﻚ ﺑﺮدار ﻗﺮار دﻫﻴﺪ و ﺑﺎ ﻳﻚ دﺳﺘﻮر ﻣﻌﺪل را ﺣﺴﺎب ﻛﻨﻴﺪ‪.‬‬
‫‪ -5‬ﺧﺮﻳﺪﻫﺎي ﻣﺎه ﺧﻮد را داﺧﻞ ﻳﻚ ﺑﺮدار ﻗﺮار دﻫﻴﺪ و ﺑﺎ ﻳﻚ دﺳﺘﻮر ﺟﻤﻊ آنﻫﺎ را ﺣﺴﺎب ﻛﻨﻴﺪ‪.‬‬
‫‪ -6‬ﻳﻚ ﺑﺮدار ﻋﺪدي و ﻳﻚ ﺑﺮدار ﻣﻨﻄﻘﻲ ﺑﺴﺎزﻳﺪ‪ .‬ﺑﺮدار ﻣﻨﻄﻘﻲ را اﻧﺪﻳﺲ ‪ Rv‬ﻗﺮار دﻫﻴﺪ‪ .‬در ‪ Rv‬ﺿﺮب ﻛﻨﻴﺪ‪.‬‬
‫‪ -7‬ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﻋﺪدي ‪ 3×6‬ﺑﺎ ﻣﺮﺑﻊ ﺟﺎدوﺋﻲ ‪ 3×3‬ﺑﺴﺎزﻳﺪ‪ ،‬ﺗﻮاﺑﻊ اﻧﺪازهﮔﻴﺮ را در ﻣﻮرد آن اﺟﺮا ﻛﻨﻴﺪ‪.‬‬
‫‪ -8‬ﻳﻚ ﺑﺮدار ﻋﺪديِ ﺳﺘﻮﻧﻲ ﺑﻪ ﻧﺎم ‪ Rh‬ﺑﺎ ‪ 5‬ﻋﻨﺼﺮ ﺗﻌﺮﻳﻒ ﻛﻨﻴﺪ‪ .‬ﺑﺮدار ‪ y = Rh.^2‬را ﺑﻪ دﺳﺖ آورﻳﺪ‪.‬‬
‫‪ -9‬ﻣﺎﺗﺮﻳﺲ ﻣﺨﺘﻠﻂ ‪ px‬را ﺑﺎ ﻗﺴﻤﺖﻫﺎي ﺣﻘﻴﻘﻲ و ﻣﺠﺎزي ‪ im,re‬ﺑﻪ دو ﻓﺮم ﻗﺎﺋﻢ و ﻗﻄﺒﻲ ﺑﻨﻮﻳﺴﻴﺪ‪ .‬ﻣﺨﺘﺼﺎت‬
‫ﻗﻄﺒﻲ آنرا ‪ mag,tet‬ﺑﮕﻴﺮﻳﺪ‪.‬‬
‫;]‪re = [-1 2 3.5]; im = [-4.5 5 6.2‬‬
‫‪ -10‬ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﺗﺼﺎدﻓﻲ ﺳﻪ ﺻﻔﺤﻪاي ﺑﺎ ﺻﻔﺤﺎت ‪ 4×3‬ﺗﻮﻟﻴﺪ ﻛﻨﻴﺪ‪ .‬از ﺻﻔﺤﻪﻫﺎي ﺳﺎزﻧﺪهي ﻣﺎﺗﺮﻳﺲ ﻓﻀﺎﺋﻲ ﻓﻮق‪:‬‬
‫ﻳﻚ ﻣﺎﺗﺮﻳﺲ دوﺑﻌﺪي‪ ،‬و ﻳﻚ ﺑﺮدار ﺗﻚ ﺳﺘﻮﻧﻲ ﺗﻮﻟﻴﺪ ﻛﻨﻴﺪ‪ .‬ﺗﻮاﺑﻊ اﻧﺪازهﮔﻴﺮ را در ﻣﻮرد اﻳﻦ ﻣﺎﺗﺮﻳﺲﻫﺎ اﺟﺮا و‬
‫ﻧﺘﺎﻳﺞ را ﺑﺮرﺳﻲ ﻛﻨﻴﺪ‪.‬‬
‫‪ -11‬ﻣﺎﺗﺮﻳﺲ ‪ B‬را از ﺳﺘﻮن ‪ 2‬و ﺳﺘﻮن ‪ 4‬ﻣﺎﺗﺮﻳﺲ ‪ A‬اﺳﺘﺨﺮاج ﻛﻨﻴﺪ‪ .‬ﻣﺎﺗﺮﻳﺲ ‪ C‬را از ردﻳﻒ ‪ 2‬و ردﻳﻒ ‪ 3‬ﻣﺎﺗﺮﻳﺲ ‪A‬‬
‫اﺳﺘﺨﺮاج ﻛﻨﻴﺪ‪.‬‬
‫];‪A = [1 2 3 -8; 4 -5 0 9; -1 -2 3 0‬‬
‫‪ -13‬ﺑﺮدار ‪ a = 0:4‬را دو ﺑﺎر ﺗﻜﺮار ﻛﻨﻴﺪ‪ .‬ﺑﺎ اﺳﺘﻔﺎده از ﻳﻚ ﺑﺮدار ﻣﻨﻄﻘﻲ ﺻﻔﺮﻫﺎي ‪ a‬را ﺣﺬف ﻛﻨﻴﺪ‪.‬‬
‫‪ rv = [2‬ﺑﺎ اﺳﺘﻔﺎده‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪7‬‬ ‫‪4‬‬ ‫‪9‬‬ ‫‪4‬‬ ‫‪4‬‬ ‫‪8‬‬ ‫‪ -14‬اﻳﻦ ﺑﺮدار ﻋﺪدي را درﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ‪5] :‬‬
‫از ﺑﺮدار ﻣﻨﻄﻘﻲ ﻋﻨﺎﺻﺮ ﻛﻮﭼﻚﺗﺮ از ﻳﺎ ﻣﺴﺎوي ﺑﺎ ‪ 4‬ﺑﺮدار ‪ rv‬را در ‪ nv‬ﻗﺮار دﻫﻴﺪ‪.‬‬
‫‪ -15‬ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﻧﺘﺎﻳﺞ زﻳﺮ ﻣﻘﺪار ﺑﺮدار ‪ a‬را ﺣﺪس ﺑﺰﻧﻴﺪ‪:‬‬
‫‪>> a4 = a < 4‬‬
‫‪a4 = 1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬
‫)‪>> a(a4‬‬
‫‪ans = 0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬
‫‪ -16‬ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﻧﺘﻴﺠﻪ زﻳﺮ ﺑﺮدار ‪ ab‬را ﺑﺎ ‪ 10‬ﻋﻨﺼﺮ ﺑﻨﻮﻳﺴﻴﺪ‪ ،‬آﻳﺎ ‪ af‬ﻳﻚ ﺑﺮدار ﻣﻨﻄﻘﻲ اﺳﺖ؟‬
‫)‪>> af = find(ab‬‬
‫‪af = 1‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪6‬‬ ‫‪7‬‬ ‫‪8‬‬ ‫‪10‬‬
‫‪ -17‬ﺑﺎ داﺷﺘﻦ)‪ Vk = magic(3‬ﻧﺘﺎﻳﺞ ﺣﺎﺻﻞ از اﺟﺮاي دﺳﺘﻮرات زﻳﺮ را ﺑﻪ دﺳﺖ آورﻳﺪ‪.‬‬
‫>>‬ ‫'‪b6 = (Vk < 7), b = Vk(b6), b‬‬
‫>>‬ ‫)‪bn = Vk(1:1,1:3‬‬
‫>>‬ ‫)‪b1 = repmat(bn,1,3), b2 = repmat(bn,3,1), b3 = repmat(bn,3,3‬‬
‫>>‬ ‫)‪diag(Vk), tril(Vk), triu(Vk) inv(Vk), expm(Vk), det(Vk‬‬
‫‪ -18‬ﻣﺎﺗﺮﻳﺲ ﭘﺎﺳﻜﺎل )‪ ps = pascal(5‬را ﺑﺎ ﻣﺜﻠﺚ ﭘﺎﺳﻜﺎل ﻣﻘﺎﻳﺴﻪ ﻛﻨﻴﺪ‪.‬‬

‫‪46‬‬
‫ﻓﺼﻞ ‪ 4‬دﺳﺘﻮرﻫﺎ و ﺗﻮاﺑﻊ ورودي ﺧﺮوﺟﻲ‬
‫‪ 1-4‬درﻳﺎﻓﺖ ورودي‬
‫ﻣﻌﻤﻮﻻً در ﻳﺎﻓﺖ ﻣﺘﻐﻴﺮﻫﺎ از ﺻﻔﺤﻪ ﻛﻠﻴﺪ از داﺧﻞ ﺑﺮﻧﺎﻣﻪ اﻧﺠﺎم ﻣﻲﺷﻮد‪ .‬ﺑﺮاي اﻃﻼع ﺑﻴﺸﺘﺮ در ﻣﻮرد ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﺑﻪ ﻓﺼﻞ‬
‫ﻣﺮﺑﻮﻃﻪ ﻣﺮاﺟﻌﻪ ﻛﻨﻴﺪ‪.‬‬
‫)(‪input‬‬ ‫درﻳﺎﻓﺖ ﺑﺎ‬
‫اﻳﻦ دﺳﺘﻮر ﻣﻘﺪار ﻳﻚ ﻣﺘﻐﻴﺮ )آراﻳﻪ( را از ﺻﻔﺤﻪ ﻛﻠﻴﺪ درﻳﺎﻓﺖ ﻣﻲﻛﻨﺪ‪ .‬ﭘﻴﻐﺎم ﻻزم را ﻧﻴﺰ ﻣﻲﺗﻮان در آن ﮔﻨﺠﺎﻧﺪ‪.‬‬
‫در ﺟﻮاب )(‪ input‬ﻣﻲﺗﻮان ﻳﻚ ﻣﺎﺗﺮﻳﺲ‪ ،‬ﻳﻚ ﺗﺎﺑﻊ داﺧﻠﻲِ ﻣﺘﻠﺐ )ﻣﺜﻞ‪ ،(rand ():‬ﻳﺎ ﻳﻚ ﻣﺤﺎﺳﺒﻪ )ﻣﺜﻞ‪ ،(a+b :‬را‬
‫وارد ﻛﺮد ﺑﻪ ﺷﺮﻃﻲ ﻛﻪ ﻣﻘﺪار ﻣﺘﻐﻴﺮﻫﺎي ﻣﻮﺟﻮد در آنﻫﺎ از ﻗﺒﻞ ﻣﻌﻴﻦ ﺑﺎﺷﺪ‪.‬‬
‫ﻣﺜﺎل ﻫﺎ‪:‬‬
‫درﻳﺎﻓﺖ ﺑﺮدار ﻋﺪدي‬
‫)' ‪>> a = input('Enter a number vector:‬‬
‫]‪Enter a number: [2 2.5 3 3.5‬‬
‫‪a = 2 2.5 3 3.5‬‬
‫ورود ﺗﺮﻛﻴﺒﻲ از ﻳﻚ ﻋﺪد و ﻳﻚ ﻣﺘﻐﻴﺮ از ﭘﻴﺶ ﺗﻌﺮﻳﻒ ﺷﺪه )‪ a‬ﻣﺜﺎل ﻓﻮق(‬
‫)' ‪>> b = input('Enter another number using a:‬‬
‫)‪Enter another number using a: 3 + a(1‬‬
‫‪b = 5‬‬
‫ورود ﻳﻜﻲ از ﺗﻮاﺑﻊ ﺗﻮﺳﺎﺧﺖ ﻣﺘﻠﺐ‬
‫)' ‪>> d = input('Enter a function using previous variables:‬‬
‫)‪Enter a function using previous variables: rand(a,b‬‬
‫‪d = 0.9501‬‬ ‫‪0.6068‬‬ ‫‪0.8913‬‬ ‫‪0.4565‬‬ ‫‪0.8214‬‬
‫‪0.2311‬‬ ‫‪0.4860‬‬ ‫‪0.7621‬‬ ‫‪0.0185‬‬ ‫‪0.4447‬‬
‫درﻳﺎﻓﺖ رﺷﺘﻪ‬
‫)'‪>> nam = input('Enter the student name: ','s‬‬
‫ﻗﺮار دادن '‪ 's‬ﺑﻪ ﻋﻨﻮان آرﮔﻮﻣﺎن دوم )(‪ input‬ﺑﺎﻋﺚ ﻣﻲﺷﻮد ﻛﻪ ﺑﺘﻮاﻧﻴﻢ ﻳﻚ رﺷﺘﻪ را ﺑﻪ ‪ wr‬ﻧﺴﺒﺖ دﻫﻴﻢ ‪%‬‬
‫‪Enter the student name: Mostafa‬‬
‫‪nam = Mostafa‬‬
‫‪keyboard‬‬ ‫درﻳﺎﻓﺖ ﺑﺎ‬
‫دﺳﺘﻮر ‪ keyboard‬ﻣﺎ را آزاد ﻣﻲﮔﺬارد ﻛﻪ ﻫﺮ ﺗﻌﺪاد ﻣﺘﻐﻴﺮ از ﻫﺮ ﻧﻮع را ﻣﻘﺪار دﻫﻲ ﻛﻨﻴﻢ‪ ،‬ﺑﺮاي ﻣﻘﺪار دﻫﻲ ﺑﺎﻳﺪ ﻧﺎم ﻣﺘﻐﻴﺮ‬
‫و ﻋﻼﻣﺖ ﺗﺴﺎوي را در ﻣﻘﺎﺑﻞ ﻧﺸﺎﻧﻪي >>‪ K‬ﺑﻨﻮﻳﺴﻴﻢ‪ .‬ﺑﺮاي ﺧﺮوج از ﻣﺤﻴﻂ ‪ keyboard‬ﺑﺎﻳﺪ >‪ <Ctrl+C‬اﺟﺮا ﺷﻮد‪.‬‬
‫اﺟﺮاي اﻳﻦ دﺳﺘﻮر از داﺧﻞ ﺑﺮﻧﺎﻣﻪ ﺑﺮاي درﻳﺎﻓﺖ ﻣﻘﺎدﻳﺮ ﻣﺘﻐﻴﺮﻫﺎ ﻣﻔﻴﺪ اﺳﺖ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫‪>> disp('Enter A, B, C'), keyboard‬‬
‫‪Enter A, B, C‬‬
‫;'‪K>> A=-1:3; B=[9 -4.5]; C = 'new‬‬
‫‪ 2-4‬ارﺳﺎل ﺧﺮوﺟﻲ‬
‫)‪disp(var‬‬ ‫ارﺳﺎل ﺧﺮوﺟﻲ ﺑﻪ ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ‪ ،‬دﺳﺘﻮر‬
‫آرﮔﻮﻣﺎن )(‪ disp‬ﻳﻚ آراﻳﻪ اﺳﺖ‪ ،‬و اﻋﻀﺎء آن ﺑﺎﻳﺪ از ﻳﻚ ﻧﻮع ﺑﺎﺷﻨﺪ‪ .‬اﮔﺮ آرﮔﻮﻣﺎن ﻳﻚ ﺑﺮدار ﺳﻠﻮﻟﻲ ﺑﺎﺷﺪ‪ .‬ﻫﺮ ﻋﻀﻮ‬
‫ﺟﺪاﮔﺎﻧﻪ ﻧﺸﺎن داده ﺧﻮاﻫﺪ ﺷﺪ‪.‬‬

‫‪47‬‬
‫ﻣﺜﺎلﻫﺎ‪:‬‬
‫ﻣﺘﻐﻴﺮﻫﺎي ﻧﺎﻫﻢﺟﻨﺲ‬
‫;' ‪>> x = 6.5; mv = 'MATLAB Version is‬‬
‫;)])‪>> disp([mv num2str(x‬‬
‫‪MATLAB Version is 6.5‬‬

‫ﺗﺎﺑﻊ )‪ num2str(x‬ﻋﺪد را ﺑﻪ رﺷﺘﻪ ﺗﺒﺪﻳﻞ ﻣﻲﻛﻨﺪ‪.‬‬


‫ﻣﺘﻐﻴﺮﻫﺎي ﻫﻢﺟﻨﺲ‬
‫;‪>> v = version‬‬
‫;)]‪>> disp([mv v‬‬
‫)‪MATLAB Version is 6.5.0.180913a (R13‬‬

‫‪ version‬ﻳﻚ ﻣﺘﻐﻴﺮِ رﺷﺘﻪايِ داﺧﻠﻲ ﻣﺘﻠﺐ اﺳﺖ‪ ،‬ﻛﻪ وﻳﺮاﺳﺖ آن را ﻧﮕﻪداري ﻣﻲﻛﻨﺪ‪.‬‬
‫آراﻳﻪ ﺳﻠﻮﻟﻲ‬
‫;}‪>> C ={ 'MATLAB Version is ', 6.5‬‬
‫;)‪>> disp(C‬‬
‫' ‪'MATLAB Version is‬‬ ‫]‪[6.5000‬‬
‫)(‪fprintf‬‬ ‫ارﺳﺎل ﺧﺮوﺟﻲ ﺑﻪ ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ‪ ،‬دﺳﺘﻮر‬
‫اﻳﻦ ﺗﺎﺑﻊ ﻛﺎﻣﻼٌ ﻣﺸﺎﺑﻪ ﻧﻈﻴﺮش در زﺑﺎن ‪ C++‬اﺳﺖ و اﻣﻜﺎن ﺗﺮﻛﻴﺐ ﻋﺪد و رﺷﺘﻪ و دادن ﻓﺮم دلﺧﻮاه ﺑﻪ اﻋﺪاد را در ﺧﺮوﺟﻲ‬
‫ﻓﺮاﻫﻢ ﻣﻲﻛﻨﺪ‪ .‬ﻋﻼﺋﻢ‪ %d, %i, %o, %u, %x, %X, %f, %e, %E, %g, %G, %c, %s :‬ﻋﻼﺋﻢ‬
‫ﺗﻌﻴﻴﻦ ﻓﺮﻣﺖ ﺧﺮوﺟﻲ ‪ Format Specifier‬ﻫﺴﺘﻨﺪ‪ .‬ﻋﻼﺋﻢ ‪ \n, \t, \b, ...‬دﺳﺘﻮرﻫﺎي ﭼﺎﭘﻲ ﻳﺎ‬
‫‪ escape code‬ﻫﺴﺘﻨﺪ‪ .‬ﻓﺮﻣﺖ ‪ (good) %g‬ﻣﺸﺎﺑﻪ ‪ %f‬و ﺑﺎ اﻧﺘﺨﺎب ﻓﺮم ﻣﻨﺎﺳﺐ ﻋﻤﻞ ﻣﻲﻛﻨﺪ‪ .‬ﻋﻼﺋﻢ ‪ %s‬و ‪ %f‬ﺑﻪ‬
‫ﺗﺮﺗﻴﺐ ﻓﺮﻣﺖ ﭼﺎپ رﺷﺘﻪ )‪ (string‬و اﻋﺸﺎري )‪ (float‬ﻫﺴﺘﻨﺪ‪ .‬ﻋﺒﺎرت ‪ %7.2f‬ﻫﻔﺖ ﻣﻜﺎن ﺑﺮاي ﭼﺎپ ﻣﻌﺪل‬
‫اﺧﺘﺼﺎص داده و ارﻗﺎم ﺑﻌﺪاز ﻣﻤﻴﺰ را ﺑﻪ دو رﻗﻢ ﮔﺮد ﻣﻲﻛﻨﺪ‪ .‬ﻋﻼﻣﺖ ‪ (new line) \n‬اداﻣﻪ ﭼﺎپ را ﺑﻪ ﺳﻄﺮ ﺑﻌﺪ‬
‫ﻣﻨﺘﻘﻞ ﻣﻲﻛﻨﺪ‪ .‬ﭼﻴﻨﺶ ﭘﻴﺶﻓﺮض ﺧﺮوﺟﻲ راﺳﺖﭼﻴﻦ اﺳﺖ‪ ،‬ﻋﻼﻣﺖ ﻣﻨﻔﻲ ﺑﻌﺪ از ‪ %‬ﺧﺮوﺟﻲ را ﭼﭗﭼﻴﻦ ﻣﻲﻛﻨﺪ‪.‬‬
‫ﻛﺎرﺑﺮد ﺑﻌﻀﻲ از اﻳﻦ ﻋﻼﺋﻢ در ﻣﺜﺎلﻫﺎ آﻣﺪهاﻧﺪ‪ .‬ﺑﺮاي اﻃﻼع ﺑﻴﺸﺘﺮ ﺑﻪ ‪ help fprintf‬ﻣﺮاﺟﻌﻪ ﻧﻤﺎﺋﻴﺪ‪.‬‬
‫ﻣﺜﺎل ﻫﺎ‪:‬‬
‫ﮔﺮد ﻛﺮدن ﺗﺎ ﺳﻪ رﻗﻢ ﺑﻌﺪ از ﻧﻘﻄﻪ ﻣﻤﻴﺰ‪ ،‬راﺳﺖﭼﻴﻦ ﻛﺮدن داﺧﻞ ﻛﺮﺳﻲ‬
‫;]‪>> av = [17.4537 4.57 15.3 17.869 3.7‬‬
‫;'‪>> nam = 'Students Average:‬‬
‫;)‪>> fprintf('%s\n', nam);fprintf('%7.3f\n', av‬‬
‫‪Students Average:‬‬
‫‪17.454‬‬
‫‪4.570‬‬
‫‪15.300‬‬
‫‪17.869‬‬
‫‪3.700‬‬
‫ﭼﭗﭼﻴﻦ ﻛﺮدن داﺧﻞ ﻛﺮﺳﻲ‬
‫;)‪>> fprintf('%s\n', nam);fprintf('%-7.3f\n', av‬‬

‫‪Students Average:‬‬
‫‪17.454‬‬
‫‪4.570‬‬
‫‪15.300‬‬
‫‪17.869‬‬
‫‪3.700‬‬

‫‪48‬‬
‫‪echo off/on‬‬ ‫دﺳﺘﻮر‬
‫‪ echo off‬ﻧﻤﺎﻳﺶ دﺳﺘﻮرات ﺑﺮﻧﺎﻣﻪ ﺑﺮ روي ﭘﻨﺠﺮه را ﻣﺘﻮﻗﻒ و ﻓﻘﻂ ﻧﺘﺎﻳﺞ را ﻧﻤﺎﻳﺶ ﻣﻲدﻫﺪ‪ .‬اﻳﻦ دﺳﺘﻮر ﻓﻘﻂ از داﺧﻞ‬
‫ﺑﺮﻧﺎﻣﻪ ﻗﺎﺑﻠﻴﺖ اﺟﺮاﺋﻲ دارد و ﻧﺒﺎﻳﺪ ﻣﺴﺘﻘﻴﻤﺎً از ﭘﻨﺠﺮه ﻓﺮﻣﺎن اﺟﺮا ﺷﻮد‪ .‬ﺑﺮاي اﻃﻼع ﺑﻴﺸﺘﺮ ﺑﻪ ﻣﺜﺎلﻫﺎي ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﻣﺮاﺟﻌﻪ‬
‫ﻛﻨﻴﺪ‪ echo on .‬ﺑﺮﻋﻜﺲ ﻋﻤﻞ ﻣﻲﻛﻨﺪ‪ .‬ﺑﺮاي ﻃﻼع ﺑﻴﺸﺘﺮ ‪ help echo‬را ﺟﺮا ﻛﻨﻴﺪ‪.‬‬
‫‪pause‬‬ ‫دﺳﺘﻮر‬
‫اﻳﻦ دﺳﺘﻮر اﺟﺮا را دراﻧﺘﻈﺎر ﻋﻤﻞ ﻛﺎرﺑﺮ ﻣﺘﻮﻗﻒ ﻣﻲﻛﻨﺪ‪ pause(n) .‬ﺑﻪ اﻧﺪازه ‪ n‬ﺛﺎﻧﻴﻪ ﻣﻲاﻳﺴﺘﺪ و ﺳﭙﺲ اداﻣﻪ ﻣﻲدﻫﺪ‪.‬‬

‫‪ 3-4‬ﺿﺒﻂ ﺑﺮ روي دﻳﺴﻚ‬


‫‪.TXT‬‬ ‫ارﺳﺎل ﺧﺮوﺟﻲ ﺑﻪ ﻓﺎﻳﻞ ﻣﺘﻦ‬
‫ﻣﻲﺗﻮان آنﭼﻪ را ﻛﻪ ﺑﺮروي ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ ﻣﻲآﻳﺪ ﺑﺎ دﺳﺘﻮر)(‪ fprintf‬در ﻳﻚ ﻓﺎﻳﻞ ﻣﺘﻦ ﺿﺒﻂ ﻛﺮد‪.‬‬
‫ﻧﺎم اﻳﻦ ﻓﺎﻳﻞ ﺑﺮ روي دﻳﺴﻚ اﺧﺘﻴﺎري اﺳﺖ و ﻣﻌﻤﻮﻻٌ ﺑﺎ ﭘﺴﻮﻧﺪ ‪ .TXT‬اﻧﺘﺨﺎب ﻣﻲﺷﻮد‪.‬‬
‫ﻫﻨﮕﺎم ﺑﺎز ﺷﺪن ﻓﺎﻳﻞ ﻳﻚ ﻧﺎم ﻣﺴﺘﻌﺎر ﺑﻪ آن اﺧﺘﺼﺎص ﻣﻲﻳﺎﺑﺪ‪ .‬ﻧﺎم ﻣﺴﺘﻌﺎر ﻳﻚ ﻋﺪد اﺳﺖ ﻛﻪ ﻣﺘﻠﺐ در دﺳﺘﻮرات داﺧﻠﻲ‬
‫ﺧﻮد از آن اﺳﺘﻔﺎده ﻣﻲﻛﻨﺪ‪ .‬در دﺳﺘﻮرات ﺳﻴﺴﺘﻤﻲ ﻧﺎم دﻳﺴﻜﻲ ﻓﺎﻳﻞ ﻣﻲآﻳﺪ‪ .‬ﻳﻚ ﻣﺜﺎلِ ﺑﺎز ﻛﺮدن ﻓﺎﻳﻞ ﺑﺮاي ﻧﻮﺷﺘﻦ ﭼﻨﻴﻦ‬
‫اﺳﺖ‪:‬‬
‫;)'‪myf = fopen('nam.txt','w‬‬
‫↑‬ ‫↑‬ ‫↑‬ ‫↑‬
‫ﺑﺮاي ﻧﻮﺷﺘﻦ ﻧﺎم ﻓﺎﻳﻞ دﺳﺘﻮر ﺑﺎز ﻛﺮدن ﻧﺎم ﻣﺴﺘﻌﺎر‬
‫ﻣﺜﺎل‪:‬‬
‫ﻳﻚ ﻓﺎﻳﻞ ﻣﺘﻦ ‪ .TXT‬اﻳﺠﺎد ﻣﻲﻛﻨﻴﻢ‪ .‬آراﻳﻪ ﻧﻤﺮات و ﻋﻨﻮان را در آن ﻧﻮﺷﺘﻪ‪ ،‬ﻓﺎﻳﻞ را ﻣﺸﺎﻫﺪه )ﺷﻜﻞ ‪ (1-4‬و ﺳﭙﺲ ﭘﺎك‬
‫ﻣﻲﻛﻨﻴﻢ‪ .‬ﻧﺎم ﻣﺴﺘﻌﺎر ﻓﺎﻳﻞ ‪ ، myf‬و ﻧﺎم دﻳﺴﻜﻲ ﻓﺎﻳﻞ ‪ nam.txt‬اﺳﺖ‪.‬‬
‫‪>> av = ...‬‬
‫;]‪[17.4537 4.57 15.3 17.869 3.7‬‬
‫;'‪>> Tit = 'Students Average:‬‬
‫;)'‪>> myf = fopen('nam.txt','w‬‬
‫;)‪>> fprintf(myf,'%s\n',Tit‬‬
‫اﺳﺘﻔﺎده از ﻧﺎم ﻣﺴﺘﻌﺎر ﻓﺎﻳﻞ ‪%‬‬
‫;)‪>> fprintf(myf,'%7.3f\n',av‬‬
‫;)‪>> fclose(myf‬‬
‫اﻳﻦ دﺳﺘﻮر را ﺣﺘﻤﺎٌ ﺑﻨﻮﻳﺴﻴﺪ ‪%‬‬
‫‪>> open nam.txt‬‬
‫ﺷﻜﻞ ‪1-4‬‬
‫اﺳﺘﻔﺎده از ﻧﺎم دﻳﺴﻜﻲ ﻓﺎﻳﻞ در دﺳﺘﻮر ﺳﻴﺴﺘﻤﻲ ‪%‬‬
‫‪>> delete nam.txt‬‬
‫‪.TXT‬‬ ‫ﺿﺒﻂ ﻣﺎﺗﺮﻳﺲ در ﻓﺎﻳﻞ ﻣﺘﻦ‬
‫ﻣﺜﺎل‪:‬‬
‫ﺑﺮﻧﺎﻣﻪاي ﻣﻲﻧﻮﻳﺴﻴﻢ ﻛﻪ ﻣﻘﺎدﻳﺮ ‪ x = 0.1: 0.1: 1‬را ﻫﻢراه )‪ log10(x‬ﺑﻪ ﺻﻮرت ﻳﻚ ﻣﺎﺗﺮﻳﺲ در ﻳﻚ ﻓﺎﻳﻞ‬
‫ﻣﺘﻦ ﻧﮕﻪداري ﻛﻨﺪ‪ .‬ﻓﻀﺎي ﻛﺎر را ﭘﺎك ﻛﺮده اﻃﻼﻋﺎت ﻓﺎﻳﻞ ﻣﺘﻦ را وارد ﻓﻀﺎي ﻛﺎر ﻛﺮده‪ ،‬و ﻣﺎﺗﺮﻳﺲ را ﻧﻤﺎﻳﺶ ﻣﻲدﻫﻴﻢ‪ .‬ﻓﺎﻳﻞ‬
‫ﻣﺘﻦ را ﺣﺬف ﻣﻲﻛﻨﻴﻢ‪.‬‬

‫‪49‬‬
>> x = 0.1: 0.1: 1; lgt = 0.1000 -1.0000
>> y = [x; log10(x)]; 0.2000 -0.6990
>> fl = fopen('lgt.txt','w'); 0.3000 -0.5229
% open to write 0.4000 -0.3979
>> fprintf(fl,'%f %f\n',y); 0.5000 -0.3010
>> fclose(fl); 0.6000 -0.2218
>> load lgt.txt 0.7000 -0.1549
>> lgt 0.8000 -0.0969
>> delete lgt.txt 0.9000 -0.0458
>> tx 1.0000 0
.MAT ‫ﺿﺒﻂ ﻣﺎﺗﺮﻳﺲ در ﻓﺎﻳﻞ ﺑﺎﻳﻨﺮي‬
‫ دﺳﺘﻮر‬،‫ ﺿﺒﻂ ﻣﻲﻛﻨﺪ‬filename.mat ‫ ﻛﻠﻴﻪ ﻣﺘﻐﻴﺮﻫﺎي ﻓﻀﺎي ﻛﺎر را در ﻓﺎﻳﻞ ﺑﺎﻳﻨﺮي‬save filename ‫دﺳﺘﻮر‬
‫ در اﺟﺮاﻫﺎي‬،‫ ﻣﺘﻐﻴﺮﻫﺎي ﺿﺒﻂ ﺷﺪه در ﻓﺎﻳﻞ‬.‫ را در ﻓﺎﻳﻞ ﺿﺒﻂ ﻣﻲﻛﻨﺪ‬var ‫ ﻓﻘﻂ ﻣﺘﻐﻴﺮ‬save filename var
fclose() ‫ اﺟﺮاي دﺳﺘﻮر‬.‫ دوﺑﺎره در ﻓﻀﺎي ﺣﺎﻓﻈﻪ ﺑﺎر ﻣﻲﺷﻮﻧﺪ‬load filename ‫ﺑﻌﺪي ﻣﺘﻠﺐ ﺑﺎ دﺳﺘﻮر‬
.‫ﻓﺮاﻣﻮش ﻧﺸﻮد‬
:‫ﻣﺜﺎل‬
>> x = 0.1: 0.1: 1;
>> y = [x; log10(x)];
>> y = y';
>> save lgm y % saves only variable y
>> mtt
:‫در اﺟﺮاي ﺑﻌﺪي ﻣﺘﻠﺐ‬
>> clear y = 0.1000 -1.0000
>> load lgm 0.2000 -0.6990
>> y 0.3000 -0.5229
0.4000 -0.3979
0.5000 -0.3010
0.6000 -0.2218
0.7000 -0.1549
0.8000 -0.0969
0.9000 -0.0458
1.0000 0
port ‫ﺑﺎز ﻛﺮدن درﮔﺎه‬
:‫ﻣﺜﺎل‬
.‫ و آن را ﻣﻲﺑﺒﻨﺪﻳﻢ‬،‫ ﺧﻮاص آن را ﻣﺸﺎﻫﺪه‬،‫ را ﺑﺎز ﻛﺮده‬COM3 ‫درﮔﺎه‬
>> sr = serial('COM3'); Serial Port Object : Serial-COM3
>> fopen(sr) Communication Settings
>> sr Port: COM3
>> fclose(sr) BaudRate: 9600
Terminator: 'LF'
Communication State
Status: open
RecordStatus: off
. . . .

50
‫‪ 4-4‬ﺗﻤﺮﻳﻦ‬
‫‪ -1‬ﻋﺪد ‪ in = 9322034.52347468‬را ﺑﺎ ﻓﺮﻣﺖﻫﺎي ‪ %e‬و ‪ %10.3f‬و ‪ %g‬ﻧﻤﺎﻳﺶ دﻫﻴﺪ‪ ،‬و از‬
‫ﻛﺪﻫﺎي‪\t‬و ‪ \n‬ﻧﻴﺰ اﺳﺘﻔﺎده ﻛﻨﻴﺪ‪.‬‬
‫‪ -2‬ﺳﻪ ﻋﺪد ‪ av1 = 17.45‬و ‪ av2 = 18.34‬و ‪ av3 = 15.8‬را در ﻓﺎﻳﻠﻲ ﺑﻪ ﻧﺎم ‪ num.txt‬ﺑﻨﻮﻳﺴﻴﺪ‪.‬‬
‫ﻓﺎﻳﻞ را )(‪ fclose‬ﻛﻨﻴﺪ‪ .‬ﻓﺎﻳﻞ را ﺑﺮاي ﻣﺸﺎﻫﺪه ﺑﺎز ﻛﻨﻴﺪ‪ .‬ﻓﺎﻳﻞ را ﺑﺎ دﺳﺘﻮر ‪ load num.txt‬ﺑﻪ ﺻﻮرت ﻳﻚ‬
‫آراﻳﻪ ﺑﻪ ﻧﺎم ‪ num‬وارد ﺣﺎﻓﻈﻪ ﻛﺮده و ﻣﻘﺪار آن را ﻣﻼﺣﻈﻪ ﻛﻨﻴﺪ‪ .‬ﻓﺎﻳﻞ ‪ num.txt‬را ﭘﺎك ﻛﻨﻴﺪ‪ .‬راﻫﻨﻤﺎ‪ :‬اﻋﺪادي ﻛﻪ‬
‫ﺑﻪ ﺻﻮرت آراﻳﻪ در ﻳﻚ ﻓﺎﻳﻞ ﻣﺘﻦ ﻧﮕﻪداري ﺷﻮﻧﺪ ﺑﺎ دﺳﺘﻮر ‪ load filename‬در ﺣﺎﻓﻈﻪ ﺑﻪ ﺻﻮرت ﻣﺘﻐﻴﺮ ﺑﺎر‬
‫ﻣﻲﺷﻮﻧﺪ‪.‬‬

‫‪51‬‬
‫ﻓﺼﻞ ‪ 5‬آﺷﻨﺎﺋﻲ ﺑﺎ ﺗﺮﺳﻴﻤﺎت‬
‫‪ 1-5‬ﺻﻔﺤﻪ ﻫﺎي ﻣﺨﺘﺼﺎت‬
‫ﺻﻔﺤﻪ ﻣﺨﺘﺼﺎت ﻗﺎﺋﻢ‬
‫اﻋﻠﺐ ﺗﺮﺳﻴﻤﺎت ﻣﺘﻠﺐ در ﻣﻴﺎن دو ﻣﺤﻮر )ﺳﻪ ﻣﺤﻮر ﺑﺮاي رﺳﻢ ﺳﻪ ﺑﻌﺪي( رﺳﻢ ﻣﻲﺷﻮﻧﺪ‪ .‬ﻣﺤﻮرﻫﺎي اﻓﻘﻲ‪ ،‬ﻋﻤﻮدي‪ ،‬و‬
‫ﻓﻀﺎﺋﻲ در ﻣﺘﻠﺐ ﺑﻪ ﺗﺮﺗﻴﺐ ‪ X‬و ‪) Y‬و ‪ Z‬ﺑﺮاي رﺳﻢ ﺳﻪ ﺑﻌﺪي( ﻧﺎم دارﻧﺪ‪ .‬ﻣﺨﺘﺼﺎت ﻧﻘﺎطِ ﺳﺎزﻧﺪه ﻣﻨﺤﻨﻲ ﻫﺎ )ﺳﻄﻮح ﺑﺮاي‬
‫رﺳﻢ ﺳﻪ ﺑﻌﺪي( روي اﻳﻦ ﻣﺤﻮرﻫﺎ ﻣﺸﺨﺺ ﻣﻲﺷﻮﻧﺪ‪.‬‬
‫ﺑﻌﻀﻲ از دﺳﺘﻮرات ﺗﺮﺳﻴﻤﻲ ﻧﻈﻴﺮ ﺧﺎﻧﻮادهي )(‪ plot‬ﺗﻮﺳﻂ ﻣﺘﻠﺐ درون ﺻﻔﺤﻪ ﻣﺨﺘﺼﺎت ﻗﺎﺋﻢ)ﻃﻮل ‪ ، X‬ﻋﺮض ‪(Y‬‬
‫رﺳﻢ ﻣﻲﺷﻮﻧﺪ‪.‬‬
‫ﺻﻔﺤﻪ ﻣﺨﺘﺼﺎت ﻗﻄﺒﻲ‬
‫دﺳﺘﻮراﺗﻲ ﻧﻈﻴﺮ)(‪ compass(),polar‬درون ﺻﻔﺤﻪ ﻣﺨﺘﺼﺎت ﻗﻄﺒﻲ )زاوﻳﻪ ‪، θ‬ﺑﺰرﮔﻲ ‪ (r‬رﺳﻢ ﻣﻲﺷﻮﻧﺪ‪.‬‬
‫ﺗﺒﺪﻳﻞ ﻣﺨﺘﺼﺎت ﻗﺎﺋﻢ و ﻗﻄﺒﻲ‬
‫ﻧﺤﻮه ﺗﺒﺪﻳﻞ ﻣﺨﺘﺼﺎت ﻧﻘﻄﻪي ‪ A‬ﺑﺎ ﻣﺨﺘﺼﺎت ﻗﺎﺋﻢ)‪ (x,y‬و ﻣﺨﺘﺼﺎت ﻗﻄﺒﻲ )‪ r‬و ‪ (theta‬در ﺟﺪول زﻳﺮ آﻣﺪه اﺳﺖ‪.‬‬
‫ﻧﻮع ﺗﺒﺪﻳﻞ ﻣﺨﺘﺼﺎت‬ ‫ﻓﺮﻣﻮل‬
‫ﻗﺎﺋﻢ ﺑﻪ ﻗﻄﺒﻲ‬ ‫)‪[theta,r] = cart2pol(x,y‬‬

‫ﻗﻄﺒﻲ ﺑﻪ ﻗﺎﺋﻢ‬ ‫)‪[x,y] = pol2cart(theta,r‬‬

‫)(‪plot(), comet‬‬ ‫‪ 2-5‬ﺑﺮدار و رﺳﻢ ﻣﻨﺤﻨﻲ‪ ،‬دﺳﺘﻮرﻫﺎي‬


‫ﻛﺎر ﺗﺮﺳﻴﻢ آراﻳﻪﻫﺎ ﺑﺮﺣﺴﺐ ﻳﻚدﻳﮕﺮ )ﻳﺎ ﺗﺮﺳﻴﻢ ﺗﻮاﺑﻌﻲ ﻛﻪ آراﻳﻪﻫﺎ را ﺑﻪ ﻫﻢ رﺑﻂ ﻣﻲدﻫﻨﺪ( ﺑﺴﻴﺎر آﺳﺎن اﺳﺖ‪.‬‬
‫دﺳﺘﻮر)‪ plot(t,x‬ﻋﻨﺎﺻﺮ ﺑﺮدار ‪ x‬را ﺑﺮ ﺣﺴﺐ ﺑﺮدار ‪ t‬ﻧﻈﻴﺮ ﺑﻪ ﻧﻈﻴﺮ ﺑﻪ ﺻﻮرت ﻧﻘﺎﻃﻲ روي ﺻﻔﺤﻪ ﻣﺨﺘﺼﺎت ﻗﺎﺋﻢ‬
‫ﻗﺮار ﻣﻲدﻫﺪ‪) ،‬ﻫﺮ دو ﺑﺮدار ﺑﺎﻳﺪ ﻣﺘﺴﺎوياﻟﻌﻨﺼﺮ ﺑﺎﺷﻨﺪ( ﺳﭙﺲ آنﻫﺎ را ﺑﻪ ﻫﻢ وﺻﻞ و ﻣﻨﺤﻨﻲ ﻣﻮرد ﻧﻈﺮ را اﻳﺠﺎد ﻣﻲﻛﻨﺪ‪.‬‬
‫ﻣﺜﺎل ﺗﻮﺿﻴﺤﻲ زﻳﺮ اﺻﻮل ﻛﺎر را ﺑﻴﺎن ﻣﻲﻛﻨﺪ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫ﺑﺮاي رﺳﻢ ﻣﻌﺎدﻟﻪ ﻳﻚ ﺳﻬﻤﻲ اﺑﺘﺪا ﻳﻚ آراﻳﻪ ﺷﺎﻣﻞ ﻣﻘﺎدﻳﺮ ‪ x‬ﺗﻌﺮﻳﻒ ﻣﻲﻛﻨﻴﻢ‪:‬‬
‫;]‪>> x = [-4 -3 -2 -1 0 1 2 3 4‬‬
‫ﺳﭙﺲ ﺗﺎﺑﻊ ﻣﻮرد ﻧﻈﺮ را ﻣﻴﻨﻮﻳﺴﻴﻢ‪:‬‬
‫‪>> y = [-21 -13‬‬ ‫‪-7‬‬ ‫‪-3‬‬ ‫‪-1‬‬ ‫‪-1‬‬ ‫‪-3‬‬ ‫;]‪-7 -13‬‬
‫و ﺑﺎ ﻳﻚ دﺳﺘﻮر ﺳﺎده ‪ y‬را ﺑﺮ ﺣﺴﺐ ‪ x‬ﻧﻘﻄﻪ ﺑﻪ ﻧﻘﻄﻪ رﺳﻢ ﻣﻲﻛﻨﻴﻢ )ﺷﻜﻞ ‪(1-5‬‬
‫)'‪>> plot(x,y,'o‬‬
‫اﮔﺮ ﭘﺎراﻣﺘﺮ '‪ 'o‬را از دﺳﺘﻮر ﺣﺬف ﻛﻨﻴﻢ‪ ،‬ﻧﻘﺎط ﺑﻪ ﺻﻮرت اﺗﻮﻣﺎﺗﻴﻚ ﺑﻪ ﻳﻚدﻳﮕﺮ وﺻﻞ و ﺗﺮﺳﻴﻢ ﺷﻜﻞ ﻣﻨﺤﻨﻲ ﺑﻪ ﺧﻮد ﻣﻲ‪-‬‬
‫ﮔﻴﺮد‪ .‬ﺑﺮاي داﺷﺘﻦ ﻣﻨﺤﻨﻲ ﺑﺪون ﺷﻜﺴﺖ ﺑﺎﻳﺪ ﻧﻘﺎط ﺑﻴﺸﺘﺮي را ﺑﻪ ‪ x‬و ﻧﺘﻴﺠﺘﺎٌ ﺑﻪ ‪ y‬ﻧﺴﺒﺖ داد‪ .‬دﻗﺖ ﻛﻨﻴﺪ ﻛﻪ ﺑﺮاي رﺳﻢ دو‬
‫آراﻳﻪ ﻋﺪدي ﺑﺮﺣﺴﺐ ﻳﻚدﻳﮕﺮ آن دو ﺑﺎﻳﺪ ﻫﻢﺳﺎن ﺑﺎﺷﻨﺪ‪ .‬ﺻﻮرت ﻓﺮﻣﻮﻟﻲ ﻣﻌﺎدﻟﻪ ﺳﻬﻤﻲ ﭼﻨﻴﻦ ﻧﻮﺷﺘﻪ ﻣﻲﺷﻮد‪:‬‬
‫‪y = -x.^2 + x - 1‬‬
‫ﺑﺮاي ﺑﻪ ﺗﻮان رﺳﺎﻧﺪن ﺗﻚﺗﻚ ﻋﻨﺎﺻﺮ آراﻳﻪ )ﺗﻮان آراﻳﻪاي( از ﻋﻼﻣﺖ ^‪ .‬اﺳﺘﻔﺎده ﺷﺪه اﺳﺖ‪.‬‬
‫دﺳﺘﻮر )(‪ comet‬ﻋﻴﻨﺎً ﺷﺒﻴﻪ )(‪ plot‬ﻋﻤﻞ ﻣﻲﻛﻨﺪ ﺑﺎ اﻳﻦ ﺗﻔﺎوت ﻛﻪ رﺳﻢ را ﺑﺎ ﺣﺮﻛﺖ آﻫﺴﺘﻪ ﺑﻪ ﺻﻮرت ﭘﻮﻳﺎ ﻧﻤﺎﺋﻲ‬
‫اﻧﺠﺎم ﻣﻲدﻫﺪ )اﻣﺘﺤﺎن ﻛﻨﻴﺪ(‪.‬‬

‫‪52‬‬
‫)'‪plot(x,y,'o‬‬ ‫)‪plot(x,y‬‬
‫ﺷﻜﻞ ‪1-5‬‬

‫‪figure(), subplot(), hold on/off, clf‬‬ ‫دﺳﺘﻮرﻫﺎي‬


‫دﺳﺘﻮرﻫﺎي زﻳﺎدي در ارﺗﺒﺎط ﺑﺎ ﺗﺮﺳﻴﻤﺎت وﺟﻮد دارﻧﺪ ﻛﻪ ﺟﻬﺖ آﺷﻨﺎﺋﻲ ﺑﺮﺧﻲ از ﻣﻌﻤﻮلﺗﺮﻳﻦ آنﻫﺎ را ذﻛﺮ ﻣﻲﻛﻨﻴﻢ‪:‬‬
‫دﺳﺘﻮر ‪ clf‬ﭘﻨﺠﺮه ﺟﺎري ﮔﺮاف را ﭘﺎك ﻛﺮده و ﺑﺮاي ﮔﺮاف ﺟﺪﻳﺪ ﺑﺎز ﻧﮕﻪﻣﻲدارد‪.‬‬
‫دﺳﺘﻮر ‪ hold on‬ﭘﻨﺠﺮه ﺟﺎري را ﺑﺮاي ﮔﺮاف ﺟﺪﻳﺪ ﺑﺎز ﻧﮕﻪﻣﻲدارد‪.‬‬
‫دﺳﺘﻮر)‪ subplot(2,2,n‬ﺻﻔﺤﻪ ﮔﺮاف را ﺑﻪ ﭼﻬﺎر ﻗﺴﻤﺖ ﻣﺴﺎوي ﺗﻘﺴﻴﻢ ﻣﻲﻛﻨﺪ‪ ،‬ﻋﺪد ‪ 4>= n >=1‬ﻳﻜﻲ از‬
‫اﻳﻦ ﭼﻬﺎر ﻗﺴﻤﺖ را ﻓﻌﺎل ﻣﻲﻛﻨﺪ‪ .‬دﺳﺘﻮر)‪ subplot(1,2,m‬و دﺳﺘﻮر )‪ subplot(2,1,m‬ﺻﻔﺤﻪ ﮔﺮاف را ﺑﻪ‬
‫ﺗﺮﺗﻴﺐ ﺑﻪ دوﻗﺴﻤﺖ ﻋﻤﻮدي و اﻓﻘﻲ ﺗﻘﺴﻴﻢ ﻣﻲﻛﻨﻨﺪ ‪ . 2>= m >=1‬اﻣﺘﺤﺎن ﻛﻨﻴﺪ‪.‬‬
‫دﺳﺘﻮر )‪ figure(p‬ﻳﻚ ﭘﻨﺠﺮه ﺟﺪﻳﺪ ﮔﺮاف ﺑﺎ ﺷﻤﺎره ‪ p‬ﺑﺎز و آن را ﭘﻨﺠﺮه ﺟﺎري ﻣﻲﻛﻨﺪ‪.‬‬
‫اﻓﺰودن ﺗﻮﺿﻴﺤﺎت روي ﻣﻨﺤﻨﻲ‬
‫ﺟﺪول زﻳﺮ ﺑﻌﻀﻲ از ﺗﻮﺿﻴﺤﺎﺗﻲ را ﻛﻪ ﻣﻲﺗﻮان ﺑﺮروي ﮔﺮاف آورد ﻧﺸﺎن ﻣﻲدﻫﺪ‪ .‬ﺳﻪ ﻧﻘﻄﻪ ﻳﻌﻨﻲ ﺷﺮح ﻣﻮرد ﻧﻈﺮ ﺧﻮدﺗﺎن‪:‬‬
‫ﺑﺮﭼﺴﺐ رﻧﮓ ﭼﻨﺪ ﻣﻨﺤﻨﻲ‬ ‫ﺑﺮﭼﺴﺐ ﻣﺤﻮر ‪y‬‬ ‫ﺑﺮﭼﺴﺐ ﻣﺤﻮر ‪x‬‬ ‫ﻋﻨﻮان ﻣﻨﺤﻨﻲ‬ ‫ﺷﺮح‬
‫)(‪legend‬‬ ‫دﺳﺘﻮر )'‪ylabel('...') xlabel('...') title('...‬‬
‫'‪ylabel '...‬‬ ‫'‪xlabel '...‬‬ ‫'‪title '...‬‬
‫‪Data Statistics‬‬ ‫ﭘﻨﺠﺮه‬
‫اﮔﺮ ﭘﺲ از رﺳﻢ ﻧﻤﻮدار در ﭘﻨﺠﺮه ‪ Figure‬زﻳﺮ‪ -‬ﻣﻨﻴﻮي ‪ Tools_Data Statistics‬را اﻧﺘﺨﺎب ﻛﻨﻴﻢ‪ ،‬ﺗﺮﺗﻴﺐ‬
‫ﻣﻨﺤﻨﻲﻫﺎ روي ﭘﻨﺠﺮه ‪ Figure‬ﻧﺸﺎن داده ﺷﺪه‪ ،‬و ﭘﻨﺠﺮه ‪ Data Statistics‬ﻇﺎﻫﺮ ﻣﻲﺷﻮد اﻳﻦ ﭘﻨﺠﺮه ﻣﻘﺎدﻳﺮ‬
‫آﻣﺎري ﻣﻨﺤﻨﻲ را ﻧﺸﺎن ﻣﻲدﻫﺪ‪ .‬اﮔﺮ در ﻣﻘﺎﺑﻞ ﻫﺮﻳﻚ ازاﻳﻦ ﻣﻘﺎدﻳﺮ ﭼﻚﻣﺎرك ﺑﺰﻧﻴﻢ‪ ،‬ﻣﻘﺪار آن روي ﻣﻨﺤﻨﻲ ﻫﻢ ﻧﺸﺎن داده‬
‫ﺧﻮاﻫﺪ ﺷﺪ‪.‬‬
‫ﭼﻨﺪ ﻣﻨﺤﻨﻲ در ﻳﻚ ﺻﻔﺤﻪ‬
‫ﻋﺒﺎرت )‪ plot(x,y1,x,y2‬ﻣﻨﺤﻨﻲﻫﺎي ‪ y1‬و ‪ y2‬را ﺑﺎ دو رﻧﮓ ﻣﺨﺘﻠﻒ ﺑﺮ ﺣﺴﺐ ‪ x‬رﺳﻢ ﻣﻲﻛﻨﺪ‪.‬‬
‫ﻣﺜﺎل ﻫﺎ‪:‬‬
‫ﭘﺮﺗﺎﺑﻪ ﻋﻤﻮدي ﺑﺎ )(‪plot‬‬
‫ﺳﻨﮕﻲ ﺑﺎ ﺳﺮﻋﺖ اوﻟﻴﻪ ‪ 60‬در زﻣﺎن ﺻﻔﺮ‪ ،‬ﻋﻤﻮدي ﺑﻪ ﺑﺎﻻ ﭘﺮﺗﺎب ﻣﻲﺷﻮد‪ ،‬ﻧﻤﻮدار ﻣﺴﺎﻓﺖ‪ -‬زﻣﺎن را ﺗﺎ زﻣﺎن ‪ 12.3‬ﺑﺎ ﮔﺎم‬
‫‪ 0.1‬رﺳﻢ ﻛﻨﻴﺪ‪.‬‬

‫‪53‬‬
‫>>‬ ‫;‪g = 9.8‬‬
‫>>‬ ‫; ‪v0 = 60‬‬
‫>>‬ ‫;‪t = 0: 0.1: 12.3‬‬
‫>>‬ ‫; ‪x = v0*t - g/2 * t.^2‬‬
‫>>‬ ‫)‪plot(t,x‬‬

‫ﺷﻜﻞ ‪2-5‬‬

‫ﺑﺮﭼﺴﺐ ﻫﺎ‬
‫ﺑﺮاي ﻣﺜﺎل ﻓﻮق ﺑﺮﭼﺴﺐ ﻫﺎي ﻣﻨﺎﺳﺐ ﺑﺮاي ﻋﻨﻮان‪ ،‬و ﻣﺤﻮرﻫﺎي ‪ x‬و ‪ y‬را اﻳﺠﺎد ﻛﺮده و اﺛﺮ آنﻫﺎ را ﺑﺮ روي ﮔﺮاف ﺑﺒﻴﻨﻴﺪ‪.‬‬
‫‪>> title ...‬‬
‫'‪'Trajectory Motion‬‬
‫)'‪>> xlabel('Time‬‬
‫)'‪>> ylabel('Displacement‬‬

‫ﺷﻜﻞ ‪3-5‬‬

‫اﻃﻼﻋﺎت آﻣﺎري ‪Data Statistics‬‬


‫ﺑﺮاي ﻣﻨﺤﻨﻲ ﻓﻮق ﺑﻌﻀﻲ از ﻣﻘﺎدﻳﺮ آﻣﺎري را روي ﭘﻨﺠﺮه ‪ Data Statistics‬ﻋﻼﻣﺖ ﺑﺰﻧﻴﺪ و ﻧﺘﺎﻳﺞ آنرا روي‬
‫ﭘﻨﺠﺮه ‪ Figure‬ﺑﺒﻴﻨﻴﺪ )ﺷﻜﻞ ‪..(4-5‬‬
‫ﻣﺪوﻻﺗﻮر داﻣﻨﻪ ‪AM Modulator‬‬
‫در ﻣﺪوﻻﺗﻮر داﻣﻨﻪ زﻳﺮ‪ ،‬ﺳﻴﮕﻨﺎلِ ‪ 1000‬ﻫﺮﺗﺰي ‪ sig‬ﺑﺎ ﻛﺮﻳﺮ ‪ 10000‬ﻫﺮﺗﺰي ‪ carr‬وداﻣﻨﻪ ‪ 4‬ﺑﺮاﺑﺮ ‪ sig‬ﻣﺪوﻟﻪ ﻣﻲﺷﻮد‪.‬‬
‫ﺧﺮوﺟﻲِ ‪ am‬و ‪ sig‬را ﺑﺮﺣﺴﺐ زﻣﺎن رﺳﻢ ﻛﻨﻴﺪ )ﺷﻜﻞ ‪.(5-5‬‬

‫‪54‬‬
‫ﺷﻜﻞ ‪ 4-5‬ﭘﻨﺠﺮه آﻣﺎر داده ﻫﺎ‬

‫→ ‪signal‬‬ ‫‪Amplitude → am‬‬


‫‪Modulator‬‬
‫↑‬
‫‪carr‬‬
‫>>‬ ‫;‪t = 0:12.5e-6:0.003‬‬
‫>>‬ ‫;‪f = 1000‬‬
‫>>‬ ‫;‪om = 2*pi*f‬‬
‫>>‬ ‫;‪omt = om*t‬‬
‫>>‬ ‫;)‪sig = cos(omt‬‬
‫>>‬ ‫;)‪carr = 4*cos(10*omt‬‬
‫>>‬ ‫;‪am = sig.*carr‬‬
‫>>‬ ‫)‪plot(omt,sig,omt,am‬‬
‫>>‬ ‫)'‪legend('Signal','AM‬‬
‫>>‬ ‫)'‪title('AM‬‬
‫>>‬ ‫)'‪xlabel('\omegat‬‬
‫>>‬ ‫)'‪ylabel('Output‬‬
‫ﺷﻜﻞ ‪5-5‬‬

‫دﺳﺘﻮر ‪ legend‬رﻧﮓ ﻳﺎ اﺳﺘﻴﻞ ﻫﺮ ﻣﻨﺤﻨﻲ را ﺑﺮﭼﺴﺐ ﻣﻲﮔﺬارد‪.‬‬

‫ﻋﻼﻣﺖ ‪ \omegat‬ﻛﺎراﻛﺘﺮ ‪ TeX‬ﻧﺎم دارد ﻛﻪ در ﮔﺮاف ﺑﻪ ﺻﻮرت ‪ ωt‬ﻧﻤﺎﻳﺶ داده ﻣﻲﺷﻮد‪ .‬ﺑﺮاي اﻃﻼع ﺑﻴﺸﺘﺮ در ﻣﻮرد‬
‫ﻛﺎراﻛﺘﺮﻫﺎي ‪ ، TeX‬از ﻣﻨﻮي ‪ Help‬زﻳﺮ ﻣﻨﻮي ‪ MATLAB Help‬را اﺟﺮا و ‪ TeX characters‬را ﺟﺴﺘﺠﻮ ﻛﻨﻴﺪ‪.‬‬

‫)(‪plot‬‬ ‫‪ 3-5‬دﺳﺘﻮرﻫﺎي ﻫﻢ ﺧﺎﻧﻮاده‬


‫دﺳﺘﻮرﻫﺎي ﺗﺮﺳﻴﻤﻲِ )(‪ semilogx(), semilogy(), loglog(), plotyy‬ﺑﺎ اﻧﺪﻛﻲ ﺗﻐﻴﻴﺮ ﻣﺸﺎﺑﻪ‬
‫)(‪ plot‬ﻫﺴﺘﻨﺪ‪ .‬ﺑﺮاي اﻃﻼع ﺑﻴﺸﺘﺮ ﺑﻪ ‪ help plot‬و ﻣﺜﺎلﻫﺎي ﻓﺼﻮل ﺑﻌﺪ ﻣﺮاﺟﻌﻪ ﻛﻨﻴﺪ‪.‬‬
‫ﺑﻪ ﻋﻨﻮان ﻧﻤﻮﻧﻪ دﺳﺘﻮر )(‪ plotyy‬را ﺑﺮرﺳﻲ ﻣﻲﻛﻨﻴﻢ‪ .‬رﺳﻢ دو ﺗﺎﺑﻊ ﻛﻪ ﻣﻘﺎدﻳﺮ آنﻫﺎ ﺑﺎ ﻳﻚدﻳﮕﺮ ﻓﺎﺻﻠﻪ زﻳﺎد دارﻧﺪ روي‬
‫ﻳﻚ ﮔﺮاف ﻧﺎﻣﻤﻜﻦ اﺳﺖ‪ ،‬اﻣﺎ اﻣﻜﺎن اﺳﺘﻔﺎده از دو ﻣﺤﻮر ﺑﺎ اﺳﺘﻔﺎده از دﺳﺘﻮر)‪ plotyy(x1,y1x2,y2‬اﻳﻦ ﻣﺸﻜﻞ‬
‫را ﺣﻞ ﻛﺮده و اﺟﺎزه رﺳﻢ دو ﺗﺎﺑﻊ ﺑﺎ ﻣﻘﺎدﻳﺮ دور از ﻫﻢ روي ﻳﻚ ﮔﺮاف را ﻣﻲدﻫﺪ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫ﺧﻂ و ﺳﻬﻤﻲ را ﺑﺎ ﻣﻘﺎدﻳﺮ دور ازﻫﻢ ﺑﺎ)(‪ plotyy‬رﺳﻢ ﻛﻨﻴﺪ‪ .‬ﺑﺮاي ﺑﺮﭼﺴﺐﮔﺬاري روي ﻣﺤﻮرﻫﺎي ﻋﻤﻮدي از ﮔﺰﻳﻨﻪ‬

‫‪55‬‬
‫‪ Tools_Edit Plot‬ﻳﺎ دﻛﻤﻪ ‪ Text‬اﺳﺘﻔﺎده ﻛﻨﻴﺪ‪ .‬ﻣﺤﻮر اﻓﻘﻲ ﺑﺮاي ﻫﺮدو ﺗﺎﺑﻊ ﻳﻚﺳﺎن اﺳﺖ‪.‬‬
‫;]‪>> x = [-2: 0.1: 2‬‬
‫‪>> y1 = 2*x - 3;% Line‬‬
‫;‪>> y2 = 10 * y1.^2‬‬
‫‪%Parabola‬‬
‫)‪>> plotyy(x,y1,x,y2‬‬

‫ﺷﻜﻞ ‪6-5‬‬

‫‪ 4-5‬روش ﻫﺎي دﻳﮕﺮ ﻧﻤﻮدار ﺳﺎزي‬


‫ﺳﺘﻮﻧﻲ )(‪bar‬‬ ‫ﻧﻤﻮدار‬
‫دﺳﺘﻮر )‪ bar(x,y,w‬ﺑﺮدار ‪ y‬را ﺑﺮﺣﺴﺐ ﺑﺮدار ‪ x‬ﺑﻪ ﺻﻮرت ﻣﻴﻠﻪاي رﺳﻢ ﻣﻲﻛﻨﺪ‪ .‬ﻣﻌﻤﻮﻻً از اﻳﻦ ﻧﻮع ﻧﻤﻮدار ﺑﺮاي‬
‫ﻧﻤﺎﻳﺶ آﻣﺎري ﺑﺮدارﻫﺎي ﻛﻢﺗﻌﺪاد اﺳﺘﻔﺎده ﻣﻲﺷﻮد‪ .‬ﭘﺎراﻣﺘﺮ ‪ w‬ﻋﺮض ﻣﻴﻠﻪﻫﺎ را ﺗﻌﻴﻴﻦ ﻣﻲﻛﻨﺪ ﻛﻪ ﭘﻴﺶﻓﺮض آن ‪ 0.8‬اﺳﺖ‪.‬‬
‫دﺳﺘﻮرﻫﺎي )(‪ stairs(), barh(), stem‬ﻧﺰدﻳﻚ ﺑﻪ )(‪ bar‬ﻫﺴﺘﻨﺪ )اﻣﺘﺤﺎن ﻛﻨﻴﺪ(‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫ﻧﻤﻮدار ﺳﺘﻮﻧﻲ درﺟﻪ ﺣﺮارت ﻳﻚ روز را ﺑﻴﻦ ﺳﺎﻋﺖ ‪ 8‬ﺗﺎ ‪ 24‬ﺑﺎ ﻓﺎﺻﻠﻪ دو ﺳﺎﻋﺘﻪ رﺳﻢ ﻛﻨﻴﺪ )ﺷﻜﻞ ‪.(7-5‬‬
‫)(‪hist‬‬ ‫ﭘﻴﺸﻴﻨﻪ ﻧﮕﺎر‬
‫اﻳﻦ ﺗﺎﺑﻊ ﻛﻪ ﭘﻴﺸﻴﻨﻪﻧﮕﺎر ‪ histogram‬رﺳﻢ ﻣﻲﻛﻨﺪ‪ ،‬ﻳﻜﻲ از دﺳﺘﻮرات ﮔﺮاﻓﻴﻜﻲ ﻣﻬﻢ اﺳﺖ‪ .‬ﻃﺮز ﻛﺎر آن اﻳﻦﮔﻮﻧﻪ اﺳﺖ ﻛﻪ‬
‫اﺑﺘﺪا ﻣﺠﻤﻮﻋﻪاي از دادهﻫﺎ )اﺷﻴﺎء( را ﻣﺮﺗﺐ ﻣﻲﻛﻨﺪ‪ ،‬و ﺳﭙﺲ در ﭼﻨﺪ ﻇﺮف )ﺑﻪ ﺻﻮرت ﭘﻴﺶﻓﺮض ‪ 10‬ﻇﺮف( ﺟﺎ ﻣﻲدﻫﺪ‪.‬‬
‫ﻫﺮ ﻇﺮف‪ ،‬ﺣﺠﻤﻲ از دادهﻫﺎي ﻧﺰدﻳﻚ ﺑﻪ ﻫﻢ را درﺧﻮد ﻣﻲﮔﻨﺠﺎﻧﺪ‪ .‬ﺳﭙﺲ ﻣﺤﺘﻮاي ﻫﺮ ﻇﺮف ﺑﺮﺣﺴﺐ درﺷﺘﻲ دادهﻫﺎي‬
‫داﺧﻞ آنﻫﺎ ﻧﻤﺎﻳﺶ داده ﻣﻲﺷﻮد‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫ﻧﻤﺮات زﻳﺮ را در ﺗﻌﺪاد ﻇﺮفِ ﻣﻌﺎدل ﻳﻚﭼﻬﺎرم ﺗﻌﺪاد داﻧﺸﺠﻮ رﻳﺨﺘﻪ و ﭘﻴﺸﻴﻨﻪ ﻧﮕﺎر را ﺑﺎ ﺗﻮﺿﻴﺢ رﺳﻢ ﻛﻨﻴﺪ)ﺷﻜﻞ ‪.(8-5‬‬
‫دﺳﺘﻮر)(‪ strcat‬رﺷﺘﻪﻫﺎ را ﺳﺮﻫﻢ ﻣﻲﻛﻨﺪ‪ .‬ﺑﺮاي اﻃﻼع ﺑﻴﺸﺘﺮ از ﺑﻪ ﻓﺼﻞ رﺷﺘﻪﻫﺎ ﻣﺮاﺟﻌﻪ ﻛﻨﻴﺪ‪.‬‬
‫‪>> scr = [12 14.56 18.44 16 8.3 19.1 18.2 16 5.3 7.8 15 12 14.6‬‬
‫;]‪8.8 17 11.2 13.25 12 13 9 14 11 12 11.5 15 15 7 4 6 11 12 8 9‬‬
‫)(‪pie‬‬ ‫ﻧﻤﻮدار داﻳﺮه‬
‫دﺳﺘﻮر )‪ pie(p, w, m‬ﻳﻚ داﻳﺮه را ﺑﻪ ﺗﻌﺪاد دادهﻫﺎ ﻗﻄﺎع ﻣﻲزﻧﺪ‪ ،‬ﺑﻪ ﻧﺤﻮيﻛﻪ ﺑﻪ ﻫﺮ داده ﺳﻄﺤﻲ ﻣﺘﻨﺎﺳﺐ ﺑﺎ ﺑﺰرﮔﺎي‬
‫آن اﺧﻨﺼﺎص ﻳﺎﺑﺪ‪ .‬ﺑﺮاي ﻧﻤﻮدارﻫﺎي آﻣﺎري ﻧﺴﺒﻲ اﺳﺘﻔﺎده ﻣﻲﺷﻮد‪ p .‬درﺻﺪ ﻳﺎ ﻣﺴﺎﺣﺖ ﻫﺮ ﻗﻄﺎع‪ w ،‬ﻓﺎﺻﻠﻪ ﺑﻴﻦ ﻗﻄﺎعﻫﺎ‪ ،‬و‬
‫‪ m‬ﺗﻮﺿﻴﺢ ﻳﺎ ﺑﺮﭼﺴﺐ ﻫﺮ ﻗﻄﺎع اﺳﺖ‪ .‬دﺳﺘﻮر )(‪ pie3‬ﻫﻢ ﻣﺸﺎﺑﻪ )(‪ pie‬اﺳﺖ )اﻣﺘﺤﺎن ﻛﻨﻴﺪ(‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫ﻧﺴﺒﺖ ﺟﻤﻌﻴﺘﻲ ﭼﻨﺪ ﺷﻬﺮ را ﺑﺎ ﻧﻤﻮدار داﻳﺮهاي ﻧﻤﺎﻳﺶ دﻫﻴﺪ)ﺷﻜﻞ ‪.(9-5‬‬

‫‪56‬‬
>> hr = 0:2:24;
>> temp = [-4 -2 0 3 7...
10 12 16 15 13 10 5 2];
>> bar(hr,temp,0.6)
>> xlabel('Hrs of The Day')
>> ylabel('Temp Celsius')

7-5 ‫ﺷﻜﻞ‬

>> Ls = length(scr);
>> hist(scr,Ls/4)
>> sp=repmat(...
[' '],1,8);
>> xb =
strcat([sp,sp,...
'Poor',sp,...
'Moderate',sp,...
'Good',sp, ...
'Excellent']);
% string addition
>> xlabel(xb)

8-5 ‫ﺷﻜﻞ‬

>> p = [10,3,6,5,2];
>> w = [0.5 1 1 0.5 1];
>> m =
{'Tehran','Shiraz',...
'Isfahan','Tabriz','Ahvaz'}
% m is a cell array
>> pie(p, w, m)

9-5 ‫ﺷﻜﻞ‬

57
‫‪ 5-5‬رﺳﻢ ﻧﻤﻮداري ﻣﺎﺗﺮﻳﺲ‬
‫ﻧﻤﻮدار ﺳﺘﻮﻧﻲ ﻣﺎﺗﺮﻳﺲ‬
‫وﻗﺘﻲ ﻧﻤﻮدار ﺳﺘﻮﻧﻲ ﻳﻚ ﻣﺎﺗﺮﻳﺲ رﺳﻢ ﺷﻮد‪ ،‬ﻫﺮ ردﻳﻒ در ﻳﻚ ﻣﺠﻤﻮﻋﻪ ﺟﺪاﮔﺎﻧﻪ از ﻣﻴﻠﻪﻫﺎ ﻫﻢراه ﺑﺎ ﺷﻤﺎره ردﻳﻒ ﻧﺸﺎن‬
‫داده ﻣﻲﺷﻮد‪.‬‬
‫ﻧﻤﻮدار ﻣﻨﺤﻨﻲ ﻣﺎﺗﺮﻳﺲ‬
‫وﻗﺘﻲ ﻧﻤﻮدار ﻣﻨﺤﻨﻲ ﻳﻚ ﻣﺎﺗﺮﻳﺲ رﺳﻢ ﺷﻮد‪ ،‬ﻫﺮ ﺳﺘﻮن در ﻳﻚ ﻣﻨﺤﻨﻲ ﺟﺪاﮔﺎﻧﻪ ﻧﺸﺎن داده ﻣﻲﺷﻮد‪ .‬ﺑﺮاي ﺗﻔﻜﻴﻚ ﻣﻨﺤﻨﻲﻫﺎ‬
‫از دﺳﺘﻮر )(‪ legend‬ﻳﺎ از ﭘﻨﺠﺮه ‪ Data Statistics‬اﺳﺘﻔﺎده ﻣﻲﻛﻨﻴﻢ‪.‬‬
‫ﻣﺜﺎل ﻫﺎ‪:‬‬
‫ﻣﻴﺰان رﻳﺰش ﺑﺎران ﭘﻨﺞ ﺳﺎل ﻣﺘﻮاﻟﻲ‬
‫ﻣﻴﺰان رﻳﺰش ﺑﺎران ﻫﺮ ﻓﺼﻞ را در ﭘﻨﺞ ﺳﺎل ﭘﻴﺎﭘﻲ در ردﻳﻒﻫﺎي ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﻗﺮار دﻫﻴﺪ‪ .‬ﻧﻤﻮدار ﺳﺘﻮﻧﻲ ﻣﻴﺰان ﺑﺎران ﻫﺮ ﺳﺎل‬
‫را ﻧﻤﺎﻳﺶ دﻫﻴﺪ‪ .‬ﻣﻨﺤﻨﻲ را ﺧﻮدﺗﺎن رﺳﻢ ﻛﻨﻴﺪ‪.‬‬
‫;‪>> rain = [110 70 125 152‬‬ ‫‪% 1st year‬‬
‫;‪210 55 104 223‬‬ ‫‪% 2nd year‬‬
‫;‪120 56 173 156‬‬ ‫‪% 3rd year‬‬
‫;‪195 72 211 178‬‬ ‫‪% 4th year‬‬
‫;]‪118 58 123 149‬‬ ‫‪% 5th year‬‬
‫)‪>> bar(rain‬‬
‫)'‪>> xlabel('Year 1 to year 5'), ylabel('Amount of rain per season‬‬
‫)'‪>> legend('Spring','Sumer','Fall','Winter‬‬
‫درﺟﻪ ﺣﺮارت ﭼﻬﺎر روز ﻣﺘﻮاﻟﻲ‬
‫درﺟﻪ ﺣﺮارت ﺻﺒﺢ‪ ،‬ﻇﻬﺮ‪ ،‬و ﻏﺮوب ﭼﻬﺎر روز ﭘﻴﺎﭘﻲ را در ﺳﺘﻮنﻫﺎي ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﻗﺮار دﻫﻴﺪ‪ .‬ﻧﻤﻮدار ﻣﻨﺤﻨﻲ درﺟﻪ‬
‫ﺣﺮارت ﻫﺮ روز را ﻧﻤﺎﻳﺶ دﻫﻴﺪ‪ .‬ﻣﻴﺎﻧﮕﻴﻦ درﺟﻪ ﺣﺮارت روز ﭼﻬﺎرم را ﺑﺎ اﺳﺘﻔﺎده از ﭘﻨﺠﺮه ‪Data Statistics‬‬
‫ﻣﺸﺎﻫﺪه ﻛﻨﻴﺪ‪.‬‬
‫‪temp = ...‬‬
‫;‪[11 12 14 15‬‬
‫;‪17 18 20 22‬‬
‫;];‪12 13 15 16‬‬
‫)‪plot(temp‬‬
‫)'‪ylabel('Temp / Celsius‬‬
‫‪legend( ...‬‬
‫‪'1st day','2nd day',...‬‬
‫)'‪'3rd day','4th day‬‬

‫ﺷﻜﻞ ‪10-5‬‬

‫ﭘﺲ از رﺳﻢ ﻣﻨﺤﻨﻲﻫﺎ زﻳﺮﻣﻨﻴﻮي ‪ Tools_Data Statistics‬را از ﭘﻨﺠﺮه ‪ Figure‬اﻧﺘﺨﺎب ﻛﺮده‪ ،‬ﺑﺮاي ﻧﻤﺎﻳﺶ‬
‫ﻣﻴﺎﻧﮕﻴﻦ روز ﭼﻬﺎرم ﺑﺮ روي ﻧﻤﻮدار‪ ،‬ﻣﻘﺎﺑﻞ ﻣﻘﺪار ﻣﺮﺑﻮﻃﻪ ﻋﻼﻣﺖ ﻣﻲزﻧﻴﻢ‪.‬‬

‫‪58‬‬
‫ﺷﻜﻞ ‪11-5‬‬

‫ﻧﻤﻮدار ﻗﻄﺒﻲ‬
‫ﻋﺒﺎرت )‪ polar(theta,r‬ﻣﻘﺎدﻳﺮ ‪ r‬را ﺑﺮ ﺣﺴﺐ زاوﻳﻪ ‪ theta‬روي ﻣﺨﺘﺼﺎت ﻗﻄﺒﻲ ﻧﺸﺎن ﻣﻲدﻫﺪ‪ .‬ﻧﻤﻮدار ﻗﻄﺒﻲ‬
‫)(‪ polar‬ﻫﻤﺎن ﻛﺎر را ﻛﻪ )(‪ plot‬ﺑﺎ ‪ x,y‬اﻧﺠﺎم ﻣﻲدﻫﺪ ﺑﺎ ‪ theta,r‬اﻧﺠﺎم ﻣﻲدﻫﺪ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫ﻣﺨﺘﺼﺎت ﻗﻄﺒﻲ آراﻳﻪاي از ﺑﺮدار‪ -‬ﻫﻨﺪﺳﻲﻫﺎي اﻓﺰاﻳﻨﺪه ﺑﻪ ﺻﻮرت ﻣﺎرﭘﻴﭻ را ﺗﻌﺮﻳﻒ و ﺑﺰرﮔﻲ ﻫﺮ ﺑﺮدار‪ -‬ﻫﻨﺪﺳﻲ را‬
‫ﺑﺮﺣﺴﺐ زاوﻳﻪاش رﺳﻢ ﻣﻲﻛﻨﻴﻢ )ﺷﻜﻞ ‪.(12-5‬‬
‫;)‪>> tet = linspace(0, 2*pi, 40‬‬
‫;)‪>> r = linspace(0,10,40‬‬
‫)‪>> polar(tet,r‬‬

‫ﺷﻜﻞ ‪12-5‬‬

‫)(‪compass‬‬ ‫ﻧﻤﻮدار ﻋﻘﺮﺑﻪ اي‪ ،‬دﺳﺘﻮر‬


‫دﺳﺘﻮر )‪ compass(x,y‬ﻳﻚ ﺑﺮدار‪ -‬ﻫﻨﺪﺳﻲ ﺑﺎ ﻃﻮل و ﻋﺮض ﻗﺎﺋﻢ ‪ x,y‬را درون ﻣﺨﺘﺼﺎت ﻗﻄﺒﻲ ﻧﻤﺎﻳﺶ ﻣﻲدﻫﺪ‪.‬‬
‫از اﻳﻦ ﻧﻤﻮدار ﺑﺮاي ﻧﻤﺎﻳﺶ ﻫﻨﺪﺳﻲ اﻋﺪاد ﻣﺨﺘﻠﻂ ﻧﻴﺰ اﺳﺘﻔﺎده ﻣﻲﺷﻮد‪.‬‬
‫ﻣﺜﺎل ﻫﺎ‪:‬‬
‫ﺑﺮدار‪ -‬ﻫﻨﺪﺳﻲ ﺷﺶ ﻧﻘﻄﻪ‬
‫ﺑﺮاي دﻳﺪن دﺳﺘﻮرات و ﺗﺮﺳﻴﻢ ﺑﻪ ﺷﻜﻞ ‪ 13-5‬ﻣﺮاﺟﻌﻪ ﻛﻨﻴﺪ‪.‬‬
‫ﻣﺨﺘﺼﺎت ﻗﺎﺋﻢِ ﺑﺮدار‪ -‬ﻫﻨﺪﺳﻲﻫﺎﺋﻲ ﺑﺎ ده ﻋﻨﺼﺮ زﻳﺎد ﺷﻮﻧﺪه‪.‬‬
‫ﺑﺮاي دﻳﺪن دﺳﺘﻮرات و ﺗﺮﺳﻴﻢ ﺑﻪ ﺷﻜﻞ ‪ 14-5‬ﻣﺮاﺟﻌﻪ ﻛﻨﻴﺪ‪.‬‬

‫‪59‬‬
‫‪>> x = [-5 4 -4.4 2 ...‬‬
‫;]‪5.5 6‬‬
‫‪>> y = [6 3 2 -2.2 ...‬‬
‫;]‪6.6 -3‬‬
‫)‪>> compass(x,y‬‬

‫ﺷﻜﻞ ‪13-5‬‬

‫‪>> tet = ...‬‬


‫;)‪linspace(0, 2*pi, 10‬‬
‫;)‪>> r = linspace(0,10,10‬‬
‫;)‪>> [x y] = pol2cart(tet,r‬‬
‫)‪>> compass(x,y‬‬

‫ﺷﻜﻞ ‪14-5‬‬

‫)(‪compass‬‬ ‫ﻧﻤﺎﻳﺶ ﻫﻨﺪﺳﻲ ﻋﺪد ﻣﺨﺘﻠﻂ ﺑﺎ‬


‫ﺑﺮاي ﻧﻤﺎﻳﺶ ﺑﺮدار‪ -‬ﻫﻨﺪﺳﻲِ اﻋﺪاد ﻣﺨﺘﻠﻂ از دﺳﺘﻮر )(‪ compass‬اﺳﺘﻔﺎده ﻣﻲﻛﻨﻴﻢ‪ .‬دﺳﺘﻮر )‪ compass(z‬ﻣﻌﺎدل‬
‫))‪ compass(real(z),imag(z‬ﻣﻲﺑﺎﺷﺪ‪.‬‬
‫ﻣﺜﺎل ﻫﺎ‪:‬‬
‫ﻧﻤﺎﻳﺶ ﺑﺮدار‪-‬ﻫﻨﺪﺳﻲ ﻓﺮم ﻗﺎﺋﻢ‬
‫‪>> M = ...‬‬
‫‪[-5+6*i,‬‬ ‫;‪3*j+4‬‬
‫‪-4.4+2*i,‬‬ ‫;‪2-2.2*i‬‬
‫;] ‪5.5+6.6*j, 6-3*j‬‬
‫)‪>> compass(M‬‬

‫ﺷﻜﻞ ‪15-5‬‬

‫‪60‬‬
‫ﻧﻤﺎﻳﺶ ﺑﺮدرا‪ -‬ﻫﻨﺪﺳﻲ ﻓﺮم ﻗﻄﺒﻲ‬
‫;‪>> tet = 0:pi/5:pi‬‬
‫))‪>> compass(exp(j*tet‬‬

‫ﺷﻜﻞ ‪16-5‬‬

‫)(‪plot‬‬ ‫رﺳﻢ ﻋﺪد ﻣﺨﺘﻠﻂ ﺑﺎ‬


‫اﮔﺮ ‪ zp‬ﻣﺨﺘﻠﻂ ﺑﺎﺷﺪ‪ plot(zp) ،‬ﻗﺴﻤﺖ ﻣﻮﻫﻮﻣﻲ آنرا ﺑﺮﺣﺴﺐ ﻗﺴﻤﺖ ﺣﻘﻴﻘﻲ رﺳﻢ ﻣﻲﻛﻨﺪ‪ .‬اﮔﺮ ‪ zp‬ﻣﺨﺘﻠﻂ و ‪t‬‬
‫ﻳﻚ ﻣﺘﻐﻴﺮ ﺣﻘﻴﻘﻲ ﺑﺎﺷﺪ‪ ،‬ﻋﺒﺎرت )‪ plot(t,zp‬ﻗﺴﻤﺖ ﺣﻘﻴﻘﻲ ‪ zp‬را ﺑﺮﺣﺴﺐ ‪ t‬رﺳﻢ ﻛﺮده و از ﻗﺴﻤﺖ ﻣﻮﻫﻮﻣﻲ‬
‫ﺻﺮفﻧﻈﺮ ﻣﻲﺷﻮد‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫‪jθ‬‬
‫‪ zp= re‬را ﺑﺮﺣﺴﺐ ﻗﺴﻤﺖ ﺣﻘﻴﻘﻲ آن رﺳﻢ ﻛﻨﺪ‪) .‬ﺗﻮﺟﻪ‬ ‫ﻗﺴﻤﺖ ﻣﻮﻫﻮﻣﻲ ﺗﺎﺑﻊ ﻣﺨﺘﻠﻂ)‪= r(cosθ+jsinθ‬‬
‫ﻛﻨﻴﺪ ﻛﻪ ﻣﻨﺤﻨﻲ ﺳﻴﻨﻮس )ﻗﺴﻤﺖ ﻣﻮﻫﻮﻣﻲ( ﺑﺮ ﺣﺴﺐ ﻛﺴﻴﻨﻮس )ﻗﺴﻤﺖ ﺣﻘﻴﻘﻲ( ﻳﻚ داﻳﺮه ﻣﺜﻠﺜﺎﺗﻲ ﺑﺎ ﺷﻌﺎع ‪ r‬اﺳﺖ‬
‫)‪. (cos2θ + sin2θ = r2‬‬
‫;)‪>> tet = linspace(0,2*pi,40‬‬
‫;‪>> r = 3‬‬
‫;)‪>> zp = r*exp(j*tet‬‬
‫))‪% or zp=r*(cos(tet)+j*sin(tet‬‬
‫)‪>> plot(zp‬‬
‫‪% Sine versus Cisine‬‬
‫‪% is a circle‬‬
‫‪>> axis equal‬‬

‫ﺷﻜﻞ ‪17-5‬‬

‫دﺳﺘﻮر‪ axis equal‬ﻣﻘﻴﺎس ﻋﺮﺿﻲ و ﻃﻮﻟﻲ ﻣﺎﻧﻴﺘﻮر را )ﻛﻪ ﻣﻌﻤﻮﻻٌ ‪ 6‬ﺑﻪ ‪ 5‬اﺳﺖ( ﻳﻜﺴﺎن ﻣﻲﻛﻨﺪ وﮔﺮﻧﻪ داﻳﺮه‪ ،‬ﺑﻴﻀﻲ‬
‫دﻳﺪه ﻣﻲﺷﻮد‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫‪ zp‬ﻣﺜﺎل ﻓﻮق و ﻗﺴﻤﺖ ﺣﻘﻴﻘﻲ آن را ﺑﺮﺣﺴﺐ ‪ tet‬رﺳﻢ ﻣﻲﻛﻨﻴﻢ‪ .‬ﻧﺘﻴﺠﻪ ﻫﺮ دو ﺗﺮﺳﻴﻢ ﻣﻨﺤﻨﻲﻫﺎي ﻛﺴﻴﻨﻮﺳﻲ ﻣﺸﺎﺑﻪ اﺳﺖ‬
‫)اﻣﺘﺤﺎن ﻛﻨﻴﺪ(‪.‬‬

‫‪61‬‬
‫)(‪ezplot‬‬ ‫‪ 6-5‬رﺳﻢ آﺳﺎن ﺑﺎ‬
‫در ﻣﺘﻠﺐ ﺑﻌﻀﻲ از ﺗﻮاﺑﻊ ﺑﺪون ﻣﻘﺪار دﻫﻲ ﺑﻪ ﻣﺘﻐﻴﺮ ﺑﺎ ﺗﻮاﺑﻌﻲ ﻣﺎﻧﻨﺪ))‪ ezplot(f(x‬رﺳﻢ ﻣﻲﺷﻮﻧﺪ‪ezplot() .‬‬
‫داﻣﻨﻪ ﻣﺘﻐﻴﺮ را ﺑﻪ ﺻﻮرت ﭘﻴﺶﻓﺮض ‪ -2π < x < +2π‬ﻗﺮار ﻣﻲدﻫﺪ‪ .‬ﻓﺮم ])‪ ezplot(f(x),[min,max‬ﺑﺮاي‬
‫ﺗﻌﻴﻴﻦ دﺳﺘﻲ داﻣﻨﻪ ﻣﺘﻐﻴﺮ ﺑﻪﻛﺎر ﻣﻲرود‪ .‬آرﮔﻮﻣﺎن )(‪ ezplot‬ﻛﻪ ﻳﻚ ﺗﺎﺑﻊ اﺳﺖ‪ ،‬ﺑﻪ ﺻﻮرت رﺷﺘﻪ‪ ،‬ﮔﻴﺮه ﺗﺎﺑﻊ‪ ،‬ﻳﺎ ﺗﺎﺑﻊ‬
‫ﺳﻄﺮي‪ inline‬ﻧﻮﺷﺘﻪ ﻣﻲﺷﻮد )اﻳﻦﻫﺎ روشﻫﺎﺋﻲ ﻫﺴﺘﻨﺪ ﻛﻪ ﺑﺮاي ارﺳﺎل ﻳﻚ ﺗﺎﺑﻊ ﺑﻪ ﺗﺎﺑﻊ دﻳﮕﺮ در ﻣﺘﻠﺐ وﺟﻮد دارﻧﺪ(‪.‬‬
‫ﺑﺮاي اﻃﻼع ﺑﻴﺸﺘﺮ در ﻣﻮرد آرﮔﻮﻣﺎن ﺗﺎﺑﻌﻲ ﻳﺎ ﺗﺎﺑﻊِ ﺗﺎﺑﻊ ﺑﻪ ﻣﺒﺎﺣﺚ ﺑﻌﺪي ﻣﺮاﺟﻌﻪ ﻛﻨﻴﺪ‪.‬‬
‫آﺷﻜﺎر ‪explicit functions‬‬ ‫رﺳﻢ ﺗﻮاﺑﻊ‬
‫اﻳﻦﮔﻮﻧﻪ ﺗﻮاﺑﻊ ﺑﻪﺻﻮرت )‪ y = f(x‬ﻣﻲآﻳﻨﺪ ﻣﺜﻞ‪ . y = -2x2 + 3 :‬ﺗﻮاﺑﻊ آﺷﻜﺎر را ﻣﻲﺗﻮان ﺑﺎ )(‪ plot‬رﺳﻢ‬
‫ﻛﺮد‪ ،‬اﻣﺎ رﺳﻢ ﺑﻌﻀﻲ از اﻳﻦ ﺗﻮاﺑﻊ ﻣﺜﻞ )‪ y = tan(x‬ﻛﻪ در داﻣﻨﻪ ﻣﻌﻤﻮل ‪ x‬ﻣﻘﺎدﻳﺮ ﺑﺰرگ ﭘﻴﺪا ﻣﻲﻛﻨﻨﺪ ﺑﻮﺳﻴﻠﻪ‬
‫)(‪ plot‬راﺣﺖ ﻧﻴﺴﺖ )ﺑﻪ ﻣﺜﺎل ﻣﺮاﺟﻌﻪ ﻧﻤﺎﺋﻴﺪ(‪ .‬اﻣﺎ )(‪ ezplot‬اﻳﻦﮔﻮﻧﻪ ﺗﻮاﺑﻊ را ﻫﻮﺷﻤﻨﺪاﻧﻪ و ﺑﻪراﺣﺘﻲ رﺳﻢ ﻣﻲ‪-‬‬
‫ﻛﻨﺪ‪ .‬داﻣﻨﻪ ﭘﻴﺶﻓﺮض ﺑﺎ ﮔﺎم ﻣﻨﺎﺳﺐ ﻧﻘﻄﻪﮔﺬاريﺷﺪه‪ ،‬ﻓﺮﻣﻮل ﺗﺎﺑﻊ‪ ،‬و ﺑﺮﭼﺴﺐ ﻣﺤﻮر ‪ x‬ﻧﻴﺰ ﺧﻮدﺑﻪﺧﻮد ﻧﻮﺷﺘﻪ ﻣﻲﺷﻮﻧﺪ‪.‬‬
‫‪implicit functions‬‬ ‫رﺳﻢ ﺗﻮاﺑﻊ ﺿﻤﻨﻲ‬
‫‪2‬‬ ‫‪2‬‬
‫‪ . x‬ﻛﺎرﺑﺮد )(‪plot‬‬ ‫‪+ y‬‬ ‫ﺗﻮاﺑﻊ ﺿﻤﻨﻲ ﺗﻮاﺑﻌﻲ ﻫﺴﺘﻨﺪ ﻛﻪ در آنﻫﺎ ‪ x‬و ‪ y‬ﺑﻪ ﺻﻮرت ﻣﺨﻠﻮط ﻣﻲآﻳﻨﺪ‪ ،‬ﻣﺜﻞ‪= 1 :‬‬
‫ﺑﻪ ﻃﻮر ﻣﺴﺘﻘﻴﻢ در اﻳﻦﮔﻮﻧﻪ ﻣﻮارد ﻧﺘﻴﺠﻪ ﻣﻄﻠﻮب ﻧﻤﻲدﻫﺪ‪ ،‬اﻣﺎ )(‪ ezplot‬ﺑﻪراﺣﺘﻲ از ﻋﻬﺪه ﺑﺮﻣﻲآﻳﺪ‪ .‬وﻗﺘﻲ ﻳﻚ ﺗﺎﺑﻊ‬
‫ﺿﻤﻨﻲ ﺑﻪ )(‪ ezplot‬ارﺳﺎل ﺷﻮد درﻃﺮف راﺳﺖ ﻣﻌﺎدﻟﻪ ﺧﻮدﺑﻪﺧﻮد ﺻﻔﺮ ﻗﺮار ﻣﻲﮔﻴﺮد‪.‬‬
‫رﺳﻢ ﺗﻮاﺑﻊ ﭘﺎراﻣﺘﺮﻳﻚ‬
‫اﮔﺮ ‪ f‬و ‪ g‬ﺗﻮاﺑﻊ ‪ t‬ﺑﺎﺷﻨﺪ‪ ،‬ﺑﺎ )‪ ezplot(f,g‬ﻣﻲﺗﻮان آن دو را ﺑﺮﺣﺴﺐ ﻳﻚدﻳﮕﺮ رﺳﻢ و ﭘﺎراﻣﺘﺮ ‪ t‬را ﺣﺬف ﻛﺮد‪.‬‬
‫داﻣﻨﻪ ﭘﻴﺶﻓﺮض ‪ t‬ﻓﺎﺻﻠﻪ ‪ 0, π‬اﺳﺖ‪.‬‬
‫ﻣﺜﺎل ﻫﺎ‪:‬‬
‫ﺗﺎﺑﻊ آﺷﻜﺎر‬
‫ﺗﺎﺑﻊ)‪ y = tan(x‬را ﺑﺮ ﺣﺴﺐ ‪ x‬ﺑﺎ )(‪ plot‬و )(‪ ezplot‬رﺳﻢ ﻛﻨﻴﺪ‪.‬‬
‫)')‪>> ezplot('tan(x‬‬
‫;)‪>> x = linspace(-2*pi, 2*pi‬‬ ‫))‪plot(x, tan(x‬‬

‫)')‪ezplot('tan(x‬‬ ‫))‪plot(x,tan(x‬‬
‫ﺷﻜﻞ ‪18-5‬‬

‫‪62‬‬
‫ﺗﺎﺑﻊ ﺿﻤﻨﻲ‬
‫ﻳﻚ داﻳﺮه ﺑﺎ ﺷﻌﺎع ‪ 6‬را ﺑﺎ )(‪ ezplot‬رﺳﻢ ﻛﻨﻴﺪ‪.‬‬
‫;'‪>> fc = 'x^2 + y^2 - 36‬‬
‫)‪>> ezplot(fc‬‬
‫‪>> axis equal‬‬

‫ﺷﻜﻞ ‪19-5‬‬

‫ﺗﺎﺑﻊ ﭘﺎراﻣﺘﺮﻳﻚ‬
‫;'‪>> f1 = 'cos(t)^3‬‬
‫;'‪>> f2 = 'sin(t)^3‬‬
‫)‪>> ezplot(f2,f1‬‬

‫ﺷﻜﻞ ‪20-5‬‬

‫)(‪fplot‬‬ ‫‪ 7-5‬ﺗﺎﺑﻊ داﺧﻠﻲ‬


‫ﻓﺮم ﻛﻠﻲ اﻳﻦ ﺗﺎﺑﻊ ﭼﻨﻴﻦ اﺳﺖ)‪ fun . fplot(fun,lims‬ﻳﻚ ﺗﺎﺑﻊ آﺷﻜﺎر از ‪ x‬اﺳﺖ ﻛﻪ ﻫﻤﺎﻧﻨﺪ آرﮔﻮﻣﺎن‬
‫)(‪ ezplot‬ﺑﺎﻳﺪ ﺑﻪ ﺻﻮرت ﻳﻚ ﻋﺒﺎرت رﺷﺘﻪاي‪ ،‬ﮔﻴﺮهي ﺗﺎﺑﻊ‪ ،‬ﻳﺎ ﺗﺎﺑﻊ ‪ inline‬ﺑﺎﺷﺪ )ﺑﺮاي اﻃﻼع ﺑﻴﺸﺘﺮ در ﻣﻮرد‬
‫آرﮔﻮﻣﺎن ﺗﺎﺑﻌﻲ ﺑﻪ ﻣﺒﺎﺣﺚ ﺑﻌﺪي ﻣﺮاﺟﻌﻪ ﻛﻨﻴﺪ(‪ lims .‬ﻣﺤﺪوده ﻣﺤﻮرﻫﺎ را ﺗﻌﻴﻴﻦ ﻣﻲﻛﻨﺪ‪ fun .‬ﻣﻲﺗﻮاﻧﺪ ﻳﻚ ﺑﺮدار از‬
‫ﺗﻮاﺑﻊ ﮔﻮﻧﺎﮔﻮن‪ ،‬ﻳﺎ ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﺑﺎﺷﺪ ﻛﻪ ﻫﺮ ﺳﺘﻮن آن ﻳﻚ ﺗﺎﺑﻊ ﺟﺪاﮔﺎﻧﻪ اﺳﺖ‪ lims .‬ﻳﺎ ﺑﺎﻳﺪ ﺑﻪﺻﻮرت‬
‫]‪[XMIN XMAX‬ﺑﺎﺷﺪ ﻳﺎ ﺑﻪﺻﻮرت ]‪ .[XMIN XMAX YMAX YMIN‬در ﺻﻮرت اول ﻣﺤﺪوده ﻣﺤﻮر ﻋﻤﻮدي‬
‫ﺧﻮدﺑﻪﺧﻮد ﺗﻌﻴﻴﻦ ﺧﻮاﻫﺪ ﺷﺪ‪ ،‬در ﺻﻮرت دوم ﻣﺤﺪوده ﻣﺤﻮر ﻋﻤﻮدي دﺳﺘﻲ ﺗﻌﻴﻴﻦ ﻣﻲﺷﻮد‪.‬‬
‫)(‪ fplot‬ﻣﻘﺎدﻳﺮ ﻧﺎﻫﻢﮔﻮنِ ﺗﻮاﺑﻊ را ﻃﻮري ﺗﻨﻈﻴﻢ ﻣﻲﻛﻨﺪ ﻛﻪ ﺗﺮﺳﻴﻢ ﺷﻜﻴﻠﻲ ﺣﺎﺻﻞ ﺷﻮد‪ ،‬ﺑﻪﺧﺼﻮص وﻗﺘﻲ ﺗﻮاﺑﻊ داراي‬
‫ﻣﻘﺎدﻳﺮ دور ازﻫﻢ ﺑﺎﺷﺪ ‪0‬ﺷﻜﻞ ‪.(21-5‬‬

‫‪63‬‬
‫ﻣﺜﺎل‪:‬‬
‫ﻣﻨﺤﻨﻲﻫﺎي ﺳﻴﻨﻮس‪ ،‬ﻛﺴﻴﻨﻮس‪ ،‬و ﺗﺎﻧﮋاﻧﺖ را ﺑﺮ روي ﻳﻚ ﮔﺮاف ﺑﺎ )(‪ plot‬و )(‪ fplot‬ﻧﻤﺎﻳﺶ ﻣﻲدﻫﻴﻢ‪ .‬ﭼﻮن‬
‫ﺗﻐﻴﻴﺮات ﺗﺎﻧﮋاﻧﺖ ﻧﺴﺒﺖ ﺑﻪ ﺳﻴﻨﻮس و ﻛﺴﻴﻨﻮس ﺳﺮﻳﻊ اﺳﺖ‪ ،‬ﺑﺎ )(‪ plot‬ﻣﻨﺤﻨﻲ ﺧﻮﺑﻲ ﻧﺨﻮاﻫﻴﻢ داﺷﺖ‪.‬‬
‫>>‬ ‫;)‪x = linspace(-2*pi, 2*pi, 20‬‬
‫>>‬ ‫))‪figure(1), plot(x,tan(x),x,sin(x),x,cos(x‬‬
‫>>‬ ‫;'])‪fs = '[tan(t) sin(t) cos(t‬‬
‫>>‬ ‫)]‪figure(2), fplot(fs,[-2*pi 2*pi -5 5‬‬

‫)‪figure(1‬‬ ‫)‪figure(2‬‬

‫ﺷﻜﻞ ‪21-5‬‬

‫‪ 8-5‬وﻳﺮاﻳﺶ ﮔﺮاف‬
‫ﺗﻌﻴﻴﻦ ﻣﺤﺪوده ﻣﺤﻮرﻫﺎ‬
‫ﻣﺘﻠﺐ ﺧﻮد ﺑﻪ ﺧﻮد ﻣﻴﺰان ﻣﺤﻮرﻫﺎ را ﺗﻨﻈﻴﻢ ﻣﻲﻛﻨﺪ‪ ،‬اﻣﺎ ﺑﺎ دﺳﺘﻮر زﻳﺮ ﻣﻲﺗﻮان درﺟﻪ ﻣﺤﻮرﻫﺎ را ﺑﻪ دﻟﺨﻮاه ﻋﻮض ﻛﺮد‪:‬‬
‫) ]‪axis( [xmin, xmax, ymin, ymax‬‬
‫دﺳﺘﻮر ‪ axis auto‬درﺟﻪﮔﺬاري را ﺑﻪ ﺣﺎﻟﺖ ﻣﻌﻤﻮل ﺑﺮ ﻣﻲﮔﺮداﻧﺪ‪.‬‬
‫ﺗﻮري روي ﮔﺮاف از ﭘﻨﺠﺮه ﻓﺮﻣﺎن‬
‫ﺗﻜﺮار ‪ grid‬در ﭘﻨﺠﺮه ﻓﺮﻣﺎن ﺑﺮاي آوردوﺑ‪‬ﺮدِ ﺗﻮري روي ﮔﺮاف اﺳﺖ‪ .‬از ‪ grid on‬و ‪ grid off‬ﻫﻢ ﻣﻲﺗﻮان‬
‫اﺳﺘﻔﺎده ﻛﺮد )اﻣﺘﺤﺎن ﻛﻨﻴﺪ(‪.‬‬
‫ﺑﺮﭼﺴﺐ ﮔﺬاري ﺑﺎ ﻣﺎوس‬
‫)(‪ gtext‬اﻣﻜﺎن ﺑﺮﭼﺴﺐ ﮔﺬاري در ﻫﺮ ﻣﺤﻞ ﺗﺮﺳﻴﻢ را ﺑﺎ ﻛﻠﻴﻚ ﻣﺎوس ﻓﺮاﻫﻢ ﻣﻲﻛﻨﺪ‪ .‬ﺑﺮاي اﻣﺘﺤﺎن روي ﻳﻚ ﮔﺮاف‬
‫دﺳﺘﻮر )'‪ gtext('label‬را اﺟﺮا ﻛﺮده و ﺑﺎ ﺧﻂ ﻣﻮي اﻳﺠﺎد ﺷﺪه روي ﻧﻘﻄﻪاي از ﮔﺮاف ﻛﻠﻴﻚ ﻛﻨﻴﺪ‪.‬‬
‫‪RGB‬‬ ‫ﻣﺆﻟﻔﻪ ﻫﺎي‬
‫ﺟﺪول ﺷﻜﻞ ‪ 22-5‬ﺑﻌﻀﻲ از رﻧﮕﻬﺎﺋﻲ را ﻛﻪ از ﺗﺮﻛﻴﺐ ﺳﻪ رﻧﮓ اﺻﻠﻲ ﻗﺮﻣﺰ‪ ،‬ﺳﺒﺰ‪ ،‬آﺑﻲ ‪ RGB‬ﺑﻪ دﺳﺖ ﻣﻲآﻳﻨﺪ ﻧﺸﺎن ﻣﻲ‪-‬‬
‫دﻫﺪ‪ .‬ﺑﺮاي ﻣﺸﺎﻫﺪه اﻳﻦ ﺟﺪول ﻣﻨﻴﻮي ‪ Help_MATLAB Help‬را اﻧﺘﺨﺎب و در ﻟﺒﻪ ‪ Index‬ﻛﻠﻤﻪ ‪ RGB‬را ﺑﻨﻮﻳﺴﻴﺪ‪.‬‬
‫)(‪fill‬‬ ‫رﻧﮕﻲ ﻛﺮدن ﺑﺎ‬
‫ﺗﺼﻮﻳﺮ را رﺳﻢ و آنرا ﺑﺎ رﻧﮓ ﻣﻮرد ﻧﻈﺮ ﭘﺮ ﻣﻲﻛﻨﺪ )اﻣﺘﺤﺎن ﻛﻨﻴﺪ(‪.‬‬
‫ادﻳﺖ از روي ﭘﻨﺠﺮه ﮔﺮاف‬
‫ﺑﺎ زدن دﻛﻤﻪ‪ edit plot‬از ﻣﻴﻠﻪ اﺑﺰار ‪ tool bar‬ﻳﺎ اﻧﺘﺨﺎب ﻣﻨﻴﻮي ‪ Tools_Edit Plot‬ﭘﻨﺠﺮه‬

‫‪64‬‬
‫‪ Property Editor‬ﻇﺎﻫﺮ و اﻣﻜﺎن وﻳﺮاﻳﺶ دﺳﺘﻲ ﮔﺮاف ﻓﺮاﻫﻢ ﻣﻲﺷﻮد‪ .‬ﺑﺎ اﺳﺘﻔﺎده از اﻳﻦ ﭘﻨﺠﺮه ﻣﻲﺗﻮان ﺷﺎﺧﺼﻪ‪-‬‬
‫ﻫﺎي ﺻﻮرت ﮔﺮاف ‪ ، Surface‬ﻛﻪ ﻫﻤﺎن ﻣﻨﺤﻨﻲ ﻳﺎ ﺳﻄﺢ رﺳﻢ ﺷﺪه اﺳﺖ‪ ،‬و ﺷﺎﺧﺼﻪﻫﺎي ﻣﺤﻮرﻫﺎ )‪(Axes‬را ﺗﻐﻴﻴﺮ‬
‫داد )اﻣﺘﺤﺎن ﻛﻨﻴﺪ(‪.‬‬
‫رﻧﮓ ﺣﺎﺻﻞ‬ ‫ﻗﺮﻣﺰ‬ ‫ﺳﺒﺰ‬ ‫آﺑﻲ‬
‫ﺳﻴﺎه‬ ‫‪0‬‬ ‫‪0 0‬‬

‫ﺳﻔﻴﺪ‬ ‫‪1‬‬ ‫‪1 1‬‬

‫ﻗﺮﻣﺰ‬ ‫‪1‬‬ ‫‪0 0‬‬

‫ﺳﺒﺰ‬ ‫‪0‬‬ ‫‪1 0‬‬

‫آﺑﻲ‬ ‫‪0‬‬ ‫‪0 1‬‬

‫زرد‬ ‫‪1‬‬ ‫‪1 0‬‬

‫ارﻏﻮاﻧﻲ‬ ‫‪1‬‬ ‫‪0 1‬‬

‫ﻓﻴﺮوزهاي‬ ‫‪0‬‬ ‫‪1 1‬‬

‫‪ 0.5‬ﺧﺎﻛﺴﺘﺮي‬ ‫‪0.5 0.5‬‬

‫‪ 0.5‬ﻗﺮﻣﺰ ﺗﻴﺮه‬ ‫‪0 0‬‬

‫ﻣﺴﻲ‬ ‫‪1 0.62 0.40‬‬

‫‪ 0.6‬ﻛﺒﻮد‬ ‫‪0.4‬‬ ‫‪0.8‬‬

‫ﺷﻜﻞ ‪22-5‬‬

‫‪graphics handles‬‬ ‫‪ 9-5‬ﮔﻴﺮه ﻫﺎي ﮔﺮاﻓﻴﻚ‬


‫ﻫﺮ ﮔﺮاف داراي ‪ 3‬ﻣﺆﻟﻔﻪ اﺳﺖ‪:‬‬
‫اﻟﻒ‪ -‬ﺷﻴﺊ ﻛﻪ ﺑﻪ ﺗﺮﺳﻴﻢ ﻳﺎ دﻛﻤﻪ ﻳﺎ ﻫﺮ ﻧﻮع ﺷﻴﺊ داﺧﻞ ﮔﺮاف ﮔﻔﺘﻪ ﻣﻲﺷﻮد‪.‬‬
‫ﻛﻠﻤﻪ ‪ (get handle to current object) gco‬ﮔﻴﺮه ﺷﻴﺊ را ﺑﺮﻣﻲﮔﺮداﻧﺪ‪.‬‬
‫ب‪ -‬ﻣﺤﻮرﻫﺎ‪ ،‬ﻛﻪ ﻣﺤﻮﻃﻪ درون ﻣﺤﻮرﻫﺎ )ﺻﻔﺤﻪ ﻣﺨﺘﺼﺎت( اﺳﺖ‪.‬‬
‫ﻛﻠﻤﻪ ‪ (get handle to current axes) gca‬ﮔﻴﺮه ﻣﺤﻮرﻫﺎ را ﺑﺮﻣﻲﮔﺮداﻧﺪ‪.‬‬
‫ج‪ -‬ﭘﻨﺠﺮه ﺗﺼﻮﻳﺮ ﻛﻪ ﻣﺠﻤﻮﻋﻪ ﮔﺮاف اﺳﺖ‪( get handle to current figure) gcf .‬ﮔﻴﺮه ﭘﻨﺠﺮه‬
‫ﺗﺼﻮﻳﺮ را ﺑﺮﻣﻲﮔﺮداﻧﺪ‪.‬‬
‫ﺷﺎﺧﺼﻪﻫﺎي ﻫﺮ ﮔﻴﺮه ﺑﺎ دﺳﺘﻮر)(‪ get‬ﺑﻪ دﺳﺖ ﻣﻲآﻳﺪ‪ .‬ﺑﺎ اﺳﺘﻔﺎده از اﻳﻦ ﮔﻴﺮهﻫﺎ ﻣﻲﺗﻮان ﺷﺎﺧﺼﻪﻫﺎي ﮔﺮاﻓﻴﻚ را ﺑﺎ‬
‫دﺳﺘﻮر)(‪ set‬ﺑﻪ دلﺧﻮاه ﺗﻨﻈﻴﻢ ﻛﺮد‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫روي ﻣﻨﺤﻨﻲ ﻳﻚ ﮔﺮاف ﻛﻠﻴﻚ و ﺷﺎﺧﺼﻪﻫﺎي ‪ properties‬ﮔﻴﺮه را ﺑﺎ دﺳﺘﻮر )(‪ get‬ﻣﺸﺎﻫﺪه ﻣﻲﻛﻨﻴﻢ‪.‬‬
‫)‪>> get(gco‬‬ ‫]‪Color = [0 0 1‬‬
‫‪EraseMode = normal‬‬
‫‪LineStyle = -‬‬
‫]‪LineWidth = [0.5‬‬
‫‪Marker = none‬‬
‫‪...‬‬
‫ﺳﭙﺲ ﺑﻌﻀﻲ از ﺷﺎﺧﺼﻪﻫﺎرا ﺑﺎ دﺳﺘﻮر )(‪ set‬ﺗﻨﻈﻴﻢ و ﻧﺘﺎﻳﺞ را ﻣﻼﺣﻈﻪ ﻛﻨﻴﺪ‪ .‬ﺑﺮاي ﺣﺼﻮل ﻧﺘﻴﺠﻪ روي ﺷﻴﺊ ﻣﻮرد ﻧﻈﺮ‬
‫ﻛﻠﻴﻚ و آنرا ﺑﻪ ﺷﻴﺊ ﻓﻌﺎل ﺗﺒﺪﻳﻞ ﻛﻨﻴﺪ‪.‬ﻳﺮاي ﺑﻬﺘﺮ دﻳﺪن ﺷﻴﺊ ﻓﻌﺎل ﮔﺰﻳﻨﻪ ‪ edit plot‬را از ﻣﻴﻠﻪ اﺑﺰار اﻧﺘﺨﺎب ﻛﻨﻴﺪ‪.‬‬
‫)]‪>> set(gca, 'color', [1 1 0.5‬‬

‫‪65‬‬
‫)]‪>> set(gcf, 'color', [1 0.8 0.4‬‬
‫)'‪>> set(gco, 'marker', 'o‬‬
‫)‪>> set(gco, 'linewidth', 4‬‬
‫‪ 10-5‬ﺗﻤﺮﻳﻦ‬
‫‪ -1‬ﻳﻚ ﻣﻨﺤﻨﻲ ﻣﺜﻠﺜﺎﺗﻲ را ﺑﺎ ﻫﺮ ﻳﻚ از اﻳﻦ ﻓﺮمﻫﺎ رﺳﻢ ﻛﻨﻴﺪ‬
‫)'‪. plot(x,y,y,x,'rx') , plot(x,y,x,y,'rx‬‬
‫‪ -2‬ﻣﻘﺎدﻳﺮ )‪ log10(x‬را ﺑﻪ ازاي ‪ x = 0.1: 0.1: 1‬را ﺑﻪ ﺻﻮرت ﻳﻚ ﺑﺮداردر ﻳﻚ ﻓﺎﻳﻞ ﻣﺘﻦ ﻧﮕﻪ‪-‬‬
‫داري ﻛﺮده‪ ،‬ﭘﺲ از ﺑﺎر ﻛﺮدن آن ﻓﺎﻳﻞ ﻣﻨﺤﻨﻲ ﻣﺮﺑﻮﻃﻪ را رﺳﻢ ﻛﻨﻴﺪ‪.‬‬
‫‪ -3‬در ﻳﻚ ﻣﺪار ﺳﺮي ‪ R=5,C=100e-6,L=4e-3‬و ‪ emf‬ورودي ‪ 2‬وﻟﺖ اﺳﺖ‪ .‬ﺷﺪت ﺟﺮﻳﺎن را در‬
‫ﻣﺤﺪوده ﺻﻔﺮ ﺗﺎ ‪ 2000‬ﻫﺮﺗﺰ رﺳﻢ ﻛﻨﻴﺪ‪.‬‬
‫‪ -4‬ﺗﻮاﺑﻊ زﻳﺮ را ﺑﻪ ﺻﻮرت ﺣﺬف ﭘﺎراﻣﺘﺮ ﺑﺎ )(‪ ezplot‬رﺳﻢ ﻛﻨﻴﺪ‪.‬‬
‫‪sin(3*t)*cos(t),‬‬ ‫')‪sin(3*t)*sin(t‬‬ ‫]‪, range [0,pi‬‬
‫‪t*cos(t),‬‬ ‫')‪t*sin(t‬‬ ‫]‪,range [0,4*pi‬‬
‫‪ -5‬ﻣﺨﺘﺼﺎت ﻗﻄﺒﻲ آراﻳﻪاي ده ﻋﻨﺼﺮي از ﺑﺮدار‪ -‬ﻫﻨﺪﺳﻲﻫﺎي ﻫﻢﻃﻮل وﭼﺮﺧﻨﺪه ﺑﻪ ﺻﻮرت ﻣﺪور را ﺗﻌﺮﻳﻒ و‬
‫ﺑﺰرﮔﻲ ﻫﺮ ﺑﺮدار‪ -‬ﻫﻨﺪﺳﻲ را ﺑﺮﺣﺴﺐ زاوﻳﻪاش رﺳﻢ ﻛﻨﻴﺪ‪ .‬ﻣﺨﺘﺼﺎت ﻗﺎﺋﻢِ اﻳﻦ ﺑﺮدار‪ -‬ﻫﻨﺪﺳﻲﻫﺎ را ﺑﻪ دﺳﺖ‬
‫آورده‪ ،‬آنﻫﺎ را ﺑﺎ دﺳﺘﻮر )(‪ compass‬در ﻣﺨﺘﺼﺎت ﻗﻄﺒﻲ رﺳﻢ ﻛﻨﻴﺪ‪.‬‬
‫‪ -6‬ﺑﺮاي ﺗﺎﺑﻊ ‪ ، y1 = sinα‬ﻣﻘﺎدﻳﺮ ‪ y1‬را ﺑﺮﺣﺴﺐ ﭼﻨﺪ ﻣﻘﺪار ‪ α‬روي ﻣﺨﺘﺼﺎت ﻗﻄﺒﻲ ﻧﺸﺎن داده و ﺑﺎ ﺟﺪول‬
‫‪ y1‬ﺑﺮﺣﺴﺐ ‪ α‬ﻣﻄﺎﺑﻘﺖ ﻛﻨﺪ‪.‬‬
‫‪ -7‬ﻣﻨﺤﻨﻲ ﻳﻚ ﻣﻌﺎدﻟﻪ درﺟﻪ دو )ﺳﻬﻤﻲ( را ﺑﺮ ﻣﺨﺘﺼﺎت ﻗﺎﺋﻢ و ﺑﺮ ﻣﺨﺘﺼﺎت ﻗﻄﺒﻲ رﺳﻢ ﻛﻨﻴﺪ‪.‬‬
‫‪sinx‬‬
‫را ﺑﺎ )(‪ ezplot‬رﺳﻢ ﻛﻨﻴﺪ‪.‬‬ ‫‪ -8‬ﺗﺎﺑﻊ‬
‫‪x‬‬
‫‪1‬‬ ‫‪1‬‬
‫‪ -9‬ﺗﺎﺑﻊ ‪ y = sin‬را ﺑﺎ )(‪ fplot‬رﺳﻢ ﻛﻨﻴﺪ‪ .‬راﻫﻨﻤﺎ‪ sin :‬وﻗﺘﻲ ﺑﻪ ﻳﻚ رﺷﺘﻪ ﻧﺴﺒﺖ داده ﻣﻲﺷﻮد‬
‫‪x‬‬ ‫‪x‬‬
‫)‪ sin(1/x‬ﻧﻮﺷﺘﻪ ﺷﻮد‪ ،‬ﻧﻪ )‪sin(1./x‬‬
‫‪ -10‬ﻧﻮﻳﺰ ﺗﻮزﻳﻊ‪ -‬ﻳﻚﻧﻮاﺧﺘﻲ ﺑﺎ ﻓﺮﻛﺎﻧﺲﻫﺎي ﺑﻴﻦ ‪ 1000‬ﺗﺎ ‪ 10000‬اﻳﺠﺎد ﻛﻨﻴﺪ و ﻧﻤﻮدار آن را در ﺣﻮزه ﻓﺮﻛﺎﻧﺲ‬
‫ﻧﻤﺎﻳﺶ دﻫﻴﺪ‪.‬‬
‫‪ -11‬ﭼﻨﺪ ﺗﺎﺑﻊ ﻣﺜﻠﺜﺎﺗﻲ را ﺑﻪوﺳﻴﻠﻪ)(‪ fill‬را ﺑﺎ رﻧﮓﻫﺎي زﻳﺮ اﻣﺘﺤﺎن ﻛﻨﻴﺪ‪:‬‬
‫'‪'r','g','b','c','m','y','w','k‬‬

‫‪66‬‬
‫ﻓﺼﻞ ‪ 6‬ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ‬
‫‪ 1-6‬ام‪ -‬ﻓﺎﻳﻞ‬
‫ﺗﺸﻜﻴﻞ ام‪ -‬ﻓﺎﻳﻞ‬
‫ﺑﺎ زدن دﻛﻤﻪ ‪ New M-File‬از ﻣﻴﻠﻪ اﺑﺰار ﻳﺎ اﻧﺘﺨﺎب ‪ File_New‬از ﻣﻴﻠﻪ ﻣﻨﻴﻮ ﻳﻚ ادﻳﺘﻮر ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﻣﻮﺳﻮم ﺑﻪ‬
‫ادﻳﺘﻮر ام‪ -‬ﻓﺎﻳﻞ ﺑﺎز ﻣﻲﺷﻮد‪ .‬ﺑﺮﻧﺎﻣﻪي ﺷﺎﻣﻞ ﻣﺠﻤﻮﻋﻪاي از دﺳﺘﻮرات اﺳﺖ ﻛﻪ در ‪ M-File‬ﻧﻮﺷﺘﻪ‪ ،‬و ﺑﺎ ﻧﺎم‬
‫‪) Filename.m‬ﺑﺪون ﻓﻀﺎي ﺧﺎﻟﻲ در ﺑﻴﻦ ﺣﺮوف( ﺿﺒﻂ ﻣﻲﺷﻮد‪ Filename) .‬ﻳﻚ ﻛﻠﻤﻪ اﺧﺘﻴﺎري اﺳﺖ(‪ .‬ﺑﺮاي‬
‫اﺟﺮاي ﺑﺮﻧﺎﻣﻪ ﻣﻲﺗﻮاﻧﻴﺪ ﭘﺲ از ﺿﺒﻂ‪ ،‬ﻧﺎمِ ام‪ -‬ﻓﺎﻳﻞ را ﻣﺎﻧﻨﺪ ﻳﻜﻲ از ﻓﺮاﻣﻴﻦ ﻣﺘﻠﺐ در ﭘﻨﺠﺮه ﻓﺮﻣﺎن ﺑﻨﻮﻳﺴﻴﺪ )ذﻛﺮ ﭘﺴﻮﻧﺪ ‪.m‬‬
‫ﺿﺮوري ﻧﻴﺴﺖ( ﻳﺎ از ﻣﻴﻠﻪ اﺑﺰار ‪ M-File‬دﻛﻤﻪ ‪ Save and Run‬را ﻛﻠﻴﻚ ﻛﻨﻴﺪ‪ .‬در ﻫﺮ ﺣﺎل ﻧﺘﻴﺠﻪ ﺑﻪ روي ﭘﻨﺠﺮه‬
‫ﻓﺮﻣﺎن ﺧﻮاﻫﺪ آﻣﺪ‪.‬‬
‫در ﻣﺜﺎلﻫﺎي ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﻧﺎم ام‪ -‬ﻓﺎﻳﻞ در اﺑﺘﺪاي ﺑﺮﻧﺎﻣﻪ ﺑﻪ ﺻﻮرت ﺗﻮﺿﻴﺢ )درﻣﻘﺎﺑﻞ ﻋﻼﻣﺖ ‪ (%‬ذﻛﺮ ﺷﺪه ﻛﻪ ﺑﻪ ﻫﻨﮕﺎم‬
‫اﺟﺮا از ﭘﻨﺠﺮه ﻓﺮﻣﺎن اﻳﻦ ﻧﺎم )ﻣﻌﻤﻮﻻً ﺑﺪون ﭘﺴﻮﻧﺪ ‪ (.m‬ﺗﺎﻳﭗ و اﺟﺮا ﻣﻲﺷﻮد‪ echo off .‬ﺑﺎﻋﺚ ﻗﻄﻊ ﻧﻤﺎﻳﺶ دﺳﺘﻮرات‬
‫ﺑﺮﻧﺎﻣﻪ ﺑﺮ روي ﭘﻨﺠﺮه ﻓﺮﻣﺎن ﻣﻲﺷﻮد‪.‬‬
‫ام‪ -‬ﻓﺎﻳﻞِ اﺳﻜﺮﻳﭙﺖ و ام‪-‬ﻓﺎﻳﻞِ ﺗﺎﺑﻌﻲ‬
‫ﻳﻚ ام‪ -‬ﻓﺎﻳﻞ ﻛﻪ ﺷﺎﻣﻞ ﺑﺮﻧﺎﻣﻪ )ﻣﺠﻤﻮﻋﻪاي از دﺳﺘﻮرات( ﺑﺎﺷﺪ ام‪ -‬ﻓﺎﻳﻞ اﺳﻜﺮﻳﭙﺖ ‪ Script M-File‬ﻧﺎم دارد و ﺑﺎ‬
‫وارد ﻛﺮدن ﻧﺎم آن از ﭘﻨﺠﺮه ﻓﺮﻣﺎن اﺟﺮا ﻣﻲﺷﻮد‪ .‬اﻣﺎ ام‪ -‬ﻓﺎﻳﻞ ﺗﺎﺑﻌﻲ ‪ Function M-File‬ﺷﺎﻣﻞ ﻳﻚ ﺗﺎﺑﻊ ﻛﺎرﺑﺮ‪-‬‬
‫ﺗﻌﺮﻳﻒ اﺳﺖ و ﻣﻌﻤﻮﻻً از داﺧﻞ ﺑﺮﻧﺎﻣﻪﻫﺎي دﻳﮕﺮ ﺻﺪا ‪ call‬زده ﻣﻲﺷﻮد‪ .‬ﺑﺮاي اﻃﻼع ﺑﻴﺸﺘﺮ ﺑﻪ ﻣﺒﺤﺚ ام‪ -‬ﻓﺎﻳﻞ ﺗﺎﺑﻌﻲ‬
‫ﻣﺮاﺟﻌﻪ ﺷﻮد‪ .‬ﺗﺎ ﻗﺒﻞ از اﻳﻦ ﻣﺒﺤﺚ ﻛﻠﻴﻪ ام‪ -‬ﻓﺎﻳﻞﻫﺎي ﻣﻮرد اﺳﺘﻔﺎده اﺳﻜﺮﻳﭙﺖ ﻫﺴﺘﻨﺪ‪.‬‬

‫‪ 2-6‬ﻣﺜﺎل ﻫﺎي رﻳﺎﺿﻲ‬


‫ﻣﺤﺎﺳﺒﻪ ﺳﺮﻣﺎﻳﻪ ﻧﻬﺎﺋﻲ ﺑﺮ ﺣﺴﺐ ﺳﺮﻣﺎﻳﻪ اوﻟﻴﻪ‬
‫ﺑﺮﻧﺎﻣﻪاي ﺑﺎ ﻧﺎم ‪ BankIn.m‬ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﺟﺪول ﺳﺮﻣﺎﻳﻪ ﻧﻬﺎﺋﻲ ﺑﺮ ﺣﺴﺐ ﺳﺮﻣﺎﻳﻪ اوﻟﻴﻪ )ﺗﻮﻣﺎن( را ﺑﺎ ﻧﺮخ ﺳﻮد ‪ r‬ﭘﺲ از ‪n‬‬
‫ﺳﺎل ﺑﺮاي ﭘﻨﺞ ﻧﻤﻮﻧﻪ از ﻣﻘﺪار ﺳﺮﻣﺎﻳﻪ اوﻟﻴﻪ ﺑﻪ دﺳﺖ دﻫﺪ‪.‬‬
‫‪% BankIn.m‬‬
‫;‪echo off‬‬
‫‪format bank‬‬
‫‪A = [75000 100000 300000‬‬
‫ﻣﻘﺎدﻳﺮ ﺳﺮﻣﺎﻳﻪ اوﻟﻴﻪ ‪500000 1000000]; %‬‬
‫‪nama = 75000.00‬‬ ‫‪177552.28‬‬
‫;‪r = 0.09‬‬ ‫‪100000.00‬‬ ‫‪236736.37‬‬
‫;‪n = 10‬‬ ‫‪300000.00‬‬ ‫‪710209.10‬‬
‫;‪B = A * (1+r)^n‬‬ ‫‪500000.00‬‬ ‫‪1183681.84‬‬
‫]'‪nama = [A' B‬‬ ‫‪1000000.00‬‬ ‫‪2367363.67‬‬
‫‪>> BankIn.m‬‬

‫در ﻣﺤﺎﺳﺒﻪ ﻣﻘﺪار ‪ B‬ﺑﻪ ﻋﻼﻣﺖ ﺿﺮب ﺑﺪون ﻧﻘﻄﻪ )ﺿﺮب ﺑﺮدار در ﺳﻜﺎﻟﺮ(‪ ،‬و اوﻟﻮﻳﺖ ﻋﻤﻠﮕﺮﻫﺎ ﺗﻮﺟﻪ ﻛﻨﻴﺪ‪.‬‬
‫ﺗﻘﺴﻴﻢ ﺻﻔﺮ ﺑﺮ ﺻﻔﺮ‬
‫‪Sin x‬‬
‫را در ﻓﺎﺻﻠﻪ ‪ -4π‬ﺗﺎ ‪ 4π‬رﺳﻢ ﻛﻨﻴﺪ‪.‬‬ ‫ﻣﻨﺤﻨﻲ‬
‫‪x‬‬

‫‪67‬‬
‫ ﻛﻪ ﺑﺮاي رﻓﻊ آن ﻣﻲﺗﻮان از روش ﺿﺮب ﺑﺮدار‬،‫ در ﻣﺨﺮج ﺧﻄﺎي ﺗﻘﺴﻴﻢ ﺻﻔﺮ ﺑﺮ ﺻﻔﺮ ﺣﺎدث ﻣﻲﺷﻮد‬x ‫ﺑﻪ ﻋﻠﺖ وﺟﻮد‬
.‫ اﺳﺘﻔﺎده ﻛﺮد‬eps ‫ﻣﻨﻄﻘﻲ در‬
%zbz.m
echo off;
x = -4*pi : pi/10 : 4*pi;
y = sin(x)./x;
% Warning: Divide by zero.
x = x + (x == 0)*eps ;
% equivalent to
% x = x + (~x)*eps
% this one is OK:
% x = x + eps
y = sin(x)./x; % No Warning
plot(x,y)

>> zbz

1-6 ‫ﺷﻜﻞ‬

‫ﺗﻘﺴﻴﻢ ﺑﺮ ﺻﻔﺮ‬
‫ ﻫﻤﻴﻦ ﻣﻨﺤﻨﻲ را ﺑﺎ اﺳﺘﻔﺎده از‬.‫ رﺳﻢ ﻛﻨﻴﺪ‬3π ‫ ﺗﺎ‬-3π ‫ را در ﻓﺎﺻﻠﻪ‬y = tan(x) ‫ ﻣﻨﺤﻨﻲ‬tn.m ‫در ﻳﻚ ﺑﺮﻧﺎﻣﻪ ﺑﺎ ﻧﺎم‬
.‫ ﻣﺠﺪداٌ رﺳﻢ ﻛﻨﻴﺪ‬y ‫ﺑﺮدار ﻣﻨﻄﻘﻲ در ﺣﺬف ﻣﻘﺎدﻳﺮ ﺑﺰرگ‬
%tn.m
echo off;
x = -3*pi/2:pi/100:3*pi/2;
y = tan(x);
figure(1)
plot(x,y)
% results in very large y's
% because of small x's
y = y .* (abs(y) < 1e6);
%removes large y's
figure(2)
plot(x,y) Figure(1)
% good looking graph

>> tn

2-6 ‫ﺷﻜﻞ‬
Figure(2)

68
‫رﺳﻢ ﭘﺎراﻣﺘﺮﻳﻚ‬
.‫ﺑﺎ اﺳﺘﻔﺎده از روش ﭘﺎراﻣﺘﺮﻳﻚ ﻳﻚ داﻳﺮه رﺳﻢ ﻛﻨﻴﺪ‬
x1 = 'cos(alf)';
y1 = 'sin(alf)';
ezplot(x1,y1)

3-6 ‫ﺷﻜﻞ‬

single ‫ﺗﻌﺮﻳﻒ ﻋﻤﻞ رﻳﺎﺿﻲ ﺑﺮاي ﻧﻮع‬


‫ ﺑﻪ ﺻﻮرت ﻳﻚ ﻣﺘﺪ‬single ‫ ﻣﺎ ﻋﻤﻞ ﺟﻤﻊ را ﺑﺮاي ﻧﻮع‬.‫ ﺗﻌﺮﻳﻒ ﻧﺸﺪه اﻧﺪ‬single ‫اﻏﻠﺐ ﻋﻤﻠﻴﺎت رﻳﺎﺿﻲ ﺑﺮاي ﻧﻮع‬
.‫( ﻗﺮار ﻣﻲدﻫﻴﻢ‬work ‫@ )ﻣﻨﺸﻌﺐ از دﻳﺮﻛﺘﻮري‬single ‫)ﺗﺎﺑﻊ( ﺗﻌﺮﻳﻒ و در دﻳﺮﻛﺘﻮري‬
>> si1 + si2
??? Error using ==> +
Function '+' is not defined for values of class 'single'.
function F = plas(a,b)
F = double(a)+double(b);
>> si1 = 2.2; si2 = 3.5;
>> plas(si1,si2)
ans = 5.7000
‫ ﻣﺜﺎل ﻫﺎي آﻣﺎري‬3-6
‫ﺗﺤﻠﻴﻞ آﻣﺎري ﻧﻤﺮات داﻧﺸﺠﻮﻳﺎن‬
.‫ﻧﻤﺮهﻫﺎي داﻧﺸﺠﻮﻳﺎن ﻳﻚ درس را در ﺑﺮداري ﻗﺮار داده و از ﻟﺤﺎظ آﻣﺎري آﻧﺎﻟﻴﺰ ﻛﺮده و ﻧﺘﺎﻳﺞ را ﻧﻤﺎﻳﺶ دﻫﻴﺪ‬
% Snum.m
scr = [12 14.56 18.44 16 8.3 19.1 18.23 16.67 5.3 7.8...
15 12.3 14.6 8.8 17 11.2 13.25 12 13 9 14 ...
11 12 11.5 15 15 7 4 6 11 12 8 9];
N1 = length(scr);N2 = sum(scr)/N1;N3 = mean(scr);
N4 = max(scr);N5 = min(scr);N6 = std(scr);
S1='Number of Stds';S2 = 'Class Average';
S3 = 'Class Mean';S4 = 'Class Max';
S5 = 'Class Min';S6 = 'Class Std';
fprintf('%-16s %7.3f\n%-16s %7.3f\n%-16s %7.3f\n%-16s %7.3f\n%-16s
%7.3f\n%-16s %7.3f\n',S1,N1,S2,N2,S3,N3,S4,N4,S5,N5,S6,N6);
>> Snum
Number of Stds 33.000
Class Average 12.062
Class Mean 12.062
Class Max 19.100
Class Min 4.000
Class Std 3.908

69
hist() ‫ﭘﻴﺸﻴﻨﻪ ﻧﮕﺎر‬
.(4-6 ‫ ﻇﺮف ﮔﻨﺠﺎﻧﺪه و ﻧﻤﺎﻳﺶ دﻫﻴﺪ )ﺷﻜﻞ‬100 ‫ ﻋﺪد ﺗﺼﺎدﻓﻲ ﺑﺎ ﺗﻮزﻳﻊ ﻧﺮﻣﺎل اﻳﺠﺎد ﻛﺮده و ﻛﻼٌ در‬50000
%hst.m
x = randn(1,50000);
hist(x,100)
>> hst

4-6 ‫ﺷﻜﻞ‬

‫ ﻣﺜﺎل ﻫﺎي ﻣﻜﺎﻧﻴﻚ‬4-6


projectile ‫آﻧﺎﻟﻴﺰ ﭘﺮﺗﺎﺑﻪ‬
‫ ﻣﺴﻴﺮ‬،‫ ﺛﺎﻧﻴﻪ‬8 ‫ در ﻓﺎﺻﻠﻪ زﻣﺎﻧﻲ ﺑﻴﻦ ﺻﻔﺮ و‬.‫ ﻣﺘﺮ ﺑﺮ ﺛﺎﻧﻴﻪ ﭘﺮﺗﺎب ﻣﻲﻛﻨﻴﻢ‬60 ‫ درﺟﻪ و ﺳﺮﻋﺖ اوﻟﻴﻪ‬45 ‫ﭘﺮﺗﺎﺑﻪاي را ﺑﺎ زاوﻳﻪ‬
.(5-6 ‫ و زاوﻳﻪ ﭘﺮﺗﺎﺑﻪ را ﺑﺮﺣﺴﺐ زﻣﺎن رﺳﻢ ﻛﻨﻴﺪ )ﺷﻜﻞ‬،‫ ﺳﺮﻋﺖ ﭘﺮﺗﺎﺑﻪ‬.،‫ﭘﺮﺗﺎﺑﻪ در ﻓﻀﺎ‬
% projectile.m
echo off;
d0 = 45; v = 60; g = 9.8; % constant values
a = d0 * pi / 180; % convert to radians
t = 0 : 0.1 : 8;
x = v * t * cos(a); % horizontal displacement
y = v * t * sin(a) - 0.5 * g * t .^ 2; % vertical displacement
subplot(2,2,1), plot(x,y),xlabel('x'),ylabel('y')
title('Space Path of a Projectile Trajectory')
vx = v * cos(a); % horizontal velocity
vy = v * sin(a) - g * t; % vertical velocity
V = sqrt( vx^2 + vy.^2 ); % Magnitude of velocity
subplot(2,2,2), plot(t,V,'g')
xlabel('Time'), ylabel('Magnitude of Velocity')
d = 180 / pi * atan2( vy, vx ); % angle at time t
subplot(2,2,3), plot(t,d,'r')
xlabel('Time'),ylabel('Angle of Projectile')
>> projectile

5-6 ‫ﺷﻜﻞ‬

70
‫ﺳﺮﻋﺖ ﭘﺮﺗﺎﺑﻪ و ﻳﺎﻓﺘﻦ ﻣﻴﻨﻴﻤﻢ آن‬
‫ام‪ -‬ﻓﺎﻳﻠﻲ ﺑﺎ ﻧﺎم ‪ trj.m‬ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ‪:‬‬
‫= ‪ ،v‬و ﺷﺘﺎب‬ ‫اﻟﻒ( ﺑﺰرﮔﺎي ﺳﺮﻋﺖ ﻳﻚ ﭘﺮﺗﺎﺑﻪ را ﺑﺎ ﻧﺨﺴﺘﻴﻨﻪﻫﺎي‪ :‬زاوﻳﻪ ﭘﺮﺗﺎب ‪ ،d0 = 45‬ﺳﺮﻋﺖ اوﻟﻴﻪ ‪60‬‬
‫ﮔﺮاﻧﺶ ‪ g = 9.8‬در ﻓﺎﺻﻠﻪ زﻣﺎﻧﻲ ‪ 0 : 0.1 : 8‬رﺳﻢ ﻛﻨﺪ‪ .‬روي ﻣﻲﻧﻴﻤﻢ ﺳﺮﻋﺖ ﻋﻼﻣﺖ × ﺑﺰﻧﻴﺪ‪.‬‬
‫ب( ﻣﻘﺎدﻳﺮ ﻣﻴﻨﻴﻤﻢ و ﻣﻴﺎﻧﮕﻴﻦ ﻣﻨﺤﻨﻲ را ﺑﺎ اﺳﺘﻔﺎده از ﭘﻨﺠﺮه ‪ Data Statistics‬ﻧﺸﺎن دﻫﻴﺪ‪.‬‬
‫‪% trj.m‬‬
‫;‪v = 60; g = 9.8‬‬
‫;‪d0 = 45; t = 0 : 0.1 : 8‬‬
‫;‪a = d0 * pi / 180‬‬
‫‪% converts to radians‬‬
‫;)‪vx = v * cos(a‬‬
‫;‪vy = v * sin(a) - g * t‬‬
‫;) ‪V = sqrt( vx^2 + vy.^2‬‬
‫)'‪plot(t,V,'g‬‬
‫)'‪xlabel('Time Secs‬‬
‫‪ylabel ...‬‬
‫'‪'Magnitude of Velocity m/s‬‬
‫;))‪k = find(V == min(V‬‬
‫‪hold on,‬‬
‫)'‪plot(t(k),V(k),'x‬‬
‫)‪% V(k) is min(V‬‬
‫‪hold off‬‬ ‫ﺷﻜﻞ ‪6-6‬‬

‫ﻋﺒﺎرت ))‪ k = find(V == min(V‬اﻧﺪﻳﺲ ﻧﻘﻄﻪ ﻣﻲﻧﻴﻤﻢ را ﭘﻴﺪا ﻣﻲﻛﻨﺪ‪.‬‬

‫ﻣﻘﺎدﻳﺮ ﻛﻤﻴﻨﻪ و ﻣﻴﺎﻧﮕﻴﻦ ﺧﻂﭼﻴﻦ ﺷﺪهاﻧﺪ‪.‬‬

‫ﺷﻜﻞ ‪7-6‬‬

‫‪ 5-6‬ﻣﺜﺎل ﻫﺎي اﻟﻜﺘﺮﻳﻜﻲ‬


‫ﺗﻮان ﻣﺼﺮﻓﻲ ﻣﻘﺎوﻣﺖ‬
‫در ﺷﻜﻞ ‪ 8-6‬ﺑﺎ داﺷﺘﻦ ‪ ، k‬ﺗﻮان ﻣﺼﺮﻓﻲ‪ ،‬وﻟﺘﺎژ ﺑﺎر‪ ،‬و ﺗﻮان اﺗﺼﺎل ﻛﻮﺗﺎه ﺑﺎﻃﺮي اﻳﻦﮔﻮﻧﻪ ﻧﻮﺷﺘﻪ ﻣﻲﺷﻮﻧﺪ)ﺗﺤﻘﻴﻖ ﻛﻨﻴﺪ(‪:.‬‬
‫‪RL‬‬ ‫‪V2‬‬ ‫‪k‬‬ ‫‪k‬‬ ‫‪V2‬‬
‫=‪k‬‬ ‫= ‪, PL‬‬ ‫×‬ ‫‪,‬‬ ‫‪V‬‬ ‫‪L‬‬ ‫=‬ ‫‪V‬‬ ‫×‬ ‫‪,‬‬ ‫‪Psc‬‬ ‫=‬ ‫ﺗﻮان اﺗﺼﺎل ﻛﻮﺗﺎه ﺛﺎﺑﺖ اﺳﺖ‬
‫‪Ri‬‬ ‫)‪Ri (1 + k2‬‬ ‫‪k +1‬‬ ‫‪Ri‬‬
‫ﺗﻮان ﻣﺼﺮﻓﻲ و وﻟﺘﺎژ ﺑﺎر را ﺑﺮﺣﺴﺐ ‪) k‬ﻛﻪ ﻧﻤﺎﻳﺶ ﻣﻘﺪار ﺑﺎر اﺳﺖ( رﺳﻢ ﻛﻨﻴﺪ‪) V = 12, Ri = 10 .‬ﺷﻜﻞ‪.(9-6‬‬

‫‪71‬‬
% rp.m
V V = 2; Ri = 10;
RL = 0:100; VL
k = RL./Ri;
PL = ...
=(V^2/Ri)*(k./(1+k.^2));
VL = V*(k./(1+k));
plotyy(k,PL,k,VL),
>> rp

9-6 ‫ﺷﻜﻞ‬
8-6 ‫ﺷﻜﻞ‬

‫ﻣﺪار ﻣﻌﺎدل ﭼﻨﺪ ﻣﻘﺎوﻣﺖ ﻣﻮازي‬


.‫ را ﭘﻴﺪا ﻛﻨﻴﺪ‬R1 = 15, R2 = 25, R3 = 80 ‫ﻣﻘﺎوﻣﺖ ﻣﻌﺎدل ﺳﻪ ﻣﻘﺎوﻣﺖ ﻣﻮازي‬
% resi.m
RR = [15 25 80];
n1 = ones(1,3) % creates a vector of three ones
RI = n1./RR; % reverses all three elementds of RR
disp(['RI = ' num2str(RI)]);
SRI = sum(RI); % sums up the reverse elements
RT = 1/SRI; % gives the equivalent resistance of three
disp(['RT = ' num2str(RT)]);
>> resi
n1 = 1.00 1.00 1.00
RI = 0.066667 0.04 0.0125
RT = 8.3916

‫ﻳﻚ ﺳﻮﺳﺎز ﻧﻴﻤﻪ ﻣﻮج‬


(12-6 ‫ رﺳﻢ ﻛﻨﻴﺪ )ﺷﻜﻞ‬3π ‫ﺧﺮوﺟﻲ ﻳﻚ ﺳﻮﺳﺎز ﻧﻴﻤﻪ ﻣﻮج را ﺑﺮاي ورودي ﺳﻴﻨﻮﺳﻲ ﺑﻴﻦ ﺻﻔﺮ ﺗﺎ‬
% hf.m
alf = ...
linspace(0, 3*pi);
y = sin(alf);
y = y .* (y > 0);
plot(alf,y) 10-6‫ﺷﻜﻞ‬
>> hf

T-Network ‫ﻣﺪار ﺗﻲ‬


:‫ و ﻓﺎزورِ ﺷﺪت ﺟﺮﻳﺎنﻫﺎي ورودي و ﺧﺮوﺟﻲ را ﺑﺮاي ﻳﻚ ﻣﺪار ﺗﻲ ﺑﺎ ﻣﺸﺨﺼﻪﻫﺎي زﻳﺮ ﺑﻪدﺳﺖ آورﻳﺪ‬،‫ زاوﻳﻪ‬،‫ﻣﻘﺪار‬
ω = 1000rad/s Ra=3.05K, Ca = 0.01µF, Rb=4.5K, Cb = 0.05µF
Rc = 5.52K, Lc =0.1mH, V1 = 2300, V2 = 450
:‫ ﻓﺮم ﻣﺎﺗﺮﻳﺴﻲ ﻣﻌﺎدﻻت ﻣﺪار اﻳﻦ ﮔﻮﻧﻪ اﺳﺖ‬.‫ ﻧﺸﺎن داده ﺷﺪه اﺳﺖ‬10-6 ‫ در ﺷﻜﻞ‬Z ‫ﻣﺪار ﺗﻲ ﺑﺎ ﭘﺎراﻣﺘﺮﻫﺎي‬
|z11 z12| |I1| = |V1|
|z21 z22| × |I2| = |V2|
Z * I = V , I = Z \ V

72
V1 = z11I1 + z12I2
I1 Za Zb I2 V2 = z21I1 + z22I2
V1 V2
z11 = V1/I1 |I2 = 0
Zc z21 = V2/I1 |I2 = 0
z12 = V1/I2 |I1 = 0
z22 = V2/I2 |I1 = 0

11-6 ‫ﺷﻜﻞ‬ z11 = Za + Zc


z22 = Zb + Zc
z12 = z21 = Zc
:‫ﺣﺎل ﺑﺮﻧﺎﻣﻪاي ﺑﺮاي اﻧﺠﺎم ﻣﺤﺎﺳﺒﺎت ﺑﺎ ﻣﻘﺎدﻳﺮ داده ﺷﺪه ﻣﻴﻨﻮﻳﺴﻴﻢ‬
% Tnet.m I = 0.0027 + 0.0220i
echo off 0.0136 + 0.0150i
omeg = 1000; Iabs = 0.0222 0.0202
Ra = 3050; Ca = 0.01e-6; Iang = 1.4482 0.8339
Za = Ra+1/(omeg*Ca*j);
Rb = 4500; Cb = 0.05e-6;
Zb = Rb+1/(omeg*Cb*j);
Rc = 5520; Lc = 0.0001;
Zc = Rc+omeg*Lc*j;
z11 = Za + Zc;
z22 = Zb + Zc;
z12 = Zc; z21 = Zc;
Z = [z11 z12; z21 z22];
V1 = 2300; V2 = 450;
V = [V1; V2];
I = Z \ V
>> Tnet
>> Iabs = abs(I)' 12-6 ‫ﺷﻜﻞ‬
>> Iang = angle(I)'
>> compass(I)
RC ‫اﻣﭙﺪاﻧﺲ ﻣﻌﺎدل ﻣﺪار‬
‫ ﻫﻢراه ﺑﺎ‬ω = 100 rad/s ‫ اﻣﭙﺪاﻧﺲ ﻣﻌﺎدلﻫﺎ را در ﻓﺮﻛﺎﻧﺲ زاوﻳﻪاي‬.‫در ﻣﺪار زﻳﺮ اﻧﺪازه ﺧﺎزن ﻫﺮ ﺑﺎر دوﺑﺮاﺑﺮ ﻣﻲﺷﻮد‬
.‫ ﻫﻨﺪﺳﻲﻫﺎ آن ﻣﻘﺎﻳﺴﻪ ﻛﻨﻴﺪ‬-‫ﻧﻤﺎﻳﺶ ﺑﺮدار‬
% rc.m
omeg = 100;
R = repmat(1000,1,4); c = [10e-6 20e-6 40e-6 80e-6];
z = R + 1./(j*omeg*c);
compass(z)
disp(' C/micF Angle/Deg Z/Kohm R/Kohm');
disp([1e6*c' (180*angle(z)/(2*pi))' (abs(z)/1e3)' R'/1e3]);
>> rc
C/micF Angle/Deg Z/Kohm R/Kohm
10.0000 -22.5000 1.4142 1.0000
20.0000 -13.2825 1.1180 1.0000
40.0000 -7.0181 1.0308 1.0000
80.0000 -3.5625 1.0078 1.0000

13-6 ‫ﺷﻜﻞ‬

73
semilogx() ‫ دﺳﺘﻮر‬،‫ﺗﺮﺳﻴﻢ ﻣﺸﺨﺼﻪ ﭘﺮاب اﺳﻴﻠﻮﺳﻜﻮپ‬
‫ اﻣﭙﺪاﻧﺲ وردي ﺑﺮ ﺣﺴﺐ ﻣﮕﺎاﻫﻢ و‬،‫ ﭘﺮاب ﻳﻚ اﺳﻜﻮپ را ﺑﺮاي اﻧﺪازهﮔﻴﺮي ﻓﺮﻛﺎﻧﺲﻫﺎي ﭘﺎﺋﻴﻦ ﻧﺸﺎن ﻣﻲدﻫﺪ‬،‫ﻣﺪار زﻳﺮ‬
.‫ رﺳﻢ ﻛﻨﻴﺪ‬20Hz ‫ ﺑﺎ ﮔﺎم‬20KHz ‫ ﺗﺎ‬20Hz ‫ﺿﺮﻳﺐ ﺗﺒﺪﻳﻞ اﻣﭙﺪاﻧﺲ آن را در ﺑﺎزه ﻓﺮﻛﺎﻧﺴﻲ‬
R1=9MΩ C1=100pF
R2=1MΩ C2=100pF
⎡ 1 ⎤ ⎡ 1 ⎤ R1 R2
Zin = ⎢ ||R1 ⎥ + ⎢ ||R2 ⎥ = +
⎢⎣ jωC1 ⎥⎦ ⎢⎣ jωC2 ⎥⎦ 1+jωC1R1 1+jωC2R2

14-6 ‫ﺷﻜﻞ‬
% ProbeGain.m
c = [10e-12 100e-12];
r = [9e6 1e6];
freq = [20:20:20000];
omg = 2*pi*freq;
z1 = r(1)./(1+j*omg*c(1)*r(1));
z2 = r(2)./(1+j*omg*c(2)*r(2));
zin = z1 + z2;
figure(1)
semilogx(freq,abs(zin)/1e6)
xlabel('Freq')
ylabel('Zin MegaOhm')
title('Scope Probe Input Impedance')
figure(2)
gain = z2 ./ zin ;
% .‫ و ﺑﻪ ﻧﺘﻴﺠﻪ ﻏﻠﻂ ﻣﻨﺠﺮ ﻣﻲﺷﻮد‬،‫ را ﻣﻌﻜﻮس ﻛﺮده‬zin ‫ )ﺑﺪون ﻧﻘﻄﻪ( ﻣﺎﺗﺮﻳﺲ‬/ ‫ﻛﺎرﺑﺮد ﻋﻼﻣﺖ‬
semilogx(freq,abs(gain))
xlabel('Freq')
ylabel('Gain')
title('Scope Probe Gain')
>> ProbeGain

15-6 ‫ﺷﻜﻞ‬

74
‫‪ 6-6‬ﺗﻤﺮﻳﻦ‬
‫ﺑﺮﻧﺎﻣﻪﻫﺎي زﻳﺮ را در ام‪ -‬ﻓﺎﻳﻞﻫﺎي ﺟﺪاﮔﺎﻧﻪ ﺑﻨﻮﻳﺴﻴﺪ‪:‬‬
‫‪ -1‬در ﻣﺜﺎل ﻣﺪار ﺗﻲ ﻫﻤﺎن ﻣﻘﺎدﻳﺮ را ﺑﺮاي ﻳﻚ ﻣﺪار ﭘﻲ در ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﺑﺎ اﺳﺘﻔﺎده از ﭘﺎراﻣﺘﺮﻫﺎي ‪ Y‬ﻣﺪار را ﺣﻞ ﻛﻨﻴﺪ‪.‬‬
‫‪ -2‬در ﻣﺜﺎل ﭘﺮاب اﺳﻜﻮپ‪ ،‬زاوﻳﻪ ﺗﺒﺪﻳﻞ ﻣﺪار را ﺑﺎ ﻣﻘﻴﺎس درﺟﻪ ﺑﺮ ﺣﺴﺐ ﻟﮕﺎرﻳﺘﻢ ﻓﺮﻛﺎﻧﺲ رﺳﻢ ﻛﻨﺪ‪ .‬ﺑﺮﭼﺴﺐﻫﺎي‬
‫ﺿﺮوري را در ﮔﺮاف ﺑﮕﻨﺠﺎﻧﻴﺪ‪.‬‬
‫‪ x -3‬و ‪ y‬ﻣﺜﺎل داﻳﺮه ﻣﺜﻠﺜﺎﺗﻲ را ﻗﺴﻤﺖﻫﺎي ﺣﻘﻴﻘﻲ و ﻣﻮﻫﻮﻣﻲ ﻳﻚ ﺗﺎﺑﻊ ﻣﺨﺘﻠﻂ ﺑﮕﻴﺮﻳﺪ ‪ . zc = x + i*y‬ﻗﺴﻤﺖ‬
‫ﻣﻮﻫﻮﻣﻲ را ﺑﺮ ﺣﺴﺐ ﻗﺴﻤﺖ ﺣﻘﻴﻘﻲ رﺳﻢ ﻛﻨﻴﺪ‪.‬‬
‫‪ r -4‬را ﺑﺮداري ﭼﺮﺧﺎن و ﻣﺘﺴﺎوياﻟﻌﻨﺼﺮ ﺑﺎ ‪ tet‬ﺑﮕﻴﺮﻳﺪ))‪ ، r = repmat(1,1,length(tet‬ﺗﺮﺳﻴﻢ را‬
‫ﺑﻪ ﻃﺮﻳﻖ ﻗﻄﺒﻲ)‪ polar(r,theta‬اﻧﺠﺎم دﻫﻴﺪ‪.‬‬
‫‪ -5‬درﺟﻪ ﺣﺮارت ﺳﺤﺮ‪ ،‬ﺻﺒﺢ‪ ،‬ﻇﻬﺮ‪ ،‬ﻏﺮوب‪ ،‬ﻋﺼﺮ‪ ،‬و ﺷﺐِ ﻫﺮروز از ﻳﻚ ﻫﻔﺘﻪ را در ﻳﻚ ﻣﺎﺗﺮﻳﺲ ‪ 6 × 7‬وارد ﻛﺮده و‬
‫ﮔﺮافﻫﺎي ﺳﺘﻮﻧﻲ و ﻣﻨﺤﻨﻲ ﻣﺮﺑﻮﻃﻪ را رﺳﻢ ﻛﻨﻴﺪ‪.‬‬
‫‪ -6‬ﻳﻚﺑﺎر ‪ 20‬و ﻳﻚﺑﺎر ‪ 500‬ﻋﺪد ﺗﺼﺎدﻓﻲ از ﻫﺮ دو ﻧﻮع )(‪ rand(), randn‬ﺗﻮﻟﻴﺪ ﻛﻨﻴﺪ‪ .‬ﻣﻴﺎنﮔﻴﻦ )(‪mean‬‬
‫ﻣﺎﻛﺰﻳﻤﻢ‪ ،‬ﻣﻴﻨﻴﻤﻢ‪ ،‬و اﻧﺤﺮاف ﻣﻴﺎﻧﻪ )(‪ std‬اﻋﺪاد ﺗﺼﺎدﻓﻲ از ﻫﺮ دو ﻧﻮع را ﭘﻴﺪا ﻛﻨﻴﺪ‪ .‬ﺑﺎ اﺳﺘﻔﺎده از ﺑﺮدار ﻣﻨﻄﻘﻲ ﺗﻌﺪاد‬
‫اﻋﺪاد ﺑﺎﻻ و ﭘﺎﺋﻴﻦ ﻣﻴﺎنﮔﻴﻦ را ﺷﻤﺎرش ﻛﻨﻴﺪ‪.‬‬
‫راﻫﻨﻤﺎ‪ :‬ﺗﺎﺑﻊ )‪ n ،randn(1,n‬ﻋﺪد ﺗﺼﺎدﻓﻲ ﺑﺎ ﺗﻮزﻳﻊ ﻧﺮﻣﺎل )ﮔﻮﺳﻲ( ﺣﻮل ‪) 0‬ﻣﻴﺎنﮔﻴﻦ ‪ (0‬ﺗﻮﻟﻴﺪ ﻣﻲﻛﻨﺪ‪ ،‬ﺑﺎ‬
‫اﻓﺰاﻳﺶ ﺗﻌﺪاد اﻋﺪاد ﺗﺼﺎدﻓﻲ ﺗﻮزﻳﻊ ﺑﻪ ﻧﺮﻣﺎل ﻧﺰدﻳﻚﺗﺮ ﻣﻲﺷﻮد‪.‬‬

‫‪rL(1 + r/12)12N‬‬
‫=‪P‬‬ ‫‪ -7‬ﻗﺴﻂ ﭘﺮداﺧﺖ وام ﺧﺎﻧﻪ از اﻳﻦ ﻓﺮﻣﻮل ﺑﻪ دﺳﺖ ﻣﻲآﻳﺪ‪.‬‬
‫]‪12[(1 + r/12)12N − 1‬‬
‫ﻣﺒﻠﻎ ‪ L = 10e6‬وام ﺑﺎ ﺳﻮد ‪ r = 0.15‬ﺳﺎﻻﻧﻪ در ﻣﺪت ‪ N = 5:20‬ﺳﺎل ﺑﺎزﭘﺮداﺧﺖ ﻣﻲﺷﻮد‪ ،‬ﻗﺴﻂ ﻣﺎﻫﺎﻧﻪ را‬
‫ﺑﺮاي زﻣﺎن ﺑﺎزﭘﺮداﺧﺖ ﺑﻴﻦ ‪ 5‬ﺗﺎ ‪ 20‬ﺳﺎل ﺑﻪ ﺻﻮرت ﺟﺪول ﻧﺸﺎن دﻫﻴﺪ و ﺑﻪ ﺻﻮرت ﻧﻘﻄﻪ ﺑﻪ ﻧﻘﻄﻪ )ﻧﻪ ﺧﻂ ﭘﻴﻮﺳﺘﻪ(‪ ،‬و‬
‫ﻧﻤﻮدار ﺳﺘﻮﻧﻲ رﺳﻢ ﻛﻨﻴﺪ اﺳﺖ‪ .‬ﻣﺒﻠﻎ ﻛﻞ ﺑﺎزﭘﺮداﺧﺖ را ﺑﺮ ﺣﺴﺐ ‪ N‬ﺑﻪ ﺻﻮرت ﺟﺪول ﻧﺸﺎن دﻫﻴﺪ و ﺑﻪ ﺻﻮرت ﻧﻘﻄﻪاي‪،‬‬
‫ﺧﻂﭼﻴﻦ‪ ،‬ﺳﺘﺎرهاي‪ ،‬و ﻧﻤﻮدار ﺳﺘﻮﻧﻲ ‪ Bar Chart‬رﺳﻢ ﻛﻨﻴﺪ اﺳﺖ‪.‬‬

‫‪75‬‬
‫ﻓﺼﻞ ‪ 7‬ﮔﺮاﻓﻴﻚ ﺳﻪ ﺑ‪‬ﻌﺪي‬
‫‪ 1-7‬ﺗﺮﺳﻴﻢ ﻣﻨﺤﻨﻲ ﻓﻀﺎﺋﻲ‬
‫)(‪plot3‬‬ ‫ﺗﺎﺑﻊ‬
‫اﻳﻦ ﺗﺎﺑﻊ ﻳﻚ ﻣﻨﺤﻨﻲ دو ﺑﻌﺪي را ﺑﻪ ﺑﻌﺪ ﺳﻮم ﻣﻲﺑﺮد‪ ،‬در ﻧﺘﻴﺠﻪ ﻳﻚ ﻣﻨﺤﻨﻲ ﻓﻀﺎﺋﻲ )ﺳﻪﺑﻌﺪي( رﺳﻢ ﻣﻲﺷﻮد )ﻣﺜﻼٌ ﻳﻚ داﻳﺮه‬
‫ﺑﻪ ﺻﻮرت ﻣﺎرﭘﻴﭻ درﻣﻲآﻳﺪ(‪ .‬ﻋﺒﺎرت )‪ plot3(x1,y1,z1‬ﻧﻘﺎﻃﻲ را ﺑﺎ ﻣﺨﺘﺼﺎت ‪ x1,y1,z1‬ﺑﺎ ﺧﻂ ﻣﻨﺤﻨﻲ ﺑﻪ‬
‫ﻫﻢ وﺻﻞ ﻣﻲﻛﻨﺪ‪ .‬ﺳﻪ ﺑﺮدار ﻣﻲﺗﻮاﻧﻨﺪ ﺑﻪ ﻧﺤﻮ ﺟﺒﺮي ﺑﻪ ﻫﻢ واﺑﺴﺘﻪ ﺑﻮده ﻳﺎ ﻛﺎﻣﻼٌ ﻣﺴﺘﻘﻞ از ﻳﻚدﻳﮕﺮ ﺑﺎﺷﻨﺪ‪ ،‬اﻣﺎ ﺗﻌﺪاد ﻋﻨﺎﺻﺮ‬
‫ﺑﺮدارﻫﺎي ‪ x1,y1,z1‬ﺑﺎﻳﺪ ﺑﺮاﺑﺮ ﺑﺎﺷﻨﺪ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫ﻳﻚ داﻳﺮه ﺑﺎ روش ﻏﻴﺮﻣﺴﺘﻘﻴﻢ ﺗﻮﻟﻴﺪ و آنرا در ﺟﻬﺖ ﻋﻤﻮدي ﺣﺮﻛﺖ داده و ﻳﻚ ﻣﺎرﭘﻴﭻ اﺳﺘﻮاﻧﻪاي اﻳﺠﺎد ﻛﻨﻴﺪ‪.‬‬
‫دراﻳﻦ ﻣﺴﺄﻟﻪ ‪ x,y‬ﺑﺎﻳﺪ ﺗﺎﺑﻊ داﻳﺮهاي ﻳﻚدﻳﮕﺮ ﺑﺎﺷﻨﺪ‪ ،‬اﻣﺎ ‪ z‬ﻣﺴﺘﻘﻞ ازآن دو ﺑﻮده و ﺻﺮﻓﺎٌ در ﺟﻬﺖ ﻋﻤﻮدي ﺣﺮﻛﺖ ﻣﻲﻛﻨﺪ‪.‬‬
‫‪% p3.m‬‬
‫;‪echo off‬‬
‫;)‪alf = linspace(0,10*pi,400‬‬
‫;)‪x1 = cos(alf‬‬
‫;)‪y1 = sin(alf‬‬
‫;)‪z1 = linspace(0,40,400‬‬
‫‪plot3(x1,y1,z1),‬‬
‫‪title ...‬‬
‫‪('The circle follows‬‬
‫)'‪z1 points in space‬‬

‫‪>> p3‬‬

‫ﺷﻜﻞ ‪1-7‬‬

‫ﻣﻨﺤﻨﻲ ﻓﻀﺎﺋﻲِ ﻧﺘﻴﺠﻪ اﺗﺼﺎل ﻧﻘﺎﻃﻲ ﺑﺎ ﻣﺨﺘﺼﺎت ‪x1,y1,z1‬‬

‫)(‪comet3‬‬ ‫ﺗﺎﺑﻊ‬
‫ﺗﺎﺑﻊ)(‪ comet3‬ﻫﻤﺎن ﻛﺎر)(‪ plot3‬را ﺑﺎ ﭘﻮﻳﺎ ﻧﻤﺎﺋﻲ اﻧﺠﺎم ﻣﻲدﻫﺪ‪ .‬ﻣﺜﺎل ﻓﻮق را ﺑﺎ )‪comet3(x1,y1,z1‬‬
‫اﺟﺮا ﻛﻨﻴﺪ‪.‬‬

‫‪ 2-7‬ﺗﺮﺳﻴﻢ ﺳﻄﻮح ﻓﻀﺎﺋﻲ‬


‫)‪meshgrid(a,b‬‬ ‫دﺳﺘﻮر‬
‫اﮔﺮ ‪ a‬و ‪ b‬ﺑﻪﺗﺮﺗﻴﺐ ﺑﺮدارﻫﺎي ‪ n‬و ‪ m‬ﻋﻨﺼﺮي ﺑﺎﺷﻨﺪ‪ .‬ﻋﺒﺎرت )‪ [X,Y] = meshgrid(a,b‬ﻣﺎﺗﺮﻳﺲ ‪ X‬را ﺑﺎ‬
‫ردﻳﻒﻫﺎﺋﻲ ﻣﺴﺎوي ‪ a‬در ‪ m‬ردﻳﻒ و ﻣﺎﺗﺮﻳﺲ ‪ Y‬را ﺑﺎ ﺳﺘﻮنﻫﺎﺋﻲ ﻣﺴﺎوي ‪ b‬در ‪ n‬ﺳﺘﻮن ﻣﻲﺳﺎزد‪ .‬در ﻧﺘﻴﺠﻪ ‪ X‬و ‪ Y‬دو‬
‫ﻣﺎﺗﺮﻳﺲ ﻫﻢﺳﺎن ﺧﻮاﻫﻨﺪ ﺑﻮد‪ .‬دﺳﺘﻮر )‪ [X,Y] = meshgrid(a‬اﺳﺖ و ‪ X‬و ‪ Y‬را ﺗﺮاﻧﻬﺎد ﻣﻲﺳﺎزد‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫; ‪>> x = -3:3‬‬
‫; ‪>> y = -2:2‬‬
‫)‪>> [X,Y] = meshgrid(x,y‬‬
‫‪X = -3‬‬ ‫‪-2‬‬ ‫‪-1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬

‫‪76‬‬
‫‪-3‬‬ ‫‪-2‬‬ ‫‪-1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬
‫‪-3‬‬ ‫‪-2‬‬ ‫‪-1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬
‫‪-3‬‬ ‫‪-2‬‬ ‫‪-1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬
‫‪-3‬‬ ‫‪-2‬‬ ‫‪-1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬

‫= ‪Y‬‬ ‫‪-2‬‬ ‫‪-2‬‬ ‫‪-2‬‬ ‫‪-2‬‬ ‫‪-2‬‬ ‫‪-2‬‬ ‫‪-2‬‬


‫‪-1‬‬ ‫‪-1‬‬ ‫‪-1‬‬ ‫‪-1‬‬ ‫‪-1‬‬ ‫‪-1‬‬ ‫‪-1‬‬
‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬
‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬
‫‪2‬‬ ‫‪2‬‬ ‫‪2‬‬ ‫‪2‬‬ ‫‪2‬‬ ‫‪2‬‬ ‫‪2‬‬
‫ﺻﻔﺤﻪ ﻣﺨﺘﺼﺎت‬
‫ﭼﻨﺎنﭼﻪ در ﻣﺜﺎل ﻓﻮق ﻣﺸﺎﻫﺪه ﻣﻲﺷﻮد‪ ،‬ردﻳﻒﻫﺎي ﻣﺎﺗﺮﻳﺲ ‪ X‬ﭘﻨﺞ ﺧﻂ اﻓﻘﻲ ﻫﻔﺖ ﻧﻘﻄﻪاي در ﺻﻔﺤﻪ ‪ X-Y‬اﻳﺠﺎد ﻣﻲ‪-‬‬
‫ﻛﻨﻨﺪ‪ .‬ﺳﺘﻮنﻫﺎي ﻣﺎﺗﺮﻳﺲ ‪ Y‬ﻫﻔﺖ ﺧﻂ ﻋﻤﻮدي ﭘﻨﺞ ﻧﻘﻄﻪاي در ﺻﻔﺤﻪ ‪ X-Y‬اﻳﺠﺎد ﻣﻲﻛﻨﺪ‪ .‬از ﺑﺮﺧﻮرد اﻳﻦ ﺧﻄﻮط ﻣﻄﺎﺑﻖ‬
‫ﺷﻜﻞ زﻳﺮ ﺳﻲوﭘﻨﺞ ﻧﻘﻄﻪ ﺣﺎﺻﻞ ﻣﻲﺷﻮد ﻛﻪ ﻧﻘﺎط ﺻﻔﺤﻪ ‪ X-Y‬را ﺗﺸﻜﻴﻞ ﻣﻲدﻫﻨﺪ )دﻗﺖ ﻛﻨﻴﺪ ﻛﻪ ﺗﻌﺪاد ﻋﻨﺎﺻﺮ ﻫﺮ ﻳﻚ از‬
‫ﻣﺎﺗﺮﻳﺲﻫﺎي ‪ X‬و ‪ Y‬ﻧﻴﺰ ﺳﻲوﭘﻨﺞ اﺳﺖ(‪ .‬اﮔﺮ ﻣﻘﺎدﻳﺮ و ﺗﻌﺪاد ﻋﻨﺎﺻﺮ ﺑﺮدارﻫﺎي ‪ x‬و ‪ y‬را ﺗﻐﻴﻴﺮ دﻫﻴﻢ‪ ،‬ﺗﻌﺪاد ﻧﻘﺎﻃﻲ را ﻛﻪ‬
‫دﺳﺘﻮر )‪ ،[X,Y] = meshgrid(x,y‬ﺑﺮروي ﺻﻔﺤﻪ اﻳﺠﺎد ﻣﻲﻛﻨﺪ ﺗﻐﻴﻴﺮ ﺧﻮاﻫﺪ ﻛﺮد‪.‬‬
‫ˆ)‪X(1,:‬‬ ‫‪o‬‬ ‫‪o‬‬ ‫‪o‬‬ ‫‪o‬‬ ‫‪o‬‬ ‫‪o‬‬ ‫‪o‬‬
‫ˆ)‪X(2,:‬‬ ‫‪o‬‬ ‫‪o‬‬ ‫‪o‬‬ ‫‪o‬‬ ‫‪o‬‬ ‫‪o‬‬ ‫‪o‬‬
‫ˆ)‪X(3,:‬‬ ‫‪o‬‬ ‫‪o‬‬ ‫‪o‬‬ ‫‪o‬‬ ‫‪o‬‬ ‫‪o‬‬ ‫‪o‬‬
‫ˆ)‪X(4,:‬‬ ‫‪o‬‬ ‫‪o‬‬ ‫‪o‬‬ ‫‪o‬‬ ‫‪o‬‬ ‫‪o‬‬ ‫‪o‬‬
‫ˆ)‪X(5,:‬‬ ‫‪o‬‬ ‫‪o‬‬ ‫‪o‬‬ ‫‪o‬‬ ‫‪o‬‬ ‫‪o‬‬ ‫‪o‬‬
‫‪q‬‬ ‫‪q‬‬ ‫‪q‬‬ ‫‪q‬‬ ‫‪q‬‬ ‫‪q‬‬ ‫‪q‬‬
‫)‪Y(:,1‬‬ ‫)‪Y(:,2‬‬ ‫)‪Y(:,3‬‬ ‫)‪Y(:,4‬‬ ‫)‪Y(:,5‬‬ ‫)‪Y(:,6‬‬ ‫)‪Y(:,7‬‬
‫ﻣﺜﺎل‪:‬‬
‫ﺑﺮدار ‪ a = -3:3‬را ﺗﻌﺮﻳﻒ‪ ،‬و ﺑﺎ آن ﺻﻔﺤﻪ ‪ X-Y‬را ﭘﺪﻳﺪ آورﻳﺪ‪ .‬ﺗﻌﺪاد ﻧﻘﺎطِ ﺻﻔﺤﻪ ‪ X-Y‬ﭼﻨﺪﺗﺎ اﺳﺖ؟‬
‫ﺣﻞ‪:‬‬
‫; ‪>> a = -3:3‬‬
‫)‪>> [X,Y] = meshgrid(a‬‬
‫‪X = -3‬‬ ‫‪-2‬‬ ‫‪-1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬
‫‪-3‬‬ ‫‪-2‬‬ ‫‪-1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬
‫‪-3‬‬ ‫‪-2‬‬ ‫‪-1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬
‫‪-3‬‬ ‫‪-2‬‬ ‫‪-1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬
‫‪-3‬‬ ‫‪-2‬‬ ‫‪-1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬
‫‪-3‬‬ ‫‪-2‬‬ ‫‪-1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬
‫‪-3‬‬ ‫‪-2‬‬ ‫‪-1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬
‫‪Y = -3‬‬ ‫‪-3‬‬ ‫‪-3‬‬ ‫‪-3‬‬ ‫‪-3‬‬ ‫‪-3‬‬ ‫‪-3‬‬
‫‪-2‬‬ ‫‪-2‬‬ ‫‪-2‬‬ ‫‪-2‬‬ ‫‪-2‬‬ ‫‪-2‬‬ ‫‪-2‬‬
‫‪-1‬‬ ‫‪-1‬‬ ‫‪-1‬‬ ‫‪-1‬‬ ‫‪-1‬‬ ‫‪-1‬‬ ‫‪-1‬‬
‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬
‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬
‫‪2‬‬ ‫‪2‬‬ ‫‪2‬‬ ‫‪2‬‬ ‫‪2‬‬ ‫‪2‬‬ ‫‪2‬‬
‫‪3‬‬ ‫‪3‬‬ ‫‪3‬‬ ‫‪3‬‬ ‫‪3‬‬ ‫‪3‬‬ ‫‪3‬‬
‫ﻧﻘﺎط ﺣﺎﺻﻞ ﺑﺮروي ﺻﻔﺤﻪ ‪ X-Y‬ﻫﻔﺖدرﻫﻔﺖ ﻳﻌﻨﻲ ﭼﻬﻞوﻧُﻪ اﺳﺖ ﻛﻪ ﺑﺮاﺑﺮ ﺑﺎ ﺗﻌﺪاد ﻋﻨﺼﺮ ﻫﺮﻳﻚ از ﻣﺎﺗﺮﻳﺲﻫﺎ ﻣﻲﺑﺎﺷﺪ‪.‬‬
‫)‪mesh(X,Y,Z‬‬ ‫دﺳﺘﻮر‬
‫ﭼﻨﺎنﭼﻪ ﻳﻚ ﺗﺎﺑﻊ ﻓﻀﺎﺋﻲ از ‪ X‬و ‪ Y‬ﻣﺎﻧﻨﺪ ‪ Z‬داﺷﺘﻪ ﺑﺎﺷﻴﻢ‪ ،‬دﺳﺘﻮر )‪ mesh(X,Y,Z‬ﻧﻘﺎط ﻓﻀﺎﺋﻲ ﺑﺎ ﻣﺨﺘﺼﺎت ‪X,Y,Z‬‬
‫ﭘﺪﻳﺪ ﻣﻲآورد و آنﻫﺎ را ﻃﻮري ﺑﻪﻫﻢ وﺻﻞ ﻣﻲﻛﻨﺪ ﻛﻪ ﻳﻚ ﺷﻜﻞ ﻓﻀﺎﺋﻲ ﭘﺪﻳﺪ آﻳﺪ‪ .‬ﻣﺨﺘﺼﺎت ﺳﻪﮔﺎﻧﻪ ﻫﺮﻧﻘﻄﻪي اﻳﻦ ﺷﻜﻞ‬

‫‪77‬‬
‫ﻋﻨﺎﺻﺮ ﻣﺘﻨﺎﻇﺮ از ﻣﺎﺗﺮﻳﺲﻫﺎي ﻓﻮق ﻣﻲﺑﺎﺷﻨﺪ )ﻫﺮ ﺳﻪ ﻣﺎﺗﺮﻳﺲ ﺑﺎﻳﺪ ﻫﻢﺳﺎن ﺑﺎﺷﻨﺪ(‪ .‬ﻣﺎﺗﺮﻳﺲﻫﺎي ‪ X‬و ‪ Y‬ﻛﻪ ﻣﺘﻐﻴﺮﻫﺎي ﻣﺴﺘﻘﻞ‬
‫ﻫﺴﺘﻨﺪ ﻣﻲﺗﻮاﻧﻨﺪ ﺑﺎ دﺳﺘﻮر )(‪ meshgrid‬ﻳﺎ ﺑﻪ ﻃﺮﻳﻖ دﻳﮕﺮي اﻳﺠﺎد ﺷﻮﻧﺪ‪ ،‬اﻣﺎ ‪ Z‬ﺑﺎﻳﺪ ﺗﺎﺑﻊ ‪ X,Y‬ﺑﺎﺷﻨﺪ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫ﺑﺎ ﺑﺮدارﻫﺎي ‪ a = -6:6‬و ‪ b =-4:4‬ﻣﺎﺗﺮﻳﺲﻫﺎي ‪ Xp‬و ‪ Yp‬را ﺑﺴﺎزﻳﺪ‪.‬‬
‫ﺗﺎﺑﻊ ﻓﻀﺎﺋﻲ ‪ Zp = Xp.^2 + Yp.^3‬را اﻳﺠﺎد ﻛﺮده‪ ،‬ﺳﭙﺲ ﺑﺎ دﺳﺘﻮر )(‪ mesh‬ﺻﻔﺤﻪاي ﭘﺪﻳﺪ آورﻳﺪ ﻛﻪ‬
‫ﻣﺨﺘﺼﺎت ﺳﻪﮔﺎﻧﻪ ﻧﻘﺎط آن ﻋﻨﺎﺻﺮ ﻣﺘﻨﺎﻇﺮ از ﻣﺎﺗﺮﻳﺲﻫﺎي ‪ Zp‬و ‪ Xp,Yp‬ﻣﺜﺎل ﻓﻮق ﺑﺎﺷﺪ‪.‬‬
‫‪% ThreeD.m‬‬
‫;‪echo off‬‬
‫‪[Xp,Yp] = ...‬‬
‫;)‪meshgrid(-6:6, -4:4‬‬
‫; ‪Zp = Xp.^2 + Yp.^3‬‬
‫)‪mesh(Xp,Yp,Zp‬‬
‫)'‪xlabel('Xp‬‬
‫)'‪ylabel('Yp‬‬
‫)'‪zlabel('Zp‬‬

‫‪>> ThreeD‬‬

‫ﺷﻜﻞ ‪2-7‬‬

‫دﺳﺘﻮر )‪ ، mesh(M‬ﻧﻤﺎﻳﺶ ﺳﻪ ﺑﻌﺪي ﻳﻚ ﻣﺎﺗﺮﻳﺲ‬


‫دﺳﺘﻮر )‪ mesh(M‬اﻧﺪﻳﺲﻫﺎي ﺳﺘﻮن و ردﻳﻒ ‪ M‬را ﺑﻪﺗﺮﺗﻴﺐ روي ﻣﺤﻮرﻫﺎي ‪ x‬و ‪ ، y‬و ﻣﻘﺎدﻳﺮ ﻋﻨﺎﺻﺮ را ﺑﺎﻻي‬
‫ﻣﺨﺘﺼﺎت ﻣﺴﻄﺢ ﻫﺮ ﻋﻨﺼﺮ )‪ (x,y‬روي ﻣﺤﻮر ‪ z‬ﻣﻲﺑﺮد‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫;‪>> M = [-3 -2 -1‬‬
‫;]‪1 2 3‬‬
‫)‪>> mesh(M‬‬

‫ﺷﻜﻞ ‪3-7‬‬

‫‪78‬‬
‫‪ 3-7‬ﺗﻮاﺑﻊ ﻓﻀﺎﺋﻲ ﻛﺘﺎب ﺧﺎﻧﻪ اي‬
‫رﺳﻢ ﻛُﺮه ﺑﺎ ‪ sphere‬و اﻳﺠﺎد اﻓﻜﺖ ﻫﺎي ﺗﺼﻮﻳﺮي‬
‫ﻋﺒﺎرت ‪ [X,Y,Z] = sphere‬ﻣﺨﺘﺼﺎت ﻓﻀﺎﺋﻲ ﻳﻚ ﻛﺮه را داﺧﻞ ﺳﻪ ﻣﺎﺗﺮﻳﺲ ﻗﺮار ﻣﻲدﻫﺪ‪ .‬در زﻳﺮ ﻳﻚ ﻛﺮه را‬
‫رﺳﻢ‪ ،‬و ﺑﻌﻀﻲ اﻓﻜﺖﻫﺎي ﺗﺼﻮﻳﺮي را روي ﮔﺮاف اﻳﺠﺎد ﻛﺮدهاﻳﻢ‪:‬‬
‫‪% sp‬‬
‫;‪[X,Y,Z] = sphere‬‬
‫)‪mesh(X,Y,Z‬‬
‫ﮔﺮاف را ﻣﺘﻘﺎرن ﻣﻲﻛﻨﺪ‪axis equal % .‬‬
‫ﻣﺤﻮرﻫﺎ را ﻣﺤﻮ ﻣﻲﻛﻨﺪ‪axis off % .‬‬
‫‪hidden off‬‬
‫ﻗﺴﻤﺖﻫﺎي ﻣﺨﻔﻲ ﮔﺮاف را ﻇﺎﻫﺮ ﻣﻲﻛﻨﺪ‪% .‬‬
‫‪>> sp‬‬

‫ﺷﻜﻞ ‪4-7‬‬

‫‪cylinder‬‬ ‫رﺳﻢ اﺳﺘﻮاﻧﻪ ﺑﺎ‬


‫ﻋﺒﺎرت ‪ [X,Y,Z] = cylinder‬ﻣﺨﺘﺼﺎت ﻓﻀﺎﺋﻲ ﻳﻚ اﺳﺘﻮاﻧﻪ را داﺧﻞ ﺳﻪ ﻣﺎﺗﺮﻳﺲ ﻗﺮار ﻣﻲدﻫﺪ‪ .‬ﻛﻪ ﺑﺎ اﺳﺘﻔﺎده‬
‫از آنﻫﺎ ﻣﻲﺗﻮان اﺳﺘﻮاﻧﻪ را ﺑﺎ ﺷﮕﺮدﻫﺎي ﺗﺼﻮﻳﺮي ﻣﺨﺘﻠﻒ اﻳﺠﺎد ﻛﺮد‪.‬‬
‫‪peaks‬‬ ‫رﺳﻢ ﻗﻠﻪ ﻫﺎ ﺑﺎ ﺗﺎﺑﻊ ﻧﻤﻮﻧﻪ‬
‫ﺗﺎﺑﻊ ‪ peaks‬ﻳﻜﻲ از ﺗﻮاﺑﻊ ﻧﻤﻮﻧﻪ ‪ MATLAB‬اﺳﺖ‪ .‬ﻛﻪ ﺳﻄﺤﻲ را ﺑﺎ ﺗﻌﺪادي ﻗُﻠًﻪ رﺳﻢ ﻣﻲﻛﻨﺪ‪.‬‬
‫ﺑﺎ ‪ type‬ﻫﺮﻳﻚ از ﺗﻮاﺑﻊ ﻓﻀﺎﺋﻲ ﻛﺘﺎبﺧﺎﻧﻪاي‪ ،‬روﺗﻴﻦ ﺑﺮﻧﺎﻣﻪﻫﺎي آنﻫﺎ را ﻣﺸﺎﻫﺪه ﻛﻨﻴﺪ‪.‬‬

‫‪ 4-7‬ﺑﻌﻀﻲ از ﻗﺎﺑﻠﻴﺖ ﻫﺎي ﮔﺮاﻓﻴﻜﻲ ﻣﺘﻠﺐ‬


‫زاوﻳﻪ دﻳﺪ ﻳﻚ ﺗﺼﻮﻳﺮ‬
‫ﻋﺒﺎرت ‪ [a b] = view‬زاوﻳﻪ دﻳﺪ ﻓﻌﻠﻲ ﺗﺮﺳﻴﻢ را ﻣﻲدﻫﺪ‪ .‬ﻋﺪد ‪ a‬زاوﻳﻪ ﭼﺮﺧﺶ اﻓﻘﻲ و ﻋﺪد ‪ b‬زاوﻳﻪ ﭼﺮﺧﺶ‬
‫ﻋﻤﻮدي ﺷﻜﻞ را ﻧﺴﺒﺖ ﺑﻪ دﻳﺪ ﻣﺴﺘﻘﻴﻢ از روﺑﺮو ﻣﻲدﻫﻨﺪ‪ .‬ﻣﻘﺎدﻳﺮ ﭘﻴﺶ ﻓﺮض زاوﻳﻪ دﻳﺪ ﺑﻪ ﻫﻨﮕﺎم رﺳﻢ ﻫﺮ ﮔﺮاف ‪-37.5‬‬
‫درﺟﻪ ﭼﺮﺧﺶ اﻓﻘﻲ )در ﺧﻼف ﺟﻬﺖ ﻋﻘﺮﺑﻪﻫﺎي ﺳﺎﻋﺖ( و ﭼﺮﺧﺶ ﻋﻤﻮدي ﺑﻪ اﻧﺪزه ‪ +30‬درﺟﻪ )درﺟﻬﺖ ﻋﻘﺮﺑﻪﻫﺎي‬
‫ﺳﺎﻋﺖ( اﺳﺖ‪ .‬دﺳﺘﻮر )‪ view(a,b‬زاوﻳﻪ دﻳﺪ را دﺳﺘﻲ ﺗﻐﻴﻴﺮ ﻣﻲدﻫﺪ‪ .‬ﻋﺪد ‪ a‬زاوﻳﻪ ﭼﺮﺧﺶ اﻓﻘﻲ ﺟﺪﻳﺪ و ﻋﺪد ‪b‬‬
‫زاوﻳﻪ ﭼﺮﺧﺶ ﻋﻤﻮدي ﺟﺪﻳﺪ ﺷﻜﻞ را اﻳﺠﺎد ﻣﻲﻛﻨﻨﺪ‪ .‬ﺑﺎ اﻧﺘﺨﺎبﻫﺎﺋﻲ از ﻣﻨﻴﻮي ‪ Tools‬زاوﻳﻪ دﻳﺪ را ﺑﺎ ﻣﺎوس ﺗﻐﻴﻴﺮ دﻫﻴﺪ‬
‫ﻣﺜﺎل‪:‬‬
‫ﻛﻼه ﻣﻜﺰﻳﻜﻲ ﻣﺘﻠﺐ را رﺳﻢ ﻛﻨﻴﺪ‪ .‬زاوﻳﻪ ﭼﺮﺧﺶ اﻓﻘﻲ و ﻋﻤﻮدي ﺷﻜﻞ را ﭘﻴﺪا ﻛﺮده‪ ،‬ﺳﭙﺲ زاوﻳﻪ را ﺑﻪ دﻳﺪ روﺑﺮو ﺑﺒﺮﻳﺪ‪.‬‬
‫‪% mex.m‬‬
‫;)‪[x y ] = meshgrid(-8 : 0.5 : 8.5‬‬
‫;‪r = sqrt(x.^2 + y.^2) + eps‬‬
‫;‪z = sin(r) ./ r‬‬
‫)‪mesh(z‬‬
‫‪[a b] = view‬‬
‫)‪view(0,0‬‬
‫‪>> mex‬‬
‫‪a = -37.5000 b = 30‬‬

‫‪79‬‬
‫ﺷﻜﻞ ‪5-7‬‬

‫‪getframe‬‬ ‫ﺗﺼﻮﻳﺮﺑﺮداري ﺑﺎ‬


‫ﺑﺎ دﺳﺘﻮر ‪ getframe‬ﻣﻲﺗﻮان از ﻫﺮ ﻳﻚ از زواﻳﺎي ﮔﺮاف ﻳﻚ ﻋﻜﺲ ﮔﺮﻓﺖ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫ﺗﺼﻮﻳﺮ ﻛﻼه ﻣﻜﺰﻳﻜﻲ را اﻳﺠﺎدﻛﺮده‪ ،‬ﺑﺮﻧﺎﻣﻪ زﻳﺮ را ﺑﺮاي آن اﺟﺮا ﻛﻨﻴﺪ‪.‬‬
‫‪% mexmv.m‬‬
‫;)‪[x y ] = meshgrid(-8 : 0.5 : 8.5‬‬
‫;‪r = sqrt(x.^2 + y.^2) + eps‬‬
‫;‪z = sin(r) ./ r‬‬
‫)‪mesh(z‬‬
‫‪grid off‬‬
‫‪axis off‬‬
‫‪hidden off‬‬
‫‪for k = 1: 150‬‬
‫)‪view(-37.5 + k,30 - k‬‬
‫;‪getframe‬‬
‫‪end‬‬
‫‪>> mexmv‬‬
‫ﻫﻢﭼﻨﻴﻦ ﻣﻲﺗﻮان ﻣﺠﻤﻮﻋﻪ ﻓﺮﻳﻢﻫﺎ را داﺧﻞ ﻳﻚ ﻣﺎﺗﺮﻳﺲ رﻳﺨﺖ‪ ،‬و در ﺻﻮرت ﻟﺰوم ﺑﺎ دﺳﺘﻮر ‪ save‬آن را روي دﻳﺴﻚ‬
‫ﻧﮕﻪداري ﻛﺮد‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫ﺗﺎﺑﻊ داﺧﻠﻲ ‪ peaks‬را ﺑﻪ ﺣﺮﻛﺖ درآورده و ﻓﻴﻠﻢ آن را در ﻣﺎﺗﺮﻳﺴﻲ ﺑﻪﻧﺎم ‪ mi‬ﻧﮕﻪدارﻳﺪ‪.‬‬
‫‪% pk.m‬‬
‫‪peaks‬‬
‫‪axis off, grid off‬‬
‫‪for k = 1:20‬‬
‫;)‪view(-37.5+30*k,30+30*k‬‬
‫‪mi(k) = getframe; % mi(:,k) and mi(k,:) are also valid‬‬
‫‪end‬‬
‫‪>> pk‬‬
‫)(‪movie‬‬ ‫ﺑﺎز ﻧﻤﺎﻳﺶ ﻓﻴﻠﻢ ﺑﺎدﺳﺘﻮر‬
‫اﮔﺮ ﻣﺘﻐﻴﺮ ‪ mi‬در ﺣﺎﻓﻈﻪ ﻣﺎﻧﺪه ﺑﺎﺷﺪ‪ ،‬ﻳﺎ از دﻳﺴﻚ ﺑﻪ ﺣﺎﻓﻈﻪ ﻣﺘﻠﺐ ﺑﺎر ﮔﺬاري ﺷﺪه ﺑﺎﺷﺪ‪ ،‬ﺗﺼﺎوﻳﺮ ﻧﮕﻪداري ﺷﺪه در آن ﺑﺎ‬
‫دﺳﺘﻮر )‪ movie(mi‬ﺑﻪ ﻧﻤﺎﻳﺶ ﻣﺠﺪد درﻣﻲآﻳﺪ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫ﺑﺮاي ﻣﺜﺎل ﻓﻮق ﻗﺎبﻫﺎي ﺗﺼﻮﻳﺮ را در ﻳﻚ ﻓﺎﻳﻞ ‪ .mat‬ﺿﺒﻂ ﻛﺮده‪ ،‬و در اﺟﺮاي ﺑﻌﺪي ﻣﺘﻠﺐ ﺑﻪ ﻧﻤﺎﻳﺶ درآورﻳﺪ‪.‬‬
‫‪% Ldm.m‬‬
‫‪clear x y r z k % removes all but mi for safety‬‬

‫‪80‬‬
‫‪delete mi.mat % if already exists in the current directory‬‬
‫‪save mymov mi % mi variable is saved into mymov.mat file‬‬
‫‪clear mi % removes mi‬‬
‫‪>> Ldm‬‬
‫در اﺟﺮاي ﺑﻌﺪي ﻣﺘﻠﺐ‪:‬‬
‫‪>> load mymov‬‬
‫)‪>> movie(mi‬‬
‫‪ 5-7‬ﺗﻐﻴﻴﺮات روي ﻗﺴﻤﺘﻲ از ﺳﻄﺢ ﺗﺮﺳﻴﻢ ﺳﻪ ﺑﻌﺪي‬
‫ﺣﺬف ﻗﺴﻤﺘﻲ از ﺳﻄﺢ‬
‫اﻳﻦ ﻛﺎر ﺑﺎ اﺳﺘﻔﺎده از ‪ ، nan‬ﺿﺮب در ﺻﻔﺮ‪ ،‬و ﻣﺎﺗﺮﻳﺲ ﺗﻬﻲ اﻧﺠﺎم ﻣﻲﺷﻮد‪ .‬ﻫﺮﻳﻚ از روشﻫﺎ ﺑﻪ ﻧﻮﻋﻲ ﻋﻤﻞ ﺣﺬف را‬
‫اﻧﺠﺎم ﻣﻲدﻫﻨﺪ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫‪3‬‬ ‫‪3‬‬
‫در ﻳﻚ ام‪ -‬ﻓﺎﻳﻞ ﺗﺎﺑﻊ ﻓﻀﺎﺋﻲ ‪ z = x - y‬را رﺳﻢ و ﺳﭙﺲ ﻗﺴﻤﺘﻲ از آن را ﺣﺬف ﻛﺮده‪ ،‬ﻧﺘﻴﺠﻪ را رﺳﻢ ﻛﻨﻴﺪ‪.‬‬
‫‪% nn.m‬‬
‫;‪a = 0:10‬‬
‫;‪b = 0:6‬‬
‫;)‪[x y] = meshgrid(a,b‬‬
‫;)‪z = (x.^3 - y.^3‬‬
‫)‪mesh(z‬‬
‫;])‪z1 = [nan*z(1:2,:); z(3:size(z,1),:‬‬
‫)‪figure(2‬‬
‫'‪mesh(z1), title 'Z1‬‬
‫;])‪z2 = [0*z(1:2,:); z(3:size(z,1),:‬‬
‫)‪figure(3‬‬
‫'‪mesh(z2), title 'Z2‬‬
‫][=)‪z(1:2,:‬‬
‫)‪figure(4‬‬
‫‪mesh(z)>> nn‬‬

‫‪NAN‬‬
‫‪Zero‬‬

‫ﺷﻜﻞ ‪6-7‬‬

‫‪ 6-7‬ﺳﺎﻳﺮ دﺳﺘﻮر ﻫﺎي ﺗﺮﺳﻴﻢ ﺳﻪ ﺑﻌﺪي‬


‫رﺳﻢ ﺳﻄﺢ )(‪ surf‬ﺷﺒﻴﻪ )(‪ mesh‬اﺳﺖ‪ ،‬اﻣﺎ ﺳﻄﺢ را ﺑﻪ ﺻﻮرت ﺷﻄﺮﻧﺠﻲ رﺳﻢ ﻣﻲﻛﻨﺪ‪.‬‬
‫اﮔﺮ ﺑﺮآﻣﺪﮔﻲ ﻣﺮﺗﻔﻌﻲ را از ﺑﺎﻻ ﺑﻪ ﻃﻮر ﻋﻤﻮدي ﻧﮕﺎه ﻛﻨﻴﻢ‪ ،‬ارﺗﻔﺎع ﺳﻄﻮح ﻣﺨﺘﻠﻒ آن را ﻣﻲﺗﻮان ﺑﻪ ﺻﻮرت دواﻳﺮي‬
‫ﻣﺘﺤﺪاﻟﻤﺮﻛﺰ ﻧﺸﺎن داد‪ .‬اﻳﻦ دواﻳﺮ در اﺻﻄﻼح ﺟﻐﺮاﻓﻴﺎﺋﻲ ﻛﻨﺘﻮر ﻧﺎم دارﻧﺪ‪ .‬دﺳﺘﻮر )(‪ contour‬اﻳﻦ ﺗﺮﺳﻴﻢ را ﺑﻪدﺳﺖ‬
‫ﻣﻲدﻫﺪ )اﻣﺘﺤﺎن ﻛﻨﻴﺪ(‪ .‬دﺳﺘﻮرﻫﺎي )(‪ meshc(), surfc‬ﺣﺠﻢ را ﻫﻢراه ﺑﺎ ﻛﻨﺘﻮر در زﻳﺮ آن ﻧﻤﺎﻳﺶ ﻣﻲدﻫﺪ‪.‬‬

‫‪81‬‬
‫ﻣﺜﺎل‪:‬‬
‫راﺑﻄﻪ ﻣﺜﺎل ﻓﻮق را ﻫﻢراه ﺑﺎ ﻛﻨﺘﻮر در زﻳﺮ رﺳﻢ ﻛﻨﻴﺪ‪.‬‬
‫>>‬ ‫;‪a = -5:5‬‬
‫>>‬ ‫;)‪[x y] = meshgrid(a‬‬
‫>>‬ ‫;)‪z = (-x.^2 - y.^2‬‬ ‫‪0‬‬
‫>>‬ ‫)‪surfc(z‬‬
‫‪-10‬‬

‫‪-20‬‬

‫‪-30‬‬

‫‪-40‬‬

‫‪-50‬‬
‫‪15‬‬

‫‪10‬‬
‫ﺷﻜﻞ ‪7-7‬‬ ‫‪10‬‬
‫‪5‬‬
‫‪5‬‬
‫‪0‬‬ ‫‪0‬‬

‫‪ 7-7‬ﺗﻤﺮﻳﻦ‬
‫‪ -1‬داﻳﺮهاي ﻣﺴﻄﺢ اﻳﺠﺎد ﻛﻨﻴﺪ‪ z1 .‬را ﺗﺎﺑﻌﻲ از ‪ x1,y1‬ﻳﺎ ﻫﺮدو ﺑﮕﻴﺮﻳﺪ )ﻣﺜﻼً ‪ .( z1 = x1.^2‬ﮔﻮﻧﻪﮔﻮﻧﻲﻫﺎي‬
‫ﻣﻨﺤﻨﻲ را ﺑﺎ ﺗﻐﻴﻴﺮ ﺟﺎي ‪ x1,y1,z1‬رﺳﻢ ﻛﻨﻴﺪ‪.‬‬
‫راﻫﻨﻤﺎ‪(plot3(x1,y1,z1),plot3(x1,z1,y1),... :‬‬
‫‪ -2‬ﺑﺎ اﺳﺘﻔﺎده از ﻓﺮﻣﻮلﻫﺎي)‪ x2 = exp(-0.03*alf).*cos(alf‬و‬
‫)‪ y2 = exp(-0.03*alf).*sin(alf‬ﻳﻚ ﻣﺎرﭘﻴﭻ ﻣﺨﺮوﻃﻲ ﻓﻀﺎﺋﻲ اﻳﺠﺎد ﻛﻨﻴﺪ‪ .‬ﺳﭙﺲ زاوﻳﻪ دﻳﺪ‬
‫را ﺑﺎ اﺳﺘﻔﺎده از اﻧﺘﺨﺎب ‪ Tools_Rotate 3D‬از ﻣﻨﻮي ﮔﺮاف ﺗﻐﻴﻴﺮ دﻫﻴﺪ‪ .‬ﭘﺲ از ﻫﺮ ﺑﺎر ﺗﻐﻴﻴﺮ ﻣﻘﺪار زواﻳﺎ‬
‫را ﺑﺎ اﺳﺘﻔﺎده از دﺳﺘﻮر ‪ [a b] = view‬روي ﭘﻨﺠﺮه ﻓﺮﻣﺎن ﻣﺸﺎﻫﺪه ﻛﻨﻴﺪ‪.‬‬
‫‪ -3‬ﻣﺎﺗﺮﻳﺲ ‪ M‬را ﺑﺴﺎزﻳﺪ و دﺳﺘﻮرﻫﺎي)‪ mesh(M‬و )‪ mesh(X,Y,Z‬را اﺟﺮا ﻛﻨﻴﺪ‪.‬‬
‫‪ -4‬ﺑﺎ اﺳﺘﻔﺎده از ‪ v = -5:5‬ﻣﺎﺗﺮﻳﺲﻫﺎي ‪ Xp‬و ‪ Yp‬و ﺳﭙﺲ ‪ Zp‬را )ﺑﻪ ﺻﻮرت ﺗﻮاﺑﻊ ﭼﻨﺪ ﺟﻤﻠﻪاي از ‪ Xp‬و‬
‫‪ (Yp‬ﺗﻌﺮﻳﻒ ﻛﻨﻴﺪ‪ Zp.‬را ﻳﻚﺑﺎر ﻫﻤﺮاه ﺑﺎ اﻳﻦ دو ﻣﺎﺗﺮﻳﺲ و ﻳﻚﺑﺎر ﺑﻪ ﺗﻨﻬﺎﺋﻲ ‪ mesh‬ﻛﻨﻴﺪ‪.‬‬
‫‪ -5‬ﻣﺎﺗﺮﻳﺲ ‪ Zp = Xp.^2 + Yp.^3‬را ﺑﺎ ﻣﻘﺪار دﻫﻲ ﻣﻨﺎﺳﺐ )‪ mesh(Zp‬ﻛﻨﻴﺪ‪ .‬اﻧﺪﻳﺲ ردﻳﻒﻫﺎ‬
‫)‪ (9‬و اﻧﺪﻳﺲ ﺳﺘﻮنﻫﺎي )‪ (13‬آن را روي ﻣﺤﻮرﻫﺎ ﻣﺸﺨﺺ ﻛﻨﻴﺪ‪.‬‬
‫‪ -6‬ﻣﻌﺎدل ﻣﻮازي دو ﻣﻘﺎوﻣﺖ )‪ [R1 R2]= meshgrid(10:10:100‬را ﺑﻪ ﺻﻮرت ﺳﻄﺢ رﺳﻢ ﻛﻨﻴﺪ‪.‬‬
‫‪ -7‬ﺑﺎ دﺳﺘﻮر ‪ sphere‬ﻳﻚ ﻛُﺮه اﻳﺠﺎد ﻛﺮده‪ ،‬آن را ﺑﻪ ﭼﺮﺧﺶ درآورده‪ ،‬و ﻓﻴﻠﻤﻲ ازآن ﺗﻬﻴﻪ ﻧﻤﺎﺋﻴﺪ‪.‬‬
‫‪ -8‬ﻣﺎﺗﺮﻳﺲﻫﺎي ﻣﺨﺘﺼﺎت اﺳﺘﻮاﻧﻪاي را اﻳﺠﺎد ﻛﺮده و رﺳﻢ ﻛﻨﻴﺪ‪ .‬ﺳﭙﺲ ﺑﺎ ﻓﺮﻣﻮلﻫﺎﺋﻲ ﻧﻈﻴﺮ‬
‫;))‪ [X,Y,Z] = cylinder(cos(t‬ﺷﮕﺮدﻫﺎي ﺗﺼﻮﻳﺮي ﺑﺴﺎزﻳﺪ‪ .‬از ‪ axis square‬اﺳﺘﻔﺎده‬
‫ﻛﻨﻴﺪ‪.‬‬
‫‪ -9‬ﺳﻄﺢ ‪ peaks‬را رﺳﻢ ﻛﻨﻴﺪ‪ .‬ﺳﭙﺲ ‪ axis off; hidden off‬را اﺟﺮا ﻛﻨﻴﺪ‪.‬‬

‫‪82‬‬
‫ﻓﺼﻞ ‪ 8‬ﺳﺎﺧﺘﺎرﻫﺎي ﺗﺼﻤﻴﻢ و ﺗﻜﺮار‬
‫‪ 1-8‬ﺳﺎﺧﺘﺎرﻫﺎي ﺗﺼﻤﻴﻢ و ﻋﻮاﻣﻞ آن‬
‫‪Relational Operators‬‬ ‫ﻋﻤﻠﮕﺮﻫﺎي ﻧﺴﺒﺘﻲ )راﺑﻄﻪ اي(‬
‫=<‬ ‫=>‬ ‫<‬ ‫>‬ ‫=~‬ ‫==‬ ‫ﻋﻼﻣﺖ‬
‫ﺑﺰرگﺗﺮ ﻳﺎ ﻣﺴﺎوي ﻛﻮﭼﻚﺗﺮ ﻳﺎ ﻣﺴﺎوي‬ ‫ﻛﻮﭼﻚﺗﺮ‬ ‫ﺗﺴﺎوي ﺷﺮﻃﻲ ﻧﺎﻣﺴﺎوي ﺷﺮﻃﻲ ﺑﺰرگﺗﺮ‬ ‫ﻋﻤﻞ‬
‫ﻋﻤﻞﮔﺮﻫﺎي ﻧﺴﺒﺘﻲ )راﺑﻄﻪ اي( ﺑﺮاﺳﺎس ﺟﺪول ﻓﻮق ﻣﻘﺎﻳﺴﻪ ﻣﺎﺑﻴﻦ دو آراﻳﻪ اﻧﺠﺎم ﻣﻲدﻫﻨﺪ‪ .‬ﻧﺘﻴﺠﻪ ﻫﺮ ﻣﻘﺎﻳﺴﻪ ‪ 0‬ﻳﺎ ‪ 1‬ﻣﻨﻄﻘﻲ‬
‫اﺳﺖ‪ .‬اﻳﻦﮔﻮﻧﻪ ﻋﻤﻠﻴﺎت ﻣﻌﻤﻮﻻٌ در دﺳﺘﻮرﻫﺎي ﺷﺮﻃﻲ ﻧﻈﻴﺮ ‪ if‬ﻛﺎرﺑﺮد دارﻧﺪ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫;]‪>> A = [-2 0 2 4‬‬
‫;]‪>> B = [-2 0 1 3‬‬
‫‪>> A == B‬‬ ‫‪ans = 1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬
‫‪Logical Operators‬‬ ‫ﻋﻤﻠﮕﺮﻫﺎي ﻣﻨﻄﻘﻲ‬
‫~‬ ‫|‬ ‫&‬ ‫ﻋﻼﻣﺖ‬
‫‪NOT‬‬ ‫‪OR AND‬‬ ‫ﻋﻤﻞ‬
‫ﻋﻤﻞﮔﺮﻫﺎي ﻣﻨﻄﻘﻲ ﻣﺎﺑﻴﻦ ﺻﻔﺮ و ﻳﻚﻫﺎي ﻣﻨﻄﻘﻲ ﻋﻤﻞ ﻣﻲﻛﻨﻨﺪ‪ ،‬و ﻧﺘﻴﺠﻪ آنﻫﺎ ‪ 0‬ﻳﺎ ‪ 1‬ﻣﻨﻄﻘﻲ اﺳﺖ‪ .‬ﺗﺮﻛﻴﺐ ﻋﻤﻠﻴﺎت‬
‫ﻣﻘﺎﻳﺴﻪاي و ﻣﻨﻄﻘﻲ ﻣﻌﻤﻮﻻٌ در دﺳﺘﻮرﻫﺎي ﺷﺮﻃﻲ ﻧﻈﻴﺮ ‪ if‬ﻛﺎرﺑﺮد دارﻧﺪ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫)‪>> CL = (A == B‬‬ ‫‪CL = 1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬
‫‪>> (A < B) & CL‬‬ ‫‪ans = 0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬
‫‪>> (A < B)|CL‬‬ ‫‪ans = 1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬
‫‪if‬‬ ‫ﺑﻠﻮك‬
‫ﻓﺮم ﻛﻠﻲ ﺑﻠﻮك ‪ if‬در زﻳﺮ آﻣﺪه اﺳﺖ‪ .‬اﮔﺮ ﻧﺘﻴﺠﻪ ﺷﺮط ‪ condition‬ﻣﻨﻄﻖ ﻳﻚ )درﺳﺘﻲ( ﺑﻮد دﺳﺘﻮرات زﻳﺮ ‪ if‬ﻳﺎ‬
‫دﺳﺘﻮرات زﻳﺮ ‪ elseif‬اﺟﺮا ﻣﻲﺷﻮﻧﺪ‪ ،‬اﮔﺮ ﻧﺘﻴﺠﻪ ﺷﺮط ﻣﻨﻄﻖ ﺻﻔﺮ )ﻧﺎدرﺳﺘﻲ( ﺑﻮد دﺳﺘﻮرات زﻳﺮ ‪ if‬ﻳﺎ دﺳﺘﻮرات زﻳﺮ‬
‫‪ elseif‬اﺟﺮا ﻧﻤﻲﺷﻮﻧﺪ‪ .‬در ﺻﻮرت درﺳﺘﻲ ﭼﻨﺪ ﺷﺮط دﺳﺘﻮرات زﻳﺮ اوﻟﻴﻦ ﺷﺮط درﺳﺖ اﺟﺮا ﺷﺪه و ﺑﺮﻧﺎﻣﻪ ﭘﺲ از‬
‫ﺧﺮوج از ﺑﻠﻮك ‪ if‬از اوﻟﻴﻦ دﺳﺘﻮر ﺑﻌﺪ از ‪ end‬اداﻣﻪ ﻣﻲﻳﺎﺑﺪ‪ .‬اﮔﺮ ﻧﺘﻴﺠﻪ ﻫﻤﻪ ﺷﺮطﻫﺎ ﻣﻨﻄﻖ ﺻﻔﺮ )ﻧﺎدرﺳﺘﻲ( ﺑﻮد‬
‫دﺳﺘﻮرات زﻳﺮ ‪ else‬اﺟﺮا ﻣﻲﺷﻮﻧﺪ‪ .‬ﻳﻚ ﺑﻠﻮك ‪ if‬ﻣﻲﺗﻮاﻧﺪ ‪ elseif‬ﻫﺎ و‪ /‬ﻳﺎ ‪ else‬را ﻧﺪاﺷﺘﻪ ﺑﺎﺷﺪ‪.‬‬
‫‪if condition1‬‬
‫‪statements1‬‬
‫‪elseif condition2‬‬
‫‪statements2‬‬
‫‪.‬‬
‫‪.‬‬
‫‪else‬‬
‫‪statementsN‬‬
‫‪end‬‬
‫‪switch‬‬ ‫ﺑﻠﻮك‬
‫ﻓﺮم ﻛﻠﻲ ‪ switch‬در زﻳﺮ آﻣﺪه اﺳﺖ‪ .‬در ﻣﻘﺎﺑﻞ ‪ switch‬ﻧﺎم ﻳﻚ ﻣﺘﻐﻴﺮ ﺗﻚ ﻋﻨﺼﺮي ﺑﻪ ﻧﺎم ﻣﺘﻐﻴﺮ ﻣﺒﻨﺎ ﻣﻲآﻳﺪ‪ .‬در ﻣﻘﺎﺑﻞ‬
‫ﻫﺮ ‪ case‬ﻳﻚ ﻣﻘﺪار ﻳﺎ ﭼﻨﺪ ﻣﻘﺪار )داﺧﻞ آﻛﻼد( ﺑﻪ ﻣﺘﻐﻴﺮ ﻣﺒﻨﺎ ﻧﺴﺒﺖ داده ﻣﻲﺷﻮد‪ ،‬و در ﺻﻮرت ﺻﺪق آن ﻣﻘﺪار )ﻳﺎ ﻳﻜﻲ‬
‫از ﭼﻨﺪ ﻣﻘﺪار( دﺳﺘﻮرات زﻳﺮ ﻫﻤﺎن ‪ case‬اﺟﺮا ﻣﻲﺷﻮﻧﺪ‪.‬‬

‫‪83‬‬
var = ...
switch var
case value of var
statements1
case {values of var}
statements2
otherwise
statements3
end
:‫ﻣﺜﺎل‬
.‫ ﻓﺮد ﻳﺎ ﺻﻔﺮ ﺑﻮدن آن را ﺗﻌﻴﻴﻦ ﻛﻨﻴﺪ‬،‫ ﻓﺎﻳﻞ ﻋﺪدي ﺗﺼﺎدﻓﻲ ﺑﻴﻦ ﺻﻔﺮ و ﻧُﻪ ﺗﻮﻟﻴﺪ و زوج‬-‫در ﻳﻚ ام‬
% sw.m
d = floor(10*rand);
disp(d);
switch d
case 0
disp('Zero');
case {1,3,5,7,9}
disp('Odd');
otherwise
disp('Even');
end
>> sw 2 Even
>> sw 9 Odd
>> sw 0 Zero
‫ ﺳﺎﺧﺘﺎرﻫﺎي ﺗﻜﺮار‬2-8
for ‫ﺣﻠﻘﻪ‬
‫ و ﺣﻠﻘﻪ ﺑﺮاي ﻫﺮ ﮔﺎم‬،‫ از ﻣﻘﺪار اوﻟﻴﻪ ﺗﺎ ﻣﻘﺪار ﻧﻬﺎﺋﻲ ﺧﻮد را ﺑﺎ ﮔﺎم ﻣﻌﻴﻦ ﻃﻲ ﻣﻲﻛﻨﺪ‬index ‫در اﻳﻦ ﺣﻠﻘﻪ ﺷﻤﺎرﻧﺪهاي‬
.‫ ﻣﻲﺗﻮان ﺷﻤﺎرﻧﺪه را ﻣﺴﺎوي ﻳﻚ ﺑﺮدار ﻗﺮار داد‬.‫ﺗﻐﻴﻴﺮِ ﺷﻤﺎرﻧﺪه ﺗﻜﺮار ﻣﻲﺷﻮد‬
:‫ﻣﺜﺎل ﻫﺎ‬
‫ﺟﺪول ﺗﻮان‬
% fr.m
d = 1:2:9;
for k = d
disp(k^2)
end
>> fr 1 9 25 49 81
‫ ﻛﺴﻴﻨﻮس‬،‫ﺟﺪول ﺳﻴﻨﻮس‬
% sn.m
v = [0 : pi/6 : pi];
fprintf('\n');
disp(['Angle Sine Cosine'])
for k = v
fprintf('%6.2f %6.2f %6.2f\n',180*k/pi, sin(k), cos(k));
end

84
‫‪>> sn‬‬
‫‪Angle‬‬ ‫‪Sine‬‬ ‫‪Cosine‬‬
‫‪0.00‬‬ ‫‪0.00‬‬ ‫‪1.00‬‬
‫‪30.00‬‬ ‫‪0.50‬‬ ‫‪0.87‬‬
‫‪60.00‬‬ ‫‪0.87‬‬ ‫‪0.50‬‬
‫‪90.00‬‬ ‫‪1.00‬‬ ‫‪0.00‬‬
‫‪120.00‬‬ ‫‪0.87‬‬ ‫‪-0.50‬‬
‫‪150.00‬‬ ‫‪0.50‬‬ ‫‪-0.87‬‬
‫‪180.00‬‬ ‫‪0.00‬‬ ‫‪-1.00‬‬
‫ﺗﻌﻴﻴﻴﻦ ﻓﺎﻛﺘﻮرﻳﻞ ﻋﺪد ﺻﺤﻴﺢ ﻣﺜﺒﺖ‪ ،‬اﻋﺪاد ‪ 1‬ﺗﺎ ‪5‬‬
‫‪% fac.m‬‬ ‫= ‪fc‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪6‬‬ ‫‪24‬‬ ‫‪120‬‬
‫‪clear‬‬
‫ﻣﺘﻐﻴﺮﻫﺎ را از ﺣﺎﻓﻈﻪ ﭘﺎك ﻣﻲﻛﻨﺪ ‪%‬‬
‫;‪n = 5; fact = 1‬‬
‫;‪ss = 1‬‬
‫‪for k = ss : n‬‬
‫;‪fact = k*fact‬‬
‫;‪fc(k) = fact‬‬
‫‪end‬‬
‫‪fc‬‬
‫)'‪plot([ss:n],fc,'Or‬‬
‫‪>> fac‬‬
‫ﺷﻜﻞ ‪1-8‬‬

‫ﺑﻠﻮك ‪try...catch‬‬
‫ﻣﺜﺎل‪:‬‬
‫اﻋﻀﺎي ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﺳﻠﻮﻟﻲ را ﺟﺪاﮔﺎﻧﻪ ﭼﺎپ ﻛﻨﻴﺪ‪ .‬وﻗﺘﻲ ﺑﻪ آﺧﺮ رﺳﻴﺪ ﺑﺮﻧﺎﻣﻪ ﺗﻤﺎم وﭘﻴﻐﺎم ‪ Not Found‬دﻳﺪه ﺷﻮد‪.‬‬
‫‪%TryCth.m‬‬
‫‪echo off‬‬
‫;‪n=1:10‬‬
‫; }‪A={'Number' 234 'next' 9‬‬
‫‪for k=n‬‬
‫‪try‬‬
‫))‪disp(A(k‬‬
‫‪catch‬‬
‫‪disp('Not Found'), break‬‬
‫‪end‬‬
‫‪end‬‬
‫‪>> TryCth.m‬‬
‫ﺑﻪ دﺳﺖ آوردن ﻃﻮل زﻣﺎن ﻣﺤﺎﺳﺒﻪ ﺣﺎﺻﻞﺟﻤﻊ اﻋﺪاد ﺑﻴﻦ ﺻﻔﺮ ﺗﺎ ﻳﻚ ﺑﻴﻠﻴﻮن ﺑﺎ ﮔﺎم ﺻﺪ‬
‫;‪t0 = clock‬‬
‫;‪s1 = 0‬‬
‫‪for n = 0 : 100 : 1e9‬‬ ‫‪ n‬ﻳﻚ ﺷﻤﺎرﻧﺪه اﺳﺖ ﺑﺎ ﻣﻘﺪار ﻧﻬﺎﺋﻲ ﻳﻚ ﺑﻴﻠﻴﻮن ﺑﺎ ﮔﺎم ﺻﺪ ‪%‬‬
‫; ‪s1 = s1 + n‬‬
‫‪end‬‬
‫;))‪elaps1 = num2str(etime(clock,t0‬‬
‫)]'‪disp( ['For loop duration = ', elaps1, ' Secs‬‬
‫)])‪disp(['sum1 = ' num2str(s1‬‬
‫ﺗﺎﺑﻊ )(‪ etime‬ﻓﺎﺻﻠﻪ زﻣﺎﻧﻲ ﺑﻴﻦ آرﮔﻮﻣﺎنﻫﺎﻳﺶ را ﻣﻲدﻫﺪ‪ ،‬ﺑﺮاي آوردن در ‪ disp‬ﺑﻪ رﺷﺘﻪ ﺗﺒﺪﻳﻞ ﺷﺪه اﺳﺖ‪.‬‬

‫‪85‬‬
‫ﺑﺮدار ﺑﻪ ﺟﺎي ﺣﻠﻘﻪ ‪for‬‬
‫ﻣﺜﺎل ﻓﻮق را ﺑﺪون اﺳﺘﻔﺎده از ‪ for‬ﺣﻞ ﻛﻨﻴﺪ‪ .‬ﻃﻮل زﻣﺎن اﻳﻦ دو روش را ﺑﺮاي ﻛﺎﻣﭙﻴﻮﺗﺮ ﺧﻮدﺗﺎن ﻣﻘﺎﻳﺴﻪ ﻛﻨﻴﺪ‪.‬‬
‫;‪t0 = clock‬‬
‫;‪m = 0 : 100 : 1e9‬‬
‫;)‪s2 = sum(m‬‬
‫;))‪elaps2 = num2str(etime(clock,t0‬‬
‫)]'‪disp( ['Vectorization duration = ', elaps2 ', Secs‬‬
‫)])‪disp(['sum2 = ' num2str(s2‬‬
‫در ﺑﻌﻀﻲ ﻣﻮارد اﺳﺘﻔﺎده از ﺣﻠﻘﻪ ‪ for‬اﻟﺰاﻣﻲ اﺳﺖ و ﻧﻤﻲﺗﻮان ﺑﻪ ﺟﺎي ﺣﻠﻘﻪ ‪ for‬از ﺑﺮدار اﺳﺘﻔﺎده ﻛﺮد‪.‬‬

‫‪break‬‬ ‫ﺣﻠﻘﻪ ‪ while‬و دﺳﺘﻮر‬


‫ﺣﻠﻘﻪ ‪ while‬ﻣﺎﻧﻨﺪ ‪ for‬دﺳﺘﻮرات داﺧﻞ ﺣﻠﻘﻪ را ﺗﻜﺮار ﻣﻲﻛﻨﺪ‪ ،‬اﻣﺎ ﺷﻤﺎرﻧﺪه ﻧﺪارد‪ .‬دﺳﺘﻮرات داﺧﻞ ﺣﻠﻘﻪ ‪while‬‬
‫ﺗﺎزﻣﺎﻧﻲﻛﻪ ﺷﺮط ﻣﻘﺎﺑﻞ ﻛﻠﻤﻪ ‪ while‬ﺑﺮﻗﺮار ﺑﺎﺷﺪ اﺟﺮا ﺧﻮاﻫﻨﺪ ﺷﺪ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫ﺗﻌﻴﻴﻦ اﻋﺪاد اول‬
‫ﻳﻚ ‪ M-File‬ﺑﻪﻧﺎم ‪ primen.m‬ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ اﻋﺪاد اول ﻛﻮﭼﻚﺗﺮ از ‪(n >= 5) n‬را ﺑﻪ دﺳﺖ آورد‪.‬‬
‫اﻳﻦ ﻣﺜﺎل ﻛﺎرﺑﺮدﻫﺎي ﻋﺒﺎرات و ﺗﻮاﺑﻊ زﻳﺮ را ﻧﻴﺰ ﺗﻮﺿﻴﺢ ﻣﻲدﻫﺪ‪ .‬ﺑﻪ ﺗﻮﺿﻴﺤﺎت ﺗﻮﺟﻪ ﺷﻮد‪:‬‬
‫)(‪input(), fprintf(), while, for, if, break, end, rem‬‬
‫‪% primen.m‬‬
‫;)' ‪n = input('Enter upper limit:‬‬
‫ﺑﺮﻧﺎﻣﻪ‪ 2 ،‬و ‪ 3‬را ﻣﺤﺎﺳﺒﻪ ﻧﻤﻲﻛﻨﺪ ﻟﺬا آنﻫﺎ را ﺟﺪا ﭼﺎپ ﻣﻲﻛﻨﻴﻢ ‪fprintf('%d %d',2,3); %‬‬
‫;‪ii = 5‬‬
‫از ‪ 5‬ﺷﺮوع ﻣﻲﻛﻨﻴﻢ و ﺗﻘﺴﻴﻢ ﭘﺬﻳﺮي ‪ ii‬ﺑﺮ ﻛﻠﻴﻪ اﻋﺪاد ﻣﺎﻗﺒﻠﺶ را اﻣﺘﺤﺎن ﻣﻲﻛﻨﻴﻢ ﺗﺎ ﻧﻬﺎﻳﺘﺎٌ ‪ ii‬ﺑﻪ ‪ n‬ﺑﺮﺳﺪ ‪%‬‬
‫‪while ii < n‬‬
‫‪for jj = 2 : ii-1‬‬
‫‪if rem(ii,jj)== 0 %‬‬
‫‪break‬‬
‫اﮔﺮ ﺗﻘﺴﻴﻢ ﭘﺬﻳﺮ ﺑﻮد ﻋﺪد‪ ،‬اول ﻧﻴﺴﺖ و ﺑﺮﻧﺎﻣﻪ ﺑﻪ ﻋﺒﺎرت ‪ ii=ii+1‬ﻣﻲرود ‪%‬‬
‫‪end‬‬
‫))‪if jj == fix(sqrt(ii‬‬
‫اﮔﺮ ‪ jj‬ﺗﺎ رﻳﺸﻪ دوم ‪ ii‬ﺑﺎﻻ ﺑﻴﺎﻳﺪ و ﻣﻘﺴﻮمﻋﻠﻴﻪ آن ﻧﺒﺎﺷﺪ‪ ،‬ﻋﺪد‪ ،‬اول اﺳﺖ و ﭼﺎپ ﻣﻲﺷﻮد ‪%‬‬
‫;)‪fprintf(' %d',ii‬‬
‫‪break‬‬
‫‪end‬‬
‫‪end‬‬
‫‪ii = ii + 2; % excludes odd numbers‬‬
‫‪end‬‬
‫‪>> primen‬‬
‫‪enter upper limit: 50‬‬
‫‪2 3 5 7 11 13 17 19 23 29 31 37 41 43 47‬‬
‫‪ 3-8‬ﻣﻨﻴﻮ‬
‫ﻣﻨﻴﻮ ﻳﻚ ‪ GUI‬ﺳﺎده اﺳﺖ ﻛﻪ اﻣﻜﺎن اﻧﺘﺨﺎب ﭼﻨﺪ ﮔﺰﻳﻨﻪ را ﻓﺮاﻫﻢ ﻣﻲﻛﻨﺪ‪.‬‬

‫‪86‬‬
‫ﻣﺜﺎل‪:‬‬
‫‪% mnu.m‬‬
‫;‪k = 0‬‬
‫;‪while k < 4‬‬
‫;)'‪k = menu('Help Menu','Operators','Mod','Rem','Exit‬‬
‫‪if k == 1‬‬
‫\ ‪help‬‬
‫‪elseif k == 2‬‬
‫‪help mod‬‬
‫‪elseif k == 3‬‬
‫‪help rem‬‬
‫‪else‬‬
‫;)'‪a = input('Really Exit? (Y/N) ','s‬‬
‫)'‪if (a == 'n') || (a =='N‬‬
‫;‪k = 3‬‬
‫;‪continue‬‬
‫اﺟﺮا را ﺑﻪ اﺑﺘﺪاي ﺣﻠﻘﻪ ‪ while‬ﻣﻨﺘﻘﻞ و ﺷﺮط را ﻣﺠﺪد ﺗﺴﺖ ﻣﻲﻛﻨﺪ ‪%‬‬
‫‪end‬‬
‫‪end‬‬
‫‪end‬‬
‫‪>> mnu‬‬
‫‪ 4-8‬ﺗﻤﺮﻳﻦ‬
‫‪ -1‬ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻳﻚ ﻋﺪد را ﺑﺎ )(‪ input‬درﻳﺎﻓﺖ‪ ،‬و ﺗﻌﻴﻴﻦ ﻛﻨﺪ ﻛﻪ اول اﺳﺖ ﻳﺎ ﻧﻪ‪.‬‬
‫‪ -2‬ﻓﺎﻛﺘﻮرﻳﻞ ‪ 5‬را ﺑﺎ اﺳﺘﻔﺎده از ﺗﺎﺑﻊ )(‪ prod‬ﻛﻪ ﺣﺎﺻﻞﺿﺮب ﭘﺸﺖﻫﻢ ﻋﻨﺎﺻﺮ ﻳﻚ ﻣﺎﺗﺮﻳﺲ را ﺣﺴﺎب ﻣﻲﻛﻨﺪ ﺑﻪ‪-‬‬
‫دﺳﺖ آورﻳﺪ‪.‬‬
‫‪ -3‬ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ‪ 10‬ﻋﺪد ﺗﺼﺎدﻓﻲ ﺑﻴﻦ ﺻﻔﺮ و ‪ 9‬ﺗﻮﻟﻴﺪ و زوج‪ ،‬ﻓﺮد ﻳﺎ ﺻﻔﺮ ﺑﻮدن ﻫﺮ ﻳﻚ را ﭘﺲ از ﺗﻮﻟﻴﺪ‬
‫ﺗﻌﻴﻴﻦ ﻛﻨﺪ‪.‬‬
‫راﻫﻨﻤﺎ‪ :‬ﻓﺮﻣﻮل )‪ d = floor(10*rand‬و ‪ switch d‬را داﺧﻞ ﻳﻚ ﺣﻠﻘﻪ ‪ for‬ﻗﺮار دﻫﻴﺪ‪.‬‬
‫‪ -4‬ﻳﻚ ﻣﻨﻴﻮ ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﺑﺎ اﻧﺘﺨﺎب ﻫﺮ دﻛﻤﻪ ﻳﻚ ﺗﺎﺑﻊ ﻣﺜﻠﺜﺎﺗﻲ را رﺳﻢ ﻛﻨﺪ‪.‬‬

‫‪87‬‬
‫ﻓﺼﻞ ‪ 9‬ﻧﻜﺎﺗﻲ ﭘﻴﺮاﻣﻮن ﺗﻮاﺑﻊ و ﺗﺎﺑﻊ ﻛﺎرﺑﺮ‪ -‬ﺗﻌﺮﻳﻒ‬
‫‪inline function‬‬ ‫‪ 1-9‬ﺗﺎﺑﻊ ﺧﻂ ﻓﺮﻣﺎن‬
‫ﻣﺜﺎل‪:‬‬
‫ﺗﺎﺑﻊ ‪ -x^2 + 1‬را ﺑﻪ ﺻﻮرت ‪ inline‬ﺗﻌﺮﻳﻒ و ﺑﺪون ﻣﻘﺪار دﻫﻲ ﺑﻪ ﻣﺘﻐﻴﺮ آن را رﺳﻢ ﻛﻨﻴﺪ‪.‬‬
‫اﻳﻦ ﺗﺎﺑﻊ ﺑﺎﻳﺴﺘﻲ ﺑﻪ ﺻﻮرت آرﮔﻮﻣﺎن ﺗﺎﺑﻌﻲ ﺑﻪ )(‪ ezplot‬ارﺳﺎل ﺷﻮد‪ .‬ﭼﻮن ﺑﺪون ﻣﻘﺪار دﻫﻲ رﺳﻢ ﻣﻲﺷﻮد‪ ،‬ﻟﺬا داﻣﻨﻪ ﭘﻴﺶﻓﺮضِ‬
‫‪ -2π,+2π‬ﺑﺮاي ‪ x‬در ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﻣﻲﺷﻮد‪ .‬ﻋﻨﻮان ﮔﺮاف و ﺑﺮﭼﺴﺐِ ﻣﺤﻮر‪ ،‬اﺗﻮﻣﺎﺗﻴﻚ ﮔﺬاﺷﺘﻪ ﻣﻲﺷﻮﻧﺪ‪.‬‬
‫در )(‪ fplot‬ﺑﺎﻳﺪ داﻣﻨﻪ ‪ x‬را ﺗﻌﻴﻴﻦ ﻛﺮد و ﻋﻨﻮان و ﺑﺮﭼﺴﺐ ﮔﺬاﺷﺘﻪ ﻧﻤﻲﺷﻮﻧﺪ‪.‬‬
‫)'‪>> fin = inline('-x^2 + 1‬‬
‫‪fin = inline function:‬‬
‫‪fin(x) = -x^2 + 1‬‬
‫)‪>> ezplot(fin‬‬ ‫)]‪>> fplot(fin,[-2 2‬‬

‫ﺷﻜﻞ ‪1-9‬‬

‫‪function M-file‬‬ ‫‪ 2-9‬ام‪ -‬ﻓﺎﻳﻞ ﺗﺎﺑﻌﻲ‬


‫ﺗﺎﺑﻌﻲ ﻛﻪ ﺑﻪ ﺻﻮرت ﺑﺮﻧﺎﻣﻪ ﻧﻮﺷﺘﻪ ﺷﺪه و در داﺧﻞ ﻳﻚ ﻓﺎﻳﻞ ﺿﺒﻂ ﺷﻮد ام‪ -‬ﻓﺎﻳﻞ ﺗﺎﺑﻌﻲ ‪ function M-file‬ﻧﺎم‬
‫دارد‪ ،‬و ﺻﻮرت ﻛﻠﻲ آن اﻳﻦﮔﻮﻧﻪ اﺳﺖ‪:‬‬
‫)‪function [out_arg1,out_arg2,...] = func_name(in_arg1,in_arg2,...‬‬
‫‪% Help Statemants‬‬
‫‪statemants‬‬
‫‪out_arg1 = ...‬‬
‫‪out_arg2 = ...‬‬
‫‪...‬‬
‫‪ -1‬ﻧﺎمﮔﺬاري ‪ out_arg‬ﻫﺎ دلﺧﻮاه اﺳﺖ‪ ،‬در ﺳﻄﺮ آﺧﺮ ﻣﺴﺎوي ﻣﻘﺎدﻳﺮي ﻛﻪ ﻧﺘﻴﺠﻪ ﻋﻤﻠﻴﺎت ﺳﻄﻮر ﻗﺒﻞ اﺳﺖ ﻗﺮار‬
‫ﻣﻲﮔﻴﺮﻧﺪ‪ ،‬و ﻣﻘﺪار ﺗﺎﺑﻊ را ﺑﻪ ﺻﻮرت ﻳﻚ ﺑﺮدار ﺑﺮﻣﻲﮔﺮداﻧﻨﺪ‪ .‬اﮔﺮ ﺗﺎﺑﻊ ﺗﻚ ﻣﻘﺪاري ﺑﺎﺷﺪ‪ ،‬ﻓﻘﻂ ﻳﻚ ‪out_arg‬‬
‫دارد‪.‬‬
‫‪ func_name -2‬ﻧﺎم ﺗﺎﺑﻊ و دلﺧﻮاه اﺳﺖ‪ .‬ﻧﺎم ﻓﺎﻳﻞ ﻧﮕﻪدارﻧﺪهي ﺗﺎﺑﻊ ﺑﺎﻳﺪ ﺑﺎ ﺗﺎﺑﻊ ﻫﻢﻧﺎم ﺑﺎﺷﺪ‪ ،‬ﻳﻌﻨﻲ اﻳﻦ ﺗﺎﺑﻊ ﺑﺎﻳﺪ‬
‫در ﻓﺎﻳﻠﻲ ﺑﻪﻧﺎم ‪ func_name.m‬ﺿﺒﻂ و ﺑﺎ ﻫﻤﺎن ﻧﺎم از ﭘﻨﺠﺮه ﻓﺮﻣﺎن ﻳﺎ از داﺧﻞ ام‪ -‬ﻓﺎﻳﻞ دﻳﮕﺮي ﻓﺮاﺧﻮاﻧﻲ‬
‫)اﺟﺮا( ﺷﻮد)ﻓﺮاﺧﻮاﻧﻲ ﺗﺎﺑﻊ ‪.(function calling -‬‬
‫‪ in_arg -3‬ﻫﺎ ﭘﺎراﻣﺘﺮﻫﺎي وردودي ﺗﺎﺑﻊ ﻫﺴﺘﻨﺪ‪ .‬ﺗﻮاﺑﻊ ﻣﻲﺗﻮاﻧﻨﺪ وروديﻫﺎي ﺑﺮداري از ﻧﻮع رﺷﺘﻪ ﻳﺎ ﻋﺪد داﺷﺘﻪ‬
‫ﺑﺎﺷﻨﺪ‪.‬‬

‫‪88‬‬
‫‪ -4‬اﺟﺮاي ‪ help‬ﺳﻄﻮر ﺑﻌﺪاز ﻋﻼﻣﺖ ﺗﻮﺿﻴﺢ ‪ %‬را ﻧﻤﺎﻳﺶ ﻣﻲدﻫﺪ‪.‬‬
‫‪ statements -5‬ﻋﻤﻠﻴﺎﺗﻲ ﻫﺴﺘﻨﺪ ﻛﻪ ﺑﺮ روي ‪ in_arg‬ﻫﺎ و ﻣﺘﻐﻴﺮﻫﺎي داﺧﻠﻲ ﺗﺎﺑﻊ اﻧﺠﺎم و ﻣﻨﺠﺮ ﺑﻪ ﻣﻘﺪار‬
‫)ﻣﻘﺎدﻳﺮ( ﺑﺮﮔﺸﺘﻲ ﻣﻲﺷﻮﻧﺪ‪.‬‬
‫ﻣﺜﺎل ﻫﺎ‪:‬‬
‫‪2‬‬
‫ﻣﻘﺪار ﻣﻌﺎدﻟﻪ درﺟﻪ دو ‪ n2x + n1x + n0‬و ﻧﻮﺷﺘﻦ راﻫﻨﻤﺎ ﺑﺮاي ﺗﺎﺑﻊ‪.‬‬
‫ﺗﺎﺑﻌﻲ ﺑﻪ ﻧﺎم ‪ y1‬را در ﻳﻚ ام‪ -‬ﻓﺎﻳﻞ ﺗﺎﺑﻌﻲ ﻧﻮﺷﺘﻪ و آن را ﺑﺎ ﻧﺎمِ ‪ y1.m‬در دﻳﺮﻛﺘﻮري ﺟﺎري ﺿﺒﻂ ﻣﻲﻛﻨﻴﻢ‪ .‬ﻣﺘﻐﻴﺮﻫﺎي‬
‫‪ x,n2,n1,n0‬آرﮔﻮﻣﺎنﻫﺎي ورودي ﺗﺎﺑﻊ و ‪ p1‬آرﮔﻮﻣﺎن ﺧﺮوﺟﻲ آن ﻫﺴﺘﻨﺪ‪.‬‬

‫)‪function p1 = y1(x,n2,n1,n0‬‬
‫‪% Calculates the value of a second order sentence.‬‬
‫;‪p1 = n2*x^2 + n1*x + n0‬‬
‫‪>> help y1‬‬ ‫‪Calculates the value of a second order sentence.‬‬

‫)‪>> y1(-2,3,4.6,-5.8‬‬ ‫‪ans = -3.0000‬‬


‫ﻣﺤﺎﺳﺒﻪ ﻓﺎﻛﺘﻮرﻳﻞ از ﻃﺮﻳﻖ ﺧﻮد ﻓﺮاﺧﻮاﻧﻲ )ﺑﺎزﮔﺸﺘﻲ( ﻳﻚ ﺗﺎﺑﻊ ‪Function Recursivity‬‬
‫ﺧﻮد ﻓﺮاﺧﻮاﻧﻲ اﺟﺮاي ﻳﻚ ﺗﺎﺑﻊ از داﺧﻞ ﺧﻮد آن ﺗﺎﺑﻊ اﺳﺖ‪ ،‬و ﻣﺎﻧﻨﺪ ﻳﻚ ﺣﻠﻘﻪ ﺗﺎ زﻣﺎﻧﻲﻛﻪ ﺧﺮوﺟﻲ ﺑﻪ ﻳﻚ ﻣﻘﺪار ﻣﻌﻴﻦ‬
‫ﺑﺮﺳﺪ اداﻣﻪ ﻣﻲﻳﺎﺑﺪ‪.‬‬
‫ﺑﺮﻧﺎﻣﻪ ﻣﺤﺎﺳﺒﻪ ﻓﺎﻛﺘﻮرﻳﻞ را از ﻃﺮﻳﻖ ﺧﻮد ﻓﺮاﺧﻮاﻧﻲ در ﻣﺤﻴﻂ ﻣﺘﻠﺐ اﺟﺮا ﻣﻲﻛﻨﻴﻢ‪.‬‬
‫)‪function ff = facto(n‬‬
‫‪if n > 1‬‬
‫;)‪ff = n * facto(n - 1‬‬
‫‪else‬‬
‫;‪ff = 1‬‬
‫‪end‬‬
‫)‪>> facto(6‬‬ ‫‪ans = 720‬‬
‫ام‪ -‬ﻓﺎﻳﻞ ﺗﺎﺑﻌﻲ ﺑﺎ ﭼﻨﺪ آرﮔﻮﻣﺎن ﺧﺮوﺟﻲ‬
‫ﻳﻜﻲ از وﻳﮋﮔﻲﻫﺎي ﻣﺘﻠﺐ اﻳﻦ اﺳﺖ ﻛﻪ در آن ﻣﻲﺗﻮان ﺗﻮاﺑﻌﻲ ﺑﺎ ﭼﻨﺪﻳﻦ ﺧﺮوﺟﻲ ﻛﻪ ﻫﺮ ﺧﺮوﺟﻲ ﻫﻢ ﻣﻲﺗﻮاﻧﺪ ﺑﺮدار ﺑﺎﺷﺪ‬
‫ﺗﻌﺮﻳﻒ ﻛﺮد‪ .‬ﻣﺎﺑﻴﻦ ﻧﺎم آرﮔﻮﻣﺎنﻫﺎي ﺧﺮوﺟﻲ ﺗﺎﺑﻊ ﺑﺎﻳﺪ ﻛﺎﻣﺎ ﻗﺮار ﮔﻴﺮد ﻣﺜﻞ‪function [p1, p2] :‬‬
‫ﻣﺜﺎل ﻫﺎ‪:‬‬
‫ﺗﺎﺑﻊ درﺟﻪ دو در ﻳﻚ ام‪ -‬ﻓﺎﻳﻞ ﺗﺎﺑﻌﻲ‬
‫)‪function [p1, p2] = y2(x,a,b,c‬‬
‫;‪p1 = a*x^2 + b*x + c‬‬
‫;‪p2 = 2*a*x + b‬‬
‫)‪>> [a b] = y2(-2,3,4.6,-5.8‬‬ ‫‪a = -3.0000‬‬
‫‪ b = -7.4000‬اﮔﺮ ‪ x‬ﺑﺮدار ﺑﺎﺷﺪ ‪ p1,p2‬ﻫﻢ ﺑﺮدار ﺧﻮاﻫﻨﺪ ﺑﻮد ‪%‬‬
‫ﺣﻞ ﻣﻌﺎدﻟﻪ ﺑﺎ راه ﺑ‪‬ﺮد ﻧﻴﻮﺗﻦ‬
‫راهﺑﺮد ﻧﻴﻮﺗﻦ ﻳﻜﻲ از روشﻫﺎي ﺳﺎده ﻣﺤﺎﺳﺒﺎت ﻋﺪدي ﺑﺮاي ﺣﻞ ﻣﻌﺎدﻟﻪ ﭼﻨﺪ ﺟﻤﻠﻪاي ‪ f(x) = 0‬اﺳﺖ‪ .‬ﺑﺎ روش ﺗﻜﺮار‬
‫ﺑﺮاي ﻧﺰدﻳﻚ ﺷﺪن ﺑﻪ رﻳﺸﻪ از راهﺑ‪‬ﺮد ﻧﻴﻮﺗﻦ ﺑﻪ اﻳﻦ ﺷﻜﻞ ﻣﻲﺗﻮان اﺳﺘﻔﺎده ﻛﺮد‪. x Æ x - f(x)/f'(x) :‬‬
‫ﻳﻌﻨﻲ در ﻫﺮ ﺑﺎر ﺗﻜﺮار ﺑﻪ ﺟﺎي ‪ x‬ﻋﺒﺎرت )‪ x - f(x)/f'(x‬ﺟﺎيﮔﺰﻳﻦ ﻣﻲﺷﻮد‪ .‬ﻣﻘﺪار دﻫﻲ ﺑﻪ ‪ x‬در اوﻟﻴﻦ دور‬
‫ﺣﻠﻘﻪ اﺧﺘﻴﺎري اﺳﺖ و ﺣﺪس اوﻟﻴﻪ ﻧﺎم دارد‪ .‬راهﺑﺮد ﻧﻴﻮﺗﻦ ﺑﺮاي ﺣﺪسﻫﺎي اوﻟﻴﻪ ﻣﺨﺘﻠﻒ رﻳﺸﻪﻫﺎي ﻣﺨﺘﻠﻒ ﻣﻲدﻫﺪ‪.‬‬

‫‪89‬‬
‫ﺑﺮاي ﺣﺼﻮل رﻳﺸﻪﻫﺎي ﻣﻌﺎدﻟﻪ درﺟﻪ دو ‪ f(x) = 3x2 + 4.6x -5.8‬ﺑﺎ راهﺑ‪‬ﺮد ﻧﻴﻮﺗﻦ ﺑﺮاي رﻳﺸﻪﻫﺎي ﺣﻘﻴﻘﻲ‬
‫ﺑﺎ دو ﺣﺪس اوﻟﻴﻪ ﺣﻘﻴﻘﻲ‪ ،‬و ﺑﺮاي رﻳﺸﻪﻫﺎي ﻣﻮﻫﻮﻣﻲ ﺑﺎ دو ﺣﺪس اوﻟﻴﻪ ﻣﻮﻫﻮﻣﻲ ﺷﺮوع ﻣﻲﻛﻨﻴﻢ‪ .‬از ﺗﺎﺑﻊ ‪ y2‬در اﻳﻦ ﺑﺮﻧﺎﻣﻪ‬
‫اﺳﺘﻔﺎده ﻣﻲﻛﻨﻴﻢ‪.‬‬
‫)‪function [p1, p2] = y2(x,a,b,c‬‬
‫;‪p1 = a*x^2 + b*x + c‬‬
‫;‪p2 = 2*a*x + b‬‬
‫‪% M-File script secndegree.m‬‬
‫‪% solves equation f(x) = a*x^2 + b*x -c‬‬
‫‪x = input('Enter initial guess: '); % initial guess‬‬
‫;)' ‪n = input('Enter 3 coefficients:‬‬
‫;‪ero = 1‬‬
‫‪iero = 1e-8; % permissible error‬‬
‫‪while ero > iero‬‬
‫;‪x1 = x‬‬
‫;))‪[y yp] = y2(x, n(1), n(2), n(3‬‬
‫;‪x = x - y/yp‬‬
‫;)‪ero = abs((x-x1)/x‬‬
‫‪end‬‬
‫‪format‬‬
‫)])‪disp(['root = ' num2str(x‬‬
‫‪>> secndegree‬‬ ‫‪Enter initial guess: -1‬‬
‫]‪Enter 3 coefficients: [3 4.6 -5.8‬‬
‫‪root = -2.3545‬‬

‫‪>> secndegree‬‬ ‫‪Enter initial guess: 1‬‬


‫‪Enter 3 coefficients: [3‬‬ ‫]‪4.6 -5.8‬‬
‫‪root = 0.82113‬‬

‫‪>> secndegree‬‬ ‫‪Enter initial guess: i‬‬


‫‪Enter 3 coefficients: [3‬‬ ‫]‪4.6 5.8‬‬
‫‪root = -0.76667+1.16i‬‬

‫‪>> secndegree‬‬ ‫‪Enter initial guess: -i‬‬


‫‪Enter 3 coefficients: [3‬‬ ‫]‪4.6 5.8‬‬
‫‪root = -0.76667-1.16i‬‬
‫‪Persistent‬‬ ‫ﺗﺎﺑﻊ ﺑﺪون ﻣﻘﺪار‪ ،‬ﻣﺘﻐﻴﺮ‬
‫ﻳﻚ ام‪-‬ﻓﺎﻳﻞ ﺗﺎﺑﻌﻲ )ﻛﻪ ﺑﻪ اﺧﺘﺼﺎر ﺗﺎﺑﻊ ﺧﻮاﻧﺪه ﻣﻲﺷﻮد( ﻣﻲﺗﻮاﻧﺪ ﺑﺪون ﻣﻘﺪار ﺑﺮﮔﺸﺘﻲ )آرﮔﻮﻣﺎن ﺧﺮوﺟﻲ( ﺑﺎﺷﺪ‪ .‬اﻳﻦﮔﻮﻧﻪ‬
‫ﺗﻮاﺑﻊ ﻣﻌﻤﻮﻻٌ ﺑﺮاي ﻧﻤﺎﻳﺶ ﻧﺘﺎﻳﺞ ﺑﻪ ﻛﺎر ﻣﻲروﻧﺪ‪.‬‬
‫ﻣﻌﺮﻓﻲ ﻳﻚ ﻣﺘﻐﻴﺮ ﺑﺎ ﭘﻴﺶوﻧﺪ ‪ persistent‬ﺑﺎﻋﺚ ﻣﻲﺷﻮد ﻛﻪ ﻣﻘﺪار ﻣﺘﻐﻴﺮ در ﻣﺮاﺟﻌﺎت ﺑﻌﺪي ﺑﻪ ﺗﺎﺑﻊ ﺣﻔﻆ ﺷﻮد‪.‬‬
‫آوردن ﻧﺎم ﺗﺎﺑﻊ ﺑﻌﺪ از ‪ clear‬ﺑﺎﻋﺚ ﻣﻲﺷﻮد ﻛﻪ ﻣﻘﺪار ﻣﺘﻐﻴﺮﻫﺎي ﻋﺪدي ‪ persistent‬آن ﺻﻔﺮ ﺷﻮد‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫ﻧﺎم ﻳﻚ داﻧﺸﺠﻮ را ﺑﻪ ﻋﻨﻮان ورودي درﻳﺎﻓﺖ و ﻫﻢراه ﺑﺎ ﺷﻤﺎره ردﻳﻒ ﻧﻤﺎﻳﺶ ﻣﻲدﻫﻴﻢ‪.‬‬
‫اﺑﺘﺪا ﻳﻚ ﺗﺎﺑﻊ ﺑﺎ ورودي ﻧﺎم داﻧﺸﺠﻮ ﻣﻲﻧﻮﻳﺴﻴﻢ‪ .‬اﻳﻦ ﺗﺎﺑﻊ ﻧﺎم داﻧﺸﺠﻮ را از ﺻﻔﺤﻪ ﻛﻠﻴﺪ درﻳﺎﻓﺖ ﻣﻲﻛﻨﺪ و ﻫﺮ ﺑﺎر ﻛﻪ‬
‫اﺟﺮا ﺷﻮد ﻧﺎم درﻳﺎﻓﺘﻲ را ﺑﺎ ﺷﻤﺎره ردﻳﻒ در ﻛﻨﺎر ﻧﺎم داﻧﺸﺠﻮ )ﻣﺘﻐﻴﺮ رﺷﺘﻪاي ‪ ( wr‬ﭼﺎپ ﻣﻲﻛﻨﺪ‪ .‬رﺷﺘﻪي ‪ wr‬ﻛﻪ ﺑﻪ‬
‫ﺗﺎﺑﻊ )‪ sst(ns‬ارﺳﺎل ﻣﻲﺷﻮد ﻳﻚ ﺑﺮدار اﺳﺖ ﻛﻪ ﻫﺮ ﻋﻨﺼﺮ آن ﻳﻚ ﺣﺮف اﻟﻔﺒﺎ اﺳﺖ‪.‬‬
‫ﻋﺒﺎرت ‪ persistent nn‬ﺑﺎﻋﺚ ﻣﻲﺷﻮد ﻛﻪ ﻣﻘﺪار ‪ n‬ﻛﻪ ﺷﻤﺎر ردﻳﻒ را ﻧﺸﺎن ﻣﻲدﻫﺪ ﺑﺮاي اﺟﺮاي ﺑﻌﺪي ﺗﺎﺑﻊ‬
‫ﺣﻔﻆ ﺷﻮد‪.‬‬

‫‪90‬‬
‫‪% Function M-File stt.m‬‬
‫)‪function stt(ns‬‬
‫‪persistent nn‬‬
‫)‪if isempty(nn‬‬
‫دراﺟﺮاي اول ﺷﻤﺎره ردﻳﻒ را ﻳﻚ ﻣﻲدﻫﻴﻢ ‪nn = 1; %‬‬
‫‪else‬‬
‫در ﻫﺮ ﺑﺎر ﺗﻜﺮارِ اﺟﺮا ﺷﻤﺎره ردﻳﻒ ﻳﻚ واﺣﺪ اﻓﺰاﻳﺶ ﻣﻲﻳﺎﺑﺪ ‪nn = nn + 1; %‬‬
‫‪end‬‬
‫;)‪mm = num2str(nn‬‬
‫)]‪disp(['Student number ' mm ' is ' ns‬‬

‫ﺣﺎل ﺑﺮﻧﺎﻣﻪاي ﺑﻪ ﻧﺎم ‪ stdno.m‬ﻣﻲﻧﻮﻳﺴﻴﻢ ﻛﻪ ﺗﺎﺑﻊ ﻓﻮق را در درون ﻳﻚ ﺣﻠﻘﻪ ﭼﻨﺪ ﺑﺎر اﺟﺮا ﻣﻲﻛﻨﺪ‪.‬‬
‫‪% Script M-File stdno.m‬‬
‫‪clear stt‬‬
‫‪%‬‬ ‫اﻳﻦ دﺳﺘﻮر در اﺟﺮاي اولِ ﺗﺎﺑﻊ )(‪ stt‬ﻣﻘﺪار ﺷﻤﺎرﻧﺪه را ﺻﻔﺮﻣﻲﻛﻨﺪ‪.‬‬
‫;'‪wr = 'h‬‬
‫ﻳﻚ ﻣﻘﺪار اوﻟﻴﻪ دلﺧﻮاه ﺑﺮاي ﻧﺎم داﻧﺸﺠﻮ در ﻧﻈﺮ ﻣﻲﮔﻴﺮﻳﻢ ﻛﻪ ﺣﻠﻘﻪ ﺑﺮاي ﺑﺎر اول اﺟﺮا ﺷﻮد‪% .‬‬
‫‪while isempty(wr) == 0‬‬
‫ﺣﻠﻘﻪ ﺗﺎ زﻣﺎﻧﻲﻛﻪ ﻧﺎﻣﻲ را وارد ﻛﻨﻴﻢ )‪ wr‬ﺧﺎﻟﻲ ﻧﺒﺎﺷﺪ(‪ ،‬اداﻣﻪ ﻣﻲﻳﺎﺑﺪ‪ .‬ﺑﺎ زدن >‪ <Enter‬ﺣﻠﻘﻪ ﺗﻤﺎم ﻣﻲﺷﻮد‪% .‬‬
‫;)'‪wr = input('Enter the student name: ','s‬‬
‫ﻗﺮار دادن '‪ 's‬ﺑﻪ ﻋﻨﻮان آرﮔﻮﻣﺎن دوم )(‪ input‬ﺑﺎﻋﺚ ﻣﻲﺷﻮد ﻛﻪ ﺑﺘﻮاﻧﻴﻢ ﻳﻚ رﺷﺘﻪ را ﺑﻪ ‪ wr‬ﻧﺴﺒﺖ دﻫﻴﻢ ‪%‬‬
‫)‪if isempty(wr‬‬
‫‪%‬‬ ‫اﮔﺮ ﺑﺪون وارد ﻛﺮدن ﻧﺎم )‪ wr‬ﺧﺎﻟﻲ(‪ ،‬ﻛﻠﻴﺪ >‪ <Enter‬را ﺑﺰﻧﻴﻢ ﺑﺮﻧﺎﻣﻪ ﺗﻤﺎم ﻣﻲﺷﻮد‬
‫‪break‬‬
‫‪end‬‬
‫‪stt(wr)%‬‬
‫‪end‬‬
‫‪>> stdno‬‬
‫‪Enter the student name: Ali‬‬
‫‪Student number 1 is Ali‬‬
‫‪Enter the student name: Maryam‬‬
‫‪Student number 2 is Maryam‬‬
‫‪Enter the student name: Masud‬‬
‫‪Student number 3 is Masud‬‬
‫‪Enter the student name:‬‬
‫‪subfunction‬‬ ‫زﻳﺮ ﺗﺎﺑﻊ‬
‫ﻣﻲﺷﻮد در داﺧﻞ ﻳﻚ ﺗﺎﺑﻊ ﺗﻮاﺑﻊ ﻓﺮﻋﻲ دﻳﮕﺮي را ﺑﻪ ﻧﺎم زﻳﺮﺗﺎﺑﻊ ﺗﻌﺮﻳﻒ ﻛﺮد‪ ،‬زﻳﺮﺗﺎﺑﻊﻫﺎ ﻓﻘﻂ ﺗﻮﺳﻂ ﺗﺎﺑﻊ اﺻﻠﻲ دﻳﺪه و‬
‫ﻓﺮاﺧﻮاﻧﺪه ﻣﻲﺷﻮﻧﺪ‪ ،‬و در ﺧﺎرج از ﺗﺎﺑﻊ اﺻﻠﻲ ﻗﺎﺑﻞ ﻓﺮاﺧﻮاﻧﻲ ﻧﻴﺴﺘﻨﺪ‪ .‬ﻧﺎم ﻓﺎﻳﻞِ ﻧﮕﻪدارﻧﺪهي ام‪ -‬ﻓﺎﻳﻞ ﺗﺎﺑﻌﻲ ﺑﺎﻳﺪ ﻧﺎم ﺗﺎﺑﻊ‬
‫اﺻﻠﻲ ﺑﺎﺷﺪ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫ﺑﺮاي ﺣﻞ ﻣﻌﺎدﻟﻪ درﺟﻪ ﺳﻪ ‪ b^3 - 2*b^2 + 3*b - 4‬ﻳﻚ ام‪-‬ﻓﺎﻳﻞ ﺗﺎﺑﻌﻲ ﺑﻪ ﻧﺎم )(‪ newss‬ﺑﻨﻮﻳﺴﻴﺪ‪ ،‬ﻛﻪ در‬
‫آن ﺗﺎﺑﻊ و ﻣﺸﺘﻖ آن ﺑﻪ ﺻﻮرت دو زﻳﺮ ﺗﺎﺑﻊ ﺑﺎ ﻧﺎمﻫﺎي )(‪ ny‬و )(‪ nyp‬ﺗﻌﺮﻳﻒ ﺷﻮﻧﺪ‪.‬‬

‫‪91‬‬
‫‪% newss.m‬‬
‫)‪function p1 = newss(a‬‬
‫‪p1 = ny(a)/nyp(a); %‬‬

‫)‪function p2 = ny(b‬‬
‫; ‪p2 = b^3 - 2*b^2 + 3*b - 4‬‬

‫)‪function p3 = nyp(d‬‬
‫;‪p3 = 3*d^2 - 2*2*d + 3‬‬
‫ﺳﭙﺲ از درون ﻳﻚ ام‪ -‬ﻓﺎﻳﻞ ﺑﺎ ﻧﺎم ‪ ،eus.m‬ﺗﺎﺑﻊ)(‪ newss‬را ﻓﺮاﻣﻲﺧﻮاﻧﻴﻢ‪:‬‬
‫‪% eus.m‬‬
‫;)' ‪x = input('Enter initial guess:‬‬
‫;‪ero = 1‬‬
‫‪while ero > 1e-6‬‬
‫; ‪x1 = x‬‬
‫;)‪x = x- newss(x‬‬
‫;)‪ero=abs((x-x1)/x‬‬
‫‪end‬‬
‫)])‪disp(['root = ' num2str(x‬‬
‫‪>> eus‬‬ ‫‪Enter initial guess: 1‬‬
‫‪root = 1.6506‬‬

‫‪>> eus‬‬ ‫‪Enter initial guess: i‬‬


‫‪root = 0.17469+1.5469i‬‬

‫‪>> eus‬‬ ‫‪Enter initial guess: -i‬‬


‫‪root = 0.17469-1.5469i‬‬
‫‪ 3-9‬ﺗﺎﺑﻊِ ﺗﺎﺑﻊ‬
‫‪feval() ، function handle‬‬ ‫ﮔﻴﺮه ﺗﺎﺑﻊ‬
‫اﮔﺮ در ﻣﻘﺎﺑﻞ ﻧﺎم ﺗﺎﺑﻊ ﻋﻼﻣﺖ @ ﺑﻴﺎﻳﺪ ﮔﻴﺮه آن ﺗﺎﺑﻊ را اﻳﺠﺎد ﻛﺮدهاﻳﻢ )ﭼﻴﺰي ﺷﺒﻴﻪ اﺷﺎرهﮔﺮ ‪ pointer‬در ‪ .(C++‬ﺑﺮاي‬
‫ﻣﺮاﺟﻌﻪ ﺑﻪ ﺗﺎﺑﻊ از ﻃﺮﻳﻖ ﮔﻴﺮه ﺑﺎﻳﺪ از)(‪ feval‬اﺳﺘﻔﺎده ﻛﻨﻴﻢ ﻣﻔﻬﻮم ﮔﻴﺮه اﻣﻜﺎن اﺳﺘﻔﺎده از ﺗﺎﺑﻌﻲ ﺑﻪ ﻋﻨﻮان آرﮔﻮﻣﺎن ﺗﺎﺑﻊ‬
‫دﻳﮕﺮ را ﻓﺮاﻫﻢ ﻣﻲﻛﻨﺪ و از ﺗﻮاﻧﺎﺋﻲﻫﺎي ﻣﻬﻢ ﻣﺘﻠﺐ ﻣﺤﺴﻮب ﻣﻲﺷﻮد‪.‬‬
‫ﻣﺜﺎل ﻫﺎ‪:‬‬
‫ﻧﺴﺒﺖ دادن ﮔﻴﺮه ﺗﺎﺑﻊ ﺑﻪ ﻣﺘﻐﻴﺮ دﻳﮕﺮ‬
‫;‪>> hs = @sin‬‬
‫)‪>> feval(hs,pi/6‬‬ ‫‪ans = 0.5000‬‬
‫ﻛﺎرﺑﺮد ﻣﺴﺘﻘﻴﻢ ﮔﻴﺮه ﺗﺎﺑﻊ‬
‫)‪>> feval(@sin,pi/6‬‬ ‫‪ans = 0.5000‬‬
‫ﺗﺎﺑﻊِ ﺗﺎﺑﻊِ ﻛﺎرﺑﺮ‪ -‬ﺗﻌﺮﻳﻒ‬
‫ﺗﻮاﺑﻌﻲ ﻛﻪ ﺗﺎﺑﻊ دﻳﮕﺮي را ﺑﻪ ﻋﻨﻮان آرﮔﻮﻣﺎن ﻣﻲﭘﺬﻳﺮﻧﺪ ﺗﺎﺑﻊِ ﺗﺎﺑﻊ ﻧﺎم دارﻧﺪ و آرﮔﻮﻣﺎن آنﻫﺎ ﻣﻲ ﺗﻮاﻧﺪ ﻳﻚ ﮔﻴﺮه ﺗﺎﺑﻊ ﺑﺎﺷﺪ‪ .‬ﺑﻪ‬
‫ﺗﺎﺑﻊِ ﺗﺎﺑﻊ ﻛﺎرﺑﺮ‪ -‬ﺗﻌﺮﻳﻒ ﻣﺜﺎل ﺗﻮﺟﻪ ﻛﻨﻴﺪ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫ﻳﻚ ﻓﺎﻳﻞ ﺗﺎﺑﻌﻲ اﻳﺠﺎد ﻣﻲﻛﻨﻴﻢ ﻛﻪ آرﮔﻮﻣﺎن ورودﻳﺶ ﺗﺎﺑﻊ دﻳﮕﺮي ﺑﺎﺷﺪ‪.‬‬
‫ﻳﻚ ﺗﺎﺑﻊ ﺑﻪ ﻧﺎم ‪ yd.m‬ﻣﻲﻧﻮﻳﺴﻴﻢ ﻛﻪ ﺟﻮاب ﻣﻌﺎدﻟﻪﻫﺎي درﺟﻪ دو و ﺳﻪ را ﺑﺮاي ﻣﻘﺪار ﻣﻌﻴﻨﻲ از ‪ x‬ﺑﺮﮔﺮداﻧﺪ‪.‬‬
‫)‪function [p2,p3] = yd(x‬‬
‫; ‪p2 = x.^2 + x‬‬
‫;‪p3 = x.^3 + x.^2 + x‬‬

‫‪92‬‬
‫ﺣﺎﻻ ﻓﺎﻳﻞ ﺗﺎﺑﻌﻲ ‪ ydh.m‬را اﻳﺠﺎد ﻣﻲﻛﻨﻴﻢ ﻛﻪ آرﮔﻮﻣﺎﻧﺶ ﺗﺎﺑﻊ ﻓﻮق اﺳﺖ‪:‬‬
‫)‪function [out1, out2] = ydh(hy,x‬‬
‫;)‪[out1 out2] = feval(hy,x‬‬
‫‪ hy‬ﺑﺎﻳﺪ ﮔﻴﺮه ﺗﺎﺑﻊ ﺑﺎﺷﺪ‪% .‬‬
‫)‪>> [a b] = ydh(@yd,1‬‬ ‫‪a = 2‬‬
‫‪b = 3‬‬

‫;]‪>> x = [1 2‬‬ ‫‪a = 2‬‬ ‫‪6‬‬


‫)‪>> [a b] = ydh(@yd,x‬‬ ‫‪b = 3‬‬ ‫‪14‬‬
‫ﭼﻮن ‪ x‬ﺑﺮدار اﺳﺖ‪ a ،‬و ‪ b‬ﺑﺮدار ﻫﺴﺘﻨﺪ‪.‬‬
‫ﺗﺎﺑﻊ ﺗﺎﺑﻊ ﻛﺘﺎب ﺧﺎﻧﻪ اي‬
‫ﺗﻮاﺑﻊ ﻛﺘﺎب ﺧﺎﻧﻪ اي ﻛﻪ ﺗﺎﺑﻊ دﻳﮕﺮي را ﺑﻪ ﻋﻨﻮان آرﮔﻮﻣﺎن ﻣﻲﭘﺬﻳﺮﻧﺪ ﺗﺎﺑﻊِ ﺗﺎﺑﻊ ﻧﺎم دارﻧﺪ و آرﮔﻮﻣﺎن آنﻫﺎ ﻣﻲ ﺗﻮاﻧﺪ ﻳﻚ‬
‫ﺗﺎﺑﻊ ‪ inline‬رﺷﺘﻪ‪ ،‬ﻳﺎ ﮔﻴﺮه ﺑﺎﺷﺪ‪ .‬ﺑﺮﺧﻲ از اﻳﻦﮔﻮﻧﻪ ﺗﻮاﺑﻊ ﻋﺒﺎرﺗﻨﺪ از‪.fplot(), ezplot, feval :‬‬
‫ﻣﺜﺎل ﻫﺎ‪:‬‬
‫رﺳﻢ ‪ sin3x‬ﺑﻪ ﺻﻮرت ﺗﺎﺑﻊِ ﺗﺎﺑﻊ‬
‫;)'‪>> isn = inline('(sin(x))^3‬‬
‫)]‪>> fplot(isn,[-pi pi‬‬
‫)‪>> ezplot(isn‬‬
‫رﺳﻢ ﺗﺎﺑﻊ )‪) humps(x‬از ﺗﻮاﺑﻊ ﻧﻤﻮﻧﻪ داﺧﻠﻲ ﻣﺘﻠﺐ(‬
‫ﺑﺮاي اﻃﻼع ﺑﻴﺸﺘﺮ در ﻣﻮرد اﻳﻦ ﺗﺎﺑﻊ از ﭘﻨﺠﺮه ﻓﺮﻣﺎن ‪ help humps‬را اﺟﺮا ﻛﻨﻴﺪ‪.‬‬
‫ﻣﺜﺎل ﻫﺎ‪:‬‬
‫ﻓﺮاﺧﻮاﻧﻲ ﻣﺴﺘﻘﻴﻢ ﮔﻴﺮه‬
‫)]‪>> fplot(@humps,[0 1‬‬
‫ﻧﺴﺒﺖ دادن ﺑﻪ ﻳﻚ ﻣﻐﻴﺮ رﺷﺘﻪاي‬
‫;')‪>> hu = 'humps(x‬‬
‫)]‪>> fplot(hu,[0 1‬‬
‫‪ 4-9‬ﺗﺒﺪﻳﻞ ﻓﺎﻳﻞ ﻫﺎي ﻣﺘﻠﺐ‬
‫‪pcode file‬‬ ‫ﺗﺒﺪﻳﻞ ام‪ -‬ﻓﺎﻳﻞ ﺑﻪ ﭘﺮوﻧﺪه ﭘﻲ‪ -‬ﻛﺪ‬
‫ﻣﻲﺗﻮان ﺟﻬﺖ ﭘﻨﻬﺎن ﻛﺮدن ﺳﻄﻮر ﺑﺮﻧﺎﻣﻪ آن را ﺑﻪ ﺻﻮرت ‪ pcode‬در آورد‪ .‬ﻓﺎﻳﻞﻫﺎي ‪ pcode‬در ﻣﺤﻴﻂ ‪ MATLAB‬ﻗﺎﺑﻞ‬
‫اﺟﺮا ﻫﺴﺘﻨﺪ‪ ،‬اﻣﺎ ﻗﺎﺑﻞ ادﻳﺖ و ﺑﺎزﺑﻴﻨﻲ ﻧﻴﺴﺘﻨﺪ‪ .‬ﺑﺎ اﺟﺮاي دﺳﺘﻮر ‪ pcode fun.m‬ﻳﺎ ‪mcc -B pcode fun.m‬‬
‫ﻓﺎﻳﻠﻲ ﺑﻪ ﻧﺎم ‪ fun.p‬اﻳﺠﺎد و در دﻳﺮﻛﺘﻮري ﺟﺎري ذﺧﻴﺮه ﻣﻲﺷﻮد‪ .‬ﻧﺘﻴﺠﻪ اﺟﺮاي ‪ fun.m‬و ‪ fun.p‬ﻳﻚﺳﺎن اﺳﺖ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫ام‪ -‬ﻓﺎﻳﻞ زﻳﺮ را ﺑﻪ ﻧﺎم ‪ pascall.m‬ﻧﻮﺷﺘﻪ و آنرا ﺑﻪ ﺻﻮرت ﻓﺎﻳﻞ ‪ pcode‬در آورﻳﺪ‪ .‬ﻓﺎﻳﻞ ‪ pascall.p‬را ﺑﻪ‬
‫دﻳﺮﻛﺘﻮري دﻳﮕﺮي ﻣﻨﺘﻘﻞ ﻛﺮده‪ ،‬ﻧﺘﻴﺠﻪ اﺟﺮاي آنرا ﻣﻼﺣﻈﻪ ﻛﻨﻴﺪ‪.‬‬
‫;‪ncr = 1‬‬ ‫‪>> pcode pascall‬‬
‫;‪r = 2‬‬ ‫ﻓﺎﻳﻞ رﻣﺰﮔﺬريﺷﺪه ﺑﺎ ﻧﺎم‬
‫;‪n = 6‬‬
‫‪for k = 1:r‬‬ ‫‪pascall.p‬‬
‫;‪ncr=ncr*(n-k+1)/k‬‬ ‫ﭘﺪﻳﺪ ﻣﻲآﻳﺪ‪.‬‬
‫‪end‬‬
‫)‪disp(ncr‬‬

‫‪93‬‬
‫‪MATLAB Compiler‬‬ ‫ﺗﻮﻟﻴﺪ ﺑﺮﻧﺎﻣﻪ ‪ C‬ﺑﺎ ﻛﺎﻣﭙﺎﻳﻠﺮ ﻣﺘﻠﺐ‬
‫دﺳﺘﻮر ‪ mcc -m functin name‬از ﻳﻚ ام‪ -‬ﻓﺎﻳﻞ ﺗﺎﺑﻌﻲ ﻳﻚ ﺑﺮﻧﺎﻣﻪ ﺑﻪ زﺑﺎن ‪ C‬و ﻫﻢﭼﻨﻴﻦ ﻓﺎﻳﻞ اﺟﺮاﺋﻲ ﻣﺮﺑﻮﻃﻪ را‬
‫ﻛﻪ از ﭘﻨﺠﺮه ‪ Command Promt‬وﻳﻨﺪوز ﻗﺎﺑﻞ اﺟﺮا اﺳﺖ ﻣﻲﺳﺎزد‪ ،‬و در دﻳﺮﻛﺘﻮري ﺟﺎري ذﺧﻴﺮه ﻣﻲﻛﻨﺪ‪ .‬ﻣﻌﻤﻮﻻٌ‬
‫ﺑﺮﻧﺎﻣﻪﻫﺎي ﺳﺎﺧﺘﻪ ﺷﺪه ﺑﺎ ﻛﺎﻣﭙﺎﻳﻠﺮ اﺣﺘﻴﺎج ﺑﻪ ‪ ، MATLAB Compiler Run-Time Libraries‬و ﺑﺮﻧﺎﻣﻪﻫﺎي‬
‫ﮔﺮاﻓﻴﻜﻲ اﺟﺮاﺋﻲ ﻧﻴﺎز ﺑﻪ ‪ C/C++ Graphics Library‬دارﻧﺪ‪ .‬ﻳﻌﻨﻲ ﺑﺮاي اﺟﺮا ﺗﻤﺎم ﻳﺎ ﻣﺆﻟﻔﻪﻫﺎﺋﻲ از ﻧﺮماﻓﺰار‬
‫‪ MATLAB‬و ‪ Visual C++‬ﺑﺎﻳﺪ روي ﻛﺎﻣﭙﻴﻮﺗﺮ ﺷﻤﺎ ﻧﺼﺐ ﺷﺪه ﺑﺎﺷﺪ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫ام‪ -‬ﻓﺎﻳﻞ ﺗﺎﺑﻌﻲ زﻳﺮ را ﺑﻪ ﻳﻚ ﺑﺮﻧﺎﻣﻪ ﺑﻪ زﺑﺎن ‪ C‬ﺗﺒﺪﻳﻞ و ﻓﺎﻳﻞ اﺟﺮاﺋﻲ آن را ﺑﺴﺎزﻳﺪ‪ .‬ﻛﺪ ﺣﺎﺻﻞ ﺷﺪه ﺑﻪ زﺑﺎن ‪ C‬را در‬
‫دﻳﺮﻛﺘﻮري ﺟﺎري ﺑﺎز ﻛﻨﻴﺪ و ﺑﺒﻴﻨﻴﺪ‪ .‬ﻓﺎﻳﻞ اﺟﺮاﺋﻲ را در ﻣﺤﻴﻂ ﻣﺘﻠﺐ از ‪ Command Window‬ﺑﺎ ﮔﺬاﺷﺘﻦ ﻋﻼﻣﺖ ! در‬
‫ﻣﻘﺎﺑﻞ ﻧﺎم آن اﺟﺮا ﻛﻨﻴﺪ‪ .‬ﻓﺎﻳﻞ اﺟﺮاﺋﻲ را در ﻣﺤﻴﻂ ‪ Windows‬از ﭘﻨﺠﺮه ‪ Command Promt‬اﺟﺮا ﻛﻨﻴﺪ‪.‬‬
‫‪function dispp‬‬ ‫‪>> mcc -m dispp‬‬
‫;'‪xs='6.5‬‬ ‫‪>> ! dispp.exe‬‬
‫;)]‪disp(['MATLAB Version is ', xs‬‬
‫‪MATLAB Version is 6.5‬‬
‫ﻓﺎﻳﻞ ‪ dispp.c‬را ﺑﺎز ﻛﺮده و ﻣﺸﺎﻫﺪه ﻣﻲﻛﻨﻴﻢ‪ .‬ﭘﻨﺠﺮه ‪ Command Promt‬را درﻣﺤﻴﻂ وﻳﻨﺪوز ﺑﺎز ﻛﺮده و از داﺧﻞ‬
‫آن دﺳﺘﻮر ‪ dispp.exe‬را اﺟﺮا ﻣﻲﻛﻨﻴﻢ‪.‬‬
‫‪C++‬‬ ‫ﺗﺒﺪﻳﻞ ﺑﺮﻧﺎﻣﻪ ﮔﺮاﻓﻴﻜﻲ ﺑﻪ زﺑﺎن‬
‫دﺳﺘﻮر ‪ mcc -B sgl functin name‬از ﻳﻚ ام‪ -‬ﻓﺎﻳﻞ ﺗﺎﺑﻌﻲِ داراي دﺳﺘﻮرات ﮔﺮاﻓﻴﻜﻲ ﻳﻚ ﺑﺮﻧﺎﻣﻪ ﺑﻪ زﺑﺎن‬
‫‪ C++‬و ﻫﻢﭼﻨﻴﻦ ﻓﺎﻳﻞ اﺟﺮاﺋﻲ ﻣﺮﺑﻮﻃﻪ را ﻛﻪ از ﭘﻨﺠﺮه ‪ Command Promt‬وﻳﻨﺪوز ﻗﺎﺑﻞ اﺟﺮا اﺳﺖ ﻣﻲﺳﺎزد‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫از ﺗﺮﻛﻴﺐ دو ام‪ -‬ﻓﺎﻳﻞ ﺗﺎﺑﻌﻲ زﻳﺮ ﻛﻪ ﻳﻜﻲ دﻳﮕﺮي را ﻓﺮاﺧﻮاﻧﻲ ﻣﻲﻛﻨﺪ‪ ،‬ﻳﻚ ﺑﺮﻧﺎﻣﻪ ﺑﻪ زﺑﺎن ‪ C++‬ﻫﻢراه ﺑﺎ ﻓﺎﻳﻞ اﺟﺮاﺋﻲ‬
‫ﺑﺴﺎزﻳﺪ‪ .‬ﻓﺎﻳﻞ اﺟﺮاﺋﻲ را در ﻣﺤﻴﻂ ‪ MATLAB‬و از ﭘﻨﺠﺮه ‪ Command Promt‬اﺟﺮا ﻛﻨﻴﺪ‪.‬‬
‫)‪function y = sawt(t,T‬‬ ‫‪>> mcc -B sgl tsawt‬‬
‫;‪y=10*rem(t,T)/T‬‬ ‫‪>> !tsawt‬‬
‫‪function tsawt‬‬
‫;)‪n=200;T=2;t=linspace(0.01,3*T,n‬‬
‫;)‪f=sawt(t,T‬‬
‫;)‪F=fft(f‬‬
‫;)‪f1=ifft(F‬‬
‫)‪plot(t,abs(f1),'x',t,f‬‬
‫ﺧﻼﺻﻪ دﺳﺘﻮرات ﻛﺎﻣﭙﺎﻳﻠﺮ‬
‫در ﻛﻠﻴﻪ دﺳﺘﻮرات زﻳﺮ ﻧﺎم ام‪ -‬ﻓﺎﻳﻞ ﺑﻌﺪاز دﺳﺘﻮر ﻣﻲآﻳﺪ‪.‬‬
‫‪ mcc -x‬ﺗﺮﺟﻤﻪ ﻳﻚ ‪ M-file‬ﺑﻪ ‪ C‬و ﺗﻮﻟﻴﺪ ‪ C MEX-file‬ﻛﻪ از درون ﻣﺘﻠﺐ ﻗﺎﺑﻞ اﺟﺮاﺳﺖ‬
‫‪ mcc -S‬ﺗﻮﻟﻴﺪ ‪ C‬و ‪ Simulink S-Function‬ﻣﺮﺑﻮﻃﻪ‬
‫‪ mcc -m‬ﺗﺮﺟﻤﻪ ﻳﻚ ‪ M-file‬ﺑﻪ ‪ C‬و ﺗﻮﻟﻴﺪ ﻓﺎﻳﻞ اﺟﺮاﺋﻲ آن‪ ،‬ﻗﺎﺑﻞ اﺟﺮا ﺑﺪون ﻧﻴﺎز ﺑﻪ ﻣﺘﻠﺐ‬
‫‪ mcc -p‬ﺗﺮﺟﻤﻪ ﻳﻚ ‪ M-file‬ﺑﻪ ‪ C++‬و ﺗﻮﻟﻴﺪ ﻓﺎﻳﻞ اﺟﺮاﺋﻲ آن‪ ،‬ﻗﺎﺑﻞ اﺟﺮا ﺑﺪون ﻧﻴﺎز ﺑﻪ ﻣﺘﻠﺐ‬
‫‪ mcc -B sgl‬ﺗﻮﻟﻴﺪ ﻳﻚ ﻓﺎﻳﻞ ﻛﺎرﺑﺮديِ ‪ C Graphics Library Application‬و ﻓﺎﻳﻞ اﺟﺮاﺋﻲ آن‬
‫ﻗﺎﺑﻞ اﺟﺮا ﺑﺪون ﻧﻴﺎز ﺑﻪ ﻣﺘﻠﺐ‪ ،‬از ﻳﻚ ام‪ -‬ﻓﺎﻳﻞ ﮔﺮاﻓﻴﻜﻲ‬

‫‪94‬‬
‫‪ mcc -B sglcpp‬ﺗﻮﻟﻴﺪ ﻳﻚ ﻓﺎﻳﻞ ﻛﺎرﺑﺮديِ ‪ C++ Graphics Library Application‬و ﻓﺎﻳﻞ‬
‫اﺟﺮاﺋﻲ آن ﻗﺎﺑﻞ اﺟﺮا ﺑﺪون ﻧﻴﺎز ﺑﻪ ﻣﺘﻠﺐ‪ ،‬از ﻳﻚ ام‪ -‬ﻓﺎﻳﻞ ﮔﺮاﻓﻴﻜﻲ‬
‫‪ mcc -m -W lib:libfoo -T link:lib foo.m‬ﺗﻮﻟﻴﺪ ﻳﻚ ﻛﺘﺎبﺧﺎﻧﻪ ‪ C‬از ام‪ -‬ﻓﺎﻳﻞ ‪foo.m‬‬
‫‪ mcc -p -W lib:libfoo -T compile:lib‬ﺗﻮﻟﻴﺪ ﻳﻚ ﻛﺘﺎبﺧﺎﻧﻪ ‪C++‬‬
‫ﺗﻮﻟﻴﺪ ﻳﻚ ﻛﺘﺎبﺧﺎﻧﻪ ﻣﺸﺘﺮك ﺑﺎ ‪ C‬ﺑﺮاي ﻣﺤﺎﺳﺒﺎت ﺧﺎص ﻛﻪ از ﺑﺮﻧﺎﻣﻪ ﺷﻤﺎ ﻓﺮاﺧﻮاﻧﻲ ﻣﻲﺷﻮد‬
‫‪mcc -W lib:mylib -L C -t -T link:lib -h Function1 Function2 ...‬‬
‫‪ mcc -B pcode‬ﺗﻮﻟﻴﺪ ‪ P-Code‬ﺑﺮاي ﻣﺤﻴﻂ ‪MATLAB‬‬

‫‪Excel Builder‬‬ ‫ﺳﺎزﻧﺪه اﻛﺴﻞ‬


‫دﺳﺘﻮر ‪ mxltool‬ﻳﻚ واﺳﻂ ﮔﺮاﻓﻴﻜﻲ ‪ GUI‬در اﺧﺘﻴﺎر ﻗﺮار ﻣﻲدﻫﺪ ﻛﻪ ﺑﺎ آن در ﻣﺤﻴﻂ ﻣﺘﻠﺐ ﻣﻲﺗﻮان ﺑﺮﻧﺎﻣﻪﻫﺎ و‬
‫ﻣﺎﻛﺮوﻫﺎﺋﻲ ﺟﻬﺖ اﺳﺘﻔﺎده در داﺧﻞ اﻛﺴﻞ ﻧﻮﺷﺖ‪ .‬ﭘﺲ از اﺟﺮاي اﻳﻦ دﺳﺘﻮر از ﻣﻨﻴﻮي ‪ Help‬آن اﻃﻼﻋﺎت ﺑﻴﺶﺗﺮ را ﺑﻪ‬
‫دﺳﺖ آورﻳﺪ‪.‬‬

‫‪ 5-9‬ﺗﻤﺮﻳﻦ‬
‫‪ -1‬ﺣﺎﺻﻞﺿﺮب ﻳﻚ ﺗﺎﺑﻊ ﻧﻤﺎﺋﻲ و ﻳﻚ ﺗﺎﺑﻊ ﻣﺜﻠﺜﺎﺗﻲ را ﺑﻪ ﺻﻮرت ‪ inline‬ﺗﻌﺮﻳﻒ و ﺑﺎ )(‪ ezplot‬رﺳﻢ ﻛﻨﻴﺪ‪.‬‬
‫‪ -2‬ﻣﻘﺪار‪ ،‬ﻣﻘﺪار ﻣﺸﺘﻖ‪ ،‬و ﻣﻘﺪار ﻣﺸﺘﻖ ﻣﺸﺘﻖ ﻳﻚ ﻣﻌﺎدﻟﻪ درﺟﻪ ﭼﻬﺎر را ﺑﺎ ﻳﻚ ام‪-‬ﻓﺎﻳﻞ ﺗﺎﺑﻌﻲ ﺑﺎ ﭼﻨﺪ آرﮔﻮﻣﺎن‬
‫ﺧﺮوﺟﻲ ﺑﺮﮔﺮداﻧﻴﺪ‪ .‬ﻫﻤﻴﻦ ﻋﻤﻞ را اﻳﻦﺑﺎر ﺑﻪ ﺻﻮرت زﻳﺮ ﺗﺎﺑﻊ اﻧﺠﺎم دﻫﻴﺪ‪ .‬ﺑﺮاي ام‪-‬ﻓﺎﻳﻞ ﻫﺎي ﺗﺎﺑﻌﻲ راﻫﻨﻤﺎ‬
‫ﺑﻨﻮﻳﺴﻴﺪ‪ .‬ﻣﻌﺎدﻟﻪ را ﺑﺎ راه ﺑ‪‬ﺮد ﻧﻴﻮﺗﻦ و ﺑﺎ اﺳﺘﻔﺎده از ام‪-‬ﻓﺎﻳﻞ ﻫﺎ ﺣﻞ ﻛﻨﻴﺪ‬
‫‪ -3‬ﻓﺎﻛﺘﻮرﻳﻞ را ﺑﺎ ﻳﻚ ﺗﺎﺑﻊ‪ ،‬ﺑﺪون اﺳﺘﻔﺎده از ﺑﺎزﮔﺸﺘﻲ ﻣﺤﺎﺳﺒﻪ ﻛﻨﻴﺪ‪.‬‬
‫‪ -4‬ﺗﺎﺑﻌﻲ ﺑﺎ ورودي ﻧﺎم ﺑﻨﻮﻳﺴﻴﺪ‪ ،‬ﻛﻪ در ﻫﺮ ﺑﺎر اﺟﺮا ﻧﺎم درﻳﺎﻓﺘﻲ را ﺑﻪ ﺗﺮﺗﻴﺐ ﺑﺎ ﺣﺮف اﻟﻔﺒﺎ )‪ (A,B,C,...‬ﻛﻨﺎر‬
‫ﻧﺎم ﭼﺎپ ﻛﻨﺪ‪.‬‬
‫‪ -5‬ﻳﻚ ﻓﺎﻳﻞ ﺗﺎﺑﻌﻲ اﻳﺠﺎد ﻛﻨﻴﺪ ﻛﻪ آرﮔﻮﻣﺎن ورودﻳﺶ ﺗﺎﺑﻊ دﻳﮕﺮي ﺑﺎﺷﺪ‪.‬‬
‫‪ -6‬ﺑﺎ ﺗﻮاﺑﻌﻲ ﻛﻪ ﺗﺎﻛﻨﻮن ﻧﻮﺷﺘﻪاﻳﺪ و ﺑﺎ اﺳﺘﻔﺎده از ﻛﺎﻣﭙﺎﻳﻠﺮ ﻣﺘﻠﺐ ﺑﺮﻧﺎﻣﻪ ‪ C‬و ﺑﺮﻧﺎﻣﻪ ‪ C++‬ﺗﻮﻟﻴﺪ ﻛﻨﻴﺪ‪ ،‬و آنﻫﺎ را از‬
‫ﭘﻨﺠﺮه ﻓﺮﻣﺎن وﻳﻨﺪوز اﺟﺮا ﻛﻨﻴﺪ‪.‬‬

‫‪95‬‬
‫‪(Symbolic Math Tool Box) Symbolic Math‬‬ ‫ﻓﺼﻞ ‪ 10‬رﻳﺎﺿﻴﺎت ﻧﻤﺎدﻳﻦ‬
‫ﻧﻮﺷﺘﻦ ﻋﺒﺎرات و ﻓﺮﻣﻮلﻫﺎ ﺑﺎ ﺣﺮوف و ﻋﻼﺋﻢ‪ ،‬در ﻣﺘﻠﺐ رﻳﺎﺿﻴﺎت ﻧﻤﺎدﻳﻦ ﮔﻔﺘﻪ ﻣﻲﺷﻮد‪ .‬در ﺟﺒﺮ و آﻧﺎﻟﻴﺰ رواﺑﻂ رﻳﺎﺿﻲ ﺑﺎ‬
‫ﺣﺮوﻓﻲ ﻧﻈﻴﺮ ‪ x, y, a ,b‬ﻧﺸﺎن داده ﻣﻲﺷﻮﻧﺪ ﻛﻪ روﺷﻲ ﻛﺎرآﻣﺪ و آﺷﻨﺎ ﺑﻪ ذﻫﻦ و ﭼﺸﻢ اﺳﺖ‪ .‬ﻣﺘﻠﺐ ﺑﺎ اﺳﺘﻔﺎده از‬
‫ﺳﺎﺧﺘﺎر و ﻣﻮﺗﻮر ‪ Maple‬اﻳﻦ ﻛﺎر را اﻧﺠﺎم ﻣﻲدﻫﺪ‪ .‬اﻟﺒﺘﻪ ﺧﻂﻧﻮﺷﺘﻪي ﻛﺎﻣﭙﻴﻮﺗﺮي ﺑﻪ ﺧﻮاﻧﺎﺋﻲ ﻓﺮﻣﻮلﻧﻮﺷﺘﻪﻫﺎي ﭼﺎﭘﻲ و‬
‫‪2‬‬
‫دﺳﺘﻲ ﻧﻴﺴﺖ )ﻣﺜﻼٌ ﻋﺒﺎرت ‪ sin 2x‬ﺑﻪ ﺻﻮرت ﻧﻤﺎدﻳﻦِ ‪ sin(2*x)^2‬ﻧﻮﺷﺘﻪ ﻣﻲﺷﻮد(‪ .‬اﻣﺎ ﻛﻮﺷﺶ ﺷﺪه اﺳﺖ ﻛﻪ‬
‫ﺣﺪاﻛﺜﺮ ﻣﺸﺎﺑﻬﺖ ﺑﺎ روش ﻧﻮﺷﺘﺎري ﺟﺒﺮي ﻓﺮاﻫﻢ ﺷﻮد‪ .‬ﺑﺮاي ﻛﺎر ﺑﺎ رﻳﺎﺿﻴﺎت ﻧﻤﺎدﻳﻦ ﺑﺎﻳﺪ از ﻣﺘﻐﻴﺮﻫﺎي ﻧﻤﺎدﻳﻦ اﺳﺘﻔﺎده ﻛﺮد‪.‬‬

‫‪ 1-10‬ﻣﻘﺎﻳﺴﻪ ﭼﻨﺪ ﻧﻮع داده‬


‫‪double array‬‬ ‫آراﻳﻪ ﻳﺎ ﻣﺘﻐﻴﺮ ﻋﺪدي ﺑﺎ دﻗﺖ اﻓﺰوده‬
‫ﻣﺘﻐﻴﺮي ﻛﻪ ﺑﻪﺻﻮرت ‪ x = 7‬ﺗﻌﺮﻳﻒ ﺷﻮد‪ ،‬آراﻳﻪ ﻳﺎ ﻣﺘﻐﻴﺮ ﻋﺪدي ﺑﺎ دﻗﺖ اﻓﺰوده اﺳﺖ )ﭘﻴﺶﻓﺮض اﻋﺪاد ﺗﻌﺮﻳﻒ ﺷﺪه‬
‫دﻗﺖ اﻓﺰوده ﻳﺎ ‪ double‬اﺳﺖ(‪ .‬ﭘﺎﺳﺦ دﺳﺘﻮر )‪ isnumeric(x‬درﺳﺘﻲ ﻳﺎ ﻣﻨﻄﻖِ ﻳﻚ ﺧﻮاﻫﺪ ﺑﻮد‪.‬‬
‫آراﻳﻪ ﻳﺎ ﻣﺘﻐﻴﺮ ﻛﺎراﻛﺘﺮي‬
‫ﻣﺘﻐﻴﺮي ﻛﻪ ﺑﻪ ﺻﻮرت '‪ d = '7‬ﺗﻌﺮﻳﻒ ﺷﻮد‪ ،‬ﻣﺘﻐﻴﺮ ﻛﺎراﻛﺘﺮي ﻳﺎ رﺷﺘﻪاي اﺳﺖ‪ .‬ﭘﺎﺳﺦ دﺳﺘﻮر )‪ ischar(d‬درﺳﺘﻲ‬
‫ﺧﻮاﻫﺪ ﺑﻮد‪.‬‬
‫ﺷﻴﺊ ﻳﺎ ﻣﺘﻐﻴﺮ ﻧﻤﺎدﻳﻦ‬
‫ﻣﺘﻐﻴﺮي ﻛﻪ ﺑﻪ ﺻﻮرت)‪ a = sym(7‬ﺗﻌﺮﻳﻒ ﺷﻮد‪ ،‬ﻳﻚ ﺷﻴﺊ ﻧﻤﺎدﻳﻦ ‪ symbolic‬اﺳﺖ و ﭘﺎﺳﺦ )‪isobject(a‬‬
‫درﺳﺘﻲ اﺳﺖ‪.‬‬
‫اﻧﻮاع دﻳﮕﺮ داده‬
‫در ﻣﺘﻠﺐ اﻧﻮاع دﻳﮕﺮي از ﻣﺘﻐﻴﺮﻫﺎ ﻧﻈﻴﺮ ‪) single‬ﻛﻪ ﺷﺮح آن ﻗﺒﻼٌ آﻣﺪ( و ‪ cell array‬و ‪sparse matrix‬‬
‫ﻧﻴﺰ وﺟﻮد دارﻧﺪ‪ .‬ﺑﺮاي اﻃﻼع ﺑﻴﺸﺘﺮ ‪ help datatypes‬را اﺟﺮا ﻛﻨﻴﺪ‪.‬‬
‫‪workspace‬‬ ‫ﻧﻤﺎﻳﺶ ﻣﺘﻐﻴﺮﻫﺎ در ﭘﻨﺠﺮه‬
‫ﺳﻪ ﻣﺘﻐﻴﺮ ﻓﻮق ﻛﻪ از ﺳﻪ ﻧﻮع ﻣﺨﺘﻠﻒ ﻫﺴﺘﻨﺪ در ‪ workspace‬ﺑﺎ ﺳﻪ ﻧﺸﺎﻧﻚ ‪ icon‬ﻣﺨﺘﻠﻒ ﻧﻤﺎﻳﺶ داده ﻣﻲﺷﻮﻧﺪ‪:‬‬

‫ﺷﻜﻞ ‪1-10‬‬

‫‪96‬‬
‫‪ 2-10‬ﻣﺘﻐﻴﺮﻫﺎي ﻧﻤﺎدﻳﻦ‬
‫ﻋﻤﻞ ﻣﻌﻜﻮس ﻛﺮدن را ﺑﻪ ﻋﻨﻮان ﻧﻤﻮﻧﻪ در ﻧﻈﺮ ﻣﻲﮔﻴﺮﻳﻢ‪ .‬ﺑﻪ ﻣﺘﻐﻴﺮ ﻋﺪدي ‪ x‬ﻣﻘﺪار داده‪ ،‬آن را ﻣﻌﻜﻮس ﻣﻲﻛﻨﻴﻢ‪ .‬در ﭘﺎﻳﺎن دو‬
‫ﻣﺘﻐﻴﺮ ﻋﺪدي ﺧﻮاﻫﻴﻢ داﺷﺖ‪.‬‬
‫;‪>> x = 7‬‬
‫)‪>> xr = x^(-1‬‬ ‫‪xr = 0.1429‬‬
‫ﺣﺎل ﻣﺘﻐﻴﺮ ‪ d‬را ﻣﺴﺎوي ﻛﺎراﻛﺘﺮ '‪ '7‬ﻗﺮار داده‪ ،‬آن را ﻣﻌﻜﻮس ﻣﻲﻛﻨﻴﻢ‪ .‬اﻳﻦ ﻋﻤﻞ ﻣﻘﺪار ﻋﺪدي ﻳﺎ ﻛﺪ اﺳﻜﻲ ﻣﺘﻐﻴﺮ ‪ d‬را‬
‫ﻛﻪ ﻳﻚ ﻣﺘﻐﻴﺮ ﻛﺎراﻛﺘﺮي اﺳﺖ ﻣﻌﻜﻮس ﻣﻲﻛﻨﺪ )ﻛﺪ اﺳﻜﻲ ﻛﺎراﻛﺘﺮ '‪ '7‬ﻋﺪد ‪ 55‬اﺳﺖ(‬
‫;'‪>> d = '7‬‬
‫)‪>> dr = d^(-1‬‬ ‫‪dr = 0.0182 % 1/55‬‬
‫ﺳﭙﺲ ﻣﺘﻐﻴﺮ ﻧﻤﺎدﻳﻦ ‪ a‬را ﻣﺴﺎوي ‪ 7‬ﻧﻤﺎدﻳﻦ ﮔﺮﻓﺘﻪ و آن را ﻣﻌﻜﻮس ﻣﻲﻛﻨﻴﻢ‪ ،‬ﻧﻤﺎدﻳﻦ ﺑﻮدن ﻣﻘﺪار ﻣﻌﻜﻮس را اﻣﺘﺤﺎن ﻛﺮده‪،‬‬
‫ﺳﭙﺲ آن را ﺑﻪ ﻣﻘﺪار ﻋﺪدي ﺗﺒﺪﻳﻞ ﻣﻲﻛﻨﻴﻢ‪ .‬ﺑﺎ ﻋﻤﻞ روي ‪ a‬ﻳﻚ ﻣﺘﻐﻴﺮ )ﺷﻴﺊ( ﻧﻤﺎدﻳﻦ دﻳﮕﺮ ﺑﻪ ﻧﺎم ‪ ar‬اﻳﺠﺎد ﻣﻲﺷﻮد‪.‬‬
‫;)‪>> a = sym(7‬‬
‫)‪>> ar = a^(-1‬‬ ‫‪ar = 1/7‬‬
‫ﭼﻮن ‪ ar‬در ﺳﻤﺖ ﭼﭗ ﻳﻚ ﻋﺒﺎرت ﻧﻤﺎدﻳﻦ ﻗﺮار دارد‪ ،‬ﺧﻮد ﺑﻪ ﺧﻮد ﻣﻌﺮﻓﻲ ﻣﻲﺷﻮد و ﻧﻴﺎز ﺑﻪ ﻣﻌﺮﻓﻲ ﺟﺪا ﻧﺪارد‪ .‬ﻧﻤﺎدﻳﻦ‬
‫ﺑﻮدن اﻳﻦ ﺷﻴﺊ را ﺑﺎ دﺳﺘﻮر )(‪ isobject‬اﻣﺘﺤﺎن ﻣﻲﻛﻨﻴﻢ‪:‬‬
‫)‪>> isobject(ar‬‬ ‫‪ans = 1‬‬
‫ﺑﺎ دﺳﺘﻮر ‪ double‬ﻣﻲﺗﻮان ﻣﻘﺎدﻳﺮ ﻧﻤﺎدﻳﻦ ﻋﺪدي را ﻧﻴﺰ ﺑﻪ ﻋﺪد ﺗﺒﺪﻳﻞ ﻛﺮد‪:‬‬
‫)‪>> bs = double(ar‬‬ ‫‪bs = 0.1429‬‬
‫)‪>> isnumeric(bs‬‬ ‫‪ans = 1‬‬
‫ﻫﻤﻴﻦ ﻛﺎر ﺑﺎ دﺳﺘﻮر )(‪ eval‬ﻧﻴﺰ ﺷﺪﻧﻲ اﺳﺖ‪:‬‬
‫)‪>> eval(ar‬‬ ‫‪ans = 0.1429‬‬
‫ﺟﺎي ﮔﺰﻳﻨﻲ ﻋﺪد ﻧﻤﺎدﻳﻦ در ﻣﺘﻐﻴﺮ ﻧﻤﺎدﻳﻦ‬
‫ﻣﺘﻐﻴﺮ ﻧﻤﺎدﻳﻦ ‪ a‬را ﻣﺴﺎوي ‪ -5‬ﻧﻤﺎدﻳﻦ ﻗﺮار داده ‪ b = a^2 + a‬و ‪ z = b^.5‬را ﺑﻪ دﺳﺖ آورده ﻣﻘﺎدﻳﺮ ﻋﺪدي‬
‫آنﻫﺎ را ﻧﻴﺰ ﭘﻴﺪا ﻣﻲﻛﻨﻴﻢ‪.‬‬
‫)‪>> a = sym(-5‬‬ ‫‪a = -5‬‬
‫‪>> b = a^2 + a‬‬ ‫‪b = 20‬‬
‫‪>> z = b ^ 0.5‬‬ ‫)‪z = 20^(1/2‬‬
‫ﭼﻮن ﺑﻪ ‪ b‬و ‪ z‬ﻣﻘﺎدﻳﺮ ﻧﻤﺎدﻳﻦ ﻧﺴﺒﺖ داده ﺷﺪه ﻗﺎﺑﻞ ﺗﺒﺪﻳﻞ ﺑﻪ ﻋﺪد ﻫﺴﺘﻨﺪ‪:‬‬
‫)‪>> bd = double(b‬‬ ‫‪bd = 20‬‬
‫)‪>> zd = double(z‬‬ ‫‪zd = 4.4721‬‬
‫ﻳﺎﻓﺘﻦ ﻣﺘﻐﻴﺮﻫﺎي ﻧﻤﺎدﻳﻦ‬
‫دﺳﺘﻮر )(‪ findsym‬ﻣﺘﻐﻴﺮﻫﺎي ﻧﻤﺎدﻳﻦ ﻳﻚ ﺗﺎﺑﻊ ﻧﻤﺎدﻳﻦ را ﺑﻪ ﺗﺮﺗﻴﺐ اﻟﻔﺒﺎ ﻧﺸﺎن ﻣﻲدﻫﺪ‪.‬‬
‫‪>> syms x t y z‬‬
‫;‪>> f = x^t; f1 = z + t^x*y‬‬
‫)‪>> findsym(f), findsym(f1‬‬ ‫‪ans = t, x‬‬ ‫‪ans = t, x, y, z‬‬
‫ﺗﻌﺪاد ‪ n‬ﻣﺘﻐﻴﺮ اول ﻛﻪ از ‪ x‬ﺷﺮوع ﻣﻲﺷﻮﻧﺪ ﺑﺎ )‪ findsym(f1,n‬ﺑﻪ دﺳﺖ ﻣﻲآﻳﺪ‪:‬‬
‫)‪>> findsym(f1,3‬‬ ‫‪ans = x, y, z‬‬
‫ﻧﻤﺎﻳﺶ اﻋﺪاد ﻧﻤﺎدﻳﻦ‬
‫ﻣﺘﻐﻴﺮ ﻋﺪدي ‪ u = 0.257‬را در ﻧﻈﺮ ﻣﻲﮔﻴﺮﻳﻢ و ﺑﺎ آن ﻣﺘﻐﻴﺮ ﻧﻤﺎدﻳﻦ ‪ us‬را ﭘﺪﻳﺪ آورده‪ ،‬ﺑﻪ دو ﺻﻮرت ﻛﺴﺮي و‬
‫اﻋﺸﺎري )ﺗﺎ ﭘﻨﺞ رﻗﻢ( ﻧﻤﺎﻳﺶ ﻣﻲدﻫﻴﻢ‪.‬‬
‫;‪>> u = 0.257‬‬
‫)‪>> us = sym(u‬‬ ‫‪us = 257/1000‬‬

‫‪97‬‬
‫ﭘﺎراﻣﺘﺮ '‪ 'd‬ﻧﻤﺎﻳﺶ را ﺑﻪ ﺻﻮرت اﻋﺸﺎري در ﻣﻲآورد‪ .‬دﺳﺘﻮر )(‪ digits‬ﻛﻪ ﻓﻘﻂ ﺑﺮاي ﻣﺘﻐﻴﺮﻫﺎي ﻧﻤﺎدﻳﻦ ﺑﻪ ﻛﺎر ﻣﻲ‪-‬‬
‫رود ﺗﻌﺪاد ارﻗﺎم اﻋﺪاد ﻧﻤﺎدﻳﻦ را ﺗﻌﻴﻴﻦ ﻣﻲﻛﻨﺪ‪.‬‬
‫)‪>> digits(5‬‬
‫)'‪>> us = sym(u,'d‬‬ ‫‪us = .25700‬‬
‫ﻧﻤﺎﻳﺶ ﻣﺘﻐﻴﺮﻫﺎي ﻧﻤﺎدﻳﻦ‬
‫ﺑﺮاي ﻫﺮﻧﻮع ﻋﻤﻠﻴﺎت ﻧﻤﺎدﻳﻦ ﺑﺎﻳﺴﺘﻲ اﺑﺘﺪا ﻣﺘﻐﻴﺮﻫﺎي ﻣﻮرد اﺳﺘﻔﺎده را ﻣﻌﺮﻓﻲ ﻛﺮد‪ .‬اﻳﻦ ﻛﺎر ﺑﺎ دﺳﺘﻮرﻫﺎي )(‪ sym‬و ‪syms‬‬
‫اﻧﺠﺎم ﻣﻲﺷﻮد‪ .‬ﻣﺘﻐﻴﺮﻫﺎﺋﻲ ﻛﻪ ﺑﺮ اﺛﺮ ﻋﻤﻠﻴﺎت ﺑﺮ روي اﺷﻴﺎء ﻧﻤﺎدﻳﻦ ﺣﺎﺻﻞ ﺷﻮﻧﺪ ﺧﻮدﺑﻪﺧﻮد ﻧﻤﺎدﻳﻦ ﺧﻮاﻫﻨﺪ ﺑﻮد و ﻧﻴﺎز ﺑﻪ‬
‫ﻣﻌﺮﻓﻲ اوﻟﻴﻪ ﻧﺪارﻧﺪ‪.‬‬
‫‪>> syms a b‬‬
‫)‪>> (a+b)^(1/2‬‬ ‫)‪ans = (a+b)^(1/2‬‬
‫اﻣﺎ ﻋﺒﺎرت زﻳﺮ ﺗﻮﻟﻴﺪ ﺧﻄﺎ ﻣﻲﻛﻨﺪ زﻳﺮا ‪ w‬ﻣﻌﺮﻓﻲ ﻧﺸﺪه اﺳﺖ‪:‬‬
‫)‪>> (a+w)^(1/2‬‬ ‫‪??? Undefined function or variable 'w'.‬‬
‫ﻳﻚ ﻣﺘﻐﻴﺮ ﻧﻤﺎدﻳﻦ ﻣﻘﺪاردار و ﻳﻚ ﻣﺘﻐﻴﺮ ﻧﻤﺎدﻳﻦ ﺑﺪون ﻣﻘﺪار را ﺟﻤﻊ ﻛﺮده و رﺷﻴﻪ دوم ﻣﻲﮔﻴﺮﻳﻢ‪ .‬ﺑﻪ ﻣﻌﺮﻓﻲ ﻳﻚ ﻣﺘﻐﻴﺮ‬
‫ﻧﻤﺎدﻳﻦ )ﺳﻤﺒﻠﻴﻚ( ﺑﺎ ﻣﻘﺪار دﻫﻲ و ﺑﺪون ﻣﻘﺪار دﻫﻲ ﺗﻮﺟﻪ ﻛﻨﻴﺪ‪ .‬اﻣﺎ ﻣﺘﻐﻴﺮ ‪ c‬ﻛﻪ از ﻋﻤﻠﻴﺎت ﺑﺮ روي ﻣﺘﻐﻴﺮﻫﺎي ﻗﺒﻼً ﻣﻌﺮﻓﻲ‬
‫ﺷﺪه ﺑﻪ دﺳﺖ ﻣﻲآﻳﺪ‪ ،‬ﻧﻴﺎز ﺑﻪ ﻣﻌﺮﻓﻲ ﻧﺪارد‬
‫;)‪>> a = sym(7‬‬
‫‪>> syms b‬‬
‫)‪>> c = (a+b)^(1/2‬‬ ‫)‪c = (7+b)^(1/2‬‬
‫ﺑﺎ ﻛﺎرﺑﺮد ﻋﺒﺎرات ﺑﺎﻻ ﻣﻘﺪار ﻧﻤﺎدﻳﻦ ‪ a‬ﻫﻔﺖ اﺳﺖ و ﻣﻘﺪار ﻧﻤﺎدﻳﻦ ‪ b‬ﺧﻮدِ ‪ b‬اﺳﺖ‪ ،‬ﻣﻘﺪار اﺷﻴﺎء ﻧﻤﺎدﻳﻦِ ﺑﺪون ﻣﻘﺪار ﺑﺎ‬
‫ﺧﻮدﺷﺎن ﻣﺴﺎوي اﺳﺖ‪ .‬اﻳﻦ ﻣﻮﺿﻮع را ﻣﻲﺗﻮان روي ﭘﻨﺠﺮه ﻓﺮﻣﺎن ﺗﺤﻘﻴﻖ ﻛﺮد‪:‬‬
‫‪>> a , b‬‬ ‫‪a = 7‬‬ ‫‪b = b‬‬
‫ﻣﺘﻐﻴﺮ ﻣﺴﺘﻘﻞ ﻧﻤﺎدﻳﻦ‬
‫ﺑﻪ ﺻﻮرت ﭘﻴﺶﻓﺮض ﻣﺘﻐﻴﺮ ﻣﺴﺘﻘﻞ ‪ x‬اﺳﺖ‪ ،‬ﻟﺬا ﺑﺪون ذﻛﺮ ﭘﺎراﻣﺘﺮ‪ ،‬ﻋﻤﻞ رﻳﺎﺿﻲ ﺑﺮ ﺣﺴﺐ ‪ x‬ﻳﺎ ﻧﺰدﻳﻚﺗﺮﻳﻦ ﻧﺎم ﺑﻪ ‪ x‬اﻧﺠﺎم‬
‫‪t‬‬
‫ﻣﻲﺷﻮد‪ .‬ﻣﺜﻼً ﻣﺸﺘﻖ ‪ x‬را ﺑﺮ ﺣﺴﺐ ‪ x‬و ‪ t‬ﭘﻴﺪا ﻣﻲﻛﻨﻴﻢ‪.‬‬
‫‪>> syms x t‬‬ ‫‪ans =x^t*t/x‬‬
‫‪>> f = x^t‬‬
‫)‪>> diff(f‬‬
‫اﮔﺮ ﺑﺨﻮاﻫﻴﻢ ﻣﺘﻐﻴﺮ ﻣﺴﺘﻘﻞ را ﺧﻮدﻣﺎن ﺗﻌﻴﻴﻦ ﻛﻨﻴﻢ‪ ،‬آنرا ﺑﻪ ﻋﻨﻮان ﭘﺎراﻣﺘﺮ دوم ﻣﻲآورﻳﻢ‪:‬‬
‫)‪>> diff(f,t‬‬ ‫)‪ans = x^t*log(x‬‬

‫ﻳﺎ ﻣﺸﺘﻖ )‪ sin(at + b‬ﺑﺮ ﺣﺴﺐ ﻧﺰدﻳﻚﺗﺮﻳﻦ ﻧﺎم ﺑﻪ ‪ x‬ﻛﻪ در اﻳﻦﺟﺎ ‪ t‬اﺳﺖ ﮔﺮﻓﺘﻪ ﻣﻲﺷﻮد‪:‬‬
‫)‪>> g = sin(a*t + b‬‬
‫)‪>> dg = diff(g‬‬ ‫‪dg =cos(a*t+b)*a‬‬
‫ﺟﺎي ﮔﺰﻳﻨﻲ ﻋﺪد ﻧﻤﺎدﻳﻦ در ﻣﺘﻐﻴﺮ ﻧﻤﺎدﻳﻦ‬
‫ﻣﺘﻐﻴﺮ ﻧﻤﺎدﻳﻦ ‪ a‬را ﻣﺴﺎوي ‪ -5‬ﻧﻤﺎدﻳﻦ ﻗﺮار داده ‪ b = a^2 + a‬و ‪ z = b^.5‬را ﺑﻪ دﺳﺖ آورده ﻣﻘﺎدﻳﺮ ﻋﺪدي‬
‫آنﻫﺎ را ﻧﻴﺰ ﭘﻴﺪا ﻣﻲﻛﻨﻴﻢ‪.‬‬
‫‪>> a = sym(-5),b = a^2 + a,z = b^.5‬‬ ‫‪a = -5‬‬ ‫‪b = 20‬‬ ‫)‪z = 20^(1/2‬‬
‫ﭼﻮن ﺑﻪ ‪ b‬و ‪ z‬ﻣﻘﺎدﻳﺮ ﻧﻤﺎدﻳﻦ ﻧﺴﺒﺖ داده ﺷﺪه‬
‫ﻗﺎﺑﻞ ﺗﺒﺪﻳﻞ ﺑﻪ ﻋﺪد ﻫﺴﺘﻨﺪ‪:‬‬
‫)‪>> bd = double(b), zd = double(z‬‬ ‫‪bd = 20‬‬ ‫‪zd = 4.4721‬‬

‫‪98‬‬
‫ﻳﺎﻓﺘﻦ ﻣﺘﻐﻴﺮﻫﺎي ﻧﻤﺎدﻳﻦ‬
‫‪t‬‬
‫‪ f = x‬را ﻧﻤﺎﻳﺶ ﻣﻲدﻫﺪ‪:‬‬ ‫دﺳﺘﻮر زﻳﺮ ﻣﺘﻐﻴﺮﻫﺎي ﻧﻤﺎدﻳﻦ ﺗﺎﺑﻊ‬
‫)‪>> findsym(f‬‬ ‫‪ans = t, x‬‬
‫اوﻟﻴﻦ ﻣﺘﻐﻴﺮ ﻣﺴﺘﻘﻞ ﺑﺎ اﺿﺎﻓﻪ ﻛﺮدن ﭘﺎراﻣﺘﺮ ‪ 1‬ﺑﻪ دﺳﺘﻮر ﻓﻮق ﺑﻪ دﺳﺖ ﻣﻲآﻳﺪ‪:‬‬
‫)‪>> findsym(f,1‬‬ ‫‪ans = x‬‬
‫ﻧﻤﺎﻳﺶ اﻋﺪاد ﻧﻤﺎدﻳﻦ‬
‫ﺑﺎ ﻣﺘﻐﻴﺮ ﻋﺪدي ‪ u = 0.257‬ﻣﺘﻐﻴﺮ ﻧﻤﺎدﻳﻦ ‪ us‬را ﭘﺪﻳﺪ آورده‪ ،‬ﺑﻪ دو ﺻﻮرت ﻛﺴﺮي و اﻋﺸﺎري )ﺗﺎ ﭘﻨﺞ رﻗﻢ( ﻧﻤﺎﻳﺶ‬
‫ﻣﻲدﻫﻴﻢ‪.‬‬
‫;‪>> u = 0.257‬‬
‫)‪>> us = sym(u‬‬ ‫‪us = 257/1000‬‬
‫ﭘﺎراﻣﺘﺮ '‪ 'd‬ﻧﻤﺎﻳﺶ را ﺑﻪ ﺻﻮرت اﻋﺸﺎري در ﻣﻲآورد‪ .‬دﺳﺘﻮر )(‪ digits‬ﻛﻪ ﻓﻘﻂ ﺑﺮاي ﻣﺘﻐﻴﺮﻫﺎي ﻧﻤﺎدﻳﻦ ﺑﻪ ﻛﺎر ﻣﻲ‪-‬‬
‫رود ﺗﻌﺪاد ارﻗﺎم اﻋﺪاد ﻧﻤﺎدﻳﻦ را ﺗﻌﻴﻴﻦ ﻣﻲﻛﻨﺪ‪.‬‬
‫)‪>> digits(5‬‬
‫)'‪>> us = sym(u,'d‬‬ ‫‪us = .25700‬‬
‫‪ 3-10‬ﻋﻤﻠﻴﺎت رﻳﺎﺿﻲ‬
‫رﻳﺸﻪ دوم‬
‫رﻳﺸﻪ دوم ﻣﺘﻐﻴﺮ ﻧﻤﺎدﻳﻦ ‪ a‬ﺑﻪ ﻃﺮﻳﻖ زﻳﺮ ﺑﻪ دﺳﺖ ﻣﻲآﻳﺪ‪.‬‬
‫‪>> syms a‬‬
‫)‪>> b = sqrt(a‬‬ ‫)‪b = a^(1/2‬‬
‫ﺗﻮان‬
‫رﻳﺸﻪ دوم )‪ exp(-z‬را از ﻃﺮﻳﻖ ﺑﻪ ﺗﻮان رﺳﺎﻧﺪن ﺑﻪ دﺳﺖ ﻣﻲآورﻳﻢ‪.‬‬
‫‪>> syms z‬‬
‫;)‪>> b = exp(-z‬‬
‫‪>> z = b ^ 0.5‬‬ ‫)‪z = exp(-z)^(1/2‬‬
‫ﻣﺸﺘﻖ‬
‫ﻣﺸﺘﻖ اول و دوم ﻋﺒﺎرت ‪ -z^2 + a^2‬را ﭘﻴﺪا ﻣﻲﻛﻨﻴﻢ‪.‬‬
‫‪>> syms a z‬‬
‫)‪>> d = diff(-z^2 + a^2‬‬ ‫‪d = -2*z‬‬
‫)‪>> dd = diff(d‬‬ ‫‪dd = -2‬‬
‫اﻧﺘﮕﺮال‬
‫اﻧﺘﮕﺮال ‪ a^2 + a‬را ﺗﻌﻴﻴﻦ ﻣﻲﻛﻨﻴﻢ‪.‬‬
‫‪>> syms a‬‬
‫‪>> b = a^2 + a‬‬
‫)‪>> c = int(b‬‬ ‫‪c = 1/3*a^3+1/2*a^2‬‬
‫اﻧﺘﮕﺮال ﻣﺤﺪود‬
‫اﻧﺘﮕﺮال )‪ exp(-z‬را ﻣﺎﺑﻴﻦ ﺻﻔﺮ ﺗﺎ ﺑﻲﻧﻬﺎﻳﺖ ﭘﻴﺪا ﻣﻲﻛﻨﻴﻢ‪.‬‬
‫‪>> syms z‬‬
‫;)‪>> b = exp(-z‬‬
‫)‪>> c = int(b,z,0,inf‬‬ ‫‪c = 1‬‬

‫‪99‬‬
‫ﺗﺒﺪﻳﻞ ﺑﻪ ﻛﺴﺮﻫﺎي ﺟﺰﺋﻲ و رﻳﺸﻪ و ﻗﻄﺐ ﻳﻚ ﺗﺎﺑﻊ ﺗﺒﺪﻳﻞ‬
‫دﺳﺘﻮر)(‪ residue‬ﻳﻚ ﻛﺴﺮ را از ﻓﺮم ‪ 1‬ﺑﻪ ﻓﺮم ‪) 2‬ﻛﺴﺮﻫﺎي ﺟﺰﺋﻲ( ﺗﺒﺪﻳﻞ ﻣﻲﻛﻨﺪ‪.‬‬

‫ﻓﺮم ‪1‬‬ ‫ﻓﺮم ‪2‬‬

‫ﻣﺜﺎل‪:‬‬
‫ﺑﺮاي ﺣﺼﻮل رﻳﺸﻪ و ﻗﻄﺐِ ﺗﺎﺑﻊ ﺗﺒﺪﻳﻞ ﻓﺮم ‪ ، 1‬آن را ﺑﻪ ﻛﺴﺮﻫﺎي ﺟﺰﺋﻲ ﺗﺒﺪﻳﻞ ﻣﻲﻛﻨﻴﻢ‪ .‬ﻋﺒﺎرت ﺗﺒﺪﻳﻞ ﺷﺪه ﺑﻪ ﺷﻜﻞ ﻓﺮم ‪2‬‬
‫ﺧﻮاﻫﺪ ﺑﻮد‪.‬‬
‫‪− 1.4167‬‬ ‫‪0.6653‬‬ ‫‪1.3320‬‬
‫‪−‬‬ ‫‪+‬‬ ‫‪− 1.25‬‬
‫‪s − 1.5737 s + 1.1644 s + 0.4093‬‬

‫ﻓﺮم ‪1‬‬ ‫ﻓﺮم ‪2‬‬

‫]‪>> b = [ 5 3 -2 7‬‬ ‫‪r = -1.4167‬‬ ‫‪-0.6653‬‬ ‫‪1.3320‬‬


‫]‪>> a = [-4 0 8 3‬‬ ‫‪p = 1.5737‬‬ ‫‪-1.1644‬‬ ‫‪-0.4093‬‬
‫)‪>> [r, p, k] = residue(b,a‬‬ ‫‪k = -1.2500‬‬
‫ﺗﺒﺪﻳﻞ ﻋﺒﺎرت ﺟﺒﺮي ﺑﻪ ﻛﺴﺮ ﻣﺘﻌﺎرﻓﻲ ﮔﻮﻳﺎ‬
‫)‪ [N,D] = numden(A‬ﻋﻨﺎﺻﺮ ﻣﺎﺗﺮﻳﺲ ‪ A‬را ﺑﻪ ﻛﺴﺮ ﻣﺘﻌﺎرﻓﻲ ﮔﻮﻳﺎ ﺗﺒﺪﻳﻞ ﻣﻲﻛﻨﺪ‪ .‬ﭼﻨﺪﺟﻤﻠﻪايﻫﺎي ﺻﻮرت و‬
‫‪x y‬‬
‫را ﺑﻪ ﺻﻮرت ﻛﺴﺮ‬ ‫ﻣﺨﺮج ﺣﺘﻲاﻻﻣﻜﺎن ﺗﺠﺰﻳﻪﻧﺎﭘﺬﻳﺮ ﺑﻮده و ﺿﺮاﺋﺐ آنﻫﺎ اﻋﺪاد ﺻﺤﻴﺢ ﻫﺴﺘﻨﺪ‪ .‬اﮔﺮ ﻋﺒﺎرت ‪+‬‬
‫‪y x‬‬
‫ﻣﺘﻌﺎرﻓﻲ ﮔﻮﻳﺎ درآورﻳﻢ‪.‬‬
‫‪>> syms x y‬‬
‫)‪>> [n,d] = numden(x/y + y/x‬‬ ‫‪n = x^2 + y^2‬‬
‫‪d = y*x‬‬

‫‪x2 + y 2‬‬
‫ﻋﺒﺎرت ﺗﺒﺪﻳﻞ ﺷﺪه ﺑﻪ اﻳﻦ ﺷﻜﻞ ﻣﻲﺑﺎﺷﺪ‪:‬‬
‫‪yx‬‬
‫‪ 4-10‬اﻋﺪاد ﻣﺨﺘﻠﻂ ﻧﻤﺎدﻳﻦ‬
‫ﺑﺮاي اﻳﻦ ﻛﻪ ﺑﺘﻮاﻧﻴﻢ ﻗﺴﻤﺖ ﻣﻮﻫﻮﻣﻲ را ﺑﻪ ﺻﻮرت ‪ i*y‬ﻧﺸﺎن دﻫﻴﻢ ﺑﺎﻳﺴﺘﻲ ‪ y‬ﺣﺘﻤﺎٌ ﻋﺪد ﺣﻘﻴﻘﻲ ﺑﺎﺷﺪ‪ .‬ﻟﺬا از ﭘﺎراﻣﺘﺮ‬
‫‪ real‬اﺳﺘﻔﺎده ﻣﻲﻛﻨﻴﻢ‪ .‬ﺣﻘﻴﻘﻲ ﺑﻮدن ‪ x‬و ‪ y‬ﺑﻪ ﻣﻌﻨﻲ ﻣﺜﺒﺖ ﺑﻮدن ﻋﺒﺎرت ‪ x^2 + y^2‬ﻣﻲﺑﺎﺷﺪ‪.‬‬
‫ﻣﺰدوج ﻳﻚ ﻋﺪد ﻣﺨﺘﻠﻂ‬
‫ﻣﺰدوج ﻳﻚ ﻋﺪد ﻣﺨﺘﻠﻂ ﻧﻤﺎدﻳﻦ را ﺑﻪ دﺳﺖ آورده‪ ،‬در ﺧﻮدش ﺿﺮب ﻛﺮده‪ ،‬و ﻧﻤﺎﻳﺶ ﻣﻲدﻫﻴﻢ‪ .‬دﺳﺘﻮر )(‪ expand‬در‬
‫اﻳﻦﺟﺎ ﺿﺮب دو ﭘﺮاﻧﺘﺰ را ﺑﺎز ﻣﻲﻛﻨﺪ‪.‬‬
‫>>‬ ‫‪syms x y real‬‬
‫>>‬ ‫; ‪z = x + i*y‬‬
‫>>‬ ‫)‪cz = conj(z‬‬ ‫‪cz = x-i*y‬‬
‫>>‬ ‫)‪az = z*conj(z‬‬ ‫)‪az =(x+i*y)*(x-i*y‬‬
‫>>‬ ‫))‪expand(z*conj(z‬‬ ‫‪ans = x^2+y^2‬‬

‫‪100‬‬
‫‪ 5-10‬ﺗﻮاﺑﻊ ﻧﻤﺎدﻳﻦ‬
‫ﻣﻌﺮﻓﻲ ﻳﻚ ﺗﺎﺑﻊ ﻛﻠﻲ‬
‫ﻣﺜﺎل‪:‬‬
‫ﺗﺎﺑﻊ )‪ f(x‬را ﺑﻪ ﺻﻮرت ﻧﻤﺎدﻳﻦ ﻣﻌﺮﻓﻲ ﻣﻲﻛﻨﻴﻢ‪.‬‬
‫)')‪>> f = sym('f(x‬‬ ‫)‪f = f(x‬‬
‫‪(subs = substitution) x‬‬ ‫ﺟﺎي ﮔﺰﻳﻨﻲ ﻳﻚ ﻋﺒﺎرت ﺑﻪ ﺟﺎي‬
‫ﻣﺜﺎل ﻫﺎ‪:‬‬
‫‪(1‬‬
‫ﺑﺎ ﻋﺒﺎرت )‪ x+h ، subs(f,x,x+h‬را ﺑﻪ ﺟﺎي ‪ x‬ﻗﺮار ﻣﻲدﻫﻴﻢ‬
‫‪>> syms x h y‬‬
‫)‪>> fs = subs(f,x,x+h‬‬ ‫)‪fs = f(x+h‬‬
‫‪(2‬‬
‫‪fs − f‬‬
‫را ﺑﻪ دﺳﺖ آورﻳﺪ‪.‬‬ ‫ﻣﻘﺪار ﻧﻤﺎدﻳﻦ‬
‫‪h‬‬
‫‪>> df = (fs-f)/h‬‬ ‫‪df = (f(x+h)-f(x))/h‬‬
‫ﺗﺎﺑﻊ ﻧﻤﺎدﻳﻦ ﻣﺨﺘﻠﻂ‬
‫ﻣﺜﺎل‪:‬‬
‫ﻣﺸﺘﻖ ‪ eix‬را ﺑﻪ دﺳﺖ ﻣﻲآورﻳﻢ‪.‬‬
‫)‪>> ep = exp(i*x‬‬
‫)‪>> ep1 = diff(ep‬‬ ‫)‪ep1 = i*exp(i*x‬‬
‫‪ 6-10‬ﺣﺪ ﺗﺎﺑﻊ‬
‫در ﮔﺮﻓﺘﻦ ﺣﺪ‪ ،‬اﮔﺮ ﺟﻬﺖ ﻣﻴﻞ ﻣﺘﻐﻴﺮ را ﻧﻨﻮﻳﺴﻴﻢ‪ ،‬ﭘﻴﺶ ﻓﺮضِ ﺣﺪ ﻳﻌﻨﻲ ‪ x → 0‬اﻋﻤﺎل ﻣﻲﺷﻮد‪.‬‬
‫ﻣﺜﺎل ﻫﺎ‪:‬‬
‫‪cos(x + h)− cosx‬‬
‫‪lim‬‬ ‫ﺗﻌﻴﻴﻦ‬
‫∞→‪h‬‬ ‫‪h‬‬
‫‪>> syms x h‬‬
‫‪>> lm = '(cos(x+h) -‬‬
‫;'‪cos(x))/h‬‬
‫) ‪>> li = limit(lm, h, inf‬‬ ‫‪li = 0‬‬
‫‪ h‬ﻣﺘﻐﻴﺮ ﻣﻴﻞ ﻛﻨﻨﺪه و ‪ (∞) inf‬ﻣﻘﺼﺪ ﺗﻤﺎﻳﻞ اﺳﺖ ‪%‬‬

‫ﻣﻲﺗﻮان ﺑﻪ اﻳﻦ ﺻﻮرت ﻧﻮﺷﺖ‪ ، lm = sym('(cos(x+h) - cos(x))/h') :‬اﻣﺎ ﻣﺘﻠﺐ اﺟﺎزه ﻣﻲدﻫﺪ ﻛﻪ‬
‫ﺗﺎﺑﻊ را ﺑﻪ ﺻﻮرت رﺷﺘﻪ ﺗﻌﺮﻳﻒ ﻛﺮده‪ ،‬ﺳﭙﺲ ﻋﻤﻠﻴﺎت ﻧﻤﺎدﻳﻦ را اﻧﺠﺎم دﻫﻴﻢ‪ .‬ﺑﻪ اﻳﻦ ﺗﺮﺗﻴﺐ ﻧﻮﺷﺘﻦ ﺗﻮاﺑﻊ راﺣﺖﺗﺮ و ﻧﻤﺎﻳﺶ‬
‫آنﻫﺎ واﺿﺢﺗﺮ ﻣﻲﺷﻮد‪.‬‬
‫ﺳﺆال‪ :‬ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ رﺷﺘﻪاي ﺑﻮدن ‪ lm‬ﻣﺘﻐﻴﺮ ‪ li‬از ﭼﻪ ﻧﻮع اﺳﺖ؟‬
‫ﺗﻌﻴﻴﻦ ﻣﺸﺘﻖ از ﻃﺮﻳﻖ ﻳﺎﻓﺘﻦ ﺣﺪ‬
‫‪>> syms x h‬‬
‫‪>> lm = '(cos(x+h) -‬‬
‫'‪cos(x))/h‬‬
‫) ‪>> lz = limit(lm, h, 0‬‬ ‫)‪lz = -sin(x‬‬

‫‪101‬‬
‫ﺣﺪ و ﮔﺮاﻳﺶ ﺣﺪ‬
‫ﺣﺪ ﺗﺎﺑﻊ ‪ 1/x‬را ﺑﻪ ازاي ‪ x → 0‬ﺑﺪون ﮔﺮاﻳﺶ‬
‫)‪>> limit(1/x‬‬ ‫‪ans = NaN‬‬
‫ﺣﺪ ﺗﺎﺑﻊ ‪ 1/x‬را ﺑﻪ ازاي ‪ x → 0‬ﺑﺎ ﮔﺮاﻳﺶ ﭼﭗ‬
‫)'‪>> limit(1/x,x,0,'left‬‬ ‫‪ans = -inf‬‬
‫ﺣﺪ ﺗﺎﺑﻊ ‪ 1/x‬را ﺑﻪ ازاي ‪ x → 0‬ﺑﺎ ﮔﺮاﻳﺶ راﺳﺖ‬
‫)'‪>> limit(1/x,x,0,'right‬‬ ‫‪ans = inf‬‬

‫‪ 7-10‬ﺗﺎﺑﻊ ام‪ -‬ﻓﺎﻳﻠﻲ ﻧﻤﺎدﻳﻦ‬


‫ﻣﺜﺎل‪:‬‬
‫‪sin x‬‬
‫را ﺑﺮﮔﺮداﻧﺪ‪ ،‬آن را در دﻳﺮﻛﺘﻮري ﺟﺎري ﺿﺒﻂ ﻛﻨﻴﺪ‪.‬‬ ‫ﺗﺎﺑﻊ ام‪ -‬ﻓﺎﻳﻠﻲ ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﺑﻪ ازاي ﻳﻚ آرﮔﻮﻣﺎن ﻧﻤﺎدﻳﻦ ﻣﻘﺪار‬
‫‪x‬‬
‫اﻳﻦ ﺗﺎﺑﻊ را ﺑﺎ ﻳﻚ آرﮔﻮﻣﺎن ﻧﻤﺎدﻳﻦ ﺑﺪون ﻣﻘﺪار و ﻳﻚ آرﮔﻮﻣﺎن ﻧﻤﺎدﻳﻦ ﻣﻘﺪار دار از ﭘﻨﺠﺮه ﻓﺮﻣﺎن اﺟﺮا ﻛﻨﻴﺪ‪ .‬ﻫﻢﭼﻨﻴﻦ ﺑﺮاي‬
‫آن ﻳﻚ راﻫﻨﻤﺎ ﺑﻨﻮﻳﺴﻴﺪ و آن را ﻧﻴﺰ اﺟﺮا ﻛﻨﻴﺪ‪.‬‬
‫‪% Function M-File sinc.m‬‬
‫)‪function z = sinc(x‬‬
‫‪%SINC The symbolic sinc function sin(x)/x.‬‬
‫‪%This function receives a symbolic variable as the input argument.‬‬
‫))‪if isequal(x,sym(0‬‬
‫;‪z = 1‬‬
‫‪else‬‬
‫;‪z = sin(x)/x‬‬
‫‪end‬‬
‫‪>> syms q‬‬
‫)‪>> sinc(q‬‬ ‫‪ans = sin(q)/q‬‬

‫;)‪>> x = sym(0‬‬
‫)‪>> sinc(x‬‬ ‫‪ans = 1‬‬
‫‪>> help sinc‬‬
‫‪SINC The symbolic sinc function sin(x)/x.‬‬
‫‪This function receives a symbolic variable as the input argument.‬‬
‫‪ 8-10‬ﺳﺮي ﻫﺎ‬
‫ﺳﺮي ﺑﺎ دﺳﺘﻮر )‪ symsum(s,a,b‬ﻣﺤﺎﺳﺒﻪ ﻣﻲﺷﻮد‪ a,b .‬ﻣﻘﺎدﻳﺮ اﺑﺘﺪاﺋﻲ و اﻧﺘﻬﺎﺋﻲ ﭘﺎراﻣﺘﺮ ﺳﺮي را ﻣﻌﻴﻦ ﻣﻲﻛﻨﻨﺪ‬
‫ﻣﺜﺎل‪:‬‬
‫‪∞ 1‬‬
‫∑‬ ‫ﻣﺤﺎﺳﺒﻪ ﺳﺮي‪:‬‬
‫‪k =1‬‬ ‫‪k‬‬ ‫‪2‬‬

‫‪>> syms x k‬‬


‫)‪>> s1 = symsum(1/k^2,1,inf‬‬

‫‪s1 = 1/6*pi^2‬‬
‫‪ 9-10‬ﺗﻮاﺑﻊ آﺳﺎن ﺳﺎز‬
‫ﺑﺮاي ﻧﻤﺎﻳﺶ واﺿﺢﺗﺮ ﻋﺒﺎرات ﻧﻤﺎدﻳﻦ از اﻳﻦ ﺗﻮاﺑﻊ اﺳﺘﻔﺎده ﻣﻲﻛﻨﻴﻢ‪ .‬اﺳﺘﻔﺎده از ﺗﻮاﺑﻊ آﺳﺎن ﺳﺎز ﻫﻤﻴﺸﻪ ﺑﺎ ﻣﻮﻓﻘﻴﺖ ﻫﻢراه‬
‫ﻧﻴﺴﺖ و ﺑﺴﺘﮕﻲ ﺑﻪ ﻫﻮﺷﻤﻨﺪي ﻧﺮماﻓﺰار دارد‪.‬‬

‫‪102‬‬
‫)(‪pretty‬‬ ‫ﺗﺎﺑﻊ‬
‫ﻳﻚ ﻋﺒﺎرت را ﺑﻪ ﻓﺮم ﺟﺒﺮي ﺧﻮاﻧﺎ ﻧﻤﺎﻳﺶ ﻣﻲدﻫﺪ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫‪>> syms x‬‬
‫;))‪>> f1 = (5+4*cos(x))^3*sin(x)^2*(1+sin(x‬‬
‫)‪>> pretty(f1‬‬
‫‪3‬‬ ‫‪2‬‬
‫))‪(5 + 4 cos(x)) sin(x) (1 + sin(x‬‬
‫)(‪expand‬‬ ‫ﺗﻮاﺑﻊ )(‪ collect‬و‬
‫ﻣﻜﻤﻞ ﻳﻚ دﻳﮕﺮ ﻫﺴﺘﻨﺪ و ﻋﺒﺎرات ﻧﻤﺎدﻳﻦ را ﺑﺎز ﻳﺎ ﺑﺴﺘﻪ ﻣﻲﻛﻨﻨﺪ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫‪>> syms x y‬‬
‫;‪>> f = x^2*y + y*x - x^2 - 2*x‬‬
‫)‪>> collect(f‬‬ ‫‪ans = (y-1)*x^2+(y-2)*x‬‬

‫‪>> g = (2*x+5)^2‬‬
‫)‪>> expand(g‬‬ ‫‪ans = 4*x^2+20*x+25‬‬
‫)(‪factor‬‬ ‫ﻓﺎﻛﺘﻮرﮔﻴﺮي‬
‫ﻣﺜﺎل‪:‬‬
‫از ﻋﺒﺎرت ‪ x 3 − 1‬و ﻋﺪد ﻧﻤﺎدﻳﻦ ‪ 625‬ﻓﺎﻛﺘﻮر ﻣﻲﮔﻴﺮﻳﻢ‪.‬‬
‫‪>> syms x‬‬
‫‪>> g = x^3-1‬‬
‫)‪>> gf = factor(g‬‬ ‫)‪gf =(x-1)*(x^2+x+1‬‬

‫;)‪>> y = sym(625‬‬
‫)‪>> factor(y‬‬ ‫‪ans = (5)^4‬‬
‫)(‪simplify‬‬ ‫ﺳﺎده ﻛﺮدن ﺑﺎ‬
‫ﺳﻌﻲ ﻣﻲﻛﻨﺪ ﻫﺮ ﻋﺒﺎرت ﻧﻤﺎدﻳﻦ را ﻳﻪ ﺳﺎدهﺗﺮﻳﻦ ﻓﺮم ﻧﻤﺎدﻳﻦ ﻧﻤﺎﻳﺶ دﻫﺪ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫‪y x‬‬ ‫‪2‬‬ ‫‪2‬‬ ‫‪2 5‬‬
‫ﻋﺒﺎرات ‪ e e , sin x + cos x, x x‬را ﺳﺎده ﻣﻲﻛﻨﻴﻢ‪.‬‬
‫‪>> syms x y‬‬
‫))‪>> simplify(exp(y)*exp(x‬‬ ‫)‪ans = exp(y+x‬‬

‫)‪>> simplify(sin(x)^2+cos(x)^2‬‬ ‫‪ans = 1‬‬

‫)‪>> simplify(x^2*x^5‬‬ ‫‪ans = x^7‬‬


‫)(‪simple‬‬ ‫ﺳﺎده ﻛﺮدن ﺑﺎ‬
‫اﻳﻦ دﺳﺘﻮر اﻧﻮاع دﺳﺘﻮرﻫﺎي ﺳﺎدهﺳﺎزي را ﻛﻪ ﺑﺮ روي ﻳﻚ ﻋﺒﺎرت ﻗﺎﺑﻞ اﺟﺮا اﺳﺖ‪ ،‬اﺟﺮا ﻣﻲﻛﻨﺪ‪ .‬ﺧﻮدﺗﺎن ‪ simple‬را‬
‫ﺑﺮاي )‪ sin(x)*cos(x‬اﺟﺮا ﻛﻨﻴﺪ‪.‬‬

‫‪ 10-10‬ﻣﺎﺗﺮﻳﺲ ﻫﺎي ﻧﻤﺎدﻳﻦ‬


‫ﻣﺎﺗﺮﻳﺲ ﺑﺎ ﻋﻨﺎﺻﺮي از ﻣﺘﻐﻴﺮﻫﺎي ﻧﻤﺎدﻳﻦ‬
‫ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﺑﺎ ﻋﻨﺎﺻﺮ ﻧﻤﺎدﻳﻦ ﺑﻪ ﻃﺮﻳﻖ زﻳﺮ ﺗﻌﺮﻳﻒ ﻣﻲﺷﻮد‪.‬‬

‫‪103‬‬
>> syms a b c
>> M = [a b c; a/2 b/2 c/2; c a b] M = [ a, b, c]
[ 1/2*a, 1/2*b, 1/2*c]
[ c, a, b]
>> s2 = sum(M(2,:))% ‫ﻣﺠﻤﻮع ﻋﻨﺎﺻﺮ ردﻳﻒ دو‬ s2 = 1/2*a+1/2*b+1/2*c

>> a = sym(-6); b = sym(-6); c = sym(-6);%‫ﻣﻘﺎدﻳﺮ ﻧﻤﺎدﻳﻨﻲ ﺑﻪ ﻣﺘﻐﻴﺮﻫﺎ ﻧﺴﺒﺖ ﻣﻲدﻫﻴﻢ‬


>> sv = eval(s2)% ‫ﻋﺪد ﻧﻤﺎدﻳﻦ اﺳﺖ‬ sv = -9
>> isobject(sv) ans = 1
:‫ ﻗﺎﺑﻞ اﺳﺖ‬double() ‫ﺑﺎ‬
>> svd = double(sv)%‫ﺗﺒﺪﻳﻞ ﺑﻪ ﻋﺪد ﻣﺤﺎﺳﺒﺎﺗﻲ‬ svd = -9
>> isnumeric(svd) ans = 1
‫ﻣﺎﺗﺮﻳﺲ ﺑﺎ ﻋﻨﺎﺻﺮي از ﺗﻮاﺑﻊ ﻧﻤﺎدﻳﻦ‬
‫ را ﺑﺮاﺑﺮ ﻣﻘﺪار‬x ‫ و‬-1 ‫ را ﺑﺮاﺑﺮ ﻣﻘﺪار ﻧﻤﺎدﻳﻦ‬a ،‫ در ﻣﺎﺗﺮﻳﺲِ ﻣﺸﺘﻖ‬،‫ ﻣﺸﺘﻖ ﻣﻲﮔﻴﺮﻳﻢ‬،‫ﻣﺎﺗﺮﻳﺲ زﻳﺮ را ﺗﺸﻜﻴﻞ ﻣﻲدﻫﻴﻢ‬
.‫ ﻗﺮار ﻣﻲدﻫﻴﻢ‬pi/4 ‫ﻧﻤﺎدﻳﻦ‬
┌ ┐
│ cos(a*x) sin(a*x)│
│ │
│-sin(a*x ) cos(a*x)│
└ ┘
>> syms a x
>> M = [cos(a*x) sin(a*x ); -sin(a*x ) cos(a*x)];
>> Md = diff(M) Md = [ -sin(a*x)*a, cos(a*x)*a]
[ -cos(a*x)*a, -sin(a*x)*a]
>> a = sym(-1);
>> Mde = eval(Md) Mde = [ -sin(x), -cos(x)]
[ cos(x), -sin(x)]
>> x = sym(pi/4);
>> MM = eval(Mde) MM = [ -1/2*2^(1/2), -1/2*2^(1/2)]
[ 1/2*2^(1/2), -1/2*2^(1/2)]
>> double(MM) ans = -0.7071 -0.7071
0.7071 -0.7071

104
‫)(‪ezplot‬‬ ‫‪ 11-10‬رﺳﻢ ﺗﺎﺑﻊ ﻧﻤﺎدﻳﻦ ﺑﺎ‬
‫ﻣﺜﺎل‪:‬‬
‫‪1 2‬‬
‫‪−‬‬ ‫‪x‬‬
‫‪2‬‬
‫‪:e‬‬ ‫رﺳﻢ ﺗﺎﺑﻊ‬

‫‪>> syms x‬‬


‫‪>> k = sym(-‬‬
‫;))‪1/sqrt(2‬‬
‫;)‪>> f = exp(k*x^2‬‬
‫)‪>> ezplot(f‬‬

‫ﺷﻜﻞ ‪2-10‬‬

‫‪ 12-10‬درﻳﺎﻓﺖ راﻫﻨﻤﺎ در ﻣﻮرد رﻳﺎﺿﻴﺎت ﻧﻤﺎدﻳﻦ‬


‫ﺑﺮاي درﻳﺎﻓﺖ راﻫﻨﻤﺎ در ﻣﻮرد رﻳﺎﺿﻴﺎت ﻧﻤﺎدﻳﻦ اﻳﻦ دﺳﺘﻮرﻫﺎ را از ﭘﻨﺠﺮه ﻓﺮﻣﺎن اﺟﺮا ﻛﻨﻴﺪ‪:‬‬
‫‪help mfunlist, mhelp index[packages], mhelp diff‬‬
‫ﭘﻴﺸﻮﻧﺪ ‪ m‬در ﻛﻠﻤﺎت ﻓﻮق ﺑﻪﺟﺎي ‪ Maple‬آﻣﺪه اﺳﺖ‪.‬‬
‫ﻫﻢﭼﻨﻴﻦ ﻣﻲﺗﻮاﻧﻴﺪ ﻣﻨﻮي ‪ Help_MATLAB Help‬را اﺟﺮا و راﻫﻨﻤﺎي ‪ Symbolic Math Toolbox‬را‬
‫ﻣﻄﺎﻟﻌﻪ ﻛﻨﻴﺪ‪.‬‬

‫‪105‬‬
‫‪ 13-10‬ﺗﻤﺮﻳﻦ‬
‫‪ -1‬ﺗﺎﺑﻊ )‪ tan(y/x‬را ﺗﻌﺮﻳﻒ ﻛﺮده ﻣﺸﺘﻖﻫﺎي آن را ﻧﺴﺒﺖ ﺑﻪ ﻫﺮﻳﻚ از دو ﻣﺘﻐﻴﺮ ﺟﺪاﮔﺎﻧﻪ ﺑﻪ دﺳﺖ آورﻳﺪ‪.‬‬
‫‪ -2‬ﻣﺸﺘﻖﻫﺎي اول و دوم ﺗﺎﺑﻊ )‪ exp(i*x‬را ﺗﻌﻴﻴﻦ ﻛﻨﻴﺪ‪.‬‬
‫‪ -3‬ﻣﺘﻐﻴﺮ ﻧﻤﺎدﻳﻦ ‪ a‬را ﻣﺴﺎوي ‪ -5‬ﻧﻤﺎدﻳﻦ ﻗﺮار داده ‪ b = a^2 + a‬و ‪ z = b^.5‬را ﺑﻪ دﺳﺖ آورده‬
‫ﻣﻘﺎدﻳﺮ ﻋﺪدي آنﻫﺎ را ﻧﻴﺰ ﭘﻴﺪا ﻛﻨﻴﺪ‪.‬‬
‫‪ -4‬ﻣﺎﺗﺮﻳﺲ ‪ Mgi = magic(3)/5‬را اﻳﺠﺎد ﻛﻨﻴﺪ‪ .‬آن را ﺑﻪ ﺻﻮرت ﻧﻤﺎدﻳﻦ )‪Mgs = sym(Mgi‬‬
‫درآورﻳﺪ‪ .‬ﺳﭙﺲ دﺗﺮﻣﻴﻨﺎن )‪ det(Mgs‬و ﻣﺎﺗﺮﻳﺲ ﻣﻌﻜﻮس )‪ inv(Mgs‬آن را ﺑﻪ دﺳﺖ آورﻳﺪ‪.‬‬
‫‪ -5‬ﻣﺸﺘﻖ ‪ x^2+2*x‬را ﺑﺎ اﺳﺘﻔﺎده از ﺟﺎيﮔﺰﻳﻨﻲ و ﺣﺪ ﺑﻪ دﺳﺖ آورﻳﺪ‪.‬‬
‫‪x‬‬
‫‪ -6‬اﻳﻦ ﺣﺪ را ‪lim (1 + )n‬‬
‫ﺗﻌﻴﻴﻦ ﻛﻨﻴﺪ‪.‬‬
‫∞→‪n‬‬ ‫‪n‬‬
‫‪ -7‬ﻣﺸﺘﻖ ﺗﺎﺑﻊ )‪ r = sqrt(x^2 + y^2 + z^2‬را ﺑﻪ دﺳﺖ آورﻳﺪ‪ .‬ﺗﺎﺑﻊ )‪ ri = int(r‬را ﺑﻪ‬
‫دﺳﺖ آورده‪ ،‬و ﺑﺎ دﺳﺘﻮر )‪ pretty(ri‬آنرا ﺧﻮاﻧﺎﺗﺮ ﻧﻤﺎﻳﺶ دﻫﻴﺪ‪.‬‬
‫‪ -8‬ﻣﻨﺤﻨﻲ ﺗﺎﺑﻊ زﻳﺮ و ﻣﻨﺤﻨﻲ ﻣﺸﺘﻖ آن را رﺳﻢ ﻛﻨﻴﺪ‪:‬‬
‫)‪f2 =32/(5+4*cos(x))^3*sin(x)^2+4/(5+4*cos(x))^2*cos(x‬‬
‫‪∞ k‬‬
‫را ﺑﺮاي ‪ 0 < x < 1‬ﺣﺴﺎب ﻛﻨﻴﺪ‪.‬‬ ‫‪ -9‬ﺳﺮي ‪∑ x‬‬
‫‪k=0‬‬
‫‪ -10‬ﻣﺎﺗﺮﻳﺲ ]‪ [a b c; a/2 b/2 c/2; c a b‬را ﺗﺸﻜﻴﻞ دﻫﻴﺪ‪ .‬ﺣﺎﺻﻞﺟﻤﻊ ﻋﻨﺎﺻﺮ ردﻳﻒ ‪ 2‬آنرا ﺑﻪ‬
‫ﺻﻮرت ﻧﻤﺎدﻳﻦ ﺣﺴﺎب ﻛﻨﻴﺪ‪ .‬ﻣﻘﺪار ﻋﺪدي اﻳﻦ ﺣﺎﺻﻞﺟﻤﻊ را در ازاي ‪ a = b = c = -6‬ﺑﻪ دﺳﺖ‬
‫آورﻳﺪ‪.‬‬
‫‪ -11‬ﻣﻌﺎدﻟﻪ ‪ a*x^3-2*a*x+1‬را ﺣﻞ ﻛﻨﻴﺪ‪ ،‬ﺳﭙﺲ ﺑﺎ دﺳﺘﻮر )(‪ pretty‬رﻳﺸﻪﻫﺎ را ﻧﻤﺎﻳﺶ دﻫﻴﺪ‪ .‬ﺑﻪ ازاي‬
‫‪ a = -1‬ﻣﻘﺎدﻳﺮ ﻋﺪدي رﻳﺸﻪﻫﺎ را ﺑﻪ دﺳﺖ آورﻳﺪ‪.‬‬
‫‪du‬‬ ‫‪d2u‬‬ ‫‪d3u‬‬
‫‪ u(0)=1,‬ﺣﻞ ﻛﻨﻴﺪ‪.‬‬ ‫‪(0)=-1,‬‬ ‫=)‪(0‬‬‫‪π‬‬ ‫اوﻟﻴﻪ‬ ‫ﺷﺮاﺋﻂ‬ ‫ﺑﺎ‬ ‫را‬ ‫‪ -12‬ﻣﻌﺎدﻟﻪ دﻳﻔﺮاﻧﺴﻴﻞ ‪= u‬‬
‫‪dx‬‬ ‫‪dx2‬‬ ‫‪dx3‬‬
‫‪ -13‬ﺷﺪت ﺟﺮﻳﺎن ﻳﻚ ﻣﺪار ‪ RLC‬را ﺑﺮاي ‪ ω = 1‬ﺑﺎ ﻣﻘﺎدﻳﺮ ﻳﻚ ﺑﺮاي ﻋﻨﺎﺻﺮ ﻣﺪار‪ ،‬ورودي ﺳﻴﻨﻮﺳﻲ‪ ،‬و ﺑﺎ ﺷﺮاﺋﻂ‬
‫اوﻟﻴﻪ ﺻﻔﺮ ﺑﻪدﺳﺖ آورده و رﺳﻢ ﻛﻨﻴﺪ‪ .‬راﻫﻨﻤﺎ‪ :‬ﺑﺮاي ﻧﺸﺎﻧﻪ ﺷﺪت ﺟﺮﻳﺎن ﺑﻪﺟﺎي ‪ i‬از ‪ cur‬اﺳﺘﻔﺎده ﻛﻨﻴﺪ‪.‬‬

‫‪R=1‬‬

‫‪sin t‬‬ ‫‪cur‬‬ ‫‪L=1‬‬


‫‪C=1‬‬

‫‪ -14‬ﻓﺮﻣﻮل زﻳﺮ‪ ،‬ﺣﻞ ﻳﻚ دﺳﺘﮕﺎه ﺑﺎ ﺷﺮاﺋﻂ اوﻟﻴﻪ ‪ f(0)=0,g(0)=1‬را ﻣﻲدﻫﺪ‪ .‬ﭘﺎﺳﺦﻫﺎ را رﺳﻢ ﻛﻨﻴﺪ‪.‬‬
‫)'‪[f,g] = dsolve('Df=3*f+4*g,Dg =-4*f+3*g','f(0) = 0,g(0)= 1‬‬
‫‪ -15‬ﺗﺎﺑﻊ ﺗﺒﺪﻳﻞ زﻳﺮ را ﺑﻪ ﻛﺴﺮﻫﺎي ﺟﺰﺋﻲ ﺗﺒﺪﻳﻞ ﻛﻨﻴﺪ و دوﺑﺎره ﺑﻪ ﻛﺴﺮ ﻛﻠﻲ ﺑﺮﮔﺮداﻧﻴﺪ‪ .‬ﺗﻐﻴﻴﺮ در ﺿﺮﻳﺐﻫﺎ و ﻧﺮﻣﺎل‬
‫ﺷﺪن ﺿﺮﻳﺐ ﺗﺮم اول ﻣﺨﺮج را ﻣﻼﺣﻈﻪ ﻛﻨﻴﺪ‪:‬‬

‫‪ -16‬ﺑﺎ اﺳﺘﻔﺎده از ﻓﺎﻛﺘﻮرﮔﻴﺮي‪ ،‬ﺑﺎ ﻧﻮﺷﺘﻦ ﻳﻚ ام‪ -‬ﻓﺎﻳﻞ ﺗﻮانﻫﺎي ‪ 1‬ﺗﺎ ‪ 6‬ﻋﺪد ‪ 3‬را در ﻳﻚ ﺟﺪول ﻧﻤﺎﻳﺶ دﻫﻴﺪ‪.‬‬

‫‪106‬‬
‫ﻓﺼﻞ ‪ 11‬ﻋﻤﻠﻴﺎت ﻣﺤﺎﺳﺒﺎﺗﻲ‬
‫‪ 1-11‬ﺣﻞ ﻣﻌﺎدﻻت‬
‫)(‪poly‬‬ ‫ﻣﻌﺎدﻟﻪ ﭼﻨﺪ ﺟﻤﻠﻪ اي‪ ،‬دﺳﺘﻮرﻫﺎي )(‪ roots‬و‬
‫دﺳﺘﻮر )‪ roots(d‬رﻳﺸﻪﻫﺎي ﭼﻨﺪﺟﻤﻠﻪاي را ﺑﻪ دﺳﺖ ﻣﻲدﻫﺪ ﻛﻪ ﺿﺮاﺋﺐ آن اﻋﻀﺎء ﺑﺮدار ]‪d = [n1 n2 ...‬‬
‫ﺑﺎﺷﻨﺪ‪ .‬اﻳﻦ دﺳﺘﻮر از روشﻫﺎي ﭘﻴﺸﺮﻓﺘﻪي ﻣﺤﺎﺳﺒﺎت ﻋﺪدي ﺑﺮاي رﺳﻴﺪن ﺑﻪ رﻳﺸﻪﻫﺎ اﺳﺘﻔﺎده ﻣﻲﻛﻨﺪ و ﻧﻴﺎزي ﺑﻪ ﺣﺪس اوﻟﻴﻪ‬
‫ﻧﺪارد‪ roots() .‬رﻳﺸﻪﻫﺎي ﻣﻮﻫﻮﻣﻲ و ﺣﻘﻴﻘﻲ را ﺑﻪ دﺳﺖ ﻣﻲآورد‪.‬‬
‫دﺳﺘﻮر )‪ poly(b‬ﭼﻨﺪ ﺟﻤﻠﻪاي را ﺑﻪ دﺳﺖ ﻣﻲدﻫﺪ ﻛﻪ رﻳﺸﻪﻫﺎي آن اﻋﻀﺎء ﺑﺮدار ‪ b‬ﺑﺎﺷﻨﺪ‪ .‬اﻳﻦ دو ﺗﻮاﺑﻊ ﻣﻌﻜﻮس ﻳﻚ‪-‬‬
‫دﻳﮕﺮ ﻫﺴﺘﻨﺪ‪.‬‬
‫ﻣﺜﺎل ﻫﺎ‪:‬‬
‫رﻳﺸﻪي ﻣﻌﺎدﻟﻪي ﭼﻨﺪ ﺟﻤﻠﻪاي‬
‫)]‪>> r1 = roots([3,4.6,-5.8‬‬
‫‪r1 = -2.3545‬‬
‫‪0.8211‬‬
‫)]‪>> r2 = roots([3,4.6,5.8‬‬
‫‪r2 = -0.7667 + 1.1600i‬‬
‫‪-0.7667 - 1.1600i‬‬
‫ﺿﺮاﺋﺐ ﭼﻨﺪ ﺟﻤﻠﻪاي از روي رﻳﺸﻪﻫﺎ‬
‫‪>> rr = roots( [1.0000‬‬ ‫‪-2.0000‬‬ ‫‪3.0001‬‬ ‫)]‪-4.0001‬‬
‫‪rr = 1.6506‬‬
‫‪0.1747 + 1.5469i‬‬
‫‪0.1747 - 1.5469i‬‬
‫)‪>> poly(rr‬‬
‫‪ans = 1.0000‬‬ ‫‪-2.0000‬‬ ‫‪3.0001‬‬ ‫‪-4.0001‬‬
‫)(‪fzero‬‬ ‫ﺣﻞ ﻣﻌﺎدﻟﻪ ﺑﺎ ﺗﺎﺑﻊ ﻛﺘﺎب ﺧﺎﻧﻪ اي‬
‫)(‪ fzero‬ﺳﻌﻲ ﻣﻲﻛﻨﺪ ﻛﻪ ﻣﻘﺪار رﻳﺸﻪ واﻗﻌﻲ را ﺣﻮل و ﺣﻮش ﻳﻚ ﺣﺪس اوﻟﻴﻪ ﻳﺎ ﻧﻘﻄﻪ ﺷﺮوع‬
‫‪ starting point‬ﻛﻪ دﺳﺘﻲ وارد ﻣﻲﺷﻮد‪ ،‬ﭘﻴﺪا ﻛﻨﺪ )(‪ fzero‬در واﻗﻊ ﻣﺤﻞ ﺗﻐﻴﻴﺮ ﻋﻼﻣﺖ ﺗﺎﺑﻊ را ﭘﻴﺪا ﻣﻲﻛﻨﺪ‪،‬‬
‫ﻟﺬا ﺑﻬﺘﺮ اﺳﺖ ﺑﺮاي ﺗﻮاﺑﻊ ﭘﻴﻮﺳﺘﻪ ﺑﻪﻛﺎر رود‪.‬‬
‫اﻳﻦ ﺗﺎﺑﻊ ﻛﻪ ﺑﻪاﻳﻦ ﺷﻜﻞ ﻧﻮﺷﺘﻪ ﻣﻲﺷﻮد )‪ fzero(f,x0‬دو آرﮔﻮﻣﺎن اﺻﻠﻲ دارد‪ .‬ﺗﺎﺑﻊ ‪ f‬ﻛﻪ ﻣﻲﺗﻮاﻧﺪ ﺑﻪ ﺻﻮرت رﺷﺘﻪ‪،‬‬
‫ﮔﻴﺮه‪ ،‬ﻳﺎ ﺧﻂ ﻓﺮﻣﺎن وارد ﺷﻮد‪ .‬ﺣﺪس اوﻟﻴﻪ ‪ ، x0‬ﻣﻘﺪاري اﺳﺖ ﺣﺘﻲاﻻﻣﻜﺎن ﻧﺰدﻳﻚ ﺑﻪ رﻳﺸﻪ و دﺳﺘﻲ وارد ﻣﻲﺷﻮد‪.‬‬
‫ﭘﺎراﻣﺘﺮﻫﺎي دﻳﮕﺮ‪:‬‬
‫‪ P‬ﻛﻪ ﺑﻪ اﻳﻦ ﺻﻮرت وارد ﻣﻲﺷﻮد )‪ . fzero(f,X0,P‬در ﺻﻮرت ﻣﺮاﺟﻌﻪ ﺑﻪ ﮔﻴﺮه ﺗﺎﺑﻊ‪ P ،‬ﻣﻘﺪار ورودي ﺗﺎﺑﻊ ‪f‬‬
‫ﺧﻮاﻫﺪ ﺑﻮد‪.‬‬
‫‪ options‬ﻛﻪ ﺑﻪ اﻳﻦ ﺻﻮرت وارد ﻣﻲﺷﻮد )‪ fzero(f,X0,options‬ﺑﺮاي درك ﺑﻬﺘﺮ ‪ options‬ﺑﻪ ﻣﺜﺎل‬
‫زﻳﺮ ﻳﺎ ‪ help optimset‬ﻣﺮاﺟﻌﻪ ﻛﻨﻴﺪ‪.‬‬
‫ﻣﺜﺎل ﻫﺎ‪:‬‬
‫ارﺳﺎل ﺑﻪ ﺻﻮرت رﺷﺘﻪ‬
‫;')‪>> y = 'cos(x)+sin(x)+log(x‬‬
‫)‪>> X0 = fzero(y,1‬‬
‫‪X0 = 0.2885‬‬

‫‪107‬‬
‫رﻳﺸﻪ را اﻣﺘﺤﺎن ﻣﻲﻛﻨﻴﻢ‪:‬‬
‫)‪>> cos(X0) + sin(X0) + log(X0‬‬
‫‪ans = 0‬‬
‫ارﺳﺎل ﺑﻪ ﺻﻮرت ﮔﻴﺮه‬
‫)‪function y = fz(q‬‬
‫;)‪y = exp(q)*sin(q)+log(q‬‬
‫;‪>> x0 = 1‬‬
‫)‪>> rt = fzero(@fz,x0‬‬
‫‪rt = 0.4771‬‬
‫اﮔﺮ ﻣﺎﻳﻞ ﺑﺎﺷﻴﻢ ﺗﻌﺪاد دﻓﻌﺎت ﺗﻜﺮار ﺑﺮاي رﺳﻴﺪن ﺑﻪ ﻧﺘﻴﺠﻪ ﻧﻤﺎﻳﺶ داده ﺷﻮد‪:‬‬
‫;‪>> options = optimset('Display','iter'); x0 = 1‬‬
‫)‪>> rt = fzero(@fz,x0,options‬‬
‫ﻧﺘﻴﺠﻪ را ﺧﻮدﺗﺎن اﻣﺘﺤﺎن و ﻣﺸﺎﻫﺪه ﻛﻨﻴﺪ‪.‬‬
‫ﺣﻞ دﺳﺘﮕﺎه ﻣﻌﺎدﻻت ﻏﻴﺮ ﺧﻄﻲ ﺑﺎ)(‪) fsolve‬ﺟﻌﺒﻪ اﺑﺰار ﺑﻬﻴﻨﻪ ﺳﺎزي ‪(Optimization Toolbox‬‬
‫ﻓﺮم ﻛﻠﻲ اﻳﻦ ﺗﺎﺑﻊ ﺑﻪ ﺷﻜﻞ زﻳﺮ اﺳﺖ‪:‬‬
‫) ‪x = fsolve(fun,x0,options,P1,P2, ...‬‬
‫‪ fun‬ﺗﺎﺑﻊ ﻣﺨﺼﻮﺻﻲ اﺳﺖ ﻛﻪ ﻓﺮم ﻣﻌﺎدﻻت ﻏﻴﺮﺧﻄﻲ ﺧﻮد را در آن ﻣﻲﮔﺬارﻳﻢ‪ ،‬و وﻳﮋه ﻛﺎرﺑﺮد در آرﮔﻮﻣﺎن‬
‫)(‪ fsolve‬ﻳﺎ ﻧﻈﺎﺋﺮش ﻣﺎﻧﻨﺪ )(‪ ode45‬اﺳﺖ‪ .‬ﺑﻘﻴﻪ ﭘﺎراﻣﺘﺮﻫﺎ ﻣﺸﺎﺑﻪ ‪ fzero‬ﻫﺴﺘﻨﺪ‪ .‬اﮔﺮ ﺳﻤﺖ ﭼﭗ ﺗﺴﺎوي‬
‫]‪ [x,fval‬ﻗﺮار دﻫﻴﻢ‪ ،‬ﺟﻮاب ﻣﻌﺎدﻻت دﺳﺘﮕﺎه ﻧﻴﺰ در ازاي رﻳﺸﻪ ﻫﺎي ﺑﻪ دﺳﺖ آﻣﺪه ﭼﺎپ ﺧﻮاﻫﻨﺪ ﺷﺪ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫دﺳﺘﮕﺎه زﻳﺮ را ﺣﻞ ﻣﻲﻛﻨﻴﻢ‪.‬‬
‫‪-x‬‬
‫‪x2 - x1 2 = 0‬‬
‫‪-x1‬‬
‫‪2x1- x2‬‬ ‫‪= 0‬‬

‫)‪function F = fsl(x‬‬
‫;)‪F(1) = x(2)-x(1) ^ -x(2‬‬
‫;)‪F(2) = 2*x(1)- x(2) ^ -x(1‬‬
‫‪% The following form of writing F is also accepted‬‬
‫;)‪% F = [x(2)-x(1) ^ -x(2‬‬
‫‪%‬‬ ‫;])‪2*x(1)- x(2) ^ -x(1‬‬
‫‪>> format bank‬‬
‫;]‪>> x0 = [2 2‬‬
‫;)‪>> [a,fv] = fsolve(@fsl,x0‬‬
‫‪a = 2.98‬‬ ‫‪0.55‬‬ ‫‪fv = -0.00‬‬ ‫‪-0.00‬‬
‫ﻧﻮﺷﺘﻦ ‪ fv‬ﺑﻪ ﻋﻨﻮان ﭘﺎراﻣﺘﺮ ﻣﺸﺎﺑﻪ ﻋﻤﻞ زﻳﺮ اﺳﺖ‪:‬‬
‫)‪>> fsl(a‬‬
‫‪ans = -0.00‬‬ ‫‪-0.00‬‬
‫ﺣﻞ دﺳﺘﮕﺎه ﻣﻌﺎدﻻت ﺧﻄﻲ‬
‫ﺑﻬﺘﺮ اﺳﺖ دﺳﺘﮕﺎه ﻣﻌﺎدﻻت ﺧﻄﻲ ﺑﺎ اﺳﺘﻔﺎده از ﺗﻘﺴﻴﻢ راﺳﺖ ﺑﻪ ﭼﭗ ﻣﺎﺗﺮﻳﺴﻲ ﺣﻞ ﺷﻮد‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫دﺳﺘﮕﺎه ﻣﻌﺎدﻻت زﻳﺮ را در ﺑﺮﻧﺎﻣﻪ اﺻﻠﻲ ﻣﺘﻠﺐ ﺣﻞ ﻛﻨﻴﺪ‪.‬‬

‫‪108‬‬
‫‪1‬‬ ‫‪1‬‬
‫‪x‬‬ ‫‪+‬‬ ‫‪y +‬‬ ‫‪z = 1‬‬
‫‪2‬‬ ‫‪3‬‬
‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬
‫‪x +‬‬ ‫‪y +‬‬ ‫‪z = 1‬‬
‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬
‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬
‫‪x +‬‬ ‫‪y +‬‬ ‫‪z = 1‬‬
‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬

‫ﺻﻮرت ﻣﺎﺗﺮﻳﺴﻲ دﺳﺘﮕﺎه ﻓﻮق ﭼﻨﻴﻦ اﺳﺖ‪:‬‬


‫‪│ 1‬‬ ‫‪1/2‬‬ ‫│ ‪1/3‬‬ ‫│‪│X1‬‬ ‫│‪│1‬‬
‫‪│ 1/3‬‬ ‫‪1/4‬‬ ‫│ ‪1/5‬‬ ‫×‬ ‫│‪│X1│ = │1‬‬
‫‪│ 1/2‬‬ ‫‪1/3‬‬ ‫│ ‪1/4‬‬ ‫│‪│X1‬‬ ‫│‪│1‬‬
‫ﻛﻪ ﺑﻪ ﺻﻮرت ‪ M * X = B‬ﻧﻤﺎﻳﺶ داده ﺷﺪه و ﺑﺎ ﻓﺮﻣﻮل ‪ X = M\B‬ﺣﻞ ﻣﻲﺷﻮد‪:‬‬
‫;]‪>> M = [ 1 1/2 1/3; 1/2 1/3 1/4; 1/3 1/4 1/5‬‬
‫']‪>> B = [1 1 1‬‬ ‫;‬
‫‪>> X = M\B‬‬
‫‪X = 3.0000 -24.0000 30.0000‬‬
‫ﺣﻞ ﻣﻌﺎدﻻت ﺑﺎ دﺳﺘﻮر )(‪) solve‬ﺟﻌﺒﻪ اﺑﺰار رﻳﺎﺿﻴﺎت ﺳﻤﺒﻠﻴﻚ ‪(Symbolic Math Toolbox‬‬
‫از دﺳﺘﻮر )‪ solve(fun‬ﺑﺮاي ﺗﻌﻴﻴﻦ ﺳﻤﺒﻠﻴﻚ رﻳﺸﻪﻫﺎي ﻣﻌﺎدﻻت اﺳﺘﻔﺎده ﻣﻲﺷﻮد‪ fun .‬دﺳﺘﮕﺎﻫﻲ از ﻣﻌﺎدﻻت اﺳﺖ‪.‬‬
‫ﻣﺘﻐﻴﺮ ﻣﺴﺘﻘﻞ ﻧﺰدﻳﻚﺗﺮﻳﻦ ﺣﺮف ﺑﻪ ‪ x‬اﺳﺖ‪ ،‬اﻣﺎ در ﻓﺮم )‪ solve(fun,var‬ﭘﺎراﻣﺘﺮ ‪ var‬ﺗﻌﻴﻴﻦ ﻛﻨﻨﺪه ﻣﺘﻐﻴﺮ ﻣﺴﺘﻘﻞ‬
‫اﺳﺖ‪.‬‬
‫ﻣﻌﺎدﻟﻪ ‪ fun‬ﻣﻲﺗﻮاﻧﺪ ﺑﻪ ﺻﻮرت ﺳﻤﺒﻠﻴﻚ ﻳﺎ ﺑﻪ ﺻﻮرت رﺷﺘﻪ ﻧﻮﺷﺘﻪ ﺷﻮد‪ .‬اﮔﺮ ﻃﺮف راﺳﺖ ﻣﻌﺎدﻟﻪ ﺻﻔﺮ ﺑﺎﺷﺪ ﻣﻲﺗﻮاﻧﻴﻢ آن‪-‬‬
‫را ﻧﻨﻮﻳﺴﻴﻢ‪ ،‬در ﻏﻴﺮ اﻳﻦ ﺻﻮرت ﺑﺎﻳﺪ ﻃﺮف راﺳﺖ ﺑﻌﺪ از ﻋﻼﻣﺖ ﺗﺴﺎوي ﻧﻮﺷﺘﻪ ﺷﻮد‪.‬‬
‫اﮔﺮ ﻣﻌﺎدﻟﻪ داراي ﺿﺮاﺋﺐ ﻋﺪدي ﺑﺎﺷﺪ‪ ،‬ﭘﺎﺳﺦﻫﺎي ﻋﺪدي ﺳﻤﺒﻠﻴﻚ ﺣﺎﺻﻞ ﻣﻲﺷﻮد‪ ،‬ﻛﻪ ﻗﺎﺑﻞ ﺗﺒﺪﻳﻞ ﺑﻪ ﻋﺪد اﺳﺖ‪ .‬اﮔﺮ ﻣﻌﺎدﻟﻪ‬
‫داراي ﺿﺮاﺋﺐ ﺳﻤﺒﻠﻴﻚ ﺑﺎﺷﺪ‪ ،‬ﭘﺎﺳﺦﻫﺎي ﺳﻤﺒﻠﻴﻚ ﺣﺎﺻﻞ ﻣﻲﺷﻮد‪.‬‬
‫ﻣﺜﺎل ﻫﺎ‪:‬‬
‫ﭘﺎﺳﺦ ﻋﺪدي‬
‫‪>> syms x‬‬
‫))‪>> f1 = (5+4*cos(x))^3*sin(x)^2*(1+sin(x‬‬
‫)‪>> z = solve(f1‬‬
‫])‪z = [ pi-acos(5/4‬‬
‫[‬ ‫]‪0‬‬
‫[‬ ‫]‪-1/2*pi‬‬
‫رﻳﺸﻪﻫﺎ را از ﺣﺎﻟﺖ ﻧﻤﺎدﻳﻦ ﺑﻪ ﻋﺪد ﺗﺒﺪﻳﻞ ﻣﻲﻛﻨﻴﻢ‪:‬‬
‫)‪>> zd = double(z‬‬
‫‪zd = 3.1416 - 0.6931i‬‬
‫‪0‬‬
‫‪-1.5708‬‬
‫ﭘﺎﺳﺦ ﺳﻤﺒﻠﻴﻚ‬
‫‪>> syms a b c x‬‬
‫;‪>> S = a*x^2 + b*x + c‬‬
‫)‪>> X = solve(S‬‬
‫]))‪X = [1/2/a*(-b+(b^2-4*a*c)^(1/2‬‬
‫]))‪[1/2/a*(-b-(b^2-4*a*c)^(1/2‬‬
‫ﺗﻐﻴﻴﺮ ﻣﺘﻐﻴﺮ ﻣﺴﺘﻘﻞ‬
‫ﻣﺘﻐﻴﺮ ﻣﺴﺘﻘﻞ را ‪ b‬ﻣﻲﮔﻴﺮﻳﻢ و ﺑﺮﺣﺴﺐ ‪ b‬ﺣﻞ ﻣﻲﻛﻨﻴﻢ‪ ،‬ﻟﺬا ‪ x‬ﺑﻪ ﺻﻮرت ﭘﺎراﻣﺘﺮ ﻋﻤﻞ ﻣﻲﻛﻨﺪ‪:‬‬

‫‪109‬‬
‫)‪>> solve(S,b‬‬
‫‪ans = -(a*x^2+c)/x‬‬
‫ﺣﻞ دﺳﺘﮕﺎه دو ﻣﻌﺎدﻟﻪ ﺑﺎ رد ﻣﻌﺎدﻻت ﺑﻪ ﺻﻮرت رﺷﺘﻪ‬
‫‪2 2‬‬
‫‪x y‬‬ ‫‪= 0‬‬
‫‪y‬‬
‫‪x -‬‬ ‫‪- a = 0‬‬
‫‪2‬‬
‫; '‪>> q = 'x^2*y^2, x-y/2-a‬‬
‫)‪>> [x,y] = solve(q‬‬
‫]‪x = [ 0 0 a a‬‬ ‫‪y = [ -2*a‬‬ ‫‪-2*a‬‬ ‫‪0‬‬ ‫]‪0‬‬
‫رد ﻣﻌﺎدﻻت ﺑﻪ ﺻﻮرت ﺳﻤﺒﻠﻴﻚ و ﻣﺤﺎﺳﺒﻪ ﻣﻘﺎدﻳﺮ ﻋﺪدي‬
‫‪>> syms x y a‬‬
‫)‪>> [x,y] = solve(x^2*y^2, x-y/2-a‬‬
‫;)‪>> a = sym(1‬‬
‫)‪>> eval(x), eval(y‬‬
‫]‪ans = [ 0 0 1 1‬‬ ‫‪ans =[ -2 -2 0‬‬ ‫]‪0‬‬
‫‪ODE45‬‬ ‫ﺣﻞ ﻣﻌﺎدﻟﻪ دﻳﻔﺮاﻧﺴﻴﻞ ﻋﺎدي ﺑﺎ‬
‫ﺷﻜﻞ ﻛﻠﻲ اﻳﻦ دﺳﺘﻮر اﻳﻦ ﮔﻮﻧﻪ اﺳﺖ‪:‬‬
‫)‪[T,X] = ODE45(odefun,tspan,X0,options,p1,...‬‬
‫‪ odefun‬ﺗﺎﺑﻊ ﻣﺨﺼﻮﺻﻲ اﺳﺖ ﻛﻪ ﻓﺮم ﻣﻌﺎدﻻت دﻳﻔﺮاﻧﺴﻴﻞ ﺧﻮد را در آن ﻣﻲﮔﺬارﻳﻢ‪ ،‬و وﻳﮋه ﻛﺎرﺑﺮد در آرﮔﻮﻣﺎن‬
‫)(‪ ode45‬ﻳﺎ ﻧﻈﺎﺋﺮش ﻣﺎﻧﻨﺪ )(‪ fsolve‬اﺳﺖ‪.‬‬
‫‪ tspan‬ﻓﺎﺻﻠﻪاي اﺳﺖ ﻛﻪ در آن ﺗﺎﺑﻊ اﻧﺘﮕﺮال ﮔﻴﺮي ﺷﺪه وﺟﻮد دارد )ﻣﻨﺤﻨﻲ ﻳﺎ ﺷﻜﻞ ﻣﻮج ﺟﻮاب ﻣﻌﺎدﻻت در آن ﻓﺎﺻﻠﻪ‬
‫ﺗﺮﺳﻴﻢ ﻣﻲﺷﻮد(‪.‬‬
‫‪ X0‬ﺑﺮدار ﺷﺮاﺋﻂ اوﻟﻴﻪ اﺳﺖ‬
‫‪ options‬ﻳﻚ ﺑﺮدار از ﻧﻮع ﺳﺎﺧﺘﺎر ‪ structure‬اﺳﺖ و ﺷﺎﻣﻞ اﻧﺘﺨﺎب ﻫﺎﺋﻲ اﺳﺖ ﻛﻪ ﺗﻮﺳﻂ ﻣﻘﺎدﻳﺮ ‪odeset‬‬
‫ﺗﻌﻴﻴﻦ ﻣﻲﺷﻮﻧﺪ‪ .‬ﺑﺮاي اﻃﻼع ﺑﻴﺸﺘﺮ ﺑﻪ راﻫﻨﻤﺎي آن ﻣﺮاﺟﻌﻪ ﺷﻮد‪.‬‬
‫‪ p1,...‬ﺑﺮدارﻫﺎﺋﻲ ﻫﺴﺘﻨﺪ ﻛﻪ در ﺻﻮرت وﺟﻮد داﺷﺘﻦ در آرﮔﻮﻣﺎن ‪ odefun‬ﺑﻪ آن رد ﻣﻲﺷﻮﻧﺪ‪.‬‬
‫‪ X‬ﺑﺮدار ﺳﺘﻮﻧﻲ ﻣﻌﺎدﻟﻪ ﻫﺎي ﭘﺎﺳﺦ اﺳﺖ ﻛﻪ ﺑﺮﺣﺴﺐ ﺑﺮدار ‪ T‬ﺑﺎﻳﺪ در ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﺷﻮد‪ .‬ﻣﺜﻼً اﮔﺮ دو ﻣﻌﺎدﻟﻪ داﺷﺘﻪ ﺑﺎﺷﻴﻢ‪،‬‬
‫)‪ X(:,1‬ﺑﺮدار ﻣﻌﺎدﻟﻪ اول و )‪ X(:,2‬ﻣﻌﺎدﻟﻪ دوم ﻫﺴﺘﻨﺪ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫دﺳﺘﮕﺎه ﻣﻌﺎدﻻت دﻳﻔﺮاﻧﺴﻞ زﻳﺮ را ﺣﻞ ﻛﻨﻴﺪ‪.‬‬
‫‪dx1/dt = x2‬‬
‫‪dx2/dt = -2δ dx1/dt - x1‬‬
‫اﺑﺘﺪا ﻫﺮ دو ﻣﻌﺎدﻟﻪ را در ﺗﺎﺑﻊ زﻳﺮ ﺷﺒﻴﻪ ﺳﺎزي ﻣﻲﻛﻨﻴﻢ‪:‬‬
‫)‪function dx = frosc(t,x,del‬‬
‫)‪dx = zeros(2,1,1‬‬
‫;)‪dx(1) = x(2‬‬
‫;)‪dx(2) = -2*del*x(2)-x(1‬‬
‫‪% dx = [x(2); -2*del*x(2)-x(1)]; % this form is also correct‬‬
‫ﭘﺎراﻣﺘﺮﻫﺎي ﺿﺮوري را در ‪ ODE45‬ﺟﺎيﮔﺰﻳﻦ ﻣﻲﻛﻨﻴﻢ‪ ،‬ﭼﻮن ‪ options‬ﻧﺪارﻳﻢ ﺑﻪ ﺟﺎي آن ﺑﺮدار ﺗﻬﻲ ﻣﻲﮔﺬارﻳﻢ‪.‬‬

‫‪110‬‬
‫‪% odee.m‬‬
‫;‪echo off‬‬
‫;‪odefun = @frosc‬‬
‫;)‪tspan = linspace(0,40‬‬
‫;]‪X0 = [1 1‬‬
‫;][ = ‪options‬‬
‫;]‪p = [0.1 1 5‬‬
‫‪%underdamp, damp,‬‬
‫‪%over damp‬‬
‫‪clf‬‬
‫‪hold on‬‬
‫‪for k = 1:3‬‬
‫‪[T,X] = ...‬‬
‫‪ODE45(odefun,tspan,...‬‬
‫;))‪X0,options,p(k‬‬
‫))‪plot(T,X(:,1‬‬
‫‪end‬‬
‫‪hold off‬‬ ‫ﺷﻜﻞ ‪1-11‬‬

‫ﺳﺆال‪ :‬دو ﻣﻌﺎدﻟﻪ ﻓﻮق را ﺑﻪ ﺻﻮرت ﺗﻚ ﻣﻌﺎدﻟﻪ ‪ x + 2δ dx/dt - d2x/dt2 = 0‬در آورﻳﺪ و ﺗﺤﻘﻴﻖ ﻛﻨﻴﺪ‬
‫ﻛﻪ ﻳﻚ ﻣﻌﺎدﻟﻪ ﻧﻮﺳﺎن ﻛﻨﻨﺪه )ﻧﻈﻴﺮ ﻣﺪار ‪ LC‬ﻳﺎ ﺑﺎر‪ -‬ﻓﻨﺮ( اﺳﺖ‪ .‬ﺿﺮﻳﺐ ‪ δ‬ﻧﺸﺎن دﻫﻨﺪه ﻛﺪام ﻋﺎﻣﻞ ﻓﻴﺰﻳﻜﻲ اﺳﺖ؟‬
‫ﺣﻞ ﻣﻌﺎدﻻت دﻳﻔﺮاﻧﺴﻴﻞ ﻋﺎدي )ﺟﻌﺒﻪ اﺑﺰار رﻳﺎﺿﻴﺎت ﺳﻤﺒﻠﻴﻚ ‪(Symbolic Math Toolbox‬‬
‫دﺳﺘﻮر زﻳﺮ ﺑﺮاي ﺣﻞ ﺳﻤﺒﻮﻟﻴﻚ ﻣﻌﺎدﻻت دﻳﻔﺮاﻧﺴﻴﻞ ﻋﺎدي ﺑﻪ ﻛﺎر ﻣﻲرود‪:‬‬
‫)'‪r = dsolve('eq1','eq2',...,'cond1','cond2',...,'v‬‬
‫‪ eq‬ﻫﺎ ﻣﻌﺎدﻻت‪ cond ،‬ﻫﺎ ﺷﺮاﺋﻂ اوﻟﻴﻪ‪ ،‬و ‪ v‬ﻣﺘﻐﻴﺮ ﻣﺴﺘﻘﻞ اﺳﺖ‪ ،‬در ﺻﻮرت ﻧﺒﻮد آن ﻧﺰدﻳﻚ ﺗﺮﻳﻦ ﺣﺮف ﺑﻪ ‪ x‬ﻣﺘﻐﻴﺮ‬
‫ﻣﺴﺘﻘﻞ ﻓﺮض ﻣﻲﺷﻮد‪.‬‬
‫ﻣﺜﺎل ﻫﺎ‪:‬‬
‫‪dy‬‬
‫ﺑﺪون ﺷﺮط اوﻟﻴﻪ و ﺑﺎ ﺛﺎﺑﺖِ ‪C1‬‬ ‫ﺣﻞ ﻣﻌﺎدﻟﻪ دﻳﻔﺮاﻧﺴﻴﻞ درﺟﻪ ﻳﻚ ﻣﺮﺗﺒﻪ اولِ ‪= 1 + y 2‬‬
‫‪dx‬‬
‫)'‪>> y = dsolve('Dy = 1 + y^2‬‬
‫)‪y = tan(t+C1‬‬
‫ﺣﻞ ﻣﻌﺎدﻟﻪ ﺑﺎ ﺷﺮط اوﻟﻴﻪ ‪y(0) = 1‬‬
‫)'‪>> y = dsolve('Dy = 1 + y^2', 'y(0) = 1‬‬
‫)‪y = tan(t+1/4*pi‬‬
‫ﺳﺆال‪ :‬ﺟﻮاب ﻓﻮق را ﺑﺎ ﻣﺸﺘﻖﮔﻴﺮي اﻣﺘﺤﺎن ﻛﻨﻴﺪ‪.‬‬
‫‪dx 2‬‬
‫ﺣﻞ ﻣﻌﺎدﻟﻪ دﻳﻔﺮاﻧﺴﻴﻞ ﻣﺮﺗﺒﻪ اول درﺟﻪ دو ‪) + x 2 = 1‬‬
‫( ﺑﺎ ﺷﺮط اوﻟﻴﻪ ‪x(0) = 0‬‬
‫‪dt‬‬
‫)'‪>> x = dsolve('Dx)^2 + x^2 = 1','x(0) = 0‬‬
‫])‪x = [-sin(t‬‬
‫])‪[ sin(t‬‬
‫‪dy‬‬ ‫‪d2 y‬‬
‫‪y(0) = 1,‬‬
‫ﺑﺎ ﺷﺮاﺋﻂ اوﻟﻴﻪ ‪(0) = 0‬‬ ‫ﻣﻌﺎدﻟﻪ دﻳﻔﺮاﻧﺴﻴﻞ ﻣﺮﺗﺒﻪ دوم ‪= cos 2 x- y‬‬
‫‪dx‬‬ ‫‪dx 2‬‬
‫;)'‪>> y = dsolve('D2y = cos(2*x) - y', 'y(0) = 1', 'Dy(0) = 0', 'x‬‬
‫)‪>> simplify(y‬‬
‫)‪y =-2/3*cos(x)^2+1/3+4/3*cos(x‬‬
‫‪⎧ df‬‬
‫‪⎪⎪ dt = 3f +4g‬‬
‫⎨‬ ‫ﺣﻞ دﺳﺘﮕﺎه ﻣﻌﺎدﻻت دﻳﻔﺮاﻧﺴﻴﻞ‬
‫‪⎪ dg = -4f +3g‬‬
‫‪⎪⎩ dt‬‬

‫‪111‬‬
‫)'‪>> [f g] = dsolve('Df = 3*f+4*g', 'Dg = -4*f+3*g‬‬
‫)‪f = exp(3*t)*(cos(4*t)*C1+sin(4*t)*C2‬‬
‫)‪g = -exp(3*t)*(sin(4*t)*C1-cos(4*t)*C2‬‬
‫)‪>> pretty(f‬‬
‫)‪exp(3 t) (cos(4 t) C1 + sin(4 t) C2‬‬
‫)(‪finverse‬‬ ‫ﺗﺎﺑﻊ ﻣﻌﻜﻮس ﻳﻚ ﺗﺎﺑﻊ ﺑﺎ‬
‫اﻳﻦ دﺳﺘﻮر ﺗﺎﺑﻊ ﻣﻌﻜﻮس ﺗﺎﺑﻌﻲ ﻳﻚ ﺗﺎﺑﻊ رﻳﺎﺿﻲ را ﺑﺮ ﻣﻲﮔﺮداﻧﺪ‪.‬‬
‫ﻣﺜﺎل ﻫﺎ‪:‬‬
‫))‪>> finverse(sin(x‬‬
‫)‪asin(x‬‬
‫)‪>> finverse(exp(u-2*v),u‬‬
‫)‪2*v+log(u‬‬
‫‪compose‬‬ ‫ﺗﺮﻛﻴﺐ ﺗﺎﺑﻌﻲ ﺑﺎ‬
‫ﻋﺒﺎرت )‪ compose(f,g‬ﺗﺎﺑﻊ )‪ g = g(y‬را در )‪ f = f(x‬ﺗﺮﻛﻴﺐ ﻣﻲﻛﻨﺪ ﺑﻪ ﻧﺤﻮي ﻛﻪ))‪ f(g(y‬ﺑﻪ‬
‫دﺳﺖ آﻳﺪ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫‪>> syms x y‬‬
‫;)‪>> f = 1/x + x^2; g = sin(y‬‬
‫)‪>> compose(f,g‬‬
‫)‪>> u = compose(f,g‬‬
‫‪u = 1/sin(y)+sin(y)^2‬‬
‫‪ 2-11‬ﺗﻘﺮﻳﺐ ﺟﺒﺮي ﻣﻨﺤﻨﻲ ﻣﻌﺎدﻻت‬
‫ﮔﺎﻫﻲ ﺿﺮوري اﺳﺖ ﻛﻪ راﺑﻄﻪي ﻧﺎﻣﺸﺨﺼﻲ را ﻛﻪ ﻣﺎﺑﻴﻦ ﺗﻌﺪادي داده وﺟﻮد دارد ﺑﻪ ﺻﻮرت ﻳﻚ ﻣﻌﺎدﻟﻪ ﺟﺒﺮي ﭼﻨﺪ ﺟﻤﻠﻪ‪-‬‬
‫اي درآورﻳﻢ‪ .‬ﺗﻮاﺑﻊ ﭼﻨﺪﺟﻤﻠﻪاي زﻳﺮ ﺑﺮاي اﻧﺠﺎم اﻳﻦ ﻛﺎر در ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﺷﺪهاﻧﺪ‪.‬‬
‫)(‪Curve Fitting with polyfit(x,y,n), polyval‬‬ ‫ﺑﺮﺧﻮراﻧﺪن ﻳﻚ ﻣﻨﺤﻨﻲ در ﻣﻌﺎدﻟﻪ ﭼﻨﺪ ﺟﻤﻠﻪ اي‬
‫اﮔﺮ ‪ x‬و ‪ y‬دو ﺑﺮدار ﺑﺎ ﺗﻌﺪاد ﻋﻨﺎﺻﺮ ﻣﺴﺎوي و راﺑﻄﻪ ﺗﺎﺑﻌﻲ ﺟﺒﺮي ﻳﺎ ﻧﺎﻣﺸﺨﺺ ﺑﺎﺷﻨﺪ‪ ،‬ﻳﻌﻨﻲ)‪ . y = f(x‬دﺳﺘﻮر‬
‫)‪ pf = polyfit(x,y,n‬ﺿﺮاﺋﺐ ﻣﻌﺎدﻟﻪ درﺟﻪ ‪ y1 = f1(x) ، n‬را در ﺑﺮدار ‪ pf‬ﻗﺮار ﻣﻲدﻫﺪ )ﻃﺒﻌﺎً ‪pf‬‬
‫داراي ‪ n+1‬ﻋﻀﻮ ﺧﻮاﻫﺪ ﺑﻮد(‪ y1 .‬ﻣﻨﺤﻨﻲ ﺑﺮازش اﺳﺖ و ﻣﻘﺎدﻳﺮ ﺑﺮدار ‪ y1‬ﺑﻪ ﻣﻘﺎدﻳﺮ ‪ y‬ﻧﺰدﻳﻚ ﻫﺴﺘﻨﺪ‪ ،‬ﺑﻪ ﻧﺤﻮي ﻛﻪ‪:‬‬
‫≈ )‪y = f(x‬‬
‫= )‪y1 = f1(x‬‬
‫‪n‬‬ ‫‪n-1‬‬
‫‪pf(1)x + pf(2)x‬‬ ‫)‪+ ... +pf(n)x + pf(n+1‬‬
‫ﻣﻘﺪار ‪ n‬ﻛﻪ اﻧﺘﺨﺎﺑﺶ ﺑﻪ ﻋﻬﺪه ﻛﺎرﺑﺮ اﺳﺖ در ﻣﻴﺰان ﺑﺮازش دو ﻣﻨﺤﻨﻲ ﺗﺄﺛﻴﺮ دارد‪.‬‬
‫ﭘﺲ از ﺑﻪ دﺳﺖ آوردن ﺿﺮاﺋﺐ ‪ ، pf‬اﺟﺮاي دﺳﺘﻮر )‪ ، y1 = polyval(pf,x‬ﺑﺮدار ‪ y1‬را ﺑﺎ ﺗﻌﺪاد ﻋﻨﺎﺻﺮ‬
‫ﻣﺴﺎوي ﻋﻨﺎﺻﺮ ‪ x‬و ‪ y‬اﻳﺠﺎد ﻣﻲﻛﻨﺪ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫ﺗﺎﺑﻊ ‪ y = exp(x).*x‬را در ﻳﻚ ﭼﻨﺪ ﺟﻤﻠﻪاي درﺟﻪ ﭼﻬﺎر ﺑﺨﻮراﻧﻴﺪ‪ .‬ﻣﻘﺎدﻳﺮ ﺑﺮدار ﭼﻨﺪﺟﻤﻠﻪاي را ﺑﺎ ﻧﺎم ‪ yy‬ﺑﺎ‬
‫ﺣﻠﻘﻪ ‪ for‬ﺗﻌﻴﻴﻦ و ﺗﻌﺪادي از آنﻫﺎ را ﺑﺎ ﺑﺮدار ‪ y‬ﻣﻘﺎﻳﺴﻪ ﻛﻨﻴﺪ‪ y1 .‬را ﺑﺎ )(‪ polyval‬ﺑﻪ دﺳﺖ آورﻳﺪ دﻗﺖ ﻛﻨﻴﺪ ﻛﻪ‬
‫‪ y1‬ﻫﻤﺎن ‪ yy‬ﺧﻮاﻫﺪ ﺑﻮد‪ .‬ﻣﻨﺤﻨﻲﻫﺎي ‪ y‬و ‪ y1‬را ﻣﻘﺎﻳﺴﻪ ﻛﻨﻴﺪ‪.‬‬
‫‪% polyf.m‬‬
‫;‪x = -1:0.1:1; y = exp(x).*x; n = 4‬‬
‫;)‪pf = polyfit(x,y,n‬‬

‫‪112‬‬
‫‪for k=1:21‬‬
‫‪yy(k)=...‬‬
‫;)‪pf(1)*x(k)^4+pf(2)*x(k)^3+pf(3)*x(k)^2+pf(4)*x(k)+pf(5‬‬
‫‪end‬‬
‫)‪er = abs(y-yy‬‬
‫'(‪disp‬‬ ‫‪y‬‬ ‫‪yy‬‬ ‫)'‪y-yy‬‬
‫)]')‪disp([y(1:5)' yy(1:5)' er(1:5‬‬
‫‪y1 = polyval(pf,x); % yy1 is the same as yy‬‬
‫)'‪plot(x,y,x,y1,'p‬‬
‫‪>> polyf.m‬‬
‫‪y‬‬ ‫‪yy‬‬ ‫‪y-yy‬‬
‫‪-0.3679‬‬ ‫‪-0.3649‬‬ ‫‪0.0030‬‬
‫‪-0.3659‬‬ ‫‪-0.3673‬‬ ‫‪0.0014‬‬
‫‪-0.3595‬‬ ‫‪-0.3621‬‬ ‫‪0.0027‬‬
‫‪-0.3476‬‬ ‫‪-0.3498‬‬ ‫‪0.0021‬‬
‫‪-0.3293‬‬ ‫‪-0.3301‬‬ ‫‪0.0008‬‬

‫ﺷﻜﻞ ‪2-11‬‬

‫‪ginput‬‬ ‫درﻳﺎﻓﺖ ﻣﺨﺘﺼﺎت ﻧﻘﺎط ﻣﻨﺤﻨﻲ ﺑﺎ‬


‫ﺑﺎ اﺟﺮاي دﺳﺘﻮر ‪ [X, Y] = ginput‬ﻳﻚ ﺗﻘﺎﻃﻊ ﻣﻮﺋﻴﻦ ﻇﺎﻫﺮ ﻣﻲﺷﻮد‪ .‬اﻳﻦ ﺗﻘﺎﻃﻊ را ﺑﺎ ﻣﺎوس ﺑﻪ ﻫﺮ ﻧﻘﻄﻪ ﮔﺮاف‬
‫ﺑﺮده و ﻛﻠﻴﻚ ﻛﻨﻴﻢ ﻣﺨﺘﺼﺎت آن ﻧﻘﻄﻪ در ﺑﺮدارﻫﺎي ‪ X‬و ‪ Y‬ذﺧﻴﺮه ﻣﻲﺷﻮﻧﺪ‪ .‬ﺑﺎ اﻳﻦﻛﺎر ﻳﻚ ﻳﺎ ﺗﻌﺪادي ﻧﻘﻄﻪ روي ﮔﺮاف‬
‫اﻧﺘﺨﺎب ﻣﻲﻛﻨﻴﻢ‪ .‬ﭘﺲ از اﻧﺘﺨﺎب ﻧﻘﺎط ﻛﻠﻴﺪ >‪ <Enter‬را ﻣﻲزﻧﻴﻢ‪ .‬ﺳﭙﺲ ﻣﻲﺗﻮاﻧﻴﻢ ﻫﺮﻳﻚ از ﺑﺮدارﻫﺎي ﺑﻪدﺳﺖ آﻣﺪه را‬
‫ﻣﻄﺎﻟﻌﻪ ﻛﻨﻴﻢ‪.‬‬
‫دﺳﺘﻮر )‪ [X, Y] = ginput(n‬ﻓﻘﻂ اﻣﻜﺎن اﻧﺘﺨﺎب ‪ n‬ﻧﻘﻄﻪ را ﻣﻲدﻫﺪ‪.‬‬
‫ﺣﻞ ﺗﺮﺳﻴﻤﻲ‬
‫اﺑﺘﺪا ﻣﻨﺤﻨﻲ ﻣﻌﺎدﻟﻪ را رﺳﻢ و ﺳﭙﺲ ﺑﺎ دﺳﺘﻮر)(‪ ginput‬ﻣﺨﺘﺼﺎت ﻧﻘﻄﻪ ﻳﺎ ﻧﻘﺎط ﺑﺮﺧﻮرد ﻣﻨﺤﻨﻲ ﺑﺎ ﻣﺤﻮر ‪ x‬را ﺗﻌﻴﻴﻦ‬
‫ﻣﻲﻛﻨﻴﻢ‪ .‬ﺑﺎ اﺟﺮاي )(‪ ginput‬اﻣﻜﺎن اﻧﺘﺨﺎب ﺗﻌﺪادي ﻧﻘﻄﻪ روي ﮔﺮاف ﺑﺎ ﻛﻠﻴﻚ ﻣﺎوس و ﻗﺮار دادن ﻣﺨﺘﺼﺎت آنﻫﺎ در‬
‫ﻳﻚ ﺑﺮدار ﻓﺮاﻫﻢ ﻣﻲﺷﻮد‪ .‬ﻛﻠﻴﺪ >‪ <Enter‬ﻛﺎر اﻧﺘﺨﺎب ﻧﻘﻄﻪﻫﺎ را ﺗﻤﺎم ﻣﻲﻛﻨﺪ‪.‬‬
‫ﻣﺜﺎل ﻫﺎ‪:‬‬
‫رﻳﺸﻪ ﻣﻌﺎدﻟﻪ ﺑﺎ روش ﺗﺮﺳﻴﻤﻲ‬
‫;')‪>> y = 'cos(x)+sin(x)+log(x‬‬
‫)]‪>> fplot(y,[0.1,2*pi‬‬
‫ﭼﻮن )‪ log(0‬ﺑﻲﻧﻬﺎﻳﺖ اﺳﺖ‪ ،‬ﻣﺤﻮر ‪ x‬را از ‪ 0.1‬ﺷﺮوع ﻛﺮدهاﻳﻢ ‪%‬‬
‫‪>> [X, Y]= ginput %‬‬ ‫روي ﮔﺮاف در ﻣﺤﻞ ﺻﻔﺮ ﺗﺎﺑﻊ ﻛﻠﻴﻚ ﻣﻲﻛﻨﻴﻢ‬
‫‪X = 0.2830‬‬
‫‪Y = -0.0015‬‬

‫رﻳﺸﻪ ﻣﻌﺎدﻟﻪ ﻓﻮق ﺗﻘﺮﻳﺒﺎً ‪ X = 0.2830‬اﺳﺖ‪.‬‬

‫‪113‬‬
‫رﻳﺸﻪ ﻣﻌﺎدﻟﻪ ﺑﺎ روش ﺗﺮﺳﻴﻤﻲ‪ ،‬و ﺗﺤﻘﻴﻖ آن ﺑﺎ )(‪fzero‬‬
‫'‪>> y = 'exp(x)+20*x‬‬
‫)‪>> ezplot(y‬‬
‫‪>> [X, Y] = ginput‬‬
‫‪X = -0.0601‬‬
‫‪Y = -0.2715‬‬
‫)‪>> X0 = fzero(y,X‬‬
‫‪X0 = -0.0477‬‬
‫‪>> y0 = exp(X0)+20*X0‬‬
‫‪y0 = -1.1102e-016‬‬
‫‪ 3-11‬ﺗﻤﺮﻳﻦ‬
‫‪ -1‬ﺗﺎﺑﻊ ) ‪ sin(8*a)+sin(9*a‬را ﺑﻪ ﺻﻮرت ‪ inline‬ﺗﻌﺮﻳﻒ و آنرا ﺑﺎ )(‪ fplot‬و )(‪ezplot‬‬
‫رﺳﻢ ﻛﻨﻴﺪ‪.‬‬
‫‪ -2‬ﺿﺮاﺋﺐ ﻣﻌﺎدﻟﻪ درﺟﻪ ﺳﻪ را ﺑﻪ ﻳﻚ ام‪ -‬ﻓﺎﻳﻞ ﺗﺎﺑﻌﻲ ﺑﺎ دو آرﮔﻮﻣﺎن ﺧﺮوﺟﻲ رد ﻛﺮده و رﻳﺸﻪﻫﺎ را ﺑﺎ راهﺑﺮد ﻧﻴﻮﺗﻦ‬
‫ﺑﺮﮔﺮداﻧﻴﺪ‪ .‬ﺗﺎﺑﻊ را ﺑﺎ ﻋﺪد ﮔﺬاري ﺑﻪ ﺟﺎي آرﮔﻮﻣﺎنﻫﺎ از ﭘﻨﺠﺮه ﻓﺮﻣﺎن اﺟﺮا ﻛﻨﻴﺪ‪.‬‬
‫‪ -3‬رﻳﺸﻪﻫﺎي ﻣﻌﺎدﻟﻪ ﻓﻮق را ﺑﺎ اﺳﺘﻔﺎده از دﺳﺘﻮر )(‪ roots‬ﺑﻪ دﺳﺖ آورده و ﺑﺎ ﻧﺘﻴﺠﻪ ﺑﺎﻻ ﻣﻘﺎﻳﺴﻪ ﻛﻨﻴﺪ‪.‬‬
‫‪ -4‬ﺗﺎﺑﻊ ‪ peaks‬را ﻛﻪ از ﺗﻮاﺑﻊ ﻧﻤﻮﻧﻪ ﻣﺘﻠﺐ اﺳﺖ از ﭘﻨﺠﺮه ﻓﺮﻣﺎن اﺟﺮا و ﺳﺎﺧﺘﺎر آن را ﺑﺒﻴﻨﻴﺪ‪ .‬ﻧﺎم ﺻﺤﻴﺢ ﺗﺎﺑﻊِ رﺳﻢِ‬
‫آﺳﺎن ﺳﻪ ﺑﻌﺪي را ﺟﺴﺘﺠﻮ ﻛﻨﻴﺪ و ﺗﺎﺑﻊ ‪ peaks‬را ﺑﻪ ﻋﻨﻮان آرﮔﻮﻣﺎن آن )ﺑﺎ رد ﻛﺮدن ﮔﻴﺮه( رﺳﻢِ آﺳﺎن ﻛﻨﻴﺪ‪.‬‬
‫‪ -5‬ﻳﻚ ﻓﺎﻳﻞ ‪ C‬و ﻓﺎﻳﻞ اﺟﺮاﺋﻲ آنرا از ﻳﻚ ﺗﺎﺑﻊ ﻣﺤﺎﺳﺒﺎﺗﻲ ﻣﺘﻠﺐ ﻛﻪ ﺧﻮدﺗﺎن ﻧﻮﺷﺘﻪاﻳﺪ‪ ،‬ﭘﺪﻳﺪ آورﻳﺪ‪.‬‬
‫‪ -6‬ﻳﻚ ﻓﺎﻳﻞ ‪ C++‬و ﻓﺎﻳﻞ اﺟﺮاﺋﻲ آنرا از ﻳﻚ ﺗﺎﺑﻊ ﮔﺮاﻓﻴﻜﻲ ﻣﺘﻠﺐ ﻛﻪ ﺧﻮدﺗﺎن ﻧﻮﺷﺘﻪاﻳﺪ‪ ،‬ﭘﺪﻳﺪ آورﻳﺪ‪.‬‬
‫‪ -7‬از راه ﺳﻌﻲ و ﺧﻄﺎ ﺑﺰرگﺗﺮﻳﻦ ﻋﺪدي را ﻛﻪ ﻣﺘﻠﺐ ﻣﻲﺗﻮاﻧﺪ روي ﻛﺎﻣﭙﻴﻮﺗﺮ ﺷﻤﺎ ﻓﺎﻛﺘﻮرﻳﻞ آنرا ﺑﺮﮔﺮداﻧﺪ ﭘﻴﺪا ﻛﻨﻴﺪ‪.‬‬

‫‪114‬‬
‫ﻓﺼﻞ ‪ 12‬ﻣﺒﺎﺣﺜﻲ ﭘﻴﺮاﻣﻮن رﺷﺘﻪ ﻫﺎ‬
‫‪ 1-12‬رﺷﺘﻪ ﺑﻪ ﻣﺜﺎﺑﻪ آراﻳﻪ )ﺑﺮدار(‬
‫در ﻣﺘﻠﺐ رﺷﺘﻪ‪ ،‬ﺑﺮداري اﺳﺖ ﻛﻪ ﻋﻨﺎﺻﺮ آن از ﻛﺎراﻛﺘﺮﻫﺎي اﺳﻜﻲ ﺗﺸﻜﻴﻞ ﻣﻲﺷﻮﻧﺪ‪ ،‬ﻋﻼوه ﺑﺮ ﺗﻮاﺑﻊ و دﺳﺘﻮرات ﺑﺮداري‬
‫ﺑﻌﻀﻲ ﺗﻮاﺑﻊ ﺧﺎص ﻧﻴﺰ در ﻣﻮرد رﺷﺘﻪﻫﺎ وﺟﻮد دارﻧﺪ‪.‬‬
‫دﺳﺘﺮﺳﻲ ﺑﻪ ﺣﺮوف رﺷﺘﻪ‬
‫ﻣﺜﺎل‪:‬‬
‫ﺗﺎﺑﻌﻲ ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻳﻚ رﺷﺘﻪ را درﻳﺎﻓﺖ و ﺗﻚ ﺗﻚ ﻋﻨﺎﺻﺮ آن را ﺑﺎ ﻳﻚ ﻓﺎﺻﻠﻪ در ﺑﻴﻦﺷﺎن ﭼﺎپ ﻛﻨﺪ‪ .‬آن را اﺟﺮا ﻛﻨﻴﺪ‪ .‬ﺗﺎﺑﻊ‬
‫را ﺑﺎ ﻧﺎم ‪ bl.m‬در دﻳﺮﻛﺘﻮري ﺟﺎري ﺿﺒﻂ ﻛﺮده و آنرا از ﭘﻨﺠﺮه ﻓﺮﻣﺎن ﺑﺎ ﻳﻚ آرﮔﻮﻣﺎن دلﺧﻮاه ﻓﺮاﺧﻮاﻧﻲ ﻛﻨﻴﺪ‪.‬‬
‫ﻳﺎدآوري‪ :‬ﺑﻠﻮك ‪ try...catch...end‬ﺑﺮاي ﺑﻪ دام اﻧﺪاﺧﺘﻦ ﺧﻄﺎ ‪ error trapping‬ﺑﻪ ﻛﺎر ﻣﻲرود‪.‬‬
‫دﺳﺘﻮرات زﻳﺮِ ‪ catch‬در ﺻﻮرت وﻗﻮع ﺧﻄﺎ اﺟﺮا ﻣﻲﺷﻮﻧﺪ‪ .‬در اﻳﻦ ﻣﺜﺎل ﺧﻄﺎ وﻗﺘﻲ روي ﻣﻲدﻫﺪ ﻛﻪ ‪ k‬از اﻧﺪﻳﺲ‬
‫ﺑﺎﻻﺗﺮﻳﻦ ﻋﻨﺼﺮِ ‪ ss‬ﺑﻴﺸﺘﺮ ﺷﺪه ﺑﺎﺷﺪ‪ ،‬دراﻳﻦﺻﻮرت ﺳﻄﺮ)‪ try ss(k‬ﺧﻄﺎ را ﻣﻲﺑﻴﻨﺪ و دﺳﺘﻮر زﻳﺮ ‪ catch‬ﻳﻌﻨﻲ‬
‫‪ break‬اﺟﺮا ﻣﻲﺷﻮد‪.‬‬
‫)‪function = bl(ss‬‬
‫;‪k = 1‬‬
‫‪while 1‬‬ ‫ﺣﻠﻘﻪ اداﻣﻪدار ﺗﺎ ﺑﻲﻧﻬﺎﻳﺖ ‪%‬‬
‫;)‪try ss(k‬‬ ‫اﮔﺮ ﺧﻄﺎ ﻧﺪاﺷﺘﻴﻢ‪ ،‬دﺳﺘﻮرات زﻳﺮ اﺟﺮا ﻣﻲﺷﻮﻧﺪ ‪%‬‬
‫;))‪fprintf('%c ',ss(k‬‬
‫;‪k = k + 1‬‬
‫‪catch‬‬ ‫اﮔﺮ ﺧﻄﺎ داﺷﺘﻴﻢ ﺑﺮﻧﺎﻣﻪ ﺗﻤﺎم ﻣﻲﺷﻮد ‪%‬‬
‫‪break‬‬
‫‪end‬‬
‫‪end‬‬
‫)'‪>> bl('Azadeh‬‬
‫‪A z a d e h‬‬
‫ﻋﺪد اﺳﻜﻲ ﻳﻚ ﻛﺎراﻛﺘﺮ‬
‫از ﺗﻮاﺑﻊ )(‪ single‬و )(‪ double‬ﻣﻲﺗﻮان ﺑﺮاي ﻧﻤﺎﻳﺶ ﻋﺪد اﺳﻜﻲ ﻳﻚ ﻛﺎراﻛﺘﺮ اﺳﺘﻔﺎده ﻛﺮد‪ .‬ﺗﺎﺑﻊ )(‪ char‬ﻋﺪد‬
‫اﺳﻜﻲ را ﺑﻪ ﺻﻮرت ﻛﺎراﻛﺘﺮ ﻧﻤﺎﻳﺶ ﻣﻲدﻫﺪ‪ .‬اﮔﺮ رﺷﺘﻪاي ﺑﻪ ﺗﻮاﺑﻊ )(‪ single‬و )(‪ double‬ارﺳﺎل ﺷﻮد‪ ،‬ﻛﺪﻫﺎي‬
‫اﺳﻜﻲ ﻛﺎراﻛﺘﺮﻫﺎي آن ﭼﺎپ ﻣﻲﺷﻮد‪.‬‬
‫ﻣﺜﺎل ﻫﺎ‪:‬‬
‫)'‪>> single('pi‬‬
‫‪ans = 112‬‬ ‫‪105‬‬
‫)'‪>> Mt = double('LAB‬‬
‫‪Mt = 76‬‬ ‫‪65‬‬ ‫‪66‬‬
‫‪>> Mt1 = [77‬‬ ‫‪65‬‬ ‫‪84‬‬ ‫‪76‬‬ ‫‪65‬‬ ‫;]‪66‬‬
‫)‪>> char(Mt1‬‬
‫‪ans = MATLAB‬‬
‫‪m‬‬ ‫رﺷﺘﻪ ‪× n‬‬
‫ﺑﺮاي اﻳﺠﺎد ﻣﺎﺗﺮﻳﺲ رﺷﺘﻪاي از ﺗﺎﺑﻊ )(‪ char‬اﺳﺘﻔﺎده ﻣﻲﺷﻮد‪ .‬ﺑﺎ ﺗﻌﺮﻳﻒ ﻣﺎﺗﺮﻳﺲ رﺷﺘﻪاي ‪ m × n‬ﻃﻮل ﻫﻤﻪ ردﻳﻒﻫﺎ‬
‫ﺑﺮاﺑﺮ ﻃﻮل درازﺗﺮﻳﻦ ردﻳﻒ ﻣﻲﺷﻮد‪.‬‬

‫‪115‬‬
‫ﻣﺜﺎل‪:‬‬
‫ﻳﻚ رﺷﺘﻪ ﭼﻨﺪ ﺳﻄﺮي ﺗﻮﻟﻴﺪ‪ ،‬و ﺗﻮاﺑﻊ اﻧﺪازهﮔﻴﺮ را در ﻣﻮرد آن اﺟﺮا ﻛﻨﻴﺪ ﻃﻮل ﺳﻄﺮ اول را ﺑﻪ دﺳﺖ آورﻳﺪ‪.‬‬
‫)'‪>> NA = char('Mostafa','Hemmatabadi','Iran‬‬
‫‪NA = Mostafa‬‬
‫‪Hemmatabadi‬‬
‫‪Iran‬‬
‫)‪>> ndims(NA‬‬
‫‪ans = 2‬‬
‫)‪>> size(NA‬‬
‫‪ans = 3‬‬ ‫‪11‬‬
‫)‪>> length(NA‬‬
‫))(‪ans = 11 % length is max(size‬‬
‫‪>> N1 = NA(1,:) % first row‬‬
‫‪ans = Mostafa‬‬
‫)‪>> length(N1‬‬
‫‪ans = 11‬‬
‫‪ 2-12‬ﻣﺮﺗﺐ ﺳﺎزي رﺷﺘﻪ‬
‫ﻳﻚ رﺷﺘﻪ اﮔﺮ ﺑﺎ ﻛﺎﻟﻦ )ﺑﺪون اﺳﺘﻔﺎده از ﮔﻴﻮﻣﻪ( ﺗﻌﺮﻳﻒ ﺷﻮد‪ ،‬ﻛﺎراﻛﺘﺮﻫﺎي ﻋﻀﻮ آن ﻛﺪ اﺳﻜﻲ )ﻋﺪد( ﺧﻮاﻫﻨﺪ ﺑﻮد‪ .‬ﻣﺮﺗﺐ‬
‫ﺷﺪهي ﭼﻨﻴﻦ رﺷﺘﻪاي ﺑﻪ ﺻﻮرت ﻋﺪدي ﻧﻤﺎﻳﺶ داده ﻣﻲﺷﻮد‪ ،‬ﺑﺮاي ﻧﻤﺎﻳﺶ آن ﺑﻪ ﺻﻮرت ﻛﺎرﻛﺘﺮ از ﺗﺎﺑﻊ )(‪ char‬اﺳﺘﻔﺎده‬
‫ﻣﻲﻛﻨﻴﻢ‪.‬‬
‫)(‪sort‬‬ ‫ﻣﺮﺗﺐ ﺳﺎزي ﺑﺎ ﺗﺎﺑﻊ ﻛﺘﺎب ﺧﺎﻧﻪ اي‬
‫ﻣﺜﺎل ﻫﺎ‪:‬‬
‫ﺗﻌﺮﻳﻒ رﺷﺘﻪ ﺑﻪ ﺻﻮرت آراﻳﻪ ﻛﺎراﻛﺘﺮي‬
‫]'‪>> xs = ['b' 'd' 'a' 'c‬‬
‫‪xs = bdac‬‬
‫)‪>> sort(xs‬‬
‫‪ans = abcd‬‬
‫ﺗﻌﺮﻳﻒ رﺷﺘﻪ ﺑﻪ ﺻﻮرت ﻣﻌﻤﻮل‬
‫'‪>> xs = 'bdac‬‬
‫‪xs = bdac‬‬
‫)‪>> sort(xs‬‬
‫‪ans = abcd‬‬
‫رﺷﺘﻪ ﺑﻪ ﺻﻮرت اﻋﺪاد )اﺳﻜﻲ(‬
‫'‪>> ss = 'z' : -1 : 'r‬‬
‫‪ss = 122‬‬ ‫‪121‬‬ ‫‪120‬‬ ‫‪119‬‬ ‫‪118‬‬ ‫‪117‬‬ ‫‪116‬‬ ‫‪115‬‬ ‫‪114‬‬
‫)‪>> stn = sort(ss‬‬
‫‪stn = 114‬‬ ‫‪115‬‬ ‫‪116‬‬ ‫‪117‬‬ ‫‪118‬‬ ‫‪119‬‬ ‫‪120‬‬ ‫‪121‬‬ ‫‪122‬‬
‫)‪>> st = char(stn‬‬
‫‪st = rstuvwxyz‬‬
‫)(‪sort‬‬ ‫ﻣﺮﺗﺐ ﺳﺎزي رﺷﺘﻪ ﺑﺎ ﺗﺎﺑﻊ ﺣﺒﺎﺑﻲ و ﻣﻘﺎﻳﺴﻪ ﺑﺎ‬
‫روش ‪ bubble sort‬ﻛﻪ ﺑﺮﻧﺎﻣﻪ آن را ﻧﻮﺷﺘﻪاﻳﻢ‪ ،‬ﻳﻜﻲ از ﻛﻨﺪﺗﺮﻳﻦ روﺗﻴﻦﻫﺎي ﻣﺮﻧﺐﺳﺎزي اﺳﺖ‪ ،‬اﻣﺎ ﻣﺮﺗﺐ ﺳﺎزي‬
‫داﺧﻠﻲ ﻣﺘﻠﺐ )(‪ sort‬از روﺗﻴﻦﻫﺎي ﻣﺪرنﺗﺮ و ﺳﺮﻳﻊﺗﺮ ﻣﺎﻧﻨﺪ ‪ quick sort‬اﺳﺘﻔﺎده ﻣﻲﻛﻨﺪ‪.‬‬

‫‪116‬‬
‫ﻣﺜﺎل‪:‬‬
‫ﺗﺎﺑﻊ ﻣﺮﺗﺐ ﺳﺎزي ﺣﺒﺎﺑﻲ ‪ bubble sort‬را ﺑﻨﻮﻳﺴﻴﺪ‪ .‬ﺳﺮﻋﺖ اﺟﺮاي آن را ﺑﺎ ﺳﺮﻋﺖ ﺗﺎﺑﻊ داﺧﻠﻲ ﻣﺘﻠﺐ )(‪sort‬‬
‫ﻣﻘﺎﻳﺴﻪ ﻛﻨﻴﺪ‪ .‬ﺗﺎﺑﻊ ﻣﺮﺗﺐ ﺳﺎزي ﺣﺒﺎﺑﻲ ﺑﻪ ﻃﺮﻳﻖ زﻳﺮ ﻧﻮﺷﺘﻪ ﻣﻲﺷﻮد‪:‬‬
‫‪% Function M-File bubbles.m‬‬
‫)‪function y = bubbles(x‬‬
‫;)‪n = length(x‬‬
‫;‪for k = 1 : n‬‬ ‫‪% count the passes‬‬
‫‪for j = 1 : n - k‬‬
‫)‪if x(j) > x(j+1‬‬
‫‪temp = x(j); x(j) = x(j+1); x(j+1) = temp; % swap‬‬
‫‪end‬‬
‫‪end‬‬
‫‪end‬‬
‫;‪y = x‬‬
‫در ام‪ -‬ﻓﺎﻳﻠﻲ ﺑﻪ ﻧﺎم ‪ bsrt.m‬ﻳﻚ آراﻳﻪ از ﻛﺎراﻛﺘﺮﻫﺎ )ﻳﻚ رﺷﺘﻪ( ﻛﻪ ﺷﺎﻣﻞ ‪ a‬ﺗﺎ ‪) z‬ﻛﺪ اﺳﻜﻲ ‪ 97‬ﺗﺎ ‪ (122‬ﺑﻪ ﻃﻮر‬
‫ﻣﻌﻜﻮس اﺳﺖ را ﺗﻌﺮﻳﻒ ﻣﻲﻛﻨﻴﻢ‪ .‬ﺑﻪ اﻳﻦ ﺗﺮﺗﻴﺐ‪ ،‬ﭼﻮن ﻧﺎﻣﺮﺗﺐﺗﺮﻳﻦ ﺳﺎﻣﺎﻧﻪ را دارد‪ ،‬ﺑﻴﺸﺘﺮﻳﻦ ﻋﺒﻮر )ﺗﻜﺮار( ﺑﺮاي ﻣﺮﺗﺐ‬
‫ﺳﺎزي آن اﻧﺠﺎم ﺧﻮاﻫﺪﺷﺪ‪.‬‬
‫‪% Script M-File bsrt.m, calls the function bubbles.m‬‬
‫‪clc, clear‬‬
‫; '‪x = 'z' : -1 : 'a‬‬
‫ﻳﻚ آراﻳﻪ ﺑﺰرگ ﺗﻮﻟﻴﺪ ﻣﻲﻛﻨﺪ ‪xr = repmat(x,1,200);%‬‬
‫‪tic‬‬
‫;))‪xrs = char(sort(xr‬‬
‫;‪tc = toc‬‬
‫)‪fprintf('for MATLAB sort: %f Secs\n',tc‬‬
‫‪tic‬‬
‫; ))‪xrs = char(bubbles(xr‬‬
‫;‪tc = toc‬‬
‫)‪fprintf('for bubble sort: %f Secs',tc‬‬
‫‪>> bsrt‬‬
‫‪for MATLAB sort: 0.060000 Secs‬‬
‫‪for bubble sort: 2.213000 Secs‬‬
‫‪ 3-12‬ﺗﻮاﺑﻊ رﺷﺘﻪ اي‬
‫ﺗﺎﺑﻊ )‪ strcmp(s1,s2‬و ﻋﻤﻠﮕﺮﻫﺎي ﻣﻘﺎﻳﺴﻪ اي ﺑﺮاي رﺷﺘﻪ ﻫﺎ‬
‫دو رﺷﺘﻪ را ﻣﻘﺎﻳﺴﻪ ﻣﻲﻛﻨﺪ و در ﺻﻮرت ﻳﻚﺳﺎﻧﻲ ﻛﺎﻣﻞِ آنﻫﺎ‪) true ،‬ﻣﻨﻄﻖِ ﻳﻚ( ودر ﻏﻴﺮ آن ‪) false‬ﻣﻨﻄﻖِ ﺻﻔﺮ(‬
‫ﺑﺮﻣﻲﮔﺮداﻧﺪ‪.‬‬
‫ﻋﻤﻠﮕﺮﻫﺎي ﻣﻘﺎﻳﺴﻪاي‪ ،‬ﻋﻨﺎﺻﺮ رﺷﺘﻪﻫﺎ را ﺗﻚ ﺑﻪ ﺗﻚ ﻣﻘﺎﻳﺴﻪ ﻣﻲﻛﻨﻨﺪ‪ ،‬زﻳﺮا رﺷﺘﻪﻫﺎ‪ ،‬آراﻳﻪ ﻳﺎ ﺑﺮدار ﻣﺘﺸﻜﻞ از ﻛﺎراﻛﺘﺮﻫﺎ‬
‫ﻫﺴﺘﻨﺪ‪ .‬ﺑﺮاي ﻣﻘﺎﻳﺴﻪ دو رﺷﺘﻪ ﺑﺎ ﻋﻤﻠﮕﺮﻫﺎي ﻣﻘﺎﻳﺴﻪاي ﺑﺎﻳﺴﺘﻲ ﻃﻮل آنﻫﺎ ﻣﺴﺎوي ﺑﺎﺷﺪ‪ .‬ﻧﺘﻴﺠﻪ ﻣﻘﺎﻳﺴﻪ ﻣﻨﻄﻖ اﺳﺖ‪.‬‬
‫ﻣﺜﺎل ﻫﺎ‪:‬‬
‫;]‪>> s1 = 'ABC'; s2 = [65 66 67‬‬
‫)‪>> s3 = char(s2‬‬
‫)‪>> as = strcmp(s1,s3‬‬
‫‪as = 1‬‬
‫)‪>> islogical(as‬‬
‫‪ans = 1‬‬
‫'‪>> s1 = 'ABCD'; s2 = 'ABC‬‬
‫)‪>> strcmp(s1,s2‬‬

‫‪117‬‬
‫= ‪ans‬‬ ‫‪0‬‬

‫‪>> s1‬‬ ‫;'‪= 'Arman‬‬


‫‪>> s2‬‬ ‫;'‪= 'arman‬‬
‫‪>> s1‬‬ ‫‪== s2‬‬
‫= ‪ans‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬
‫‪>> s2‬‬ ‫‪> s1‬‬
‫= ‪ans‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬
‫)(‪strcat‬‬ ‫ﺟﻤﻊ ﻛﺮدن رﺷﺘﻪﻫﺎ ﺑﺎ دﺳﺘﻮر‬
‫دﺳﺘﻮر )(‪ strcat‬ﭼﻨﺪ رﺷﺘﻪ را ﺳﺮﻫﻢ )ﺑﺎﻫﻢ ﺟﻤﻊ( ﻛﺮده و ﺣﺎﺻﻞﺟﻤﻊ را در ﻳﻚ رﺷﺘﻪ ﺟﺪﻳﺪ ﻗﺮار ﻣﻲدﻫﺪ‪.‬‬
‫)(‪ strcat‬ﻓﻀﺎﻫﺎي ﺧﺎﻟﻲ اﻧﺘﻬﺎي رﺷﺘﻪﻫﺎ را ﺣﺬف ﻣﻲﻛﻨﺪ‪ ،‬اﻣﺎ ﻣﻲﺗﻮان ﻓﻀﺎﻫﺎي ﺧﺎﻟﻲ را ﺑﻪ اﻧﺪازه دلﺧﻮاه ﺗﻌﺮﻳﻒ و‬
‫داﺧﻞ رﺷﺘﻪ ﻗﺮار داد‪.‬‬
‫ﻣﺜﺎل ﻫﺎ‪:‬‬
‫;'‪>> s1 = 'My '; s2 = 'Name'; s3 = ' Is‬‬
‫)‪>> s = strcat(s1,s2,s3‬‬
‫‪s = MyNameIs‬‬

‫;)‪>> sp = repmat([' '],1,4‬‬


‫)]'‪>> xb = strcat(['Iran', sp, 'My', sp, 'Country‬‬
‫‪xb = Iran‬‬ ‫‪My‬‬ ‫‪Country‬‬
‫‪String Formatting‬‬ ‫‪ 4-12‬ﻗﺎﻟﺐﺑﻨﺪي رﺷﺘﻪ‬
‫)(‪fprintf‬‬ ‫ﺗﻌﻴﻴﻦ ﻓﺮﻣﺖ ﺑﺮاي ﻧﻤﺎﻳﺶ رﺷﺘﻪ ﺑﺎ‬
‫ﺑﺎ اﺳﺘﻔﺎده از )(‪ fprintf‬ﻳﻚ رﺷﺘﻪ را ﻣﻲﺗﻮان ﺑﻪ اﻧﺤﺎء ﻣﺨﺘﻠﻒ ﻧﻤﺎﻳﺶ داد‪ .‬ﺑﺮاي ﻧﻤﺎﻳﺶ ﻛﺎراﻛﺘﺮﻫﺎﺋﻲ ﻧﻈﻴﺮ ﺗﻘﺴﻴﻢ‬
‫ﻣﻌﻜﻮس \ ‪ ،‬و آﭘﻮﺳﺘﺮوف ' در ﺗﻌﺮﻳﻒ رﺷﺘﻪ دو ﺗﺎ از آن ﻫﺎ را ﻣﻲآورﻳﻢ‬
‫ﻣﺜﺎل‪:‬‬
‫ﺟﻤﻠﻪ زﻳﺮ را ﺑﺎ )(‪ fprintf‬ﺗﻮﻟﻴﺪ ﻛﻨﻴﺪ‪.‬‬
‫‪Mathworks'MATLAB‬‬
‫‪is‬‬ ‫‪a poweful language.‬‬ ‫?‪Is'nt it‬‬
‫>>‬ ‫;'‪ss1 = 'Mathworks''MATLAB‬‬
‫>>‬ ‫;'?‪tt1 = 'Is''nt it‬‬
‫>>‬ ‫)‪fprintf('%20s \nis a poweful language.\t%s',ss1,tt1‬‬

‫‪Mathworks'MATLAB‬‬
‫‪is a poweful language.‬‬ ‫?‪Is'nt it‬‬
‫)(‪sprintf‬‬ ‫ﻧﮕﻪ داري رﺷﺘﻪ در ﻳﻚ ﻣﺘﻐﻴﺮ ﺑﺎ‬
‫ﻫﻤﺎﻧﻨﺪ )(‪ fprintf‬ﻛﻪ ﺧﺮوﺟﻲ را ﺑﻪ ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ ﻣﻲﻓﺮﺳﺘﺪ‪ ،‬ﺑﺎ اﺳﺘﻔﺎده از )(‪ sprintf‬ﻣﻲﺗﻮان ﺧﺮوﺟﻲ را ﺑﻪ‬
‫داﺧﻞ ﻳﻚ ﻣﺘﻐﻴﺮ رﺷﺘﻪاي ﻓﺮﺳﺘﺎد‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫‪% M-File fL.m‬‬
‫;'‪na = 'New Book‬‬
‫;‪ex = 345‬‬
‫;'‪nat = na‬‬
‫ﭼﻮن رﺷﺘﻪ دو ﺑﻌﺪي ﺳﺘﻮن ﺑﻌﺪ ﺳﺘﻮن در داﺧﻞ ﻣﺘﻐﻴﺮ ﻗﺮار ﻣﻲﮔﻴﺮد اﺑﺘﺪا آنرا ﺗﺮاﻧﻬﺎد ﻣﻲﻛﻨﻴﻢ ‪%‬‬
‫)‪snew = sprintf('%s\n%d',nat,ex‬‬
‫‪>> fL‬‬

‫‪118‬‬
‫‪snew = New Book‬‬
‫‪345‬‬
‫‪ 5-12‬ﺗﻤﺮﻳﻦ‬
‫‪ -1‬رﺷﺘﻪ ‪ dcba‬را ﺑﻪ ﺻﻮرت آراﻳﻪ ﻋﺪدي )ﺑﺎ ﻋﻨﺎﺻﺮي از ﻛﺪﻫﺎي اﺳﻜﻲ( ﺗﻌﺮﻳﻒ‪ ،‬وﺑﺎ ﺗﺎﺑﻊ ﻛﺘﺎب ﺧﺎﻧﻪ اي‬
‫)(‪ sort‬ﻣﺮﺗﺐ ﻛﻨﻴﺪ‪.‬‬
‫‪ -2‬ﺗﻮاﺑﻊ اﻧﺪازهﮔﻴﺮ را ﺑﺮاي رﺷﺘﻪ ‪ NA = char('Self','Teaching','Book') m×n‬اﻣﺘﺤﺎن‬
‫ﻛﻨﻴﺪ‪ .‬ﻃﻮل ردﻳﻒﻫﺎ را ﺑﻪ دﺳﺖ آورﻳﺪ‪.‬‬
‫‪ -3‬ﺗﺎﺑﻌﻲ ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ دو رﺷﺘﻪ ‪ s1‬و ‪ s2‬را ﺑﻪ ﻋﻨﻮان آرﮔﻮﻣﺎن از ﺻﻔﺤﻪ ﻛﻠﻴﺪ درﻳﺎﻓﺖ و ﺑﺪون داﻧﺴﺘﻦ ﻃﻮل آنﻫﺎ‪،‬‬
‫رﺷﺘﻪ درازﺗﺮ را ﺑﺎ رﺷﺘﻪ ﻛﻮﺗﺎهﺗﺮ ﻫﻢاﻧﺪازه ﻛﺮده‪ ،‬و ﻣﻘﺎﻳﺴﻪ را اﻧﺠﺎم دﻫﺪ‪ .‬ﺳﭙﺲ ﺣﺮوف ﺣﺬف ﺷﺪه رﺷﺘﻪ درازﺗﺮ را‬
‫ﺑﺎ ﭘﻴﻐﺎم ‪ truncated:‬ﻧﻤﺎﻳﺶ دﻫﺪ‪ .‬اﻳﻦ ﺗﺎﺑﻊ را از ﭘﻨﺠﺮه ﻓﺮﻣﺎن اﺟﺮا ﻛﻨﻴﺪ‪.‬‬
‫‪ -4‬ﺑﺎ اﺳﺘﻔﺪه از ﺗﺎﺑﻊ )(‪ sprintf‬ﻋﺒﺎرت زﻳﺮ را در ﻣﺘﻐﻴﺮ ‪ snow‬ﻗﺮار داده و آن را ﺑﻪ دو ﺻﻮرت ﻛﺪ اﺳﻜﻲ و‬
‫ﻛﺎراﻛﺘﺮي ﻧﻤﺎﻳﺶ دﻫﻴﺪ‪.‬‬
‫‪MATLAB‬‬
‫‪Ver 6.5‬‬
‫‪ -5‬ﺑﺎ ‪ for‬ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻣﻌﻜﻮس رﺷﺘﻪ '‪ ss = 'Good Student‬را ﭼﺎپ ﻛﻨﺪ‪ .‬راﻫﻨﻤﺎ‪ :‬ﺑﺮاي‬
‫ﺗﻌﻴﻴﻦ ﺣﺪ ﺑﺎﻻﺋﻲ ﺷﻤﺎرﻧﺪه از )‪ length(ss‬اﺳﺘﻔﺎده ﻛﻨﻴﺪ‪.‬‬
‫‪ xn = [100‬را ﻣﺮﺗﺐ ﻛﺮده ﺑﻪ ﺻﻮرت‬ ‫‪99‬‬ ‫‪98‬‬ ‫‪ -6‬آراﻳﻪ ﻣﺘﺸﻜﻞ از ﻛﺪﻫﺎي اﺳﻜﻲ ]‪97‬‬
‫ﻛﺎراﻛﺘﺮي ﻧﻤﺎﻳﺶ دﻫﻴﺪ‪.‬‬

‫‪119‬‬
‫ﻓﺼﻞ ‪ 13‬ﺳﻴﮕﻨﺎل‪ ،‬ﺳﻴﺴﺘﻢ‪ ،‬ﻓﻴﻠﺘﺮ‬
‫‪ 1-13‬ﺗﺒﺪﻳﻼت ﻓﻮرﻳﻪ‬
‫)(‪fft‬‬ ‫ﺗﺒﺪﻳﻞ ﻓﻮرﻳﻪ ﮔﺴﺴﺘﻪ‬
‫دﺳﺘﻮر )‪ Y = fft(y‬ﺗﺒﺪﻳﻞ ﻓﻮرﻳﻪ ﮔﺴﺴﺘﻪي ﺑﺮدار ‪ y‬را ﻛﻪ ‪ N‬ﻋﻨﺼﺮ دارد ﺑﻪ دﺳﺖ ﻣﻲدﻫﺪ‪ y .‬و ‪ Y‬ﻣﺘﺴﺎوياﻟﻌﻨﺼﺮ‬
‫ﻫﺴﺘﻨﺪ‪ .‬در ﺗﺌﻮري ﻣﺨﺎﺑﺮات ‪ y‬و ‪ Y‬دو ﺑﺮدار ﻣﻜﻤﻞ در ﺣﻮزه زﻣﺎن و در ﺣﻮزه ﻓﺮﻛﺎﻧﺲ ﻧﺎم دارﻧﺪ‪ .‬ﻣﻌﻤﻮﻻٌ ﺑﺮاي آﻧﺎﻟﻴﺰ‬
‫ﺳﻴﮕﻨﺎلﻫﺎي ﻣﺨﺎﺑﺮاﺗﻲ ﺑﻴﻦ ﻣﻴﺪان زﻣﺎن و ﻣﻴﺪان ﻓﺮﻛﺎﻧﺲ آﻣﺪ و رﻓﺖ ﻣﻲﻛﻨﻴﻢ‪.‬‬
‫ﺑﺎﻳﺪ دﻗﺖ داﺷﺖ ﻛﻪ ﻫﺮ ﺳﻴﮕﻨﺎل در ‪ MATLAB‬ﺑﻪﺻﻮرت ﻳﻚ ﺑﺮدار ﺗﻌﺮﻳﻒ ﻣﻲﺷﻮد و ﻣﺠﻤﻮﻋﻪاي از ﻧﻘﺎط ﻣﺠﺰا ﻳﺎ ﻧﻤﻮﻧﻪ‪-‬‬
‫ﺑﺮداري ﺷﺪه )‪ (sampled‬اﺳﺖ‪ .‬ﻓﺮض ﻛﻨﻴﺪ ﺳﻴﮕﻨﺎل ‪ y‬داراي ‪ N‬ﻋﻨﺼﺮ اﺳﺖ‪ ،‬ﻋﺒﺎرت )‪ ، Y = fft(y‬ﺑﺮدار ‪ Y‬را‬
‫ﺑﻪ ﺻﻮرت زﻳﺮ اﻳﺠﺎد ﺧﻮاﻫﺪ ﻛﺮد‪:‬‬
‫‪N‬‬
‫= )‪Y(k‬‬ ‫‪Σ‬‬ ‫‪y(n)*exp(-j*2*pi*(k-1)*(n-1)/N), 1 <= k <= N.‬‬
‫‪n=1‬‬
‫)‪ Y(k‬ﻋﻨﺼﺮ ‪k‬ام ﺑﺮدار ‪ Y‬اﺳﺖ‪ ،‬ﭼﻨﺎنﭼﻪ ذﻛﺮ ﺷﺪ ﺗﻌﺪاد ﻋﻨﺎﺻﺮ ‪ Y‬ﻧﻴﺰ ‪ N‬اﺳﺖ‪.‬‬
‫ﭼﻮن )‪ Y(k‬ﻣﺨﺘﻠﻂ اﺳﺖ‪ ،‬ﺑﺎﻳﺪ ﻗﺪرﻣﻄﻠﻖ آنرا ﺑﺎ دﺳﺘﻮر)(‪ bar‬ﻳﺎ )(‪ stem‬ﻧﻤﺎﻳﺶ دﻫﻴﻢ‪.‬‬
‫)‪ifft(t‬‬ ‫ﺗﺒﺪﻳﻞ ﻓﻮرﻳﻪ ﮔﺴﺴﺘﻪ وارون‬
‫اﻳﻦ ﺗﺎﺑﻊ ﺑﺮدار ‪ Y‬را ﺑﻪ ﻣﻴﺪان ﻣﻌﻜﻮس ﻣﻲﺑﺮد )در ﺳﻴﮕﻨﺎلﻫﺎي ﻣﺨﺎﺑﺮاﺗﻲ از ﻣﻴﺪان ﻓﺮﻛﺎﻧﺲ ﺑﻪ ﻣﻴﺪان زﻣﺎن ﻣﻲروﻳﻢ(‪.‬‬
‫ﻋﺒﺎرت )‪ ، y = ifft(Y‬ﺑﺮدار ‪ y‬را ﺑﻪ ﺻﻮرت زﻳﺮ اﻳﺠﺎد ﺧﻮاﻫﺪ ﻛﺮد‪:‬‬
‫‪N‬‬
‫)‪y(n) = (1/N‬‬ ‫‪Σ‬‬ ‫‪Y(k)*exp( j*2*pi*(k-1)*(n-1)/N), 1 <= n <= N.‬‬
‫‪k=1‬‬
‫)‪ y(n‬ﻋﻨﺼﺮ ‪n‬ام ﺑﺮدار ‪ y‬اﺳﺖ‪ ،‬ﭼﻨﺎنﭼﻪ ذﻛﺮ ﺷﺪ ﺗﻌﺪاد ﻋﻨﺎﺻﺮ ‪ y‬ﻣﺴﺎوي ‪ N‬اﺳﺖ‪.‬‬
‫ﻣﺜﺎل ﻫﺎ‪:‬‬
‫ﻣﺸﺎﻫﺪه ﮔﺴﺘﺮه ﻓﺮﻛﺎﻧﺲ ﻳﻚ ﭘﺎﻟﺲ ﺳﻴﻨﻮﺳﻲ‬
‫ﻳﻚ ﺑﺮدار ﺳﻴﻨﻮﺳﻲِ ﺷﺎﻣﻞ ‪ 500‬دراﻳﻪ را ﺗﺒﺪﻳﻞ ﻓﻮرﻳﻪ ﮔﺴﺴﺘﻪ ﻛﺮده و ﻃﻴﻒ ﻓﺮﻛﺎﻧﺴﻲ آن را ﺗﺎ ﻫﺎرﻣﻮﻧﻴﻚ دﻫﻢ ﻣﺸﺎﻫﺪه ﻛﻨﻴﺪ‪.‬‬
‫‪%ffts‬‬
‫;‪n = 500‬‬
‫;)‪thet = linspace(-2*pi,2*pi,n‬‬
‫;)‪sig = sin(thet‬‬
‫;)‪SIG = fft(sig‬‬
‫; )‪aSIG = abs(SIG‬‬
‫)‪bar(aSIG(1:10),0‬‬

‫ﺷﻜﻞ ‪1-13‬‬

‫ﺳﺆال‪ :‬ﺑﺎ ﺗﻐﻴﻴﺮ ﺗﻌﺪاد اﻋﻀﺎء ﺑﺮدار ﺳﺎزﻧﺪه ﭘﺎﻟﺲ ﺳﻴﻨﻮﺳﻲ ﺑﻪ ﻳﻚ دﻫﻢ و ده ﺑﺮاﺑﺮ ﭼﻪ ﺗﻐﻴﻴﺮي در ﻃﻴﻒ اﻳﺠﺎد ﻣﻲﺷﻮد‬
‫ﺗﺒﺪﻳﻞ ﻓﻮرﻳﻪ ﮔﺴﺴﺘﻪ ي ﺗﺎﺑﻊ ﺻﻌﻮدي ‪Ramp‬‬
‫ﺑﺮﻧﺎﻣﻪاي ﺑﺮاي اﻳﺠﺎد ﻳﻚ ﺗﺎﺑﻊ ﺻﻌﻮدي ﺑﻨﻮﻳﺴﻴﺪ‪ ،‬ﺑﺮدار ﺻﻌﻮدي ‪ y‬را ﺑﻪ ﺻﻮرت ﺗﺎﺑﻊ ﺑﺮدار زﻣﺎن ‪ t‬اﻳﺠﺎد و‬

‫‪120‬‬
.‫ ﻧﻤﻮدارﻫﺎي ﻣﺮﺑﻮﻃﻪ را رﺳﻢ ﻛﻨﻴﺪ‬.‫ ﺳﭙﺲ ﺗﺒﺪﻳﻞ وارون ﻛﺮده دو ﭘﺎﻟﺲ را ﻣﻘﺎﻳﺴﻪ ﻛﻨﻴﺪ‬.‫ﺗﺒﺪﻳﻞ ﻓﻮرﻳﻪ ﮔﺴﺴﺘﻪ ﻛﻨﻴﺪ‬
.‫ ﺿﺒﻂ ﻣﻲﻛﻨﻴﻢ‬ramp.m ‫ ﺗﺎﺑﻊ زﻳﺮ را ﻧﻮﺷﺘﻪ و در ﻓﺎﻳﻠﻲ ﺑﻪ ﻧﺎم‬ramp ‫ﺑﺮاي اﻳﺠﺎد ﺷﻜﻞ‬
function ot = ramp(t,T)
% t is the time duration of the wave and T is its period.
ot = 10*rem(t,T)/T;

% rmp.m
Tp = 2;
n=100
t = linspace(0,Tp);
y = ramp(t,Tp);
plot(t,y);
title('Ramp')
xlabel 'Time'
clf
Y = fft(y);
aY = abs(Y);
stem(aY(1:n/2)),
title 'Descrete Fourier Transform of a Ramp Pulse'
xlabel 'Frequency'
clf
y1 = ifft(Y);
ay1 = abs(y1);
plot(t,ay1,'x')
title 'Inverse Fourier Transform'

2-13 ‫ﺷﻜﻞ‬

.‫ را ﻫﻢ اﻣﺘﺤﺎن ﻛﻨﻴﺪ‬bar()‫ و‬plot() ‫ ﺑﺮاي ﻧﻤﺎﻳﺶ ﻃﻴﻒ ﻓﺮﻛﺎﻧﺴﻲ ﻋﺒﺎرات‬:‫ﺳﺆال‬

3-13 ‫ﺷﻜﻞ‬

121
‫‪ 2-13‬ﺗﻮاﺑﻊ ﺳﻴﺴﺘﻢ ﻫﺎ‬
‫‪tf‬‬ ‫دﺳﺘﻮر اﻳﺠﺎد ﺗﺎﺑﻊ ﺗﺒﺪﻳﻞ زﻣﺎن ﭘﻴﻮﺳﺘﻪ‬
‫اﻳﻦ دﺳﺘﻮر)‪ SYS = tf(num,den‬ﻳﻚ ﺗﺎﺑﻊ ﺗﺒﺪﻳﻞ زﻣﺎن ﭘﻴﻮﺳﺘﻪ ﺑﻪ ﻧﺎم ‪ SYS‬از ﻛﺴﺮي ﺑﺎ ﺻﻮرت و ﻣﺨﺮج ‪ num‬و‬
‫‪ den‬ﭘﺪﻳﺪ ﻣﻲآورد‪ SYS .‬ﻳﻚ ﺷﻲء از ﻧﻮع ‪ TF‬ﺧﻮاﻫﺪ ﺑﻮد‪ .‬ﺑﺮدارﻫﺎي ‪ num‬و ‪ den‬از ﺿﺮاﺋﺐ ‪ s‬اﺳﺘﺨﺮاج ﻣﻲﺷﻮﻧﺪ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫‪s‬‬
‫اﺳﺘﺨﺮاج ﻛﻨﻴﺪ‪ .‬و ﺗﺎﺑﻊ ﺗﺒﺪﻳﻞ ﻣﺮﺑﻮﻃﻪ را ﺑﻪدﺳﺖ آورﻳﺪ‪.‬‬ ‫ﺑﺮدارﻫﺎي ‪ num‬و ‪ den‬را از ﻋﺒﺎرت‬
‫‪s2 + 2s + 10‬‬
‫;]‪>> num = [1 0‬‬ ‫‪Transfer function:‬‬ ‫‪s‬‬
‫;]‪>> den = [1 2 10‬‬ ‫‪--------------‬‬
‫)‪>> h = tf(num, den‬‬ ‫‪s^2 + 2 s + 10‬‬
‫ﺗﺮﺳﻴﻢ )(‪ bode‬ﺑﺮاي ﻳﻚ ﺳﻴﺴﺘﻢ‬
‫دﺳﺘﻮر)‪ bode(SYS‬ﺗﺮﺳﻴﻢ ‪ Bode‬را ﺑﺮاي ﻳﻚ ﺳﻴﺴﺘﻢ ﺧﻄﻲ ﺑﻲﺗﻐﻴﻴﺮ ﺑﺎ زﻣﺎن ‪LTI‬‬
‫)‪ (Linear Time-Invariant‬ﻛﻪ ﺑﺎ )(‪ tf‬ﻳﺎ دﺳﺘﻮرات ﻣﺸﺎﺑﻪ آن ﭘﺪﻳﺪ آﻣﺪه اﻳﺠﺎد ﻣﻲﻛﻨﺪ‪ .‬داﻣﻨﻪ ﻓﺮﻛﺎﻧﺲ و‬
‫ﺗﻌﺪاد ﻧﻘﺎط ﺧﻮدﺑﻪﺧﻮد ﺗﻌﻴﻴﻦ ﻣﻲﺷﻮﻧﺪ‪.‬‬
‫)(‪step(), impulse‬‬ ‫واﻛﻨﺶ ﭘﻠﻪ اي و واﻛﻨﺶ اﻳﻤﭙﺎﻟﺴﻲ‬
‫دﺳﺘﻮر )‪ step(SYS‬واﻛﻨﺶ در ﻣﻘﺎﺑﻞ ﭘﺎﻟﺲ ﭘﻠﻪاي و دﺳﺘﻮر )‪ impulse(SYS‬واﻛﻨﺶ در ﻣﻘﺎﺑﻞ ﺳﻴﮕﻨﺎل اﻳﻤﭙﺎﻟﺲ‬
‫را ﺑﺮاي ﻳﻚ ﺳﻴﺴﺘﻢ ‪ LTI‬ﻛﻪ ﺑﺎ )(‪ tf‬ﻳﺎ دﺳﺘﻮرات ﻣﺸﺎﺑﻪ آن ﭘﺪﻳﺪ آﻣﺪه ﻧﻤﺎﻳﺶ ﻣﻲدﻫﻨﺪ‪ .‬داﻣﻨﻪ ﻓﺮﻛﺎﻧﺲ و ﺗﻌﺪاد ﻧﻘﺎط‬
‫ﺧﻮدﺑﻪﺧﻮد ﺗﻌﻴﻴﻦ ﻣﻲﺷﻮﻧﺪ‪.‬‬
‫‪Nyquist Diagram‬‬ ‫دﻳﺎﮔﺮام ﻧﺎﻳﻜﻮﻳﻴﺴﺖ‬
‫دﺳﺘﻮر )‪ nyquist(SYS‬دﻳﺎﮔﺮام ﻣﺮﺑﻮﻃﻪ را ﺑﺮاي ﻳﻚ ﺳﻴﺴﺘﻢ ‪ LTI‬ﭘﻴﻮﺳﺘﻪ ﻳﺎ ﮔﺴﺴﺘﻪ رﺳﻢ ﻣﻲﻛﻨﺪ‪ .‬اﻳﻦ دﻳﺎﮔﺮام ﺑﺮاي‬
‫آﻧﺎﻟﻴﺰ ﺳﻴﺴﺘﻢ )ﺷﺎﻣﻞ ‪ ، gain margin, phase margin‬و ﭘﺎﻳﺪاري( ﺑﻪﻛﺎر ﻣﻲرود‪.‬‬
‫‪tf2ss‬‬ ‫ﺗﻐﻴﻴﺮ ﺗﺎﺑﻊ ﺗﺒﺪﻳﻞ ﺑﻪ ﻓﺮم ﻓﻀﺎي ﺣﺎﻟﺖ‬
‫اﻳﻦ دﺳﺘﻮر‪ ، [A,B,C,D] = tf2ss(b,a) :‬ﭘﺎراﻣﺘﺮﻫﺎي ﻓﻀﺎي ﺣﺎﻟﺖ را از ﺗﺎﺑﻊ ﺗﺒﺪﻳﻞ اﺳﺘﺨﺮاج ﻣﻲﻛﻨﺪ‪.‬‬
‫ﻣﺜﺎل ﻫﺎ‪:‬‬
‫اﻧﺘﮕﺮاﺗﻮر‬
‫ﺗﺎﺑﻊ ﺗﺒﺪﻳﻞ ﻣﺪار ﺷﻜﻞ ‪ 4-13‬را ﺧﻮدﺗﺎن ﭘﻴﺪا ﻛﺮده و در ﻣﺤﻴﻂ ‪ MATLAB‬ﭘﺪﻳﺪ آورﻳﺪ‪ .‬ﺗﺮﺳﻴﻢ )(‪ ، bode‬دﻳﺎﮔﺮام‬
‫ﻧﺎﻳﻜﻮﻳﻴﺴﺖ‪ ،‬واﻛﻨﺶ ﭘﻠﻪاي و واﻛﻨﺶ اﻳﻤﭙﺎﻟﺴﻲ آنرا ﻧﻤﺎﻳﺶ دﻫﻴﺪ‪ .‬ﺑﺎ ﻓﺮض ‪1/RC = 1‬‬
‫‪% intr.m‬‬ ‫‪1/RC‬‬
‫;]‪num = [0 1]; den = [1 1‬‬ ‫───────‬
‫)‪H = tf(num,den‬‬ ‫‪s + 1/RC‬‬
‫)‪subplot(2,2,1),bode(H‬‬
‫)‪subplot(2,2,2),step(H‬‬
‫)‪subplot(2,2,3),impulse(H‬‬
‫)‪subplot(2,2,4),nyquist(H‬‬ ‫ﺷﻜﻞ ‪4-13‬‬

‫‪>> intr‬‬

‫‪122‬‬
‫‪Transfer function:‬‬ ‫‪1‬‬
‫‪-----‬‬ ‫ﻣﻨﺤﻨﻲ ﺷﺎرژ ﺧﺎزن ﻣﺘﻌﻠﻖ ﺑﻪ ﻣﺪار اﻧﺘﮕﺮاﺗﻮر و ﭘﺎﺋﻴﻦﮔﺬر اﺳﺖ‬
‫‪s + 1‬‬

‫ﺷﻜﻞ ‪5-13‬‬

‫اﺳﻴﻼﺗﻮر‬
‫ﺗﺎﺑﻊ ﺗﺒﺪﻳﻞ زﻣﺎن ﭘﻴﻮﺳﺘﻪ ﻣﺪار ﻧﻮﺳﺎﻧﻲ ﺷﻜﻞ ‪ 6-13‬را ﻣﺤﺎﺳﺒﻪ ﻛﺮده و ﭘﺪﻳﺪ آورﻳﺪ‪ .‬ﺗﺮﺳﻴﻢ )(‪ ، bode‬دﻳﺎﮔﺮام ﻧﺎﻳﻜﻮﻳﻴﺴﺖ‪،‬‬
‫واﻛﻨﺶ ﭘﻠﻪاي و واﻛﻨﺶ اﻳﻤﭙﺎﻟﺴﻲ آنرا ﻧﻤﺎﻳﺶ دﻫﻴﺪ‪ .‬ﺗﺎﺑﻊ ﺗﺒﺪﻳﻞ ﻣﺜﺎل ﻓﻮق را ﺑﻪ ﻓﺮم ﻓﻀﺎي ﺣﺎﻟﺖ درآورﻳﺪ‪.‬‬
‫‪1/LC‬‬ ‫‪% oscil.m‬‬
‫───────‬ ‫;]‪B = [10000‬‬
‫‪2‬‬ ‫;]‪A = [1 0 10000‬‬
‫‪s + 1/LC‬‬
‫‪10H‬‬ ‫;)‪H = tf(B,A‬‬
‫)‪bode(H),step(H),impulse(H),nyquist(H‬‬
‫‪10µF‬‬ ‫ﺷﻜﻞ ‪6-13‬‬ ‫)‪[A,B,C,D] = tf2ss(num,den‬‬
‫‪>> oscil‬‬
‫‪A = -1‬‬ ‫‪B = 1‬‬ ‫‪C = 1‬‬ ‫‪D = 0‬‬

‫ﺷﻜﻞ ‪7-13‬‬

‫‪123‬‬
‫دﺳﺘﻮر ‪ rlocus‬ﺑﺮاي رﺳﻢ ﻣﻜﺎن ﻫﻨﺪﺳﻲ رﻳﺸﻪ ﻫﺎ‬
‫اﻳﻦ دﺳﺘﻮر ﺑﺮاي ﺑﺮرﺳﻲ ﺗﻐﻴﻴﺮات ﺿﺮﻳﺐ ﺑﺎزﺧﻮر ‪ feedback gains‬ﺑﺮ روي ﻣﻜﺎن ﻗﻄﺐﻫﺎي ﺳﻴﺴﺘﻢﻫﺎي ﺣﻠﻘﻪ‬
‫ﺑﺴﺘﻪ ‪ closed-loop‬ﻣﺎﻧﻨﺪ ﺳﻴﺴﺘﻢ ﻧﻤﻮﻧﻪ زﻳﺮ ﻛﺎرﺑﺮد دارد‪.‬‬
‫ﻣﺜﺎل‪:‬‬

‫>>‬ ‫;]‪B = [2 5 1‬‬


‫>>‬ ‫;]‪A = [1 2 3‬‬
‫>>‬ ‫;)‪h = tf(B, A‬‬
‫>>‬ ‫)‪rlocus(h‬‬
‫ﺷﻜﻞ ‪8-13‬‬

‫)(‪feedback‬‬ ‫ﺳﻴﺴﺘﻢ ﻓﻴﺪﺑﻚ ﻣﻨﻔﻲ ﺑﺎ دﺳﺘﻮر‬


‫دﺳﺘﻮر )(‪ feedback‬ﻣﺪل ‪ LTI‬را ﺑﺮاي ﻳﻚ ﺳﻴﺴﺘﻢ ﺑﺎزﺧﻮر ﻣﻨﻔﻲ ﺑﻪ دﺳﺖ ﻣﻲدﻫﺪ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫ﺷﻜﻞ‪ 9-13‬ﻣﺪل ‪ LTI‬ﻳﻚ ﺳﻴﺴﺘﻢ ﻛﻨﺘﺮل ﺳﺮﻋﺖ را ﻧﺸﺎن ﻣﻲدﻫﺪ‪.‬‬

‫ﺷﻜﻞ ‪9-13‬‬

‫;)]‪G = tf([2 5 1],[1 2 3‬‬


‫;)‪H = zpk(-2,-10,5‬‬
‫)‪Cloop = feedback(G,H‬‬
‫‪Zero/pole/gain:‬‬
‫)‪0.18182 (s+10) (s+2.281) (s+0.2192‬‬
‫‪-----------------------------------‬‬
‫)‪(s+3.419) (s^2 + 1.763s + 1.064‬‬
‫‪Discrete-Time Models‬‬ ‫‪ 3-13‬ﻣﺪل زﻣﺎن ﮔﺴﺴﺘﻪ‬
‫ﻣﺪل زﻣﺎن ﮔﺴﺴﺘﻪ ﺑﺮاي آﻧﺎﻟﻴﺰ ﺳﻴﺴﺘﻢﻫﺎﺋﻲ ﻛﻪ ﺑﺎ ﺳﻴﮕﻨﺎلﻫﺎي ﮔﺴﺴﺘﻪ ﻳﺎ ﻧﻤﻮﻧﻪﺑﺮداﺷﺘﻪ)‪ (Sampled‬ﻛﺎر ﻣﻲﻛﻨﻨﺪ‪ ،‬ﺑﻪﻛﺎر‬
‫ﻣﻲرود‪ .‬ﺗﻌﻴﻴﻦ ﺳﻴﺴﺘﻢ ﺑﺮاي آن ﺷﺒﻴﻪ ﺑﻪ ﺳﻴﺴﺘﻢ زﻣﺎن ﭘﻴﻮﺳﺘﻪ اﺳﺖ‪ ،‬اﻣﺎ دراﻳﻦﺟﺎ ﺑﺎﻳﺪ ﻣﺪتزﻣﺎن ﻧﻤﻮﻧﻪﺑﺮداري‬
‫)‪ (sampling period OR sample time‬ﻧﻴﺰ ذﻛﺮ ﺷﻮد‪.‬‬
‫‪Lead‬‬ ‫ﺗﺎﺑﻊ ﺗﺒﺪﻳﻞ زﻣﺎن ﮔﺴﺴﺘﻪ ﻣﺪار‬
‫ﻣﺜﺎل‪:‬‬
‫ﺗﺎﺑﻊ ﺗﺒﺪﻳﻞ زﻣﺎن ﮔﺴﺴﺘﻪ ﻣﺪار ‪ 10-13‬را ﻛﻪ در ﻛﻨﺘﺮل‪ ،‬ﻣﺪار ‪ Lead‬ﻧﺎم دارد اﺑﺘﺪا ﻣﺤﺎﺳﺒﻪ ﻛﺮده‪ ،‬ﺳﭙﺲ ﭘﺪﻳﺪ آورﻳﺪ‪.‬‬

‫‪124‬‬
‫ﺗﺮﺳﻴﻢ )(‪ ، bode‬دﻳﺎﮔﺮام ﻧﺎﻳﻜﻮﻳﻴﺴﺖ‪ ،‬واﻛﻨﺶ ﭘﻠﻪاي و واﻛﻨﺶ اﻳﻤﭙﺎﻟﺴﻲ آنرا ﻧﻤﺎﻳﺶ دﻫﻴﺪ‪.‬‬
‫‪R1 = R2 = 1, C = 100µF, time sample = 0.1‬‬

‫)‪s + (1/R1C‬‬
‫───────────────────‬
‫)‪s + (R1+R2)/(R1R2C‬‬

‫ﺷﻜﻞ ‪10-13‬‬

‫‪% dtm.m‬‬
‫;]‪B=[1 10000‬‬
‫;]‪A=[1 20000‬‬
‫)‪Hz=tf(B,A,0.1‬‬
‫)'‪subplot(2,2,1),bode(Hz, 'k‬‬
‫)'‪subplot(2,2,2),step(Hz, 'k‬‬
‫)'‪subplot(2,2,3),impulse(Hz, 'k‬‬
‫)'‪subplot(2,2,4),nyquist(Hz, 'k‬‬
‫‪>> dtm‬‬

‫ﺷﻜﻞ ‪11-13‬‬

‫ﺑﻪ ﻣﻨﺤﻨﻲ ﺗﻐﻴﻴﺮ ﻓﺎز )‪ . (lead‬واﻛﻨﺶ ﭘﻠﻪاي‪ ،‬و اﻳﻤﭙﺎﻟﺴﻲ در ﻣﺪل ﮔﺴﺴﺘﻪ ﺗﻮﺟﻪ ﻛﻨﻴﺪ‪.‬‬

‫‪ 4-13‬ﻓﻴﻠﺘﺮﻫﺎ‬
‫)(‪butter‬‬ ‫ﻓﻴﻠﺘﺮ ‪ Butterworth‬آﻧﺎﻟﻮگ و دﻳﺠﻴﺘﺎل‪ ،‬دﺳﺘﻮر‬
‫دﺳﺘﻮر )'‪[B,A] = butter(N,w,'s‬ﻳﻚ ﻓﻴﻠﺘﺮ آﻧﺎﻟﻮگ ﭘﺎﺋﻴﻦﮔﺬر درﺟﻪ ‪ N‬ﺑﺎﺗﺮورث ﺑﺎ ﻓﺮﻛﺎﻧﺲ ﺗﻘﻄﻴﻊ‬
‫‪ w rad/sec‬را اﻳﺠﺎد ﻣﻲﻛﻨﺪ‪ B .‬و ‪ A‬ﺑﻪ ﺗﺮﺗﻴﺐ ﺻﻮرت و ﻣﺨﺮج ﺗﺎﺑﻊ ﺗﺒﺪﻳﻞ ﻓﻴﻠﺘﺮ ﻫﺴﺘﻨﺪ‪.‬‬
‫دﺳﺘﻮر)'‪ [B,A] = butter(N,[w1 w2],'s‬ﻳﻚ ﻓﻴﻠﺘﺮ ﻣﻴﺎنﮔﺬر ﻣﺎﺑﻴﻦ ‪ w1‬و ‪ w2‬را اراﺋﻪ ﻣﻲدﻫﺪ‪،‬‬

‫‪125‬‬
‫و دﺳﺘﻮر)'‪ [B,A] = butter(N,w,'high','s‬ﻳﻚ ﻓﻴﻠﺘﺮ آﻧﺎﻟﻮگ ﺑﺎﻻﮔﺬر اﻳﺠﺎد ﻣﻲﻛﻨﺪ‪.‬‬
‫دﺳﺘﻮر )‪[B,A] = butter(N,Wn‬ﻳﻚ ﻓﻴﻠﺘﺮ ﺑﺎﺗﺮورث ﭘﺎﺋﻴﻦﮔﺬر دﻳﺠﻴﺘﺎل درﺟﻪ ‪ N‬ﺑﺎ ﻓﺮﻛﺎﻧﺲ ﻗﻄﻊ ‪ Wn‬ﻃﺮح ﻣﻲ‪-‬‬
‫ﻛﻨﺪ‪ .‬داﻣﻨﻪ ﻓﺮﻛﺎﻧﺲ ﻗﻄﻊ ‪ 0.0 < Wn < 1.0‬اﺳﺖ‪ .‬اﮔﺮ ‪ Wn = 1‬ﺑﮕﻴﺮﻳﻢ ﻣﻌﺎدل ﻧﺼﻒ ﺳﺮﻋﺖ ﻧﻤﻮﻧﻪﺑﺮداري‬
‫‪ sample rate‬ﺧﻮاﻫﺪ ﺑﻮد‪.‬‬
‫ﻣﺜﺎل ﻫﺎ‪:‬‬
‫ﻓﻴﻠﺘﺮ آﻧﺎﻟﻮگ ﭘﺎﺋﻴﻦ ﮔﺬر ﺑﺎﺗﺮورث‬
‫در ﻳﻚ ام‪ -‬ﻓﺎﻳﻞ ﻳﻚ ﻓﻴﻠﺘﺮ آﻧﺎﻟﻮگ ﭘﺎﺋﻴﻦﮔﺬر ﺑﺎﺗﺮورث درﺟﻪ ‪ 3‬ﺑﺎ ﻓﺮﻛﺎﻧﺲ ﺗﻘﻄﻴﻊ ‪، 1000 rad/sec‬‬
‫ﻳﻚ ﻓﻴﻠﺘﺮ آﻧﺎﻟﻮگ ﻣﻴﺎنﮔﺬر درﺟﻪ ‪ 3‬ﺑﺎ ﻓﺎﺻﻠﻪ ﻋﺒﻮر ‪ 1000 rad/sec‬ﺗﺎ ‪، 10000 rad/sec‬‬
‫و ﻳﻚ ﻓﻴﻠﺘﺮ آﻧﺎﻟﻮگ ﺑﺎﻻﮔﺬر درﺟﻪ ‪ 3‬ﺑﺎ ﻓﺮﻛﺎﻧﺲ ﺗﻘﻄﻴﻊ ‪1000 rad/sec‬‬
‫اﻳﺠﺎد ﻛﻨﻴﺪ‪ .‬و ﻧﻤﻮدار ﻓﺮﻛﺎﻧﺴﻲ آنﻫﺎ را رﺳﻢ ﻧﻤﺎﺋﻴﺪ‪.‬‬
‫‪% agfil.m‬‬
‫‪echo off‬‬
‫;)'‪[B,A] = butter(3,1000,'s‬‬
‫;)‪L = tf(B,A‬‬
‫‪clf, bode(L),title('LP'), pause‬‬
‫;)'‪[B,A] = butter(3,[1000 10000],'s‬‬
‫;)‪B = tf(B,A‬‬
‫‪clf, bode(B),title('BP'), pause‬‬
‫;)'‪[B,A] = butter(3,1000,'high','s‬‬
‫;)‪H = tf(B,A‬‬
‫‪clf, bode(H),title('HP'), clf‬‬

‫ﺷﻜﻞ ‪12-13‬‬

‫ﻓﻴﻠﺘﺮ ﭘﺎﺋﻴﻦ ﮔﺬر دﻳﺠﻴﺘﺎل‬


‫ﻳﻚ ﻓﻴﻠﺘﺮ ﭘﺎﺋﻴﻦﮔﺬر دﻳﺠﻴﺘﺎل درﺟﻪ ‪ 3‬ﺑﺎ ﻓﺮﻛﺎﻧﺲ ﻗﻄﻊ ‪ 0.3‬ﻃﺮح ﻛﻨﻴﺪ‪.‬‬
‫)‪>> [B,A] = butter(3,0.3‬‬

‫‪126‬‬
‫‪B = 0.0495‬‬ ‫‪0.1486‬‬ ‫‪0.1486‬‬ ‫‪0.0495‬‬
‫‪A = 1.0000‬‬ ‫‪-1.1619‬‬ ‫‪0.6959‬‬ ‫‪-0.1378‬‬
‫)‪>> Hb = tf(B,A,0.1‬‬
‫‪Transfer function:‬‬
‫‪0.04953 z^3 + 0.1486 z^2 + 0.1486 z + 0.04953‬‬
‫‪---------------------------------------------‬‬
‫‪z^3 - 1.162 z^2 + 0.6959 z - 0.1378‬‬
‫‪Sampling time: 0.1‬‬
‫)‪>> bode(Hb‬‬

‫ﺷﻜﻞ ‪13-13‬‬

‫‪ 5-13‬ﺗﻤﺮﻳﻦ‬
‫‪ -1‬ﺗﺒﺪﻳﻼت ﻓﻮرﻳﻪ ﺑﺮاي ﭘﺎﻟﺲ ﻣﺮﺑﻌﻲ ﺷﻜﻞ را ﺑﻨﻮﻳﺴﻴﺪ و ﺗﺮﺳﻴﻢ ﻛﻨﻴﺪ‪ .‬ﺗﺮﺳﻴﻢ ﻃﻴﻒ ﻓﺮﻛﺎﻧﺴﻲ را ﺑﺎ )‪bar(aF‬‬
‫و)‪ plot(aF‬ﻧﻴﺰ اﻣﺘﺤﺎن ﻛﻨﻴﺪ‪ .‬راﻫﻨﻤﺎ‪ :‬ﺗﺒﺪﻳﻞ ﻓﻮرﻳﻪ در ﺣﻮزه ﻓﺮﻛﺎﻧﺲ ﺑﻪ ﺷﻜﻞ ‪ sin(x)/x‬اﺳﺖ‪.‬‬
‫‪ -2‬ﺗﺒﺪﻳﻼت ﻓﻮرﻳﻪ را ﺑﺮاي ﭘﺎﻟﺲ ﻣﺜﻠﺜﻲ ﺷﻜﻞ ﺑﻨﻮﻳﺴﻴﺪ و ﺗﺮﺳﻴﻢ ﻛﻨﻴﺪ‪.‬‬
‫‪ -3‬ﺗﺒﺪﻳﻼت ﻓﻮرﻳﻪ را ﺑﺮاي ﺷﻜﻞ ﻣﻮج زﻳﺮ ﺑﻨﻮﻳﺴﻴﺪ و ﺗﺮﺳﻴﻢ ﻛﻨﻴﺪ‬
‫;)‪a = linspace(-pi,pi); x = sin(a) - sin(4*a‬‬
‫‪ -4‬ﺗﺎﺑﻊ ﺗﺒﺪﻳﻞ زﻣﺎن ﮔﺴﺴﺘﻪ و زﻣﺎن ﭘﻴﻮﺳﺘﻪ دو ﻣﺪار زﻳﺮ را ﭘﺪﻳﺪ آورﻳﺪ‪ .‬ﺗﺮﺳﻴﻢ )(‪ ، bode‬دﻳﺎﮔﺮام ﻧﺎﻳﻜﻮﻳﻴﺴﺖ‪،‬‬
‫واﻛﻨﺶ ﭘﻠﻪاي و واﻛﻨﺶ اﻳﻤﭙﺎﻟﺴﻲ آنﻫﺎ را ﻧﻤﺎﻳﺶ دﻫﻴﺪ‬
‫‪L = 1 mH, C = 100µF, time sample = 0.1 sec‬‬

‫‪ -5‬ﻓﻴﻠﺘﺮﻫﺎي ﭘﺎﺋﻴﻦﮔﺬر و ﺑﺎﻻﮔﺬر آﻧﺎﻟﻮگ و دﻳﺠﻴﺘﺎل ﺑﺎﺗﺮورث درﺟﻪ‪ 4‬ﺑﺎ ﻓﺮﻛﺎﻧﺲ ﺗﻘﻄﻴﻊ ‪، 10000 rad/sec‬‬
‫و ﻣﻴﺎنﮔﺬر ﻣﺎﺑﻴﻦ ‪ 1000 rad/sec‬و ‪ 10000 rad/sec‬اﻳﺠﺎد ﻛﻨﻴﺪ‪ .‬و ﻧﻤﻮدار ﻓﺮﻛﺎﻧﺴﻲ آنﻫﺎ را رﺳﻢ ﻧﻤﺎﺋﻴﺪ‪.‬‬

‫‪127‬‬
‫ﻓﺼﻞ ‪ 14‬واﺳﻂ ﮔﺮاﻓﻴﻜﻲ ﻛﺎرﺑﺮ‬
‫‪(GUI) graphical user interface‬‬ ‫‪ 1-14‬واﺳﻂ ﮔﺮاﻓﻴﻜﻲ ﻛﺎرﺑﺮ‬
‫ﺑﺎ دﺳﺘﻮر ‪ guide‬ﻣﺨﻒ ‪graphical user interface development environment‬‬
‫اﺑﺰار ﺗﻮﻟﻴﺪ ‪ GUI‬در اﺧﺘﻴﺎر ﻗﺮار ﻣﻲﮔﻴﺮد‪ ،‬ﻛﻪ ﺷﺎﻣﻞ دو ﭘﻨﺠﺮه ﻣﻬﻢ اﺳﺖ‪:‬‬
‫)‪Layout Editor(LE), User Interface Controls (uicontrols‬‬
‫در ﭘﻨﺠﺮه اول ﭼﻬﺎرﭼﻮب اﺻﻠﻲ ‪ GUI‬را ﻛﻪ ﭘﺲ از اﺟﺮا ﻣﺸﺎﺑﻪ ﭘﻨﺠﺮهﻫﺎي اﺳﺘﺎﻧﺪارد ﻣﺤﻴﻂ ‪ Windows‬ﺧﻮاﻫﺪ ﺑﻮد‪،‬‬
‫ﻃﺮاﺣﻲ ﻣﻲﻛﻨﻴﻢ‪ .‬ﭘﻨﺠﺮه دوم ﻳﻚ ﻣﻴﻠﻪ اﺑﺰار ‪ tools bar‬اﺳﺖ ﻛﻪ دﻛﻤﻪﻛﻨﺘﺮلﻫﺎي ﺿﺮوري ﺟﻬﺖ ﻳﻚ ﺑﺮﻧﺎﻣﻪ ‪ GUI‬را‬
‫ﻓﺮاﻫﻢ ﻣﻲﻛﻨﺪ‪ .‬روش ﻛﺎر ﺑﺪﻳﻦﮔﻮﻧﻪ اﺳﺖ ﻛﻪ اﺑﺘﺪا دﻛﻤﻪﻫﺎي ﻻزم ﺑﺮاي ﻳﻚ ﺑﺮﻧﺎﻣﻪ ﺑﻪ ﻣﺤﻮﻃﻪ ‪ LE‬ﻣﻨﺘﻘﻞ ﻣﻲﺷﻮد‪ ،‬ﺳﭙﺲ ﺑﻪ‬
‫ﻫﺮ دﻛﻤﻪ وﻇﻴﻔﻪ ﺧﺎص ﺧﻮدش از ﻃﺮق ﻳﻚ زﻳﺮ ﺑﺮﻧﺎﻣﻪ ﻣﺮﺑﻮط ﺑﻪ آن دﻛﻤﻪ ﻛﻪ ‪ Callback Function‬ﻧﺎم دارد‬
‫ﻣﺤﻮل ﻣﻲﺷﻮد‪ .‬اﻟﺒﺘﻪ در ﺑﻴﻦ راه اﻋﻤﺎل ﻓﺮﻋﻲ دﻳﮕﺮي ﻧﻈﻴﺮ ﺗﻌﻴﻴﻦ ﺷﺎﺧﺼﻪﻫﺎي ‪ properties‬دﻛﻤﻪﻫﺎ‪ ،‬و ﭘﻨﺠﺮهﻫﺎ ﻧﻴﺰ‬
‫اﻧﺠﺎم ﻣﻲﺷﻮد‪ .‬ﺑﻪ ﻣﺜﺎلﻫﺎي زﻳﺮ و ﺗﻮﺿﻴﺤﺎت ﻣﺮﺑﻮﻃﻪ ﺗﻮﺟﻪ ﻛﻨﻴﺪ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫ﭘﻨﺠﺮهاي ﺑﺴﺎزﻳﺪ ﺷﺎﻣﻞ‪ -1 :‬ﻳﻚ دﻛﻤﻪ ﻓﺸﺎري ‪ push button‬ﻛﻪ روي آن ﻛﻠﻤﻪ ‪ Time‬ﻧﻮﺷﺘﻪ ﺷﺪه ﺑﺎﺷﺪ و ﭘﺲ از‬
‫ﻛﻠﻴﻚ‪ ،‬ﺳﺎﻋﺖ را روي ﺧﻮدش ﻧﻤﺎﻳﺶ دﻫﺪ‪ -2.‬ﻳﻚ دﻛﻤﻪ ﻣﺘﻦ اﻳﺴﺘﺎ ‪ Static text button‬ﻛﻪ روي آن ‪Date‬‬
‫ﻧﻮﺷﺘﻪ ﺑﺎﺷﺪ و ﭘﺲ از ﻓﺸﺮدن دﻛﻤﻪ ﻓﺸﺎري ﻗﺒﻠﻲ ﺗﺎرﻳﺦ را ﻧﺸﺎن دﻫﺪ‪ -3 .‬ﻳﻚ دﻛﻤﻪ ﻓﺸﺎري ﻛﻪ روي آن ‪Refresh‬‬
‫ﻧﻮﺷﺘﻪ ﺑﺎﺷﺪ و دو دﻛﻤﻪ ﻗﺒﻞ را ﺑﻪ ﺣﺎﻟﺖ اول ﺑﺮﮔﺮداﻧﺪ‪.‬‬
‫ﺣﻞ‪:‬‬
‫اﺑﺘﺪا دﺳﺘﻮر ‪ guide‬را ازﭘﻨﺠﺮه ﻓﺮﻣﺎن اﺟﺮا ﻣﻲﻛﻨﻴﻢ‪ .‬ﭘﺲ از ﻇﻬﻮر اﺑﺰارﻫﺎي ﻣﺮﺑﻮﻃﻪ ) ﺷﻜﻞ ‪ (1-14‬ﺳﻪ دﻛﻤﻪ ﺧﻮاﺳﺘﻪ‬
‫ﺷﺪهي ﻓﻮق را از ﻣﻴﻠﻪ اﺑﺰار ‪ uicontrols‬اﻧﺘﺨﺎب و ﺑﻪ داﺧﻞ ‪ LE‬ﻣﻲآورﻳﻢ ﭘﺲ از ﺑﻌﻀﻲ وﻳﺮاﻳﺶﻫﺎ ﻛﻪ ذﻛﺮ ﺧﻮاﻫﻨﺪ‬
‫ﺷﺪ‪ ،‬ﺷﻜﻞ ‪ 2-14‬ﺣﺎﺻﻞ ﻣﻲﺷﻮد‪.‬‬

‫)‪Layout Editor(LE‬‬

‫‪← uicontrols‬‬

‫ﺷﻜﻞ ‪1-14‬‬

‫‪128‬‬
‫ﺷﻜﻞ ‪2-14‬‬

‫‪property inspector‬‬ ‫ﺷﺎﺧﺼﻪ ﻳﺎب‬


‫روي ‪ ، LE‬راﺳﺖ ﻛﻠﻴﻚ و از ﻣﻨﻮي ﻓﻮري ﻛﻪ ﺑﺎز ﻣﻲﺷﻮد اﻧﺘﺨﺎب ﺷﺎﺧﺼﻪﻳﺎب ‪ property inspector‬را ﻛﻠﻴﻚ‬
‫ﻣﻲﻛﻨﻴﻢ‪ .‬ﭘﻨﺠﺮه ﻣﺮﺑﻮﻃﻪ ﺑﺎز ﻣﻲﺷﻮد‪.‬‬

‫→ ﺷﺎﺧﺼﻪي ﻋﻨﻮان‬

‫ﺷﻜﻞ ‪3-14‬‬

‫‪Name or String‬‬ ‫ﺷﺎﺧﺼﻪ ﻋﻨﻮان‬


‫اﻳﻦ ﺷﺎﺧﺼﻪ ﺑﺮاي ﺑﻌﻀﻲ از اﺷﻴﺎء ‪ String‬و ﺑﺮاي ﺑﻌﻀﻲ ‪ Name‬ﮔﻔﺘﻪ ﺷﺪه و روي ﺷﻴﺊ ﺣﻚ ﻣﻲﺷﻮد‪ .‬ﺑﺮاي ﻛﺎر ﺑﺎ اﻳﻦ‬
‫ﺷﺎﺧﺼﻪ از ﻣﺜﺎل ﻓﻮق ‪ -1‬در ﺷﺎﺧﺼﻪﻳﺎب ﺷﺎﺧﺼﻪ ‪ Name‬را اﻧﺘﺨﺎب و ﻣﻘﺎﺑﻞ آن ﻛﻠﻤﻪ ‪ Time Date‬را ﻣﻲﻧﻮﻳﺴﻴﻢ‪ .‬ﻧﺎم‬
‫ﭘﻨﺠﺮهي ﺣﺎﺻﻞ ﭘﺲ از اﺟﺮا ‪ Time Date‬ﻣﻲﺷﻮد‪ -2 .‬دﻛﻤﻪ ﻣﺘﻦ را ﻓﻌﺎل ﻛﺮده از ﺷﺎﺧﺼﻪﻳﺎب ﺑﺮاي ﺷﺎﺧﺼﻪي‬
‫‪ String‬ﻛﻠﻤﻪ ‪ Date‬را ﻣﻲﻧﻮﻳﺴﻴﻢ‪ .‬اﻳﻦ ﻛﻠﻤﻪ روي دﻛﻤﻪ ﻣﺘﻦ ﺣﻚ ﻣﻲﺷﻮد‪ -3 .‬دﻛﻤﻪ ﻓﺸﺎري اول را ﻓﻌﺎل ﻛﺮده از‬
‫ﺷﺎﺧﺼﻪﻳﺎب ﺑﺮاي ﺷﺎﺧﺼﻪي ‪ String‬ﻛﻠﻤﻪ ‪ Timer‬را ﻣﻲﻧﻮﻳﺴﻴﻢ‪ .‬اﻳﻦ ﻛﻠﻤﻪ روي دﻛﻤﻪ ﺣﻚ ﻣﻲﺷﻮد‪ -4 .‬دﻛﻤﻪ‬
‫ﻓﺸﺎري دوم را ﻓﻌﺎل ﻛﺮده از ﺷﺎﺧﺼﻪﻳﺎب ﺑﺮاي ﺷﺎﺧﺼﻪي ‪ String‬ﻛﻠﻤﻪ ‪ Refresh‬را ﻣﻲﻧﻮﻳﺴﻴﻢ‪ .‬اﻳﻦ ﻛﻠﻤﻪ روي‬
‫دﻛﻤﻪ ﺣﻚ ﻣﻲﺷﻮد‪.‬‬

‫‪129‬‬
‫‪Tag‬‬ ‫ﺷﺎﺧﺼﻪ ﺑﺮﭼﺴﺐ‬
‫ﺷﺎﺧﺼﻪ ﺑﺮﭼﺴﺐ ‪ Tag‬ﻧﺎم ﺷﻴﺊ اﺳﺖ ﻛﻪ در ﺑﺮﻧﺎﻣﻪ ﺑﺎ اﻳﻦ ﻧﺎم ﺑﻪ ﺷﻴﺊ ﻣﺮاﺟﻌﻪ ﻣﻲﺷﻮد‪ .‬ﺷﺎﺧﺼﻪ ﺑﺮﭼﺴﺐ را ﺑﺮاي ﻫﺮ ﭼﻬﺎر‬
‫ﺷﻴﺊ‪ ،‬در ﭘﻨﺠﺮه ﺷﺎﺧﺼﻪﻳﺎبِ ﻫﺮﻛﺪام ﻣﻼﺣﻈﻪ ﻛﻨﻴﺪ‪ ،‬اﻣﺎ ﻧﻴﺎزي ﺑﻪ ﺗﻐﻴﻴﺮ دادن آنﻫﺎ ﻧﻴﺴﺖ‪.‬‬
‫ﺑﻌﻀﻲ از ﺷﺎﺧﺼﻪﻫﺎي ﻣﺜﺎل‪:‬‬
‫ﺑﺮﭼﺴﺐ ‪Tag‬‬ ‫ﻋﻨﻮان‬ ‫ﺷﻴﺊ‬
‫)ادﻳﺖ ﻧﺸﺪه(‬ ‫‪String or Name‬‬
‫)ادﻳﺖ ﺷﺪه(‬
‫‪figure1‬‬ ‫‪Time Date‬‬ ‫‪Runtime window‬‬ ‫ﭘﻨﺠﺮه اﺟﺮا‬
‫‪text1‬‬ ‫‪Date‬‬ ‫‪Static text‬‬ ‫دﻛﻤﻪ ﻣﺘﻦِ اﻳﺴﺘﺎ‬
‫‪pushbutton1 Time‬‬ ‫‪Push Button1‬‬ ‫دﻛﻤﻪ ﻓﺸﺎري‪1‬‬
‫‪pushbutton2 Refresh‬‬ ‫‪Push Button2‬‬ ‫دﻛﻤﻪ ﻓﺸﺎري‪2‬‬
‫‪Callback Function‬‬ ‫ﺗﻮاﺑﻊ ﻓﺮاﺧﻮان‬
‫در داﺧﻞ ﺑﺮﻧﺎﻣﻪ ﺑﺮاي ﻋﻤﻞ ﻳﺎ اﻋﻤﺎﻟﻲ ﻛﻪ ﺑﺎ ﻓﺸﺮدن ﻳﻚ دﻛﻤﻪ ﻳﺎ ﻛﻠﻴﻚ روي ﻳﻚ ﭘﻨﺠﺮه اﻧﺠﺎم ﻣﻲﺷﻮد ﺗﺎﺑﻌﻲ ﻣﻲﻧﻮﻳﺴﻴﻢ ﻛﻪ‬
‫ﺗﺎﺑﻊ ﻓﺮاﺧﻮان آن ﭘﻨﺠﺮه ﻳﺎ آن دﻛﻤﻪ ‪ Callback Function‬ﮔﻔﺘﻪ ﻣﻲﺷﻮد‪.‬‬
‫ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ‬
‫در ﭘﻨﺠﺮه ‪ LE‬اﻧﺘﺨﺎب ‪ Run‬را از ﻣﻴﻠﻪ اﺑﺰار ﻳﺎ از ﻣﻨﻮي ‪ Tools‬اﺟﺮا ﻣﻲﻛﻨﻴﻢ‪ .‬ﻳﻚ ام‪ -‬ﻓﺎﻳﻞ ﺑﺮاي ﻧﮕﻪداري دﺳﺘﻮرات‬
‫ﺑﺮﻧﺎﻣﻪ ﺑﺎز ﻣﻲﺷﻮد‪ .‬ﻧﺎم آن را ‪ tim.m‬ﻣﻲﮔﺬارﻳﻢ‪ .‬ﻧﺎم ‪ LE‬ﻫﻢ ﺧﻮدﺑﻪﺧﻮد ‪ tim.fig‬ﻣﻲﺷﻮد‪ .‬ﻫﺮدو ﻓﺎﻳﻞ ‪ tim.m‬و‬
‫‪ tim.fig‬در دﻳﺮﻛﺘﻮري ﺟﺎري ذﺧﻴﺮه ﻣﻲﺷﻮﻧﺪ‪ .‬ﺣﺎل ﺑﺮاي ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﺑﻪ داﺧﻞ ‪ tim.m‬ﻣﻲروﻳﻢ‪ .‬در ﻣﺘﻦ ﺗﺎﺑﻊ‬
‫ﻓﺮاﺧﻮان دﻛﻤﻪ ﻓﺸﺎري‪) 1‬داراي ﺑﺮﭼﺴﺐ ‪ (pushbutton1‬ﺑﺮﻧﺎﻣﻪ زﻳﺮ را وارد ﻣﻲﻛﻨﻴﻢ‪ .‬ﺑﻪ دﺳﺘﻮرﻫﺎ و ﺳﻄﺮﻫﺎي راﻫﻨﻤﺎ‬
‫‪ comments‬ﻛﻪ در داﺧﻞ ام‪ -‬ﻓﺎﻳﻞ ﺑﻪ ﺻﻮرت ﺧﻮدﻛﺎر ﻧﻮﺷﺘﻪ ﺷﺪه ﻛﺎري ﻧﺪارﻳﻢ‪.‬‬
‫)‪function pushbutton1_Callback(hObject, eventdata, handles‬‬
‫;‪t = clock‬‬
‫;‪d = date‬‬
‫;))‪tm = sprintf('%2.0f: %2.0f: %2.0f:',t(4),t(5),t(6‬‬
‫دو رﻗﻢ از رﺷﺘﻪﻫﺎي ﺳﺎﻋﺖ‪ ،‬دﻗﻴﻘﻪ و ﺛﺎﻧﻴﻪ را داﺧﻞ ﻣﺘﻐﻴﺮ رﺷﺘﻪاي ‪ tm‬ﻣﻲﻧﻮﻳﺴﺪ ‪%‬‬
‫;)‪dt = sprintf('%12s',d‬‬ ‫ﻣﺘﻐﻴﺮ ‪ dt‬را ﺑﺎ ‪ 12‬ﻣﻜﺎن اﻳﺠﺎد و رﺷﺘﻪي ﺗﺎرﻳﺦ را در آن ﻣﻲﻧﻮﻳﺴﺪ ‪%‬‬

‫)‪set(gcbo,'String',tm‬‬
‫ﺷﺎﺧﺼﻪي ﻋﻨﻮانِ ﺷﻴﺊ ﻣﺮﺑﻮط ﺑﻪ ﺗﺎﺑﻊ ‪ gcbo = get callback object‬را ‪) tm‬زﻣﺎن( ﻗﺮار ﻣﻲدﻫﺪ‪% .‬‬
‫))‪set(handles.text1,'String',char(dt‬‬
‫ﺷﺎﺧﺼﻪي ﻋﻨﻮان ﺷﻴﺊ ‪) text1‬دﻛﻤﻪ ﻣﺘﻦ( را ﺑﻪ ‪) dt‬ﺗﺎرﻳﺦ( ﺗﻐﻴﻴﺮ ﻣﻲدﻫﺪ‪% .‬‬
‫در ﻣﺘﻦ ﺗﺎﺑﻊ ﻓﺮاﺧﻮان دﻛﻤﻪ ﻓﺸﺎري‪) 2‬داراي ﺑﺮﭼﺴﺐِ ‪ (pushbutton2‬ﺑﺮﻧﺎﻣﻪ زﻳﺮ را وارد ﻣﻲﻛﻨﻴﻢ‪.‬‬
‫)‪function pushbutton2_Callback(hObject, eventdata, handles‬‬
‫)'‪set(handles.pushbutton1,'String','Time‬‬
‫رﺷﺘﻪ روي دﻛﻤﻪ ﻓﺸﺎري ‪ 2‬را ﺑﻪ ﻛﻠﻤﻪ ‪ Time‬ﺗﻐﻴﻴﺮ ﻣﻲدﻫﺪ ‪%‬‬
‫)'‪set(handles.text1,'String','Date‬‬
‫رﺷﺘﻪ روي دﻛﻤﻪ ﻣﺘﻦ را ﺑﻪ ﻛﻠﻤﻪ ‪ Date‬ﺗﻐﻴﻴﺮ ﻣﻲدﻫﺪ ‪%‬‬

‫‪130‬‬
‫ﺑﺮﻧﺎﻣﻪي ‪ GUI‬ﻓﻮق از ‪ 3‬ﻃﺮﻳﻖ ﻗﺎﺑﻞ اﺟﺮا اﺳﺖ‪:‬‬
‫‪ -‬در ﭘﻨﺠﺮه ‪ LE‬ﺑﺎ اﻧﺘﺨﺎب ‪ Run‬از ﻣﻴﻠﻪ اﺑﺰار‬
‫‪ -‬در ﭘﻨﺠﺮه ‪ LE‬ﺑﺎ اﻧﺘﺨﺎب ‪ Run‬از ﻣﻨﻮي ‪Tools‬‬
‫‪ -‬از داﺧﻞ ام‪ -‬ﻓﺎﻳﻞ ﺑﻪ ﻃﺮﻳﻖ ﻣﻌﻤﻮل اﺟﺮاي ام‪ -‬ﻓﺎﻳﻞﻫﺎ‬
‫ﻫﺮ ﺑﺮﻧﺎﻣﻪ ‪ GUI‬داراي دو ﻓﺎﻳﻞ اﺳﺖ‪ ،‬ﻳﻜﻲ ﺑﺎ ﭘﺴﻮﻧﺪ ‪ .fig‬ﻛﻪ ﮔﺮاﻓﻴﻜﻲ اﺳﺖ و ﺳﺎﺧﺘﺎر ﭘﻨﺠﺮه ﺧﺮوﺟﻲ و اﺷﻴﺎء داﺧﻞ آن‬
‫را درﺑﺮ ﻣﻲﮔﻴﺮد‪ ،‬و دﻳﮕﺮي ﺑﺎ ﭘﺴﻮﻧﺪ ‪) .m‬ام‪ -‬ﻓﺎﻳﻞ( ﻛﻪ رﻓﺘﺎرﻫﺎي ﻫﺮ ﺷﻴﺊ را ﺑﻪ ﺻﻮرت ﺑﺮﻧﺎﻣﻪ ‪ code‬ﻧﮕﻪ ﻣﻲدارد‪.‬‬

‫اﺟﺮاي ‪ GUI‬و ﺑﺎز ﻛﺮدن ﻗﺴﻤﺖ ﮔﺮاﻓﻴﻜﻲ آن ﺑﺮاي ادﻳﺖ‪ ،‬دو ﻋﻤﻞ ﻣﺘﻔﺎوت ﻫﺴﺘﻨﺪ‪.‬‬
‫ﺳﺆال‪ :‬ﭘﻨﺠﺮه ‪ GUI‬ﻣﺜﺎل ﻓﻮق را ﺑﺎز ﻛﻨﻴﺪ )ﻗﺴﻤﺖ ﮔﺮاﻓﻴﻜﻲ ﻳﻚ ‪ GUI‬ﺑﺎ اﺟﺮاي ‪ guide‬و اﻧﺘﺨﺎب ﺷﺴﺘﻲ‬
‫‪ open existing GUI‬ﺑﺮاي ادﻳﺖ ﺷﺪن ﺑﺎز ﻣﻲﺷﻮد(‪ .‬ﺳﭙﺲ از ﻣﻨﻮي ‪ Tools‬ﺑﺮ اﻧﺘﺨﺎب ‪GUI Options‬‬
‫ﻛﻠﻴﻚ ﻛﺮده در ﭘﻨﺠﺮه دﻳﺎﻟﻮگ ﺑﺎز ﺷﺪه ﻣﻘﺎﺑﻞ ﻋﻨﻮان ‪ Resize behavior:‬اﻧﺘﺨﺎب ‪ Proportional‬را‬
‫ﺑﻴﺎورﻳﺪ‪ .‬ﺳﭙﺲ ﭘﻨﺠﺮه را اﺟﺮا ﻛﻨﻴﺪ‪ .‬اﻳﻦﺑﺎر اﻧﺪازه ﭘﻨﺠﺮه ﺧﺮوﺟﻲ اﻳﺠﺎد ﺷﺪه ﻗﺎﺑﻞ ﺗﻐﻴﻴﺮ اﺳﺖ‪ ،‬ﺑﺎ ﺑﺮدن ﻣﺎوس ﺑﻪ ﮔﻮﺷﻪﻫﺎي‬
‫آن و ﻓﺸﺮده‪ -‬ﻛﺸﻴﺪن‪ ،‬اﺑﻌﺎد ﭘﻨﺠﺮه را ﺗﻐﻴﻴﺮ دﻫﻴﺪ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫ﺷﺒﻴﻪ ﺳﺎزي ﻣﺪوﻻﺳﻴﻮن داﻣﻨﻪ‬
‫ﻳﻚ ﻣﺪوﻻﺳﻴﻮن داﻣﻨﻪ را ﻣﻄﺎﺑﻖ ﺷﻜﻞ‪ ،‬ﺷﺒﻴﻪ ﺳﺎزي ﻛﻨﻴﺪ‪ .‬ﻓﺮﻛﺎﻧﺲ ‪) Signal‬ﭘﻴﺶﻓﺮض ‪ (100‬روي ﻓﺮﻛﺎﻧﺲ ‪Carrier‬‬
‫)ﭘﻴﺶﻓﺮض ‪ (1000‬ﻣﺪوﻟﻪ )‪ (AM‬ﻣﻲﺷﻮد‪ .‬داﻣﻨﻪ و ﮔﺎم زﻣﺎن زﻳﺮ ﻣﺘﻦ اﻳﺴﺘﺎي ‪ Duration‬ﻣﻲآﻳﺪ‪ .‬ﻓﺸﺮدن دﻛﻤﻪ‬
‫‪ Modulate‬ﺷﺒﻴﻪﺳﺎزي را اﻧﺠﺎم ﻣﻲدﻫﺪ‪ .‬ﻣﺤﻮر ‪ axes1‬ﺷﻜﻞﻣﻮج ﻣﺪوﻟﻪ را ﻧﻤﺎﻳﺶ ﻣﻲدﻫﺪ‪ .‬ﺳﭙﺲ در داﺧﻞ ﺑﺮﻧﺎﻣﻪ‬
‫)ﻛﻪ ﺷﺮح آن در زﻳﺮ آﻣﺪه( ﺳﺮي ﻓﻮرﻳﻪ اﻳﻦ ﺷﻜﻞ ﻣﻮج ﺗﻌﻴﻴﻦ و دوﺑﺎره ﺗﺒﺪﻳﻞ ﻓﻮرﻳﻪ ﻣﻌﻜﻮس اﻧﺠﺎم ﻣﻲﺷﻮد ﻛﻪ ﺑﺎﻳﺴﺘﻲ‬
‫ﻧﺘﻴﺠﻪ آن‪ ،‬ﺷﻜﻞ ﻣﻮج اوﻟﻴﻪ ﺑﺎﺷﺪ‪ .‬ﻧﺘﻴﺠﻪ روي ‪ axes2‬ﻧﻤﺎﻳﺶ داده ﻣﻲﺷﻮد‪.‬‬
‫‪ LE‬را ﻣﻄﺎﺑﻖ ﺷﻜﻞ ‪ 4-14‬ﻣﻲﺳﺎزﻳﻢ‪:‬‬

‫ﺷﻜﻞ ‪4-14‬‬

‫‪131‬‬
‫ﺟﺪول زﻳﺮ ﺷﺎﺧﺼﻪﻫﺎي اﺷﻴﺎء را ﺑﻪ دﺳﺖ ﻣﻲدﻫﺪ‪:‬‬
‫ﻋﻨﻮان ‪) String or Name‬ادﻳﺖ ﺷﺪه( ﺑﺮﭼﺴﺐ ‪) Tag‬ﭘﻴﺶﻓﺮض(‬ ‫ﺷﻴﺊ‬
‫‪figure1‬‬ ‫‪TwoA‬‬ ‫‪LE‬‬
‫‪text1...text5‬‬ ‫‪ 5 Static Text‬دﻛﻤﻪ ﻣﺘﻦ اﻳﺴﺘﺎ را ﻣﻄﺎﺑﻖ ﺷﻜﻞ ﻧﺎم ﮔﺬارﻳﺪ‬
‫‪edit1...edit3‬‬ ‫‪100, 1000, 0:0.0001:0.03‬‬ ‫‪Edit‬‬
‫‪axes1,axes2‬‬ ‫‪Axes‬‬
‫‪pushbutton1‬‬ ‫‪Modulate‬‬ ‫‪Push Button‬‬
‫در ﭘﻨﺠﺮه ‪ LE‬اﻧﺘﺨﺎب ‪ Run‬را از ﻣﻴﻠﻪ اﺑﺰار ﻳﺎ از ﻣﻨﻮي ‪ Tools‬اﺟﺮا ﻣﻲﻛﻨﻴﻢ‪ .‬ﻳﻚ ام‪ -‬ﻓﺎﻳﻞ ﺑﺮاي ﻧﮕﻪداري دﺳﺘﻮرات‬
‫ﺑﺮﻧﺎﻣﻪ ﺑﺎز ﻣﻲﺷﻮد‪ .‬ﻧﺎم آن را ‪ TwoA.m‬ﻣﻲﮔﺬارﻳﻢ‪ .‬ﻧﺎم ‪ LE‬ﻫﻢ ﺧﻮدﺑﻪﺧﻮد ‪ TwoA.fig‬ﻣﻲﺷﻮد‪ .‬ﻫﺮدو ﻓﺎﻳﻞ در‬
‫دﻳﺮﻛﺘﻮري ﺟﺎري ذﺧﻴﺮه ﻣﻲﺷﻮﻧﺪ‪ .‬ﺣﺎل ﺑﺮاي ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﺑﻪ داﺧﻞ‪ TwoA.m‬ﻣﻲروﻳﻢ‪ .‬در ﻣﺘﻦ ﺗﺎﺑﻊ ﻓﺮاﺧﻮان‬
‫‪ pushbutton1‬ﺑﺮﻧﺎﻣﻪ زﻳﺮ را وارد ﻣﻲﻛﻨﻴﻢ‪ .‬ﺑﻪ دﺳﺘﻮرﻫﺎ و ﺳﻄﺮﻫﺎي راﻫﻨﻤﺎ ‪ comments‬ﻛﻪ در داﺧﻞ ام‪ -‬ﻓﺎﻳﻞ ﺑﻪ‬
‫ﺻﻮرت ﺧﻮدﻛﺎر ﻧﻮﺷﺘﻪ ﺷﺪه ﻛﺎري ﻧﺪارﻳﻢ‪.‬‬
‫)‪function pushbutton1_Callback(hObject, eventdata, handles‬‬
‫;))'‪f1 = str2double(get(handles.edit1,'String‬‬
‫ﻧﻮﺷﺘﻪ روي دﻛﻤﻪ ﺑﺎ ﺑﺮﭼﺴﺐ ‪ edit1‬را ﺑﻪ ﻋﺪد ﺗﺒﺪﻳﻞ و در ‪ f1‬ﻣﻲرﻳﺰد‪% .‬‬
‫;))'‪f2 = str2double(get(handles.edit2,'String‬‬
‫;))'‪t = eval(get(handles.edit3,'String‬‬
‫ﻧﻮﺷﺘﻪ روي دﻛﻤﻪ ‪ edit3‬را ﺑﻪ ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﻋﺪدي ﺗﺒﺪﻳﻞ ﻣﻲﻛﻨﺪ ‪%‬‬
‫;‪omg1 = 2*pi*f1‬‬
‫;‪omg2 = 2*pi*f2‬‬
‫;)‪yt = cos(omg1*t) .* cos(omg2*t‬‬
‫ﻣﺤﻮر اوﻟﻲ ﻓﻌﺎل ﻣﻲﺷﻮد ‪axes(handles.axes1) %‬‬
‫)‪plot(omg1*t, yt‬‬
‫درﺟﻪ ﮔﺬاري رﻳﺰ ﻣﺤﻮر اﻓﻘﻲ را آﺷﻜﺎر ﻣﻲﻛﻨﺪ ‪set(handles.axes1,'XMinorTick','on')%‬‬
‫‪grid on‬‬
‫‪yf = fft(yt);%‬‬ ‫ﺳﺮي ﻓﻮرﻳﻪِ ﺷﻜﻞ ﻣﻮج ﺗﻌﻴﻴﻦ ﻣﻲﺷﻮد‪ ،‬ﺿﺮاﺋﺐ اﻳﻦ ﺳﺮي اﻋﺪاد ﻣﻮﻫﻮﻣﻲ ﻫﺴﺘﻨﺪ‬
‫ﻣﻌﻜﻮس ﺳﺮي ﻓﻮرﻳﻪ ﺑﺮاي ﻣﻘﺎدﻳﺮ ﺣﻘﻴﻘﻲ ﺿﺮاﺋﺐ ﻓﻮرﻳﻪ ﺗﻌﻴﻴﻦ ﻣﻲﺷﻮﻧﺪ ‪yt1=real(ifft(yf));%‬‬
‫ﻣﺤﻮر دوﻣﻲ ﻓﻌﺎل ﻣﻲﺷﻮد ‪axes(handles.axes2)%‬‬
‫)‪plot(omg1*t, yt1‬‬
‫درﺟﻪ ﮔﺬاري رﻳﺰ ﻣﺤﻮر اﻓﻘﻲ را آﺷﻜﺎر ﻣﻲﻛﻨﺪ ‪set(handles.axes2,'XMinorTick','on')%‬‬
‫‪grid on‬‬
‫ﻣﺤﻮرﻳﻦ‪ (axes1) 1‬ﻣﻮج ﻣﺪوﻟﻪ را ﻧﺸﺎن ﻣﻲدﻫﺪ‪ .‬ﺑﺮاي ﻧﻤﺎﻳﺶ روي ﻣﺤﻮرﻳﻦ‪ (axes2)2‬اﺑﺘﺪا از ﻣﻮج ‪ AM‬ﺑﺎ ﺗﺎﺑﻊ‬
‫)(‪ fft‬ﺗﺒﺪﻳﻞ ﻓﻮرﻳﻪ ﻣ‪‬ﻘَﻄﱠﻊ )ﺳﺮي ﻓﻮرﻳﻪ( ﮔﺮﻓﺘﻪاﻳﻢ‪ .‬ﺳﭙﺲ ﻗﺴﻤﺖ ﺣﻘﻴﻘﻲ ﺿﺮاﺋﺐ ﻓﻮرﻳﻪ را ﺑﺎ ﺗﺎﺑﻊ )(‪ real‬ﭘﻴﺪا ﻛﺮده‬
‫و ﺑﺎ ﺗﺎﺑﻊ )(‪ ifft‬ﺗﺒﺪﻳﻞ ﻓﻮرﻳﻪ ﻣﻌﻜﻮس اﻧﺠﺎم دادهاﻳﻢ‪ .‬ﺑﺎﻳﺴﺘﻲ ﺷﻜﻞ ﻣﻮج اوﻟﻴﻪ دو ﺑﺎره ﺑﻪ دﺳﺖ آﻳﺪ‪ .‬ﻧﺘﻴﺠﻪ اﺟﺮا ﭘﺲ از‬
‫ﻳﻚ ﺑﺎر ﻓﺸﺮدن دﻛﻤﻪ ‪ Modulate‬ﺷﻜﻞ ‪ 5-14‬اﺳﺖ‪.‬‬
‫ﺳﺆال‪ :‬ﻣﻘﺎدﻳﺮ ﺳﻴﮕﻨﺎل‪ ،‬ﻛﺮﻳﺮ‪ ،‬و ﻓﺎﺻﻠﻪ زﻣﺎﻧﻲ را ﭼﻨﺪ ﺑﺎر ﺗﻐﻴﻴﺮ دﻫﻴﺪ و ﻧﺘﻴﺠﻪ را ﺑﺎ ﻓﺸﺮدن دﻛﻤﻪ ‪ Modulate‬ﺑﺒﻴﻨﻴﺪ‪.‬‬

‫‪ 2-14‬ﺗﻤﺮﻳﻦ‬
‫ﻳﻚ ‪ GUI‬ﺑﻪ ﻧﺎم ‪) new‬ﻣﻄﺎﺑﻖ ﺷﻜﻞ ‪ (6-14‬ﻃﺮاﺣﻲ ﻛﻨﻴﺪ ﻛﻪ ﺑﺎ ﻓﺸﺮدن دﻛﻤﻪ ‪ Start‬اﻋﺪاد اول را ﻧﻤﺎﻳﺶ دﻫﺪ‪ .‬و ﺑﺎ‬
‫ﻓﺸﺮدن دﻛﻤﻪ ‪ Exit‬ﺑﺮﻧﺎﻣﻪ ﺗﻤﺎم و ﭘﻨﺠﺮه ﺑﺴﺘﻪ ﺷﻮد‪ .‬ﻣﺠﻤﻮﻋﻪ اﺷﻴﺎء اﻳﻦ ‪ GUI‬در ﺟﺪول آﻣﺪه اﺳﺖ‪.‬‬
‫راﻫﻨﻤﺎ‪ :‬ﺑﺮاي ﺑﺴﺘﻦ ﭘﻨﺠﺮه از دﺳﺘﻮر )‪ close(handles.new‬اﺳﺘﻔﺎده ﺷﻮد‪.‬‬

‫‪132‬‬
(‫ )ﭘﻴﺶﻓﺮض‬Tag ‫ﺑﺮﭼﺴﺐ‬ (‫ )ادﻳﺖ ﺷﺪه‬String or Name ‫ﻋﻨﻮان‬ ‫ﺷﻴﺊ‬
tex1 Enter the upper limit(5<n<100) Static Text
edit1 100 Edit
pushbutton1 Start Push Button
text2 Output Static Text
text3 Static Text
pushbutton2 Exit Push Button

5-14 ‫ﺷﻜﻞ‬

6-14 ‫ﺷﻜﻞ‬

133
EXCEL ‫ﺑﺨﺶ دو‬

134
‫ﻓﺼﻞ ‪ 15‬ﻧﻜﺎﺗﻲ ﭘﻴﺮاﻣﻮن ﺻﻔﺤﻪ ﮔﺴﺘﺮده‬
‫‪ 1-15‬ﺑﺮﭼﺴﺐ ﮔﺬاري‬
‫ﺑﺮﭼﺴﺐ ﭘﻴﺶ ﻓﺮض ﻳﻚ ﺳﻠﻮل‬
‫ﭘﺲ از اﺟﺮاي ﺑﺮﻧﺎﻣﻪ اﻛﺴﻞ‪ ،‬ﺻﻔﺤﻪ ﮔﺴﺘﺮده ﺑﻪ ﺻﻮرت ﻳﻚ ﺟﺪول ﭘﻴﺶ روي ﻣﺎ ﻇﺎﻫﺮ ﻣﻲﺷﻮد‪ .‬ﻫﺮ ﺧﺎﻧﻪ اﻳﻦ ﺟﺪول ﻳﻚ‬
‫ﺳﻠﻮل ﻧﺎﻣﻴﺪه ﻣﻲﺷﻮد‪ .‬ﺑﺮﭼﺴﺐ ﺳﺘﻮنﻫﺎ ﺑﺎ ﺣﺮوف ﺑﺰرگ اﻧﮕﻠﻴﺴﻲ در ﺑﺎﻻي ﺟﺪول و ﺑﺮﭼﺴﺐ ردﻳﻒﻫﺎ ﺑﺎ ﻋﺪد در ﻣﻨﺘﻬﺎاﻟﻴﻪ‬
‫ﺳﻤﺖ ﭼﭗ ﺟﺪول آﻣﺪهاﻧﺪ‪ .‬ﺑﺮﭼﺴﺐ ﭘﻴﺶﻓﺮض ﻫﺮ ﺳﻠﻮل از ﺗﻘﺎﻃﻊ ﻧﺎم ﺳﺘﻮن و ردﻳﻒ آن ﺳﻠﻮل ﺣﺎﺻﻞﺷﺪه و ﺑﺮﭼﺴﺐ‬
‫ﺳﺘﻮن‪ -‬ردﻳﻒ ﮔﻔﺘﻪ ﻣﻲﺷﻮد‪ .‬ﺑﺮﭼﺴﺐ ﺳﺘﻮن‪ -‬ردﻳﻒ ﻫﺮ ﺳﻠﻮل ﻣﺸﺎﺑﻪ ﻧﺎم ﻣﺘﻐﻴﺮ در زﺑﺎنﻫﺎي ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ اﺳﺖ‪ .‬ﻣﺮﺑﻊ‬
‫ﻛﻮﭼﻚ در ﮔﻮﺷﻪ ﻳﻚ ﺳﻠﻮل ﻓﻌﺎل )ﺳﻠﻮﻟﻲ ﻛﻪ روي آن ﻛﻠﻴﻚ ﺷﺪه( ﮔﻴﺮه اﻧﺘﻘﺎل ‪ fill handle‬ﻧﺎم دارد‪ ،‬و ﻣﺤﺘﻮﻳﺎت‬
‫ﻳﻚ ﺳﻠﻮل را ﺑﻪ ﻃﻮر ﻧﺴﺒﻲ ﺑﻪ اﻃﺮاف ﻣﻲﻛﺸﺪ‪ .‬ﺑﺮاي اﻃﻼع ﺑﻴﺸﺘﺮ ﺑﻪ ﻣﻄﺎﻟﻌﻪ ﻣﺒﺎﺣﺚ اداﻣﻪ دﻫﻴﺪ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫ﺑﺮاي ﻓﻌﺎل ﻛﺮدن ﺳﻠﻮل ‪ D7‬اﺑﺘﺪا روي آن ﻛﻠﻴﻚ ﻣﻲﻛﻨﻴﻢ‪ .‬ﺑﺮﭼﺴﺐ ﺳﺘﻮن‪ -‬ردﻳﻒِ ﭘﻴﺶﻓﺮض ﻫﺮ ﺳﻠﻮل در ﺟﻌﺒﻪي ﻧﺎم ﻧﺸﺎن‬
‫داده ﻣﻲﺷﻮد‪.‬‬
‫→ﺟﻌﺒﻪ ﻧﺎم‬ ‫ﻣﻴﻠﻪ ﻓﺮﻣﻮل←‬

‫ﺳﻠﻮل ﻓﻌﺎل ‪D7‬‬


‫↓‬

‫↑ ﮔﻴﺮه اﻧﺘﻘﺎل‬
‫ﺷﻜﻞ ‪1-15‬‬

‫ﺑﺮﭼﺴﺐ ﮔﺬاري دل ﺧﻮاه‪ ،‬ﻣﺘﻐﻴﺮ و آراﻳﻪ در اﻛﺴﻞ‬


‫ﻣﻲﺗﻮاﻧﻴﻢ ﺑﺮﭼﺴﺐﻫﺎي دلﺧﻮاﻫﻲ را ﺑﺮاي ﻳﻚ ﺳﺘﻮن ﻳﺎ ﻳﻚ ردﻳﻒ در ﻣﺤﻠﻲ از ﺟﺪول وارد ﻛﻨﻴﻢ‪ .‬و ﺳﭙﺲ در ارﺟﺎﻋﺎت از‬
‫ﺑﺮﭼﺴﺐﻫﺎي اﺧﺘﺼﺎﺻﻲ ﺧﻮدﻣﺎن اﺳﺘﻔﺎده ﻛﻨﻴﻢ‪ .‬ﺳﻠﻮل ﻣﺤﻞ ﺗﻘﺎﻃﻊ ﺑﺮﭼﺴﺐﻫﺎي دلﺧﻮاه ﻧﺎم ﺳﺘﻮن‪ -‬ردﻳﻒ ﺟﺪﻳﺪ را ﺧﻮاﻫﺪ‬
‫ﮔﺮﻓﺖ‪ .‬ﺑﺮاي ﻓﻌﺎل ﻛﺮدن ﺑﺮﭼﺴﺐ ﮔﺬاري دلﺧﻮاه ﺑﺎﻳﺴﺘﻲ اﺑﺘﺪا اﻧﺘﺨﺎب زﻳﺮ را ﺗﻴﻚ ﺑﺰﻧﻴﻢ‪:‬‬
‫‪Tools_Options_Calculation_Accept labels in formulas‬‬
‫اﮔﺮ ﻳﻚ ﺳﻠﻮل را ﻣﺸﺎﺑﻪ ﻳﻚ ﻣﺘﻐﻴﺮ در ﻧﻈﺮ ﺑﮕﻴﺮﻳﻢ‪ ،‬ﻧﺎم ﭘﻴﺶﻓﺮض ﻣﺘﻐﻴﺮ ﻫﻤﺎن ﺑﺮﭼﺴﺐ ﺳﺘﻮن‪ -‬ردﻳﻒ آن اﺳﺖ‪ .‬اﻟﺒﺘﻪ ﺑﺎ‬
‫ﺑﺮﭼﺴﺐ ﮔﺬاري و ﻧﺎمﮔﺬاري ﻣﻲﺗﻮان ﻧﺎم ﻣﺘﻐﻴﺮ )ﺳﻠﻮل( را ﺑﻪ دلﺧﻮاه ﺗﻌﻴﻴﻦ ﻛﺮد‪ .‬اﻣﺎ ﻧﺎم ﭘﻴﺶ ﻓﺮض ﻫﻤﻴﺸﻪ ﻣﻌﺘﺒﺮ ﻣﻲﻣﺎﻧﺪ و‬
‫ﻗﺎﺑﻞ ﻣﺮاﺟﻌﻪ اﺳﺖ‪ .‬ﺑﺮ ﭼﺴﺐ ﻳﺎ ﻧﺎم ﺳﻠﻮل در ﺟﻌﺒﻪ ﻧﺎم ﻧﺸﺎن داده ﻣﻲﺷﻮد‪.‬‬
‫ﻣﻲﺗﻮان ﻣﻘﺪار ﺳﻠﻮل را ﻳﻚ رﺷﺘﻪ ﻗﺮار داد‪ .‬از رﺷﺘﻪﻫﺎ ﺑﺮاي ﺗﻮﺿﻴﺢ ﻣﻄﺎﻟﺐ ﻳﺎ ﺑﺮﭼﺴﺐﮔﺬاري ﻳﺎ ﻧﺎمﮔﺬاري )ﺗﻮﺿﻴﺢ ﻧﺎم‪-‬‬
‫ﮔﺬاري ﺑﻌﺪاٌ ﻣﻲآﻳﺪ( اﺳﺘﻔﺎده ﻣﻲﺷﻮد‪ .‬رﺷﺘﻪ اي ﻛﻪ ﻣﻘﺪار ﺳﻠﻮل اﺳﺖ در داﺧﻞ آن ﻧﻤﺎﻳﺶ داده ﻣﻲﺷﻮد‪.‬‬
‫ﻣﻲﺗﻮان ﻣﻘﺪار ﺳﻠﻮل را ﻳﻚ ﻋﺪد ﻗﺮار داد‪ .‬اﻳﻦ ﻋﺪد در داﺧﻞ ﺳﻠﻮل ﻧﻤﺎﻳﺶ داده ﻣﻲﺷﻮد‪.‬‬
‫اﮔﺮ ﻣﻘﺪار ﺳﻠﻮل ﻧﺘﻴﺠﻪ ﻳﻚ ﻣﺤﺎﺳﺒﻪ ﺑﺎﺷﺪ‪ ،‬ﻣﻘﺪار در ﻣﺤﻞ ﺳﻠﻮل ﻧﺸﺎن داده ﻣﻲﺷﻮد‪ .‬ﻓﺮﻣﻮلِ ﻣﺤﺎﺳﺒﻪ در ﻣﻴﻠﻪ ﻓﺮﻣﻮل ﻧﺸﺎن‬
‫داده ﻣﻲﺷﻮد‪.‬‬
‫‪135‬‬
‫وﻗﺘﻲ ﺑﻪ ﻳﻚ ﺳﺘﻮن ﻣﺮاﺟﻌﻪ ﻛﻨﻴﻢ ﻧﺎم ﺳﺘﻮن ﻣﺎﻧﻨﺪ ﻧﺎم آراﻳﻪاي ﻋﻤﻞ ﻣﻲﻛﻨﺪ ﻛﻪ اﻋﻀﺎء آن آراﻳﻪ ﺳﻠﻮلﻫﺎي واﻗﻊ در ﺑﻴﻦ ﻧﺎم‬
‫ﺳﺘﻮن و ﻣﺤﻞ ﻓﺮﻣﻮل اﺳﺖ‬
‫ﻣﺜﺎل ﻫﺎ‪:‬‬
‫ﻣﺮاﺟﻌﻪ ﺑﻪ ﻧﺎم ﻣﺘﻐﻴﺮ )ﺳﻠﻮل(‬
‫ﻳﻚ ﺑﺮﭼﺴﺐ ﺳﺘﻮن در ﻣﺤﻞ ‪ C3‬و ﻳﻚ ﺑﺮﭼﺴﺐ ردﻳﻒ در ﻣﺤﻞ ‪ B6‬وارد ﻣﻲﻛﻨﻴﻢ‪ .‬در ﺳﻠﻮل ﻣﺤﻞ ﺗﻘﺎﻃﻊ آن دو ﻳﻌﻨﻲ ‪C6‬‬
‫)ﻛﻪ از اﻳﻦ ﭘﺲ ﺑﺎ ﺑﺮﭼﺴﺐ ‪ Cnam Rnam‬ﻧﻴﺰ ﻗﺎﺑﻞ ارﺟﺎع اﺳﺖ( ﻋﺪد ‪ 25‬را وارد ﻣﻲﻛﻨﻴﻢ‪ .‬ﺳﭙﺲ ﺑﻪ ﺳﻠﻮل ‪ A8‬رﻓﺘﻪ ﺑﺎ‬
‫ارﺟﺎع ﺑﻪ ﺳﻠﻮل ‪ Cnam Rnam‬دو ﺑﺮاﺑﺮ ﻣﻘﺪار آن را در ‪ A8‬ﻗﺮار ﻣﻴﺪﻫﻴﻢ‪ .‬وﺿﻌﻴﺖ ﻣﻴﻠﻪ ﻓﺮﻣﻮل و ﺟﻌﺒﻪ ﻧﺎم را ﺑﺮرﺳﻲ‬
‫ﻣﻲﻛﻨﻴﻢ‪.‬‬
‫ﻫﻤﺎنﻃﻮر ﻛﻪ در ﺷﻜﻞ ‪ 2-15‬ﻣﻲﺷﻮد‪ ،‬ﺳﻠﻮل ‪ A8‬را ﻣﺴﺎوي ﺑﺮﭼﺴﺐ ﺟﺪﻳﺪِ ‪) C6‬ﻳﻌﻨﻲ ‪ (Cnam Rnam‬ﺿﺮب در دو‬
‫ﻗﺮار دادهاﻳﻢ‪ .‬اﮔﺮ در ﻣﺤﻞ ‪ A8‬ﻓﺮﻣﻮلِ ‪ 2*C6‬را ﻫﻢ وارد ﻛﻨﻴﻢ ﻫﻤﻴﻦ ﻧﺘﻴﺠﻪ ﺣﺎﺻﻞ ﻣﻲﺷﻮد‪.‬‬
‫→ ﺟﻌﺒﻪ ﻧﺎم‬ ‫ﻣﻴﻠﻪ ﻓﺮﻣﻮل ←‬

‫ﺷﻜﻞ ‪2-15‬‬

‫در زﻳﺮِ ‪ Cnam‬ﺳﻪ ﻋﺪد وارد ﻣﻲﻛﻨﻴﻢ‪ ،‬ﺣﺎﺻﻞﺟﻤﻊ آنﻫﺎ را ﺑﺎ اﺳﺘﻔﺎده از ﺗﺎﺑﻊ ﻛﺘﺎبﺧﺎﻧﻪاي )(‪ SUM‬در ‪ C7‬ﻗﺮار ﻣﻲدﻫﻴﻢ‪.‬‬
‫ﭘﺲ از وارد ﻛﺮدن اﻋﺪاد در زﻳﺮ ‪ Cnam‬ﺑﻪ ‪ C7‬ﻣﻲروﻳﻢ و ﻋﺒﺎرت )‪ =SUM(Cnam‬را وارد ﻣﻲﻛﻨﻴﻢ‪ ،‬ﻣﺠﻤﻮع اﻋﺪاد ﺳﺘﻮن‬
‫‪ Cnam‬در اﻳﻦ ﺳﻠﻮل ﻧﻤﺎﻳﺶ داده ﻣﻲﺷﻮد‪.‬‬

‫ﺷﻜﻞ ‪3-15‬‬

‫ﻣﺮاﺟﻌﻪ ﺑﻪ ﻧﺎم و ﻋﻨﺎﺻﺮ ﻳﻚ ﺳﺘﻮن )آراﻳﻪ(‬


‫ﺗﻌﺪاد ﻋﻨﺎﺻﺮ )ﺳﻠﻮلﻫﺎي( ﻣﺘﻌﻠﻖ ﺑﻪ ﺳﺘﻮن ‪ fx‬ﺷﻜﻞ زﻳﺮ را ﺑﺎ اﺳﺘﻔﺎده از ﺑﺮﭼﺴﺐ ﮔﺬاري در ﺳﻠﻮل ﺑﻌﺪ از آﺧﺮﻳﻦ ﻣﻘﺪار‬
‫ﻗﺮار ﻣﻲدﻫﻴﻢ‪ ،‬از ﺗﺎﺑﻊ )(‪ COUNT‬ﻛﻪ ﻣﺨﺼﻮص ﺷﻤﺎرش اﺳﺖ اﺳﺘﻔﺎده ﻣﻲﻛﻨﻴﻢ‪ .‬ﺷﻜﻞ ‪4-15‬‬

‫‪136‬‬
‫ﻣﺠﻤﻮع ﻋﻨﺎﺻﺮ )ﺳﻠﻮلﻫﺎي( ﻣﺘﻌﻠﻖ ﺑﻪ ﺳﺘﻮن ‪ fxc‬ﺷﻜﻞ ‪ 5-15‬را ﺑﺎ اﺳﺘﻔﺎده از ﺑﺮﭼﺴﺐ ﮔﺬاري در ﺳﻠﻮل ﺑﻌﺪ از آﺧﺮﻳﻦ‬
‫ﻣﻘﺪار ﻗﺮار ﻣﻲدﻫﻴﻢ‪.‬‬

‫ﺷﻜﻞ ‪4-15‬‬ ‫ﺷﻜﻞ ‪5-15‬‬

‫ﻣﻲﺗﻮان از ﻋﻨﻮان ‪ fxc‬ﻛﻪ در ﺑﺎﻻي ﺳﺘﻮن ‪ E‬آﻣﺪه ﺑﺮاي ﺑﺮﭼﺴﺐﮔﺬاري آن ﺳﺘﻮن اﺳﺘﻔﺎده و ﺳﭙﺲ در ﻓﺮﻣﻮلﻫﺎ ﺑﻪ آن‬
‫رﺟﻮع ﻛﺮد‪.‬‬
‫ﻳﺎدآوري ﻣﻲﻛﻨﻢ ﺑﺮاي اﻳﻦ ﻛﻪ ﺑﺮﭼﺴﺐﻫﺎي دلﺧﻮاه ﻗﺎﺑﻞ ارﺟﺎع ﺷﻮﻧﺪ ﺑﺎﻳﺪ از ﻣﻨﻴﻮي اﺻﻠﻲ اﻧﺘﺨﺎب زﻳﺮ ﺗﻴﻚ زده ﺷﻮد‪.‬‬
‫‪Tools_Options_Calculation_Accept labels in formulas‬‬
‫ﻛﺘﺎﺑﺨﺎﻧﻪ داﺧﻠﻲ اﻛﺴﻞ‬
‫ﻫﻤﺎنﻃﻮر ﻛﻪ در ﺗﺼﻮﻳﺮﻫﺎ دﻳﺪه ﻣﻲﺷﻮد ﻓﺮﻣﻮل )‪ COUNT(fx‬ﺗﻌﺪاد ﺳﻠﻮلﻫﺎي ﺳﺘﻮن و ﻓﺮﻣﻮل )‪ SUM(fxc‬ﻣﺠﻤﻮع‬
‫ﻣﻘﺎدﻳﺮ ﺳﺘﻮن را ﺗﻌﻴﻴﻦ ﻣﻲﻛﻨﻨﺪ‪ .‬ﻫﺮ دو ﻓﺮﻣﻮل ﺟﺰو ﻛﺘﺎﺑﺨﺎﻧﻪ داﺧﻠﻲ اﻛﺴﻞ ﻫﺴﺘﻨﺪ ﻛﻪ ﺷﺎﻣﻞ ﺗﻌﺪاد زﻳﺎدي ﺗﻮاﺑﻊ در زﻣﻴﻨﻪﻫﺎي‬
‫ﻣﺨﺘﻠﻒ ﻣﻮرد ﻧﻴﺎز ازﻗﺒﻴﻞ ﺗﻮاﺑﻊ رﻳﺎﺿﻲ‪ ،‬آﻣﺎري‪ ،‬ﺗﺠﺎري‪ ،‬و ‪ ...‬ﻣﻲﺑﺎﺷﺪ‪.‬‬

‫‪ 2-15‬ﻓﺮﻣﻮل دﻫﻲ‬
‫‪Formula Bar‬‬ ‫ﻣﻴﻠﻪ ﻓﺮﻣﻮل‬
‫ﻫﺮ ﻓﺮﻣﻮل ﻛﻪ در ﻳﻚ ﺳﻠﻮل ﻧﻮﺷﺘﻪ ﻣﻲﺷﻮد‪ ،‬ﺷﺎﻣﻞ ﻧﺎم ﺳﻠﻮلﻫﺎي دﻳﮕﺮي از ﺻﻔﺤﻪ ﮔﺴﺘﺮده ﻳﺎ ﻧﺎمﻫﺎي ﺗﻌﺮﻳﻒ ﺷﺪه )ﻛﻪ‬
‫ﺷﺮح آن ﺑﻌﺪاٌ ﻣﻲآﻳﺪ( اﺳﺖ‪ .‬ﻓﺮﻣﻮل ﻧﻮﺷﺘﻪ ﺷﺪه در ﺻﻮرت اﻧﺘﺨﺎب ﺳﻠﻮل ﻣﺮﺑﻮﻃﻪ در ﻣﻴﻠﻪ ﻓﺮﻣﻮل ﻧﺸﺎن داده ﻣﻲﺷﻮد‪.‬‬
‫ﺑﺮﭼﺴﺐِ ﺳﺘﻮن‪ -‬ردﻳﻒِ ﺳﻠﻮل در ﺟﻌﺒﻪ ﻧﺎم ﻧﻤﺎﻳﺶ داده ﻣﻲﺷﻮد‪ .‬ﻫﺮﮔﺎه ﺑﺨﻮاﻫﻴﻢ در ﺳﻠﻮﻟﻲ ﻓﺮﻣﻮل ﻗﺮار دﻫﻴﻢ آن ﺳﻠﻮل را‬
‫اﻧﺘﺨﺎب ﻛﺮده ودر ﻣﻴﻠﻪ ﻓﺮﻣﻮل ﭘﺲ از ﻧﻮﺷﺘﻦ ﻋﻼﻣﺖ ﻣﺴﺎوي ﻓﺮﻣﻮل را وارد ﻣﻴﻜﻨﻴﻢ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫در ﺷﻜﻞ ‪ 6-15‬ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﺑﺮﭼﺴﺐﻫﺎي ﺗﻌﻴﻴﻦ ﺷﺪه ﻓﺮﻣﻮل ‪ fx=ax+b‬را در ﺳﻠﻮل ‪ D2‬ﻗﺮار ﻣﻲدﻫﻴﻢ‪.‬‬
‫اﺑﺘﺪا ﺑﺮاي ﻫﺮ ﺳﺘﻮن در ﺑﺎﻻﺗﺮﻳﻦ ﺳﻄﺮش ﻳﻚ ﻋﻨﻮان ﻣﺎﻧﻨﺪ آنﭼﻪ در ﻓﺮﻣﻮل ﻓﻮق آﻣﺪه ﻗﺮار ﻣﻲدﻫﻴﻢ‪ .‬ﺳﭙﺲ ﺑﻪ ‪ D2‬ﻣﻲروﻳﻢ‬
‫و ﻓﺮﻣﻮل ﻓﻮق را ﺑﺮﺣﺴﺐ ﺑﺮﭼﺴﺐ ﺳﺘﻮن‪ -‬ردﻳﻒ ﺑﻪ اﻳﻦ ﺷﻜﻞ‪ =$A$2*C2+$B2 :‬در ﻣﻴﻠﻪ ﻓﺮﻣﻮل ﻣﻲﻧﻮﻳﺴﻴﻢ‪ .‬ﻫﺮﮔﺎه‬
‫ﺑﻪ ‪ D2‬ﺑﺮوﻳﻢ اﻳﻦ ﻓﺮﻣﻮل در ﻣﻴﻠﻪ ﻓﺮﻣﻮل ﻇﺎﻫﺮ ﻣﻲﺷﻮد‪ .‬در ﻣﺒﺤﺚ ﻧﺎمﮔﺬاري ﺧﻮاﻫﻴﻢ دﻳﺪ ﻛﻪ ﭼﮕﻮﻧﻪ اﻳﻦ ﻓﺮﻣﻮل ﺑﻪ ﺷﻜﻞ‬
‫‪ fx=ax+b‬ﻧﻮﺷﺘﻪ ﻣﻲﺷﻮد‪.‬‬

‫‪137‬‬
‫ﺷﻜﻞ ‪6-15‬‬

‫رﺟﻮع ﻧﺴﺒﻲ و رﺟﻮع ﻣﻄﻠﻖ ﺑﻪ ﺳﻠﻮل‬


‫در رﺟﻮع ﻧﺴﺒﻲ )ﺑﺪون ﻋﻼﻣﺖ ‪ ($‬ﻧﺴﺒﺖ ﻳﺎ ﻓﺎﺻﻠﻪ ﺳﻠﻮلﻫﺎي رﺟﻮع ﻛﻨﻨﺪه و رﺟﻮع ﺷﻮﻧﺪه ﺣﻔﻆ ﻣﻲﺷﻮد‪ ،‬ﻟﺬا ﻓﺮﻣﻮلﻫﺎ‬
‫ﺧﻮد را ﺑﺎ وﺿﻌﻴﺖ ﺟﺪﻳﺪ ﺗﻄﺒﻴﻖ ﻣﻲدﻫﻨﺪ‪ .‬در ﻣﺮاﺟﻌﻪ ﻣﻄﻠﻖ )ﺑﺎ دو ﻋﻼﻣﺖ ‪ $‬در ﻛﻨﺎر ﺑﺮﭼﺴﺐﻫﺎي ﺳﺘﻮن و ردﻳﻒ( ﻣﻘﺪار‬
‫ﻣﻮرد ﻣﺮاﺟﻌﻪ دﺳﺖ ﻧﺨﻮرده ﻣﻲﻣﺎﻧﺪ‪ .‬در ارﺟﺎع ﻧﻴﻤﻪ ﻧﺴﺒﻲ ) ﺑﺎ ﻳﻚ ﻋﻼﻣﺖ ‪ $‬در ﻛﻨﺎر ﻧﺎم ﺳﺘﻮن ﻳﺎ ﻧﺎم ردﻳﻒ( ﻣﻘﺪار آنﻛﻪ‬
‫ﻋﻼﻣﺖ ‪ $‬دارد دﺳﺖ ﻧﺨﻮرده ﻣﻲﻣﺎﻧﺪ‪ ،‬اﻣﺎ دﻳﮕﺮي ﺑﻪ ﺗﻨﺎﺳﺐ ﺟﺎﺑﻪﺟﺎﺋﻲ در ردﻳﻒ ﻳﺎ ﺳﺘﻮن ﺣﺎﻟﺖ ﻧﺴﺒﻲ ﻣﻲﻳﺎﺑﺪ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫در ﺷﻜﻞ ‪ 7-15‬ﻳﻚ ﻛﭙﻲ از ﺳﺘﻮن ‪ fx‬را در ﺳﺘﻮن ‪ fxc‬ﻗﺮار داده‪ ،‬ﻓﺮﻣﻮل ﭘﺪﻳﺪار ﺷﺪه در ﺳﻠﻮل ‪ E3‬را ﺑﺮرﺳﻲ ﻣﻲﻛﻨﻴﻢ‪.‬‬
‫ﺑﺎ دﻗﺖ در ﻣﻴﻠﻪ ﻓﺮﻣﻮل دﻳﺪه ﻣﻲﺷﻮد ﻛﻪ رﺟﻮع ﺑﻪ ﺳﻠﻮلﻫﺎي ردﻳﻒ ‪ C‬ﻧﺴﺒﻲ اﺳﺖ ﻳﻌﻨﻲ ﺑﺎ ﻛﭙﻲ ﻛﺮدن ‪ D3→E3‬ارﺟﺎع ﻫﻢ‬
‫ﻳﻚ ﺧﺎﻧﻪ ﺑﻪ راﺳﺖ آﻣﺪه ‪ . C3→D3‬ﻣﺮاﺟﻌﻪ ﺑﻪ ﺳﻠﻮل ‪ A2‬ﻣﻄﻠﻖ اﺳﺖ زﻳﺮا در ﺧﺎﻧﻪ ‪ E3‬ﻫﻢ ‪ $A$2‬دﺳﺖ ﻧﺨﻮرده‪.‬‬
‫ﻣﺮاﺟﻌﻪ ﺑﻪ ﺳﺘﻮن ‪ B‬ﻧﻴﻤﻪ ﻧﺴﺒﻲ اﺳﺖ زﻳﺮا ﺳﺘﻮن آن ﺛﺎﺑﺖ ﻣﺎﻧﺪه اﻣﺎ ﺷﻤﺎره ردﻳﻒ ﺑﻪ ﺗﻨﺎﺳﺐ ﺟﺎﺑﻪﺟﺎﺋﻲ در ردﻳﻒ )رو ﺑﻪ‬
‫ﭘﺎﺋﻴﻦ( ﺗﻐﻴﻴﺮ ﻛﺮده ‪ .$B2→$B3‬ﺑﻪ اﻳﻦ ﺗﺮﺗﻴﺐ در ﺳﺘﻮن ‪ D‬ﻛﻪ ﻓﺮﻣﻮل ﺟﺒﺮي ‪ fx=ax+b‬ﻧﻮﺷﺘﻪ ﺷﺪه‪ ،‬ﻣﻘﺪار ‪ a‬ﺛﺎﺑﺖ‪،‬‬
‫ﻣﻘﺪار ‪ b‬ﺛﺎﺑﺖ‪ -‬در‪ -‬ﺳﺘﻮن )ﺛﺎﺑﺖ ﻧﺴﺒﻲ(‪ ،‬و ﻣﻘﺪار ‪ x‬ﻣﺘﻐﻴﺮ اﺳﺖ‪.‬‬

‫ﺷﻜﻞ ‪7-15‬‬

‫• ﺑﺮاي ﻣﺮاﺟﻌﻪ ﻧﺴﺒﻲ ﺑﻪ ﻳﻚ ﺳﺘﻮن ﻓﻘﻂ ﺑﺮﭼﺴﺐ آن را ﻣﻲآورﻳﻢ )ﻣﺜﻞ ‪.(C2‬‬


‫• ﺑﺮاي رﺟﻮع ﻣﻄﻠﻖ‪ ،‬ﻗﺒﻞ از ﺑﺮﭼﺴﺐ ﺳﺘﻮن و ﻗﺒﻞ از ﺷﻤﺎره ردﻳﻒ ﻋﻼﻣﺖ ‪ $‬ﻗﺮار ﻣﻲدﻫﻴﻢ )ﻣﺜﻞ ‪.($A$2‬‬
‫• در ارﺟﺎع ﻧﻴﻤﻪ ﻧﺴﺒﻲ ﻳﺎ ﻗﺒﻞ از ردﻳﻒ ﻳﺎ ﻗﺒﻞ از ﺳﺘﻮن ﻋﻼﻣﺖ ‪ $‬ﻗﺮار ﻣﻲﮔﻴﺮد )ﻣﺜﻞ ‪.($B2‬‬

‫‪138‬‬
‫ﻧﺎمﮔﺬاري‬
‫ﺑﺮاي اﺳﺘﻔﺎده از ﻧﺎمﻫﺎي ﺳﺎدهﺗﺮ در ﻓﺮﻣﻮلﻫﺎ‪ ،‬اﺑﺘﺪا ﻧﺎم و ﻣﻘﺪار را در ﺳﻠﻮلﻫﺎي ﻣﺠﺎور ﻫﻢ‪ ،‬ﻋﻤﻮدي ﻳﺎ اﻓﻘﻲ‪ ،‬وارد ﻛﺮده‬
‫ﺳﭙﺲ ﻧﺎم و ﻣﻘﺪار را ﺑﺎ ﻫﻢ اﻧﺘﺨﺎب ﻣﻲﻛﻨﻴﻢ‪ .‬از ﻣﻨﻴﻮي اﺻﻠﻲ ‪ Insert_Name_Create‬را ﻣﻲآورﻳﻢ و ﻧﮕﺎه ﻣﻲﻛﻨﻴﻢ‬
‫ﻧﺎم در ﭼﻪ ﺳﻤﺖِ ﻣﻘﺪار واﻗﻊ ﺷﺪه‪ ،‬و ﺑﺮﺣﺴﺐ ﻧﺴﺒﺖ ﻣﻜﺎﻧﻲ ﻧﺎم ﻋﻤﻞ ﻣﻲﻛﻨﻴﻢ‪ .‬ﻫﻢﭼﻨﻴﻦ ﻣﻲﺗﻮان ﺑﻪ ﻣﺠﻤﻮﻋﻪاي از ﺳﻠﻮلﻫﺎ‬
‫ﻳﻚ ﻧﺎم اﺧﺘﺼﺎص داد‪ ،‬اﻳﻦ ﻧﺎم ﻣﺎﻧﻨﺪ آراﻳﻪاي ﻋﻤﻞ ﻣﻲﻛﻨﺪ ﻛﻪ ﻣﻘﺎدﻳﺮ آن در ﺳﻠﻮلﻫﺎي ﻣﺠﺎور ﻧﺎم ﭼﻴﺪه ﺷﺪهاﻧﺪ‪.‬‬
‫در ﻧﺎمﮔﺬاري دلﺧﻮاه ﻳﻚ ﺳﻠﻮل ﻳﺎ ﻳﻚ ﺳﺘﻮن ﺑﺎﻳﺪ از اﺧﺘﺼﺎص ﻧﺎمﻫﺎﺋﻲ ﻧﻈﻴﺮ ‪ a2, R1, C23‬ﻛﻪ ﺑﺮﭼﺴﺐ ﭘﻴﺶﻓﺮض‬
‫ﻫﺴﺘﻨﺪ ﺧﻮدداري ﻛﺮد‪.‬‬
‫ﻣﺜﺎل ﻫﺎ‪:‬‬
‫دادن ﻧﺎم ﺑﻪ ﻳﻚ ﺳﻠﻮل‬
‫در ﺷﻜﻞ ‪ 8-15‬ﺳﻠﻮل ‪ A2‬را ﺑﺎ ﺣﺮف ‪ a‬ﻧﺎمﮔﺬاري ﻛﺮده و ﻣﻘﺪار ‪ -3‬را ﺑﻪ ‪ a‬ﻧﺴﺒﺖ ﻣﻲدﻫﻴﻢ‪.‬‬
‫اﺑﺘﺪا ﻧﺎم و ﻣﻘﺪار را در ﺳﻠﻮلﻫﺎي ﻣﺠﺎور ﻫﻢ‪ ،‬ﻋﻤﻮدي ﻳﺎ اﻓﻘﻲ‪ ،‬وارد ﻛﺮده ﺳﭙﺲ آنﻫﺎ را اﻧﺘﺨﺎب ﻣﻲﻛﻨﻴﻢ‪ .‬از ﻣﻨﻴﻮي اﺻﻠﻲ‬
‫‪ Insert_Name_Create‬را ﻣﻲآورﻳﻢ و ﻧﮕﺎه ﻣﻲﻛﻨﻴﻢ ﻧﺎم در ﭼﻪ ﺳﻤﺖِ ﻣﻘﺪار واﻗﻊ ﺷﺪه‪ .‬در ﻣﺜﺎل زﻳﺮ ﭼﻮن ﻧﺎم‬
‫ﺑﺎﻻي ﻣﻘﺪار اﺳﺖ ‪ Top row‬را ﺗﻴﻚ زده ‪ OK‬ﻣﻲﻛﻨﻴﻢ‪ .‬ﺑﻪ اﻳﻦ ﺗﺮﺗﻴﺐ ﻣﺘﻐﻴﺮي ﻋﺪدي ﺑﺎ ﻧﺎم ‪ a‬و ﺑﺎ ﻣﻘﺪار ‪ -3‬ﺑﻪ ﻣﺠﻤﻮﻋﻪ‬
‫ﻧﺎمﻫﺎي ﺻﻔﺤﻪ ﮔﺴﺘﺮده اﻓﺰوده ﻣﻲﺷﻮد‪ .‬ﺣﺎﻻ اﮔﺮ ﺳﻠﻮل ‪ A2‬را اﻧﺘﺨﺎب ﻛﻨﻴﻢ‪ ،‬در ﻣﻴﻠﻪ ﺑﺮﭼﺴﺐ ﻧﺎم آن ‪ a‬ﻧﻤﺎﻳﺶ داده ﻣﻲﺷﻮد‬
‫)ﺷﻜﻞ ‪ .(9-15‬از اﻳﻦ ﺑﻪ ﺑﻌﺪ ﺑﻪ اﻳﻦ ﺳﻠﻮل ﻫﻢ ﻣﻲﺗﻮان ﺑﺎ ﻧﺎم ‪ a‬و ﻫﻢ ﺑﺎ ﺑﺮﭼﺴﺐ ‪ A2‬ﻣﺮاﺟﻌﻪ ﻛﺮد‪ .‬ﻧﺎم ‪ a‬را ﺑﻌﺪاٌ ﻣﻲﺗﻮان‬
‫ﺗﻐﻴﻴﺮ داد‪.‬‬

‫ﺷﻜﻞ ‪9-15‬‬

‫ﺷﻜﻞ ‪8-15‬‬

‫دادن ﻧﺎم ﺑﻪ آراﻳﻪ‬


‫در ﺷﻜﻞ ‪ b 10-15‬و ‪ x‬را ﺑﻪ ﺻﻮرت دو ﻣﺘﻐﻴﺮ آراﻳﻪاي ﺗﻌﺮﻳﻒ ﻛﺮده و ﻣﻘﺎدﻳﺮ زﻳﺮ ﻫﺮ ﺳﺘﻮن را ﺑﻪ آراﻳﻪ ﻣﺮﺑﻮﻃﻪ ﻧﺴﺒﺖ‬
‫ﻣﻲدﻫﻴﻢ‪ .‬اﺑﺘﺪا ﻧﺎمﻫﺎ و ﻣﻘﺎدﻳﺮ را اﻧﺘﺨﺎب ﻛﺮده‪ ،‬ﺑﻪ ﺗﺮﺗﻴﺐ ﻣﻠﺤﻮظ در ﺷﻜﻞ ﻋﻤﻞ ﻣﻲﻛﻨﻴﻢ‪ ،‬ﻧﺎم آراﻳﻪﻫﺎ ‪ b‬و ‪ x‬ﻣﻲﺷﻮﻧﺪ‪.‬‬

‫ﺷﻜﻞ ‪10-15‬‬

‫‪139‬‬
‫وارد ﻛﺮدن ﻓﺮﻣﻮل ﺑﺎ اﺳﺘﻔﺎده از ﻧﺎمﻫﺎي ﻗﺮاردادي‬
‫ﺑﻪ ‪ D2‬رﻓﺘﻪ ﻓﺮﻣﻮل ‪ a*x+b‬را وارد ﻣﻴﻜﻨﻴﻢ‪ ،‬ﺳﭙﺲ ﺑﺎ ﮔﻴﺮه اﻧﺘﻘﺎل ﻓﺮﻣﻮل را ﺑﻪ ﺧﺎﻧﻪﻫﺎي زﻳﺮﻳﻦ ﻣﻲﻛﺸﻴﻢ )ﺷﻜﻞ ‪(11-15‬‬
‫ﭼﻮن ﻋﻼﻣﺖ ‪ $‬وﺟﻮد ﻧﺪارد اﻧﺘﻘﺎل ﻧﺴﺒﻲ ﺧﻮاﻫﺪ ﺑﻮد‪.‬‬

‫ﺷﻜﻞ ‪11-15‬‬

‫‪ 3-15‬ﭘﺮ ﻛﺮدن ﺳﻠﻮل ﻫﺎ ﺑﺎ ﻟﻴﺴﺖ ﻫﺎي ﻗﺮاردادي‬


‫ﻣﺜﺎل‪:‬‬
‫روزﻫﺎي ﻫﻔﺘﻪ را ﺑﻪ ﺻﻮرت ﺳﺮي در ﺧﺎﻧﻪﻫﺎي اﻓﻘﻲ ﻳﻚ ﺻﻔﺤﻪ ﻗﺮار ﻣﻲدﻫﻴﻢ‪ .‬در ﺷﻜﻞ ‪ 12-15‬اﺑﺘﺪا ﻛﻠﻤﻪ ‪ Mon‬را در‬
‫ﺧﺎﻧﻪ ‪ A1‬وارد ﻛﺮده ﺳﭙﺲ آن را ﺑﺎ ﮔﻴﺮه اﻧﺘﻘﺎل ‪ fill handle‬ﺑﻪ راﺳﺖ ﻣﻲﻛﺸﻴﻢ‪.‬‬
‫ﺧﺎﻧﻪﻫﺎي ﻃﺮف راﺳﺖ ﺑﻪ ﺻﻮرت ﺳﺮي ﺑﺎ روزﻫﺎي ﻫﻔﺘﻪ ﭘﺮ ﻣﻲﺷﻮد‪ .‬ﭼﻨﺎن ﻛﻪ ﮔﻔﺘﻪ ﺷﺪ ﻣﺮﺑﻊ ﻛﻮﭼﻚ ﭘﺎﺋﻴﻦ‪ -‬راﺳﺖ ﻳﻚ‬
‫ﺳﻠﻮلِ اﻧﺘﺨﺎب ﺷﺪه ﮔﻴﺮه اﻧﺘﻘﺎل ‪ fill handel‬ﻧﺎم دارد‪ .‬ﺑﺮاي ﺳﺮي ﭘ‪‬ﺮ ﺷﺪن ﺑﺎﻳﺴﺘﻲ اﺑﺘﺪا ﺑﺎ اﺟﺮاي‬
‫‪ Tools_Options_Custom Lists‬ﻣﻄﺎﺑﻖ ﺷﻜﻞ ‪ 13-15‬ﻟﻴﺴﺖ ﺳﺮي ﻣﻮرد ﻧﻈﺮ را وارد ﻛﻨﻴﻢ‪ .‬ﺑﻌﻀﻲ از‬
‫ﻟﻴﺴﺖﻫﺎ ﺑﻪ ﺻﻮرت ﭘﻴﺶﻓﺮض از ﻗﺒﻞ وﺟﻮد دارﻧﺪ‪.‬‬

‫ﺷﻜﻞ ‪12-15‬‬

‫‪140‬‬
‫‪ 4-15‬ﺗﻤﺮﻳﻦ‬
‫‪ -1‬ﻳﻚ ﺑﺮﭼﺴﺐ ﺳﺘﻮن و ﻳﻚ ﺑﺮﭼﺴﺐ ردﻳﻒ در ﻣﺤﻞ ‪ D8‬وارد ﻛﻨﻴﺪ‪ .‬در ﺳﻠﻮل آن ﻳﻚ ﻋﺪد وارد ﻛﻨﻴﺪ‪ .‬ﺳﭙﺲ ﺑﻪ‬
‫ﺳﻠﻮل ‪ A10‬رﻓﺘﻪ ﺑﺎ ارﺟﺎع ﺑﻪ ﺳﻠﻮل ﻣﺤﻞ ﺗﻘﺎﻃﻊ ﻣﺮﺑﻊ ﻣﻘﺪار آن را در ‪ A10‬ﻗﺮار دﻫﻴﺪ‪ .‬وﺿﻌﻴﺖ ﻣﻴﻠﻪ ﻓﺮﻣﻮل و‬
‫ﺟﻌﺒﻪ ﻧﺎم را ﺑﺮرﺳﻲ ﻛﻨﻴﺪ‪.‬‬
‫‪ -2‬در زﻳﺮِ ﺑﺮﭼﺴﺐ ﺳﺘﻮن ﻓﻮق ﭘﻨﺞ ﻋﺪد وارد ﻛﻨﻴﺪ‪ ،‬ﻣﻌﺪل آنﻫﺎ را ﺑﺎ اﺳﺘﻔﺎده از ﺗﺎﺑﻊ ﻛﺘﺎبﺧﺎﻧﻪاي در ﺳﻠﻮل زﻳﺮﻳﻦ‬
‫ﻗﺮار دﻫﻴﺪ‪.‬‬
‫‪ -3‬ﻳﻚ ﺳﺘﻮن را ﺑﺮﭼﺴﺐ ﻗﺮاردادي دﻫﻴﺪ‪ ،‬و ﺗﻌﺪادي ﻋﺪد زﻳﺮ آن وارد ﻛﻨﻴﺪ‪ .‬ﺣﺎﺻﻞﺟﻤﻊ و ﺗﻌﺪاد ﻋﻨﺎﺻﺮ )ﺳﻠﻮل‪-‬‬
‫ﻫﺎي( ﻣﺘﻌﻠﻖ ﺑﻪ ﺳﺘﻮن را ﺑﺎ اﺳﺘﻔﺎده از ﺑﺮﭼﺴﺐ ﮔﺬاري و ﻛﺘﺐﺧﺎﻧﻪ داﺧﻠﻲ اﻛﺴﻞ در ﺳﻠﻮل ﺑﻌﺪ از آﺧﺮﻳﻦ ﻣﻘﺪار‬
‫ﻗﺮار دﻫﻴﺪ‪ .‬راﻫﻨﻤﺎ‪ :‬ﺑﺮاي ﻗﺎﺑﻞ ارﺟﺎع ﺷﺪن ﺑﺮﭼﺴﺐﻫﺎي دلﺧﻮاه ﺑﺎﻳﺪ اﻧﺘﺨﺎب ﻻزم در ﻣﻨﻴﻮ ﺗﻴﻚ زده ﺷﻮد‪.‬‬
‫‪ -4‬ﻳﻚ ﺳﻠﻮل را ﻧﺎمﮔﺬاري ﻛﺮده و ﻣﻘﺪار دﻫﻴﺪ‪ .‬ﺳﻠﻮل ﻣﺮﺑﻮﻃﻪ را اﻧﺘﺨﺎب ﻛﻨﻴﺪ‪ ،‬در ﻣﻴﻠﻪ ﺑﺮﭼﺴﺐ ﭼﻪ ﻣﻲﺑﻴﻨﻴﺪ‪ .‬در‬
‫ﺳﻠﻮل دﻳﮕﺮي ﺑﻪ اﻳﻦ ﻧﺎم ﺑﺎ ﻳﻚ ﻋﻤﻞ رﻳﺎﺿﻲ ﻣﺮاﺟﻌﻪ ﻛﻨﻴﺪ‪ .‬دو ﻧﺎم در دو ﺳﺮﺳﺘﻮن‪ ،‬و ﻣﻘﺎدﻳﺮي زﻳﺮ ﻫﺮ ﺳﺘﻮن‬
‫ﺑﻨﻮﻳﺴﻴﺪ‪ .‬ﻧﺎمﻫﺎ و ﻣﻘﺎدﻳﺮ را اﻧﺘﺨﺎب ﻛﺮده‪ ،‬آراﻳﻪﻫﺎ را ﻧﺎمﮔﺬاري ﻛﻨﻴﺪ‪ .‬ﺳﭙﺲ ﺑﻪ ﺳﻠﻮل ﺳﻤﺖ راﺳﺖ رﻓﺘﻪ ﻓﺮﻣﻮﻟﻲ‬
‫ﻣﺘﺸﻜﻞ از دو ﻧﺎم را وارد ﻛﻨﻴﺪ‪ ،‬ﺳﭙﺲ ﺑﺎ ﮔﻴﺮه اﻧﺘﻘﺎل ﻓﺮﻣﻮل را ﺑﻪ ﺧﺎﻧﻪﻫﺎي زﻳﺮﻳﻦ ﺑﻜﺸﻴﺪ‪.‬‬
‫‪ -5‬ﻧﺎم ﻓﺼﻞ اول ﺳﺎل را در ﺧﺎﻧﻪ ‪ A1‬وارد ﻛﺮده ﺳﭙﺲ آن را ﺑﺎ ﮔﻴﺮه اﻧﺘﻘﺎل ‪ fill handle‬ﺑﻪ ﭘﺎﺋﻴﻦ ﺑﻜﺸﻴﺪ‪.‬‬
‫ﺑﺎﻳﺪ ﺧﺎﻧﻪﻫﺎ ﺑﻪ ﺻﻮرت ﺳﺮي ﺑﺎ ﻧﺎم ﻓﺼﻞﻫﺎ ﭘﺮ ﺷﻮدﻧﺪ‪ .‬راﻫﻨﻤﺎ‪ :‬ﺑﺮاي ﺳﺮي ﭘ‪‬ﺮ ﺷﺪن ﺑﺎﻳﺪ اﻧﺘﺨﺎب ﻻزم در ﻣﻨﻴﻮ ﺗﻴﻚ‬
‫زده ﺷﻮد‪.‬‬

‫‪141‬‬
‫ﻓﺼﻞ ‪ 16‬ﻋﻤﻠﻴﺎت ﻣﺤﺎﺳﺒﺎﺗﻲ‪ ،‬ﺗﻮاﺑﻊ و ﻧﻤﻮدارﻫﺎ‬
‫‪ 1-16‬ﭼﻨﺪ ﺗﺎﺑﻊ ﻛﺘﺎب ﺧﺎﻧﻪ اي‬
‫ﻣﺜﺎل‪:‬‬
‫در ﺷﻜﻞ ‪ 1-16‬ﺑﻴﺸﻴﻨﻪ‪ -‬ﻛﻤﻴﻨﻪ دﻣﺎي روزﻫﺎي ﻫﻔﺘﻪ را وارد ﻛﺮده‪ ،‬در ﺧﺎﻧﻪﻫﺎي ‪ B4, B5, B6‬ﺑﻪ ﺗﺮﺗﻴﺐ ﺗﻮاﺑﻊ داﺧﻠﻲ‬
‫)‪ AVERAGE(B2:H3), Max(B2:H3), Min(B2:H3‬را ﻗﺮار داده‪ ،‬ﻧﺘﻴﺠﻪ را ﺑﺮرﺳﻲ ﻣﻴﻜﻨﻴﻢ‪.‬‬

‫ﺷﻜﻞ ‪1-16‬‬

‫‪ 2-16‬ﻧﻤﻮدارﻫﺎ‬
‫ﻧﻤﻮدار ﺳﺘﻮﻧﻲ‬
‫ﻣﺜﺎل‪:‬‬
‫ﺑﺎ اﺳﺘﻔﺎده از ﺟﺪول ﻓﻮق درﺟﻪ ﺣﺮارت ﺑﻴﺸﻴﻨﻪ و ﻛﻤﻴﻨﻪ ﻫﺮ روز را ﺑﺮﺣﺴﺐ روز ﻫﻔﺘﻪ ﺑﺎ ﻧﻤﻮدار ﺳﺘﻮﻧﻲ ﻧﻤﺎﻳﺶ ﻣﻲدﻫﻴﻢ‪.‬‬
‫دﻛﻤﻪ ﭼﺎرت را از ﻣﻴﻠﻪ اﺑﺰار ﻛﻠﻴﻚ ﻛﺮده‪ ،‬ﭘﺲ از اﻧﺘﺨﺎب ﻧﻤﻮدار ﺳﺘﻮﻧﻲ و زدن ‪ Next‬ﺑﻪ ﻟﺒﻪ ‪ Series‬رﻓﺘﻪ ﺑﺮاي ﺳﺮي‬
‫ﻳﻚ ‪ B2:H2‬و ﺑﺮاي ﺳﺮي دو ‪ B3:H3‬و ﺑﺮاي ‪ B1:H1 ، Category (X) axis labels:‬را وارد ﻣﻲ‪-‬‬
‫ﻛﻨﻴﻢ‪ .‬ﭘﺲ از اﻧﺘﺨﺎب اﺳﺎﻣﻲ و ﺑﺮﭼﺴﺐﻫﺎي ﻣﻨﺎﺳﺐ ﻧﻤﻮدار را ﺑﻪ ﺷﻜﻞ ‪ 2-16‬رﺳﻢ ﻣﻲﻛﻨﻴﻢ‪:‬‬

‫‪35‬‬
‫‪30‬‬ ‫‪Temp‬‬
‫‪25‬‬
‫‪20‬‬ ‫‪Max's‬‬
‫‪15‬‬ ‫‪Min's‬‬
‫‪10‬‬
‫‪5‬‬
‫‪0‬‬
‫ﺷﻜﻞ ‪2-16‬‬
‫‪Mon‬‬ ‫‪Tue‬‬ ‫‪Wed‬‬ ‫‪Thu‬‬ ‫‪Fri‬‬ ‫‪Sat‬‬ ‫‪Sun‬‬

‫ﺗﺮﺳﻴﻢ ﻣﻨﺤﻨﻲ‬
‫ﻣﺜﺎل‪:‬‬
‫ﺑﺮاي رﺳﻢ ﻧﻤﻮدار ‪ fx‬ﺑﺮﺣﺴﺐ ‪) x‬ﺟﺪول ﺷﻜﻞ ‪ (3-16‬دﻛﻤﻪ ﭼﺎرت را از ﻣﻴﻠﻪ اﺑﺰار ﻛﻠﻴﻚ ﻛﺮده‪ ،‬ﭘﺲ از اﻧﺘﺨﺎب ﻧﻤﻮدار‬
‫ﻣﻨﺤﻨﻲ و زدن ‪ Next‬ﺑﻪ ﻟﺒﻪ ‪ Series‬رﻓﺘﻪ ﺑﺮاي ﺳﺮيِ ﻳﻚ‪ ،‬ﺳﺘﻮن ‪fx‬‬
‫و ﺑﺮاي ‪ ، Category (X) axis labels:‬ﺳﺘﻮن ‪ x‬را وارد ﻣﻲﻛﻨﻴﻢ‪.‬‬

‫‪142‬‬
‫‪20‬‬
‫‪15‬‬
‫‪10‬‬
‫‪5‬‬
‫‪0‬‬ ‫‪Series1‬‬
‫‪-5‬‬ ‫‪-5 -4 -3 -2 -1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬
‫‪-10‬‬
‫‪-15‬‬
‫‪-20‬‬ ‫ﺷﻜﻞ ‪3-16‬‬

‫ﺟﺒﺮي ﺳﺎزي ﻣﻨﺤﻨﻲ‬


‫ﻣﺜﺎل‪:‬‬
‫ﺑﺮاي ﺣﺼﻮل ﻧﺰدﻳﻚﺗﺮﻳﻦ ﻣﻨﺤﻨﻲ ﺟﺒﺮي روي ﻳﻜﻲ از ﻧﻔﺎط ﻣﻨﺤﻨﻲ ﻓﻮق راﺳﺖ ﻛﻠﻴﻚ ﻛﺮده و ‪ Add Trendline‬را‬
‫ﻛﻠﻴﻚ ﻣﻲﻛﻨﻴﻢ‪ .‬در ﺟﻌﺒﻪ ﻣﺤﺎوره ﺷﻜﻞ ‪ 4-16‬در ﻟﺒﻪ ‪ Type‬ﻳﻜﻲ از ﻣﻨﺤﻨﻲﻫﺎي ﻣﺘﻨﺎﺳﺐ ﺑﺎ ﻣﻨﺤﻨﻲ ﺧﻮد را اﻧﺘﺨﺎب ﻣﻴﻜﻨﻴﻢ‪.‬‬
‫ﺳﭙﺲ درﻟﺒﻪ ‪ Options‬اﻧﺘﺨﺎبﻫﺎي ﺷﻜﻞ را ﺗﻴﻚ زده ‪ OK‬ﻣﻲﻛﻨﻴﻢ‪ .‬ﻣﻨﺤﻨﻲ ‪ 5-16‬ﻧﺘﻴﺠﻪ ﻣﻲﺷﻮد‪ .‬ﭘﺎراﻣﺘﺮ‪R-squared‬‬
‫ﻳﺎ ﺿﺮﻳﺐ ﺗﻌﻴ‪‬ﻦ ﻫﺮ ﻗﺪر ﺑﻪ ﻳﻚ ﻧﺰدﻳﻚﺗﺮ ﺑﺎﺷﺪ‪ ،‬ﺗﻘﺮﻳﺐ ﻣﻨﺤﻨﻲ ﺑﻬﺘﺮ اﺳﺖ‪.‬‬

‫ﺷﻜﻞ ‪4-16‬‬

‫‪20‬‬
‫‪15‬‬
‫‪10‬‬
‫‪5‬‬
‫‪Series1‬‬
‫‪0‬‬
‫)‪Linear (Series1‬‬
‫‪-5‬‬ ‫‪-5 -4 -3 -2 -1 0 1 2 3 4 5‬‬
‫‪-10‬‬
‫‪y = -2.9273x + 18.2‬‬
‫‪-15‬‬ ‫‪2‬‬
‫‪R = 0.9309‬‬
‫‪-20‬‬

‫ﺷﻜﻞ ‪5-16‬‬

‫‪143‬‬
‫‪ 3-16‬ﻫﻴﺴﺘﻮﮔﺮام‬
‫ﺗﻌﺪادي ﻋﺪد ﺗﺼﺎدﻓﻲ ﻧﺎﻣﺮﺗﺐ در ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ‪ ،‬ﻫﻴﺴﺘﻮﮔﺮام ﻋﺪدﻫﺎي ﻣﺴﺎوي را داﺧﻞ ﻳﻚ ﻇﺮف ﻣﻲرﻳﺰد و ﻣﻮﺟﻮدي ﻫﺮ‬
‫ﻇﺮف را ﻧﻤﺎﻳﺶ ﻣﻴﺪﻫﺪ‪.‬‬
‫اﮔﺮ اﻧﺘﺨﺎب ‪ Data Analysis‬در زﻳﺮﻣﻨﻴﻮي ‪ Tools‬ﻣﻮﺟﻮد ﻧﺒﺎﺷﺪ‪ ،‬از ﻣﻨﻴﻮي اﺻﻠﻲ اﻧﺘﺨﺎب‬
‫‪ Tools_Add-Ins...‬را اﺟﺮا و ‪ Data Analysis‬را ﺑﻪ زﻳﺮ ﻣﻨﻴﻮي ‪ Tools‬اﺿﺎﻓﻪ ﻣﻲﻛﻨﻴﻢ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫اﻳﻦ ﺗﻌﺪاد ﻋﺪد ﺻﺤﻴﺢ ﺗﺼﺎدﻓﻲ ‪0,5,-7,5,-2,8,8,8,4,6,4,8,6,3,-7,-10,-6,4,-6,-2,8‬‬
‫را ﻛﻪ در ﺑﺎزه ‪ -10‬ﺗﺎ ‪ 10‬ﻓﺮار دارﻧﺪ در ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ‪ ،‬ﺑﺮاي رﺳﻢ ﻫﻴﺴﺘﻮﮔﺮام آنﻫﺎ اﺑﺘﺪا ﻣﻄﺎﺑﻖ ﺷﻜﻞ‪ ،‬ﺑﺎزه اﻋﺪاد )‪ -10‬ﺗﺎ‬
‫‪ (10‬را ﺑﻪ ﺻﻮرت ﻣﺮﺗﺐ در ﺳﺘﻮن ﺳﻤﺖ ﭼﭗ و اﻋﺪاد ﺗﺼﺎدﻓﻲ ﻓﻮق را درﺳﺘﻮن ﻣﻘﺎﺑﻞ آن وارد ﻣﻲﻛﻨﻴﻢ‪ .‬از ﻣﻨﻴﻮي اﺻﻠﻲ‪،‬‬
‫‪ Tools_ Data Analysis‬را ﻛﻠﻴﻚ ﻣﻲﻛﻨﻴﻢ‪ .‬ﺳﭙﺲ از ﺟﻌﺒﻪ ﻣﺤﺎوره ﻇﺎﻫﺮ ﺷﺪه ‪ Histogram‬را اﻧﺘﺨﺎب ﻣﻲ‪-‬‬
‫ﻛﻨﻴﻢ )ﺷﻜﻞ ‪ .(6-16‬ﺳﺘﻮن ‪ B‬را ﺑﻪ ﻋﻨﻮان ‪ Input Range‬و ﺳﺘﻮن ‪ A‬را ﺑﻪ ﻋﻨﻮان ‪ Bin Range‬ﻗﺮار داده‬
‫‪ New Worksheet Ply‬و ‪ Chart Output‬را ﺗﻴﻚ زده‪ OK ،‬ﻣﻲﻛﻨﻴﻢ)ﺷﻜﻞ ‪ .(7-16‬ﻧﺘﻴﺠﻪ در ﻳﻚ ﻛﺎرﺑﺮگ‬
‫دﻳﮕﺮ ﻇﺎﻫﺮ ﻣﻲﺷﻮد )ﺷﻜﻞ ‪.(8-16‬‬

‫ﺷﻜﻞ ‪6-16‬‬

‫ﺷﻜﻞ ‪7-16‬‬

‫‪144‬‬
‫ﺷﻜﻞ ‪8-16‬‬

‫‪VBA in Excel‬‬ ‫‪ 4-16‬ﺗﺎﺑﻊ ﻛﺎرﺑﺮ‪ -‬ﺗﻌﺮﻳﻒ در اﻛﺴﻞ‬


‫ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ‬
‫ﺑﺎ اﺳﺘﻔﺎده از ‪ VBA‬ﻣﻲﺗﻮان ﻓﺮﻣﻮلﻫﺎﺋﻲ را ﺗﻌﺮﻳﻒ ﻛﺮد و آنﻫﺎ را ﻧﻈﻴﺮ ﺗﻮاﺑﻊ ﻛﺘﺎب ﺧﺎﻧﻪ اي اﻛﺴﻞ داﺧﻞ ﺳﻠﻮلﻫﺎ ﻧﻮﺷﺖ و‬
‫ﺑﻪ ﻛﺎر ﺑﺮد‪ .‬ﺣﺮوف ‪ VBA‬ﺗﻘﻄﻴﻊ ﻋﺒﺎرت ‪ Visual Basic for Applications‬اﺳﺖ ﻛﻪ ﻳﻚ زﺑﺎن ﺑﺮﻧﺎﻣﻪ‬
‫ﻧﻮﻳﺴﻲ اﺳﺖ ﻛﻪ در داﺧﻞ ﻧﺮماﻓﺰارﻫﺎي ‪ Microsoft Office‬ﻧﻈﻴﺮ ‪ Word, Excel‬ﺗﻌﺒﻴﻴﻪ ﺷﺪه اﺳﺖ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫ﺳﺮﻋﺖ ﻳﻚ ﭼﺘﺮ ﺑﺎز را از ﻟﺤﻈﻪ ﭘﺮش ﺗﺎ زﻣﺎﻧﻲ ﻛﻪ ﺑﻪ ﺳﺮﻋﺖ ﻳﻚﻧﻮاﺧﺖ ﺑﺮﺳﺪ‪ ،‬در ﻟﺤﻄﺎت ﻣﺨﺘﻠﻒ ﺑﺎ آﻧﺎﻟﻴﺰ ﻋﺪدي ﺑﻪ‬
‫دﺳﺖ آورده و ﻣﻨﺤﻨﻲ آن را رﺳﻢ ﻛﻨﻴﺪ‪ .‬وزن ﭼﺘﺮﺑﺎز را ﺑﺎ ‪ ، m‬و ﺿﺮﻳﺐ ﻣﻘﺎوﻣﺖ ﻫﻮا را ﺑﺎ ‪ cv‬ﻧﺸﺎن دﻫﻴﺪ‪.‬‬
‫ﺣﻞ‪ :‬ﻧﻴﺮوي وارد ﺑﻪ ﭼﺘﺮﺑﺎز در ﻟﺤﻈﻪ ‪ t1‬ﺑﺮاﺑﺮ ﻧﻴﺮوي ﺛﻘﻞ زﻣﻴﻦ ﻣﻨﻬﺎي ﻧﻴﺮوﺋﻲ اﺳﺖ ﻛﻪ در اﺛﺮ ﻣﻘﺎوﻣﺖ ﻫﻮا درﺟﻬﺖ‬
‫ﺧﻼف ﻧﻴﺮوي ﺛﻘﻞ وارد ﻣﻲﺷﻮد‪ .‬ﻧﻴﺮوي ﻣﻘﺎوﻣﺖ ﻫﻮا ﺑﺎ ﺳﺮﻋﺖ ﻣﺘﻨﺎﺳﺐ‪ ،‬و ﺑﺮاﺑﺮ اﺳﺖ ﺑﺎ‪:‬‬
‫)‪Fair(t1) = cv * v(t1‬‬
‫در ﻧﺘﻴﺠﻪ ﺷﺘﺎب ﻣﻌﻜﻮس ﺣﺎﺻﻞ از ﻣﻘﺎوﻣﺖ ﻫﻮا ﺑﺮاﺑﺮ اﺳﺖ ﺑﺎ‪:‬‬
‫)‪accair = (cv/m)*v(t1‬‬
‫ﺷﺘﺎب ﻛﻞ در ﻟﺤﻈﻪ ‪ t1‬ﻣﺴﺎوي ﺷﺘﺎب ﮔﺮاﻧﺶ ﺧﻮاﻫﺪ ﺑﻮد ﻣﻨﻬﺎي ﺷﺘﺎب ﻣﻌﻜﻮس‪:‬‬
‫)‪acc(t1) = g - (cv/m)*v(t1‬‬
‫ﺷﺘﺎب ﺗﻘﺮﻳﺒﻲ در ﻟﺤﻈﻪ ‪ t1‬ﻣﻲﺷﻮد )زﻳﺮﻧﻮﻳﺲ ‪ appr‬ﻫﻤﺎن ‪ approximated‬ﻳﻌﻨﻲ ﺗﻘﺮﻳﺒﻲ اﺳﺖ(‪:‬‬
‫‪accappr = [v(t1+DELt) - v(t1)]/DELt‬‬
‫ﻋﺪد ﺛﺎﺑﺖ ‪ DELt‬رﺷﺪ زﻣﺎن را ﻧﺸﺎن ﻣﻲدﻫﺪ‪.‬‬
‫ﺣﺎل ﻣﻘﺪار واﻗﻌﻲ ﺷﺘﺎب را ﺑﺎ ﻣﻘﺪار ﺗﻘﺮﻳﺒﻲ آن ﺑﺮاﺑﺮ ﻗﺮار ﻣﻲدﻫﻴﻢ‪:‬‬
‫)‪accappr ≈ acc(t1) → [v(t1+DELt) - v(t1)]/DELt ≈ g - (cv/m)*v(t1‬‬
‫‪v(t1+DELt) = v(t1) + [g-(cv/m)v(t1)] * DELt‬‬

‫‪145‬‬
‫‪v(t1+DELt) = v(t1) + acc * DELt‬‬ ‫ﺳﺮﻋﺖ ﭘﺲ از رﺷﺪ زﻣﺎن‬
‫ﻋﺒﺎرت ﻓﻮق را اﮔﺮ ﺑﺨﻮاﻫﻴﻢ ﺑﻪ ﺻﻮرت ﻛﺎﻣﭙﻴﻮﺗﺮي ﺑﻨﻮﻳﺴﻴﻢ ﻣﻲﺷﻮد‪:‬‬
‫‪v = v + acc * DELt‬‬
‫ﺣﺎل از ﻣﻨﻴﻮي اﺻﻠﻲ ‪ Tools_Macro_Visual Basic Editor‬را اﺟﺮا و ﺗﺎﺑﻊ زﻳﺮ را در ادﻳﺘﻮر ‪VBA‬‬
‫ﻧﻮﺷﺘﻪ و ﺿﺒﻂ ﻣﻲﻛﻨﻴﻢ‪ .‬زﺑﺎن ‪ VBA‬ﻗﻮاﻋﺪ ﺧﺎﺻﻲ دارد و ﺗﺎ ﺣﺪي ﺷﺒﻴﻪ ‪ Quick Basic‬اﺳﺖ‪.‬‬
‫)‪Function Vnum(DELt, t1, t2, v1, m, cv‬‬
‫‪Dim t As Single, dvBdt As Single, acc As Single, v As Single‬‬
‫‪Const g As Single = 9.8‬‬
‫‪t = t1‬‬
‫‪v = v1‬‬
‫‪Do‬‬
‫‪acc = g - (cv / m) * v‬‬
‫‪v = v + acc * DELt‬‬
‫‪t = t + DELt‬‬
‫‪If t >= t2 Then Exit Do‬‬
‫‪Loop‬‬
‫‪Vnum = v‬‬
‫‪End Function‬‬
‫در اﻳﻦ ﺗﺎﺑﻊ زﻣﺎن را ﺑﻴﻦ ‪ t1‬و ‪ t2‬ﺑﻪ ﻗﻄﻌﺎت ‪ DELt‬ﺛﺎﻧﻴﻪاي ﺗﻘﺴﻴﻢ ﻛﺮدهاﻳﻢ‪ .‬ﺳﭙﺲ در داﺧﻞ ﺣﻠﻘﻪ ‪DO ... LOOP‬‬
‫زﻣﺎن ﺑﻌﺪ از ‪ DELt‬را ﻣﺴﺎوي زﻣﺎن ﻗﺒﻞ از آن ﺑﻪ ﻋﻼوه رﺷﺪ زﻣﺎن ﻗﺮار دادهاﻳﻢ ﻳﻌﻨﻲ‪(t = t + DELt) :‬ﻫﻢﭼﻨﻴﻦ‬
‫ﺳﺮﻋﺖ ﺑﻌﺪ از ‪ DELt‬را ﻣﺴﺎوي ﺳﺮﻋﺖ ﻗﺒﻞ از آن ﺑﻪ ﻋﻼوه رﺷﺪ ﺳﺮﻋﺖ ﻗﺮار دادهاﻳﻢ ﻳﻌﻨﻲ‪:‬‬
‫)‪ .(v = v + acc * DELt‬در ﻫﺮ ﺗﻜﺮار‪ ،‬ﺳﺮﻋﺖ در داﺧﻞ ﺣﻠﻘﻪ ﺣﺴﺎب ﻣﻲﺷﻮد ﺗﺎ ﺑﻪ زﻣﺎن ‪ t2‬ﺑﺮﺳﻴﻢ و ﺣﻠﻘﻪ‬
‫ﺗﻤﺎم ﺷﻮد ‪ .‬ﺳﺮﻋﺖ در ‪ t2‬ﺑﻪ ﻋﻨﻮان ﺧﺮوﺟﻲ ﺗﺎﺑﻊ ﺑﺮﮔﺸﺖ داده ﻣﻲﺷﻮد‪ .‬ﺳﺮﻋﺖ و زﻣﺎن اوﻟﻴﻪ‪ ،‬ﺿﺮﻳﺐ ﻣﻘﺎوﻣﺖ ﻫﻮا‪ ،‬و‬
‫ﺷﺘﺎب ﺛﻘﻞ آرﮔﻮﻣﺎنﻫﺎي دﻳﮕﺮ ﺗﺎﺑﻊ ‪ Vnum‬ﻫﺴﺘﻨﺪ‪ .‬اﻳﻦ ﺗﺎﺑﻊ ﺟﻤﻌﺎٌ ﺷﺶ آرﮔﻮﻣﺎن دارد‪.‬‬
‫اﺳﺘﻔﺎده از ﺗﺎﺑﻊ ‪ VBA‬در ﺻﻔﺤﻪ ﮔﺴﺘﺮده‬
‫ﻫﻤﺎنﻃﻮر ﻛﻪ ذﻛﺮ ﻛﺮدﻳﻢ‪ ،‬ﻣﻲﺗﻮان ﺗﻮاﺑﻌﻲ را ﺑﺎ ‪ VBA‬ﻧﻮﺷﺘﻪاﻳﻢ‪ ،‬ﻧﻈﻴﺮ ﺗﻮاﺑﻊ ﻛﺘﺎب ﺧﺎﻧﻪ اي اﻛﺴﻞ ﺑﻪ ﺻﻮرت ﻓﺮﻣﻮل در‬
‫ﺳﻠﻮلﻫﺎ ﻧﻮﺷﺖ و ﺑﻪ ﻛﺎر ﺑﺮد‪ .‬ﻣﺜﺎل زﻳﺮ ﻛﺎرﺑﺮد ﺗﺎﺑﻊ ‪ Vnum‬را ﻧﺸﺎن ﻣﻲدﻫﺪ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫اﺑﺘﺪا ﺳﺘﻮﻧﻲ را ‪ t‬و ﺳﺘﻮن دﻳﮕﺮي را ‪ Vnum‬ﻋﻨﻮان ﻣﻲدﻫﻴﻢ‪ .‬ﺳﭙﺲ ﺳﺘﻮن ‪ t‬را از زﻣﺎن ﺻﻔﺮ ﺷﺮوع ﻛﺮده ﺑﺎ اﻓﺰاﻳﺶ ‪ 3‬ﺛﺎﻧﻴﻪ‪-‬‬
‫اي ﺣﺪود ‪ 20‬ﺳﻠﻮل را ﭘﺮ ﻛﺮده‪ ،‬در ﺳﺘﻮن ‪ Vnum‬ﻓﺮﻣﻮل ﻣﻨﺘﺞ از ﺗﺎﺑﻊ ﻓﻮق را ﺑﺎ آرﮔﻮﻣﺎنﻫﺎي‬
‫‪m = 70kg, DELt = 0.1sec, cv = 12.5kg/sec‬‬
‫ﻗﺮار ﻣﻲدﻫﻴﻢ‪ .‬ﻣﻨﺤﻨﻲ ﺳﺮﻋﺖ ﺑﺮ ﺣﺴﺐ زﻣﺎن را رﺳﻢ ﻣﻲﻛﻨﻴﻢ‪.‬‬
‫اﺑﺘﺪا آرﮔﻮﻣﺎنﻫﺎ و ﻣﻘﺎدﻳﺮ آنﻫﺎ را ﺑﻪ ﺻﻮرت ﻧﺎمﮔﺬاري وارد ﻣﻲﻛﻨﻴﻢ )ﺷﻜﻞ ‪(9-16‬‬
‫ﺳﭙﺲ ﻋﻨﺎوﻳﻦ ‪ t‬و ‪ Vnum‬را در ﺳﻠﻮلﻫﺎي ﻣﺮﺑﻮﻃﻪ ﻗﺮار ﻣﻲدﻫﻴﻢ‪ .‬زﻳﺮ ‪ t‬اول ﺻﻔﺮ را وارد ﻛﺮده و در ردﻳﻒ ﺑﻌﺪ ‪ 3‬واﺣﺪ‬
‫ﺑﻪ آن اﺿﺎﻓﻪ ﻣﻲﻛﻨﻴﻢ‪ .‬ﺳﭙﺲ ﺑﺎ ﮔﻴﺮه اﻧﺘﻘﺎل آن را ﺑﻪ ﺗﻌﺪاد ﺧﺎﻧﻪﻫﺎي ﻣﻮرد ﻧﻈﺮ ﭘﺎﺋﻴﻦ ﻣﻲﻛﺸﻴﻢ )ﺷﻜﻞ ‪.(10-16‬‬

‫ﺷﻜﻞ ‪10-16‬‬ ‫ﺷﻜﻞ ‪9-16‬‬

‫‪146‬‬
‫در ﺳﺘﻮن ‪ Vnum‬اﺑﺘﺪا ﺻﻔﺮ و در ردﻳﻒ ﺑﻌﺪ ﺗﺎﺑﻊ ‪ VBA‬را ﭼﻨﺎنﭼﻪ در ﺷﻜﻞ ‪ 11-16‬دﻳﺪه ﻣﻲﺷﻮد ﻣﻲﻧﻮﻳﺴﻴﻢ‪ .‬در اﻳﻦ‬
‫ﻓﺮﻣﻮل آرﮔﻮﻣﺎن ‪ t1‬را ﺑﺮاﺑﺮ ‪ ، A2‬آرﮔﻮﻣﺎن ‪ t2‬را ﺑﺮاﺑﺮ ‪ A3‬و آرﮔﻮﻣﺎن ‪ v1‬را ﺑﺮاﺑﺮ ‪ B2‬ﻗﺮار دادهاﻳﻢ‪ .‬ﻓﺮﻣﻮل ﻧﻮﺷﺘﻪ ﺷﺪه‬
‫در ﺳﻠﻮل ‪ B3‬را ﺑﺎ ﮔﻴﺮه اﻧﺘﻘﺎل آن ﺑﻪ ﺗﻌﺪاد ﺧﺎﻧﻪﻫﺎي ﻣﻮرد ﻧﻈﺮ ﭘﺎﺋﻴﻦ ﻣﻲﻛﺸﻴﻢ‪ .‬ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ارﺟﺎع ﻧﺴﺒﻲ ﻣﻘﺎدﻳﺮ ‪A2, A3,‬‬
‫‪ B2‬در ﺳﻠﻮلﻫﺎي زﻳﺮﻳﻦ ﺑﻪ ﺗﻨﺎﺳﺐ ﺗﻐﻴﻴﺮ ﻣﻲﻛﻨﺪ‪.‬‬
‫ﻣﻘﺪار ﺳﺮﻋﺖ از ردﻳﻒ ‪ 19‬ﺑﻪ ﺑﻌﺪ ﺗﻘﺮﻳﺒﺎٌ ﻳﻚﻧﻮاﺧﺖ ﺷﺪه‪ ،‬اﻳﻦ ﻣﻮﺿﻮع در ﻧﻤﻮدار رﺳﻢ ﺷﺪه ﺷﻜﻞ ‪ 11-16‬ﻫﻢ دﻳﺪه ﻣﻲ‪-‬‬
‫ﺷﻮد‪.‬‬

‫‪Velocity‬‬

‫‪60‬‬
‫‪50‬‬
‫‪40‬‬
‫‪30‬‬ ‫‪Velocity‬‬
‫‪20‬‬
‫‪10‬‬
‫‪0‬‬
‫‪0‬‬

‫‪9‬‬
‫‪18‬‬

‫‪27‬‬

‫‪36‬‬

‫‪45‬‬

‫‪54‬‬

‫‪63‬‬

‫‪72‬‬

‫‪Time‬‬

‫ﺷﻜﻞ ‪11-16‬‬

‫‪ 5-16‬ﺿﺒﻂ ﻣﺎﻛﺮو‬
‫از ﻣﻨﻴﻮي اﺻﻠﻲ ‪ Tools_Macro_Record New Macro‬را اﺟﺮا ﻣﻲﻛﻨﻴﻢ‪ .‬ﻣﻴﻠﻪ اﺑﺰار ﺿﺒﻂ ﻣﺎﻛﺮو ﻇﺎﻫﺮ ﺷﺪه و از‬
‫آن ﻟﺤﻈﻪ اﻋﻤﺎﻟﻲ ﻛﻪ روي ﺻﻔﺤﻪ ﮔﺴﺘﺮده اﻧﺠﺎم دﻫﻴﻢ ﺿﺒﻂ ﻣﻲﺷﻮﻧﺪ‪ .‬ﺑﺎ زدن دﻛﻤﻪ ‪ Stop Recording‬در ﻣﻴﻠﻪ اﺑﺰار‬
‫ﺿﺒﻂ ﻣﺎﻛﺮو ﻣﺘﻮﻗﻒ ﻣﻲﺷﻮد‪ .‬اﻋﻤﺎل ﺿﺒﻂ ﺷﺪه ﺑﻪ ﺻﻮرت ﻳﻚ ﻓﺎﻳﻞ ‪ VBA‬در ﻣﻲآﻳﺪ‪ .‬ﻛﻪ از داﺧﻞ اﻛﺴﻞ ﻗﺎﺑﻞ اﺟﺮا ﻳﺎ ﻗﺎﺑﻞ‬
‫ادﻳﺖ اﺳﺖ‪.‬‬
‫در اﻛﺴﻞ ﻳﻚ ﺑﺮﻧﺎﻣﻪ ﻛﻪ ﺑﺎ ‪ VBA‬ﻳﺎ از ﻃﺮﻳﻖ ﺿﺒﻂ ﻣﺎﻛﺮو ﺗﻬﻴﻪ ﺷﻮد‪ ،‬ﻣﺎﻛﺮو ﻧﺎم دارد‪ .‬ﺑﺮاي ﻓﻌﺎل ﺷﺪن ﻣﺎﻛﺮوﻫﺎ ﺑﺎﻳﺴﺘﻲ‬
‫‪ Tools_Options_Security_Macro Security_Medium‬را از ﻣﻨﻴﻮي اﺻﻠﻲ اﺟﺮا ﻛﺮد‪ .‬ﺑﻪ اﻳﻦ‬
‫ﺗﺮﺗﻴﺐ ﺑﻪ ﻫﻨﮕﺎم ﺷﺮوع اﻛﺴﻞ ﻣﺎﻛﺮوﻫﺎ ﺑﻪ اﺧﺘﻴﺎر ﺧﻮدﺗﺎن ﻓﻌﺎل ﻳﺎ ﻏﻴﺮ ﻓﻌﺎل ﻣﻲﺷﻮﻧﺪ‪.‬‬
‫ﺳﺆال‪ :‬ﻧﺎم ﺧﻮد را در ﻳﻚ ﺳﻠﻮل وارد ﻛﻨﻴﺪ‪ .‬ﻛﭙﻲ ﻛﺮدن و ﭼﺴﺒﺎﻧﺪن آن ﺑﻪ ﺳﻠﻮل دﻳﮕﺮ را ﺑﻪ ﺻﻮرت ﻣﺎﻛﺮو ﺿﺒﻂ ﻛﻨﻴﺪ‪.‬‬
‫‪147‬‬
‫‪ 6-16‬اﺑﺰارﻫﺎي ﻣﺤﺎﺳﺒﺎﺗﻲ‬
‫‪Goal Seek‬‬
‫اﺑﺰار ‪ Goal Seek‬ﻣﻲﺗﻮاﻧﺪ ﭘﺲ از رﺳﺎﻧﺪن ﻳﻚ ﺗﺎﺑﻊ ﺑﻪ ﻣﻘﺪار ﻧﻬﺎﺋﻲ‪ ،‬ﻣﻘﺪار ﻣﺘﻐﻴﺮ ﻣﺴﺘﻘﻞ را ﺑﺮاي اﻳﻦ ﻣﻘﺪار ﻧﻬﺎﺋﻲ ﺗﻌﻴﻴﻦ‬
‫ﻛﻨﺪ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫ﻣﻘﺪار ‪ x‬را ﺑﺮاي ﺑﺮﻗﺮاري ﺗﺴﺎوي ‪ x - cosx = π‬ﺑﻪ دﺳﺖ ﻣﻲآورﻳﻢ‪.‬‬
‫ﻣﻘﺪار ‪ x‬را در ﺳﻠﻮل ‪ A2‬و ﺗﺎﺑﻊ)‪ A2-COS(A2‬را ﺑﻪ ﺷﻜﻞ ﻓﺮﻣﻮل در‪ B2‬وارد ﻣﻲﻛﻨﻴﻢ‪ .‬ﺑﺮاي اﻳﻦ ﻛﻪ ‪ x‬ﺑﺮ ﺣﺴﺐ‬
‫درﺟﻪ ﻫﻢ دﻳﺪه ﺷﻮد‪ ،‬ﺗﺎﺑﻊ )‪ DEGREES(A2‬را ﻫﻢ در ﺳﺘﻮن ﺑﻌﺪ ﻗﺮار ﻣﻲدﻫﻴﻢ‪ .‬ﺗﻮﺿﻴﺢ ﻣﺮﺑﻮط ﺑﻪ ﻫﺮ ﻳﻚ ازاﻳﻦ ﺳﻠﻮلﻫﺎ‬
‫در ﺳﻠﻮل ﺑﺎﻻي آن آﻣﺪه‪ ،‬ﺷﻜﻞ ‪) 12-16‬ﺳﺘﻮن ‪ x Deg‬ﻧﻘﺸﻲ در‪ Goal Seek‬ﻧﺪارد(‪.‬‬

‫ﺷﻜﻞ ‪12-16‬‬

‫اﻛﻨﻮن ‪ Tools_Goal Seek‬را اﺟﺮا ﻣﻲﻛﻨﻴﻢ‪ .‬در ‪ Set cell‬ﺧﺎﻧﻪاي را ﻛﻪ ﻣﻌﺎدﻟﻪ در آن آﻣﺪه )‪ ،(B2‬در‬
‫‪ To value‬ﻣﻘﺪار ﺳﻤﺖ راﺳﺖ ﻣﻌﺎدﻟﻪ ‪ π‬و در ‪ By changing cell‬ﺧﺎﻧﻪي ﻣﺘﻐﻴﺮ ‪ (A2) x‬را ﻣﻲﻧﻮﻳﺴﻴﻢ و‬
‫‪ OK‬ﻣﻲﻛﻨﻴﻢ ﺷﻜﻞ ‪ .13-16‬در ‪ To value‬ﺑﺎﻳﺴﺘﻲ ﺣﺘﻤﺎٌ ﻳﻚ ﻋﺪد ﺻﺤﻴﺢ ﻳﺎ اﻋﺸﺎري وارد ﻛﺮد‪.‬‬
‫‪ Goal Seek‬ﻣﻘﺪاري ﺑﺮاي ‪ x‬را ﻛﻪ در ﻣﻌﺎدﻟﻪ ﺻﺪق ﻛﻨﺪ ﻣﺤﺎﺳﺒﻪ ﻣﻲﻛﻨﺪ‪ ،‬در ﺻﻮرت ﭘﺬﻳﺮش اﻳﻦ ﻣﻘﺪار ‪ OK‬ﻣﻲﻛﻨﻴﻢ‪.‬‬
‫ﻧﻮﺷﺘﻪﻫﺎي ردﻳﻒ ‪ 1‬ﻓﻘﻂ ﺗﻮﺿﻴﺢ اﺳﺖ‪.‬‬

‫ﺷﻜﻞ ‪13-16‬‬

‫ﺳﺆال‪ :‬ﺑﺮاي ﻣﺸﺎﻫﺪه ﻣﻘﺪار ‪ π‬ﺗﺎﺑﻊِ ﻣﻘﺪار‪ -‬ﺛﺎﺑﺖِ)(‪ PI‬را در ﻳﻜﻲ از ﺧﺎﻧﻪﻫﺎ وارد ﻛﻨﻴﺪ‪.‬‬
‫‪Solver‬‬
‫اﻳﻦ اﺑﺰار ﺑﺮاي ﺣﻞ ﻣﻌﺎدﻻت ﭼﻨﺪ ﻣﺠﻬﻮﻟﻲ و ﻣﻮارد ﻣﺸﺎﺑﻪ آن ﺑﻪ ﻛﺎر ﻣﻲرود‪.‬‬
‫اﮔﺮ اﻧﺘﺨﺎب ‪ Solver‬در زﻳﺮﻣﻨﻴﻮي ‪ Tools‬ﻣﻮﺟﻮد ﻧﺒﺎﺷﺪ‪ Tools_Add-Ins... ،‬را اﺟﺮا و ‪ Solver‬را ﺑﻪ‬
‫زﻳﺮ ﻣﻨﻴﻮي ‪ Tools‬اﺿﺎﻓﻪ ﻣﻲﻛﻨﻴﻢ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫دﺳﺘﮕﺎه ﻣﻌﺎدﻻت ﺳﻪ ﻣﺠﻬﻮﻟﻲ زﻳﺮ را ﺣﻞ ﻣﻲﻛﻨﻴﻢ‪:‬‬

‫‪148‬‬
‫‪2‬‬ ‫‪2‬‬
‫‪y + 3xy + z = 58‬‬
‫‪2‬‬
‫‪x + xy + z = 9‬‬
‫‪x - y - z = 0‬‬
‫اﺑﺘﺪا ‪ x=0, y=0, z=0‬را ﺑﻪ ﻋﻨﻮان ﺳﻪ ﻧﺎم از ﻃﺮﻳﻖ ‪ Insert_Name_Create‬ﺗﻮﻟﻴﺪ ﻣﻲﻛﻨﻴﻢ‪ .‬در ﺧﺎﻧﻪﻫﺎﺋﻲ‬
‫ﻧﺰدﻳﻚ ﺑﻪ آنﻫﺎ‪ ،‬ﻃﺮف ﭼﭗِ ﻣﻌﺎدﻻت ﻓﻮق را ﻣﻲﻧﻮﻳﺴﻴﻢ در ﺷﻜﻞ ‪ 14-16‬ﺑﻪ ﻣﻴﻠﻪ ﻓﺮﻣﻮل ﺗﻮﺟﻪ ﻛﻨﻴﺪ‪.‬‬

‫ﺷﻜﻞ ‪14-16‬‬

‫ﺳﭙﺲ از ﻣﻨﻴﻮي اﺻﻠﻲ ‪ Tools_Solver‬را اﺟﺮا ﻣﻲﻛﻨﻴﻢ‪ .‬در ﻣﻘﺎﺑﻞ ‪ Set Target Cell‬ﺑﺮﭼﺴﺐ ﺳﻠﻮل ﻣﻌﺎدﻟﻪ‬
‫اول‪ ،$A$4‬در ﻣﻘﺎﺑﻞ ‪ Value of‬ﻣﻘﺪار ﺳﻤﺖ راﺳﺖ ﻣﻌﺎدﻟﻪ اول ‪ ،58‬و در ﺟﻌﺒﻪ ‪By Changing Cells‬‬
‫داﻣﻨﻪ ﺳﻠﻮلﻫﺎي ﺷﺎﻣﻞ ﻣﻘﺎدﻳﺮ ‪ x, y, z‬را ﻗﺮار ﻣﻲدﻫﻴﻢ‪ .‬در ﻗﺴﻤﺖ ‪Subject to the Constraints‬‬
‫دﻛﻤﻪ ‪ Add‬را اﺟﺮا ﻛﺮده و ﺧﺎﻧﻪﻫﺎي ﺷﺎﻣﻞ ﻓﺮﻣﻮلﻫﺎي دو ﻣﻌﺎدﻟﻪ دﻳﮕﺮ را ﺑﻪ ﺗﺮﺗﻴﺐ در ‪ Cell Reference‬و ﻣﻘﺎدﻳﺮ‬
‫ﺳﻤﺖ راﺳﺖ آنﻫﺎ را در ‪ Constraint‬وارد ﻣﻲﻛﻨﻴﻢ‪ .‬ﭘﺲ از ‪ OK‬ﺟﻌﺒﻪ ﻣﺤﺎوره ‪ Solver Parameters‬ﺑﻪ‬
‫ﺷﻜﻞ ﻧﺸﺎن داده ﺷﺪه در ‪ 15-16‬در ﻣﻲآﻳﺪ‪ .‬ﺳﭙﺲ دﻛﻤﻪ ‪ Solve‬را ﻣﻲزﻧﻴﻢ‪ .‬در ﺟﻌﺒﻪ ‪ Solver Results‬دﻛﻤﻪ‬
‫‪ Keep Solver Solution‬را ‪ OK‬ﻣﻲﻛﻨﻴﻢ )ﺷﻜﻞ ‪ .(16-16‬ﻣﻘﺎدﻳﺮ ‪ x, y, z‬در ﺳﻠﻮلﻫﺎي ‪A2, B2,‬‬
‫‪ C2‬ﻧﻮﺷﺘﻪ ﻣﻲﺷﻮﻧﺪ)ﺷﻜﻞ ‪ .(17-16‬اﮔﺮ در ﺟﻌﺒﻪ ‪ Solver Results‬دﻛﻤﻪ ‪ Save Scenario‬را ﺑﺰﻧﻴﻢ‪ .‬اﻋﻤﺎل‬
‫اﻧﺠﺎم ﺷﺪه ﺑﻪ ﺻﻮرت ‪ Scenario‬ﺿﺒﻂ ﻣﻲﺷﻮﻧﺪ‪ .‬ﺑﺎ اﺟﺮاي ‪ Tools_Scenario‬ﻣﻲﺷﻮد ‪ Scenario‬را‬
‫ﻣﺸﺎﻫﺪه ﻛﺮد ﻳﺎ ﮔﺰارش ﮔﺮﻓﺖ‪.‬‬

‫‪149‬‬
‫ﺷﻜﻞ ‪15-16‬‬

‫ﺷﻜﻞ ‪16-16‬‬

‫ﺷﻜﻞ ‪17-16‬‬

‫‪150‬‬
‫‪Data Table‬‬ ‫ﺟﺪول داده‬
‫ﻣﺜﺎل‪:‬‬
‫ﻣﻘﺎوﻣﺖ ﻣﻌﺎدل اﻳﻦ ﺷﻜﻞ را ﺑﺎ ﻣﻘﺎدﻳﺮ ‪ R1 = 10, R2 = 15‬و ‪ 0=< R3 <=18‬ﺑﻪ دﺳﺖ آورده ﺑﺮ ﺣﺴﺐ‬
‫ﺗﻐﻴﻴﺮات ‪ R3‬رﺳﻢ ﻣﻲﻛﻨﻴﻢ‪.‬‬
‫اﺑﺘﺪا ﺳﻪ ﻧﺎم ﺑﺎ ﻣﻘﺎدﻳﺮ ﻣﺮﺑﻮﻃﻪ ﺗﻌﺮﻳﻒ ﻣﻲﻛﻨﻴﻢ‪ .‬ﭼﻮن ‪ R1‬ﺑﺮﭼﺴﺐ ﺳﺘﻮن‪ -‬ردﻳﻒ ﭘﻴﺶﻓﺮض اﺳﺖ ﺑﺮاي ﻧﺎمﮔﺬاري از ‪R_1‬‬
‫اﺳﺘﻔﺎده ﻛﺮدهاﻳﻢ )ﺷﻜﻞ ‪.(18-16‬‬
‫ﻓﺮﻣﻮل را در ﻳﻜﻲ از ﺧﺎﻧﻪﻫﺎ ﻧﻮﺷﺘﻪ ﻳﻚ ﺳﺘﻮن ﺑﻪ ﭼﭗ‪ ،‬ﻳﻚ ردﻳﻒ ﭘﺎﺋﻴﻦ رﻓﺘﻪ و ﻣﻘﺎدﻳﺮ ‪ R3‬را رو ﺑﻪ ﭘﺎﺋﻴﻦ وارد ﻣﻲﻛﻨﻴﻢ‬
‫)ﺷﻜﻞ ‪(19-16‬‬
‫ﺳﻠﻮلﻫﺎﺋﻲ را ﻛﻪ ﺷﺎﻣﻞ ﻓﺮﻣﻮل و ﻣﻘﺎدﻳﺮ ‪ R3‬ﻫﺴﺘﻨﺪ ﻣﺎرك ﻛﺮده‪ ،‬از ﻣﻨﻴﻮي اﺻﻠﻲ ‪ Data_Table‬را اﺟﺮا ﻣﻲﻛﻨﻴﻢ‪ .‬در‬
‫‪ Column input cell‬ﻣﺤﻞ ﻣﺘﻐﻴﺮ را ﻛﻪ در اﻳﻦ ﺟﺎ ‪ E3‬اﺳﺖ وارد و ‪ OK‬ﻣﻲﻛﻨﻴﻢ )ﺷﻜﻞ ‪(20-16‬‬
‫ﻣﻘﺎدﻳﺮ ﻣﻘﺎوﻣﺖ ﻣﻌﺎدل ﺑﺮﺣﺴﺐ ﻣﻘﺎدﻳﺮ ‪ R3‬در ﻣﻘﺎﺑﻞ آنﻫﺎ ﻧﻮﺷﺘﻪ ﻣﻲﺷﻮد‪.‬‬
‫ﺳﭙﺲ ﻣﻨﺤﻨﻲ ﻣﺮﺑﻮﻃﻪ را رﺳﻢ ﻣﻲﻛﻨﻴﻢ‪) .‬ﺷﻜﻞ ‪(21-16‬‬

‫ﺷﻜﻞ ‪18-16‬‬

‫ﺷﻜﻞ ‪19-16‬‬

‫‪151‬‬
‫ﺷﻜﻞ ‪20-16‬‬

‫ﺷﻜﻞ ‪21-16‬‬

‫‪ 7-16‬ﺗﻤﺮﻳﻦ‬
‫‪ -1‬ﻧﻤﺮات ﺑﻴﺴﺖ داﻧﺸﺠﻮ را ﺑﻪ ﭼﻬﺎر دﺳﺘﻪ ﭘﻨﺞﺗﺎﺋﻲ ﺗﻘﺴﻴﻢ و ﺑﺎ ﻧﻤﻮدار ﺳﺘﻮﻧﻲ ﻧﻤﺎﻳﺶ دﻫﻴﺪ‪.‬‬
‫‪ -2‬ﻣﻴﺰان ﺑﺎران ﻣﺎهﻫﺎي ﻳﻚ ﺳﺎل را در ﺟﺪوﻟﻲ ﻗﺮار داده‪ ،‬ﭘﺲاز رﺳﻢ ﻣﻨﺤﻨﻲ دو ﻧﻮع ﺟﺒﺮي ﺳﺎزي اﻧﺠﺎم دﻫﻴﺪ‪.‬‬
‫‪ -3‬ﺑﺮاي ﭘﺎﻧﺼﺪ ﻧﻔﺮ ده ﻣﺠﻤﻮﻋﻪ ﺳﻨﻲ ﺗﻌﺮﻳﻒ ﻛﻨﻴﺪ‪ ،‬و ﻫﻴﺴﺘﻮﮔﺮام آن را ﻧﻤﺎﻳﺶ دﻫﻴﺪ‪.‬‬
‫‪ -4‬ﻓﺮﻣﻮل ‪ B = A * (1+r)^n‬را ﻛﻪ در آن ‪ A = 300000‬ﺳﺮﻣﺎﻳﻪ اوﻟﻴﻪ‪ B ،‬ﺳﺮﻣﺎﻳﻪ ﻧﻬﺎﺋﻲ‪،‬‬
‫‪ r = 0.1‬ﻧﺮخ ﺳﻮد و ‪ n‬ﺗﻌﺪاد ﺳﺎلﻫﺎ اﺳﺖ‪ ،‬ﺑﻪ ﺻﻮرت ﻓﺮﻣﻮل ﻛﺎرﺑﺮ ﺗﻌﺮﻳﻒ ﺑﻨﻮﻳﺴﻴﺪ‪ .‬در ﻳﻚ ﺳﺘﻮن ﺳﺮﻣﺎﻳﻪ‬
‫اوﻟﻴﻪ و در ﺳﺘﻮن دﻳﮕﺮ ﺑﺎ اﺳﺘﻔﺎده از ﺗﺎﺑﻌﻲ ﻛﻪ ﻧﻮﺷﺘﻪاﻳﺪ ﺳﺮﻣﺎﻳﻪ ﻧﻬﺎﺋﻲ را ﺑﺮ ﺣﺴﺐ ﺳﺎل ﻧﻤﺎﻳﺶ دﻫﻴﺪ‪.‬‬
‫‪ -5‬ﭼﻨﺪ ﻋﻤﻞ ﻣﺎﻧﻨﺪ ﻣﺤﺎﺳﺒﻪ ﺣﺎﺻﻞﺟﻤﻊ ﻳﻚ ﺳﺘﻮن را ﺑﻪ ﺻﻮرت ﻣﺎﻛﺮو ﺿﺒﻂ و ﺳﭙﺲ اﺟﺮا ﻛﻨﻴﺪ‪.‬‬
‫‪2‬‬
‫را ﺑﺎ ‪ Goal Seek‬ﺣﻞ ﻛﻨﻴﺪ‪.‬‬ ‫‪ -6‬ﻣﻌﺎدﻟﻪ ‪+ e− x = 0‬‬
‫‪x‬‬‫‪5‬‬
‫‪ -7‬اﻳﻦ دﺳﺘﮕﺎه را ﺑﺎ ‪ solver‬ﺣﻞ ﻛﻨﻴﺪ‪:‬‬
‫‪2‬‬ ‫‪2‬‬ ‫‪2‬‬ ‫‪2‬‬ ‫‪2‬‬
‫‪uw + t = -5, u + w + t = 14, u - 2w - 2t = -10‬‬
‫‪12N‬‬ ‫‪12N‬‬
‫)‪P = [rL(1+r/12) ]/[12[(1+r/12‬‬ ‫‪ -8‬ﻓﺮﻣﻮل ﻗﺴﻂ ﻣﺎﻫﺎﻧﻪ ﭘﺮداﺧﺖ وام ﺧﺎﻧﻪ‪-1]] :‬‬
‫ﻣﺒﻠﻎ ‪ L = 10e6‬وام ﺑﺎ ﺳﻮد ‪ r = 0.15‬ﺳﺎﻻﻧﻪ در ﻣﺪت ‪ N = 3‬ﺳﺎل ﺑﺎزﭘﺮداﺧﺖ ﻣﻲﺷﻮد‪ ،‬ﻗﺴﻂ ﻣﺎﻫﺎﻧﻪ را ﺑﺮاي‬
‫زﻣﺎن ﺑﺎزﭘﺮداﺧﺖ )‪ 3‬ﺳﺎل( ﺑﻪ ﺻﻮرت ﺟﺪول داده ﻧﺸﺎن دﻫﻴﺪ‪،‬و رﺳﻢ ﻛﻨﻴﺪ اﺳﺖ‪.‬‬

‫‪152‬‬

You might also like