Matlab

  • May 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Matlab as PDF for free.

More details

  • Words: 37,216
  • Pages: 154
‫ﻛﺎرﺑﺮد ﻛﺎﻣﭙﻴﻮﺗﺮ در ﻣﻬﻨﺪﺳﻲ‬

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

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

‫وﻳﺮاﻳﺶ ‪4‬‬

‫ﭘﺎﺋﻴﺰ ‪1385‬‬

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..........................................................................................................................‬‬

‫ﻓﺼﻞ ‪ 10‬رﻳﺎﺿﻴﺎت ﻧﻤﺎدﻳﻦ‬

‫‪Symbolic Math‬‬

‫)‪96 ........ (Symbolic Math Tool Box‬‬

‫آراﻳﻪ ﻳﺎ ﻣﺘﻐﻴﺮ ﻋﺪدي ﺑﺎ دﻗﺖ اﻓﺰوده ‪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 ..............................................................................................................‬‬ ‫‪ 4-16‬ﺗﺎﺑﻊ ﻛﺎرﺑﺮ‪ -‬ﺗﻌﺮﻳﻒ در اﻛﺴﻞ‬

‫‪VBA in Excel‬‬

‫‪145 ..........................................................‬‬

‫ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ‪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‬‬

‫ﭘﻨﺠﺮه ﻓﺮﻣﺎن ‪Command Window‬‬ ‫ﻣﺤﻞ اﺟﺮاي ﻛﻠﻴﻪ ﻓﺮﻣﺎنﻫﺎ و ﻣﻘﺪار دﻫﻲﻫﺎي‬

‫ﭘﻨﺠﺮه ﻓﻀﺎي ﻛﺎر ‪Workspace‬‬ ‫ﻧﻤﺎﻳﺶ دﻫﻨﺪه ﻛﻠﻴﻪ ﻣﺘﻐﻴﺮﻫﺎي ﺗﻌﺮﻳﻒ ﺷﺪه‬ ‫و ﻣﺸﺨﺼﻪﻫﺎي آنﻫﺎ‬

‫ﻓﻮري‪ ،‬و ﻧﻤﺎﻳﺶ ﻧﺘﺎﻳﺞ اﺟﺮا‬

‫‪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‬ﺑﻪ ﻛﺎر ﻣﻲرود‪.‬‬

‫ﻣﺜﺎل ﻫﺎ‪:‬‬ ‫وارد ﻛﺮدن ﻧﺎم ﻣﺎﺗﺮﻳﺴﻲ ﻛﻪ ﻗﺒﻼً ﺗﻌﺮﻳﻒ ﺷﺪه‬ ‫‪3‬‬ ‫‪6‬‬

‫‪2‬‬ ‫‪5‬‬

‫‪>> A‬‬ ‫‪A = 1‬‬ ‫‪4‬‬

‫ﺗﻌﺮﻳﻒ ﺑﺮدار ﺑﺎ ﻧﻘﻄﻪوﻳﺮﮔﻮل و ﻧﻮﺷﺘﻦ ﺗﻮﺿﻴﺢ‬ ‫اﻳﻦ ﻣﺘﻐﻴﺮ در ﺣﺎﻓﻈﻪ ﻧﮕﻪداري ﻣﻲﺷﻮد‪ ،‬اﻣﺎ ﻧﻤﺎﻳﺶ داده ﻧﻤﻲﺷﻮد ‪>> M = [10.2 3.4 5.6]; %‬‬ ‫ﺑﺮاي ﻣﺸﺎﻫﺪه ﻣﻘﺪار ﻣﺘﻐﻴﺮ ‪>> M %‬‬ ‫‪5.6‬‬

‫‪3.4‬‬

‫‪M = 10.2‬‬

‫ﺑﺮدار‪ -‬ﻫﻨﺪﺳﻲ‬ ‫ﺑﺮدارﻫﺎي ﻫﻨﺪﺳﻲ ﻳﺎ ﻓﻴﺰﻳﻜﻲ‪ ،‬درون ﻣﺨﺘﺼﺎت ﻗﻄﺒﻲ )ﻣﺪور( داراي دو ﻣﺨﺘﺼﻪ ﺑﺰرﮔﻲ‪ ، 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‬ﻗﺮار ﻣﻲﮔﻴﺮد‪..‬‬

‫ﻣﺜﺎل ﻫﺎ‪:‬‬ ‫ﺑﺮدار ﺑﺪون ﻧﺎم‬ ‫‪56.0000‬‬

‫‪3.4000‬‬

‫]‪>> [-2 3.4 56‬‬ ‫‪ans = -2.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‬‬

‫‪3‬‬ ‫‪6‬‬

‫‪2‬‬ ‫‪5‬‬

‫]‪4 5 6‬‬ ‫‪A = 1‬‬ ‫‪4‬‬

‫ﻳﺎ ﺑﻪ اﻳﻦ ﺻﻮرت زﻳﺮ ﻣﻘﺪار دﻫﻲ ﻛﺮد‪:‬‬ ‫‪3‬‬ ‫‪6‬‬

‫‪>> A = [1 2 3‬‬ ‫]‪4 5 6‬‬ ‫‪A = 1‬‬ ‫‪2‬‬ ‫‪4‬‬ ‫‪5‬‬

‫ﻧﻮﺷﺘﻦ ﻛﻠﻴﻪ ﻓﺮﻣﺎنﻫﺎ و ﻣﺘﻐﻴﺮﻫﺎ را ﻣﻲ ﺗﻮان ﺑﺎ ﮔﺬاﺷﺘﻦ ‪)...‬ﺳﻪ ﻧﻘﻄﻪ( در ﭘﺎﻳﺎن ﺳﻄﺮ‪ ،‬در ﺳﻄﺮ ﺑﻌﺪ اداﻣﻪ داد‪ .‬اﻣﺎ دﻗﺖ ﻛﻨﻴﺪ‬ ‫ﻛﻪ ﮔﺬاﺷﺘﻦ ﺳﻪ ﻧﻘﻄﻪ دﻧﺒﺎلﻫﻢ ﻗﺮار ﻣﻲدﻫﺪ‪ ،‬ﻟﺬا ‪ B‬ﻣﺜﺎل زﻳﺮ ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﺗﻚﺳﻄﺮي )ﺑﺮدار ردﻳﻔﻲ( ﺧﻮاﻫﺪ ﺑﻮد و ﻧﻪ‬ ‫ﻣﺎﺗﺮﻳﺲ ‪. 2×3‬‬

‫ﻣﺜﺎل‪:‬‬ ‫‪60‬‬

‫‪50‬‬

‫‪40‬‬

‫‪>> B = [10 20 30 ...‬‬ ‫]‪40 50 60‬‬ ‫‪B = 10‬‬ ‫‪20‬‬ ‫‪30‬‬

‫ﻧﻮﺷﺘﻦ ﭼﻨﺪ دﺳﺘﻮر در ﻳﻚ ﺳﻄﺮ‬ ‫اﮔﺮ ﺑﻌﺪاز ﻫﺮ دﺳﺘﻮر ﻛﺎﻣﺎ ﺑﮕﺬارﻳﻢ ﻣﻲﺗﻮاﻧﻴﻢ دﺳﺘﻮر ﺑﻌﺪي را در اداﻣﻪ ﺑﻨﻮﻳﺴﻴﻢ‪ ،‬اﻣﺎ ﻧﺘﻴﺠﻪ اﺟﺮا در ﭘﻨﺠﺮه ﻓﺮﻣﺎن ﻧﻤﺎﻳﺶ داده‬ ‫ﺧﻮاﻫﺪ ﺷﺪ‪ .‬آوردن ﺳﻤﻲﻛﺎﻟﻦ )ﻧﻘﻄﻪ‪ -‬وﻳﺮﮔﻮل( ﺑﺎﻋﺚ ﻣﻲﺷﻮد ﻧﺘﻴﺠﻪ اﺟﺮا ﻧﺸﺎن داده ﻧﺸﻮد‪.‬‬

‫ﻣﺜﺎل‪:‬‬ ‫‪>> x = 3, y = 34; z = y ^ x‬‬ ‫‪x = 3‬‬ ‫‪z = 39304‬‬

‫ﺗﻔﺎوتِ ﺣﺮوف ﺑﺰرگ و ﻛﻮﭼﻚ‬ ‫ﻣﺘﻠﺐ در ﻧﺎمﮔﺬاري ﻣﺘﻐﻴﺮﻫﺎ ﻣﺎﺑﻴﻦ ﺣﺮوف ﺑﺰرگ و ﻛﻮﭼﻚ اﻧﮕﻠﻴﺴﻲ ﻓﺮق ﻣﻲﮔﺬارد ) ‪ Case Sensitive‬اﺳﺖ(‪.‬‬

‫ﻣﺜﺎل‪:‬‬ ‫;‪>> New = 3‬‬ ‫‪>> new‬‬ ‫‪??? Undefined function or variable 'new'.‬‬

‫ﻗﻄﻊ اﺟﺮا‬ ‫ﻫﺮﮔﺎه اﺟﺮاي دﺳﺘﻮرات در ﭘﻨﺠﺮه ﻓﺮﻣﺎن ﻃﻮﻻﻧﻲ ﺷﺪ‪ ،‬در ﺻﻮرت ﺗﻤﺎﻳﻞ ﺑﺮاي ﻗﻄﻊ اﺟﺮا >‪
‫دﺳﺘﻮر‬

‫‪more‬‬

‫اﻳﻦ دﺳﺘﻮر ﺧﺮوﺟﻲﻫﺎي ﻃﻮﻻﻧﻲ را ﺻﻔﺤﻪ ﺑﻪ ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ ﻣﻴﺪﻫﺪ‪ .‬اﮔﺮ زﻣﺎن ﻧﻤﺎﻳﺶ ﺧﺮوﺟﻲ ﻃﻮﻻﻧﻲ ﺷﺪ‪ ،‬ﺑﺮاي ﻗﻄﻊ‬ ‫ﻧﻤﺎﻳﺶ و ﺑﺮﮔﺸﺖ ﺑﻪ ﺧﻂ ﻓﺮﻣﺎن ‪ Ctrl+C‬را ﺑﺰﻧﻴﺪ‪.‬‬

‫ﻣﺜﺎل‪:‬‬ ‫)‪>> more on, rand(10000,1‬‬ ‫‪>> more off‬‬

‫اﺟﺮا و ﺿﺒﻂ دﺳﺘﻮرات ﻗﺒﻠﻲ‬ ‫ﺗﻜﺮار دﺳﺘﻮرات ﻗﺒﻠﻲ ﻛﻪ در ﭘﻨﺠﺮه ﻓﺮﻣﺎن ﻧﻮﺷﺘﻪ ﺷﺪهاﻧﺪ‪ ،‬ﺑﺎ ﻛﻠﻴﺪﻫﺎي ↑ و ↓ اﻧﺠﺎم ﻣﻴﺸﻮد‪ .‬ﺑﺮاي اﺟﺮاي ﻳﻚ ﺳﻄﺮ ﻛﻠﻴﺪ‬ ‫>‪ <Enter‬و ﺑﺮاي ﺣﺬف ﻳﻚ ﺳﻄﺮ ﺗﻜﺮاري ﻧﺎدلﺧﻮاه ﻛﻠﻴﺪ >‪ <Esc‬ﻳﺎ در اﺑﺘﺪاي ﺳﻄﺮ ﻛﻠﻴﺪ >‪
‫اﮔﺮ ﺳﻄﺮ ﻓﺮﻣﺎﻧﻲ در ﻫﺮﻳﻚ از ﭘﻨﺠﺮهﻫﺎي ﻓﺮﻣﺎن ﻳﺎ ﺗﺎرﻳﺨﭽﻪ ﻓﺮﻣﺎن ﻳﺎ ادﻳﺘﻮر ام‪ -‬ﻓﺎﻳﻞ ﻣﺎرك ﺷﻮد‪ ،‬ﺑﺎ راﺳﺖ ﻛﻠﻴﻚ و اﻧﺘﺨﺎب‬ ‫‪ 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‬را اﺟﺮا ﻛﻨﻴﺪ‪ .‬ﻣﺸﺨﺼﻪﻫﺎي ﺑﻌﻀﻲ از اﻧﻮاع ﻋﺪدي در ﺟﺪول زﻳﺮ آﻣﺪه اﺳﺖ‪.‬‬ ‫ﻧﺎم‬

‫دﺳﺘﻮر ﺗﺒﺪﻳﻞ ﻧﻮع ﺟﺎ در ﺣﺎﻓﻈﻪ )ﺑﺎﻳﺖ( ﺗﻌﺪاد ارﻗﺎم ﺑﺎ ﻣﻌﻨﻲ‬ ‫ﺑﻌﺪاز ﻣﻤﻴﺰ‬

‫دﻗﺖ ﻣﻀﺎﻋﻒ ‪double‬‬

‫)(‪double‬‬

‫‪8‬‬

‫‪15‬‬

‫دﻗﺖ ﺳﺎده ‪* single‬‬

‫)(‪single‬‬

‫‪4‬‬

‫‪7‬‬

‫)(‪int16‬‬

‫‪2‬‬

‫‪N/A‬‬

‫)(‪int8‬‬

‫‪1‬‬

‫‪N/A‬‬

‫)(‪logical‬‬

‫‪1‬‬

‫‪N/A‬‬

‫)(‪char‬‬

‫‪1‬‬

‫‪N/A‬‬

‫ﺻﺤﻴﺢ ﺑﺰرگ ‪** long integer‬‬ ‫ﺻﺤﻴﺢ ﻛﻮﭼﻚ ‪*** short integer‬‬ ‫ﻣﻨﻄﻘﻲ ‪logical‬‬

‫ﻛﺎراﻛﺘﺮي ‪**** 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‬ﺑﺰرگﺗﺮﻳﻦ ﻋﺪد ﻣﻤﻜﻦ ﺑﺮ روي ﻛﺎﻣﭙﻴﻮﺗﺮ ﺷﻤﺎ‬

‫‪ realmin‬ﻛﻮﭼﻚﺗﺮﻳﻦ ﻋﺪد ﻣﻤﻜﻦ ﺑﺮ روي ﻛﺎﻣﭙﻴﻮﺗﺮ ﺷﻤﺎ‬

‫)‪4*atan(1‬‬ ‫))‪imag(log(-1‬‬ ‫‪3.141592653589793e+000‬‬

‫‪ pi‬ﻋﺪد ﭘﻲ‬ ‫‪Inf, inf‬‬ ‫‪NaN,nan‬‬

‫‪2.225073858507201e-308‬‬

‫‪ Infinity‬ﻧﺘﻴﺠﻪ ﺗﻘﺴﻴﻢ ﻋﺪد ﺑﺮ ﺻﻔﺮ‬ ‫‪ Not a Number‬ﺗﻘﺴﻴﻢ ‪ inf‬ﺑﺮ ‪ inf‬و ﺻﻔﺮ ﺑﺮ ﺻﻔﺮ‬

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

‫‪27‬‬

‫دﺳﺘﻮر ﻓﺮﻣﺖ‬

‫‪format‬‬

‫دﺳﺘﻮر ‪ format‬ﻓﻘﻂ روش ﻧﻤﺎﻳﺶ اﻋﺪاد در ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ را ﺗﻌﻴﻴﻦ ﻣﻲﻛﻨﺪ‪ ،‬و ﺗﺄﺛﻴﺮي در دﻗﺖ ﻧﮕﻪداري اﻋﺪاد در‬ ‫ﺣﺎﻓﻈﻪ ﻧﺪارد‪ .‬ﻓﻘﻂ اﻋﺪاد ﺻﺤﻴﺢ ﻗﺎﺑﻞ ﺗﺒﺪﻳﻞ ﺑﻪ و ﻧﻤﺎﻳﺶ در ﻣﺒﻨﺎي ﺷﺎﻧﺰده ﻫﺴﺘﻨﺪ‪ ،‬ﻟﺬا ﻫﺮ ﻋﺪد را ﺑﺎﻳﺪ اﺑﺘﺪا ﺑﻪ ﻋﺪد ﺻﺤﻴﺢ‬ ‫ﺗﺒﺪﻳﻞ و ﺳﭙﺲ آنرا ﺑﺎ ﻓﺮﻣﺖ ﻫﮕﺰ ﻧﻤﺎﻳﺶ داد‪.‬‬ ‫در ﺟﺪول زﻳﺮ ﭼﻨﺪ ﻧﻮع روش ﻧﻤﺎﻳﺶ اﻋﺪاد آﻣﺪه اﺳﺖ‪ ،‬ﺑﺮاي اﻃﻼع ﺑﻴﺸﺘﺮ ‪ help format‬را اﺟﺮا ﻛﻨﻴﺪ‪.‬‬ ‫ﻧﺎم‬ ‫ﻓﺮﻣﺖ ﺑﺎﻧﻜﻲ )ﻓﻘﻂ ﺑﺮاي اﻋﺪاد ﺣﻘﻴﻘﻲ(‬ ‫ﻓﺮﻣﺖ ﻛﻮﺗﺎه‬ ‫ﻓﺮﻣﺖ ﺑﻠﻨﺪ‬ ‫ﻓﺮﻣﺖ ﺑﻠﻨﺪِ ﻧﻤﺎﺋﻲ‬ ‫ﻓﺮﻣﺖ ﻣﺒﻨﺎي ﺷﺎﻧﺰده )ﻓﻘﻂ ﺑﺮاي اﻋﺪاد ﺻﺤﻴﺢ(‬ ‫ﻧﻤﺎﻳﺶ ﺑﻪ ﺻﻮرت ﻛﺴﺮ ﻣﺘﻌﺎرﻓﻲ‬

‫ارﻗﺎم ﺑﻌﺪ از ﻧﻘﻄﻪ‪ -‬اﻋﺸﺎر‬

‫دﺳﺘﻮر‬ ‫‪format bank‬‬

‫‪2‬‬

‫‪format‬‬ ‫‪format short‬‬ ‫‪format long‬‬

‫‪4‬‬ ‫‪14‬‬

‫‪format long e‬‬

‫‪15‬‬

‫‪format hex‬‬

‫‪N/A‬‬

‫‪format rational‬‬

‫‪N/A‬‬

‫ﻣﺜﺎل ﻫﺎ‪:‬‬ ‫ارزش ﻣﺤﺎﺳﺒﺎﺗﻲ ‪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‬در ﻣﻘﺎﺑﻠﺸﺎن ﻧﻤﺎﻳﺶ داده‬ ‫ﻣﻲﺷﻮﻧﺪ‪ ،‬ﻛﻪ ﺑﺎﻳﺴﺘﻲ اﻳﻦ ﺿﺮﻳﺐ را در ﻋﺪد ﺿﺮب ﻛﺮد‪.‬‬

‫ﻣﺜﺎل‪:‬‬ ‫‪0.00000001‬‬

‫‪>> format long‬‬ ‫]‪>> x = [1e6 1e7 1e-1‬‬ ‫* ‪x = 1.0e+007‬‬ ‫‪0.100000000‬‬ ‫↑‬ ‫‪scale factor‬‬

‫‪1.00000000‬‬

‫‪ 2-2‬ﻋﻤﻠﮕﺮﻫﺎ‬ ‫ﻋﻤﻠﮕﺮﻫﺎي آراﻳﻪ اي‬ ‫اﻳﻦ ﻋﻤﻠﮕﺮﻫﺎ ﺑﺮ روي آراﻳﻪﻫﺎي ﻣﻮرد ﻋﻤﻞ ﺑﻪ ﺻﻮرت ﻋﻨﺼﺮ ﺑﻪ ﻋﻨﺼﺮ ﻋﻤﻞ ﻣﻲﻛﻨﻨﺪ و در ﻣﻘﺎﺑﻞ ﻋﻤﻠﮕﺮﻫﺎي ﻣﺎﺗﺮﻳﺴﻲ ﻗﺮار‬ ‫دارﻧﺪ ﻛﻪ ﺗﻌﺎرﻳﻒ ﺧﺎص ﺧﻮد را دارﻧﺪ‪ .‬ﺟﻤﻊ و ﺗﻔﺮﻳﻖ آراﻳﻪاي و ﻣﺎﺗﺮﻳﺴﻲ ﻳﻚﺳﺎن ﻫﺴﺘﻨﺪ‪ .‬ﻣﺎﺗﺮﻳﺲﻫﺎ ﻳﺎ ﺑﺮدارﻫﺎﺋﻲ ﻛﻪ در‬ ‫ﻋﻤﻞ آراﻳﻪاي ﻣﺸﺎرﻛﺖ دارﻧﺪ ﺑﺎﻳﺪ ﻫﻤﺴﺎن ﺑﺎﺷﻨﺪ‪.‬‬ ‫ﻋﻤﻠﮕﺮ ﺗﺮاﻧﻬﺎد ‪ Transpose‬ﺑﺎ ﻋﻼﻣﺖ آﭘﻮﺳﺘﺮوف‪ ،‬ﺟﺎي ﺳﺘﻮن و ردﻳﻒ ﻣﺎﺗﺮﻳﺲ را ﻋﻮض ﻣﻲﻛﻨﺪ‪ ،‬و در ﻣﻮرد ﺑﺮدارﻫﺎ‬ ‫ﺑﺮدار ردﻳﻔﻲ را ﺑﻪ ﺑﺮدار ﺳﺘﻮﻧﻲ )و ﺑﺎﻟﻌﻜﺲ( ﺗﺒﺪﻳﻞ ﻣﻲﻛﻨﺪ‪.‬اﻳﻦ ﻋﻤﻠﮕﺮﻫﺎ در ﺟﺪول زﻳﺮ آﻣﺪهاﻧﺪ‪.‬‬ ‫ﺟﻤﻊ ﺗﻔﺮﻳﻖ ﺗﻮان ﺿﺮب ﺗﻘﺴﻴﻢ )ﻣﻌﻤﻮﻟﻲ( ﺗﻘﺴﻴﻢ راﺳﺖ ﺑﻪ ﭼﭗ ﺗﺮاﻧﻬﺎد ‪Transpose‬‬ ‫‪+‬‬

‫‪-‬‬

‫^‪.‬‬

‫*‪.‬‬

‫‪./‬‬

‫\‪.‬‬

‫'‬

‫ﻣﺜﺎل ﻫﺎ‪:‬‬ ‫ﺿﺮب و ﺗﻘﺴﻴﻢ آراﻳﻪاي‬

‫‪4.0000‬‬ ‫‪0.2500‬‬

‫;]‪>> a = [2 4 8‬‬ ‫;]‪>> b = [3 2 2‬‬ ‫‪>> a .* b‬‬ ‫‪ans = 6‬‬ ‫‪8‬‬ ‫‪16‬‬ ‫‪>> a ./ b‬‬ ‫‪ans = 0.6667‬‬ ‫‪2.0000‬‬ ‫‪>> ar = a .\ b‬‬ ‫‪ar = 1.5000‬‬ ‫‪0.5000‬‬

‫ﺗﺮاﻧﻬﺎد )ﺗﺮاﻧﺴﭙﻮز(‬ ‫' ]‪>> 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‬‬

‫ﻣﺜﺎل ﻫﺎ‪:‬‬ ‫ﻣﺎﺗﺮﻳﺲ ﺗﺼﺎدﻓﻲ دو ﺻﻔﺤﻪاي‬ ‫‪0.1763‬‬ ‫‪0.4057‬‬ ‫‪0.0579‬‬ ‫‪0.3529‬‬

‫‪0.9355‬‬ ‫‪0.9169‬‬ ‫‪0.8132‬‬ ‫‪0.0099‬‬

‫)‪>> B = rand(2,3,2‬‬ ‫‪B(:,:,1) = 0.9218‬‬ ‫‪0.7382‬‬ ‫‪B(:,:,2) = 0.4103‬‬ ‫‪0.8936‬‬

‫ﺑﺮدار ﻋﺪدي ﺑﺎ ‪ n‬ﻋﻨﺼﺮ ﺗﺼﺎدﻓﻲ‬ ‫‪0.2140‬‬

‫‪0.6435‬‬

‫در ﻣﺜﺎل ﻓﻮق ﻣﺎﺗﺮﻳﺴﻲ ﺑﺎ‬

‫‪0.4387‬‬

‫‪0.4983‬‬

‫‪) p = 1‬ﻣﺎﺗﺮﻳﺲ دو ﺑﻌﺪي‪ ،‬ﺗﻚ ﺻﻔﺤﻪ(‬

‫)‪>> d1 = rand(1,6‬‬ ‫‪d1 = 0.9901‬‬ ‫‪0.7889‬‬

‫‪) m = 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‬ﻗﺮار ﻣﻲدﻫﺪ‪.‬‬

‫ﻣﺜﺎل‪:‬‬ ‫ﻳﻚ ﺑﺮدار ﺑﺎ ده ﻋﻀﻮ ﻣﺘﻨﺎوب ﺻﻔﺮ وﻳﻚ ﺗﻮﻟﻴﺪ ﻛﻨﻴﺪ‪.‬‬

‫‪1‬‬

‫‪0‬‬

‫‪0‬‬

‫‪1‬‬

‫‪0‬‬

‫‪1‬‬

‫;]‪>> A = [1 0‬‬ ‫)‪>> B = repmat(A, 1, 5‬‬ ‫‪B = 1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬

‫ﺗﻮاﺑﻊ ﺗﺤﻠﻴﻞ داده ﻫﺎ‬ ‫ﺑﺮﺧﻲ از ﺗﻮاﺑﻊ ﻛﻪ ﺟﻬﺖ ﺗﺤﻠﻴﻞ آﻣﺎري ﻣﺠﻤﻮﻋﻪاي از دادهﻫﺎ ﺑﻪ ﻛﺎر ﻣﻴﺮوﻧﺪ در ﺟﺪول زﻳﺮ آﻣﺪهاﻧﺪ‪.‬‬ ‫ﺑﺮاي اﻃﻼع ﺑﻴﺸﺘﺮ ﺑﻪ ﻓﺼﻞ ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﻣﺜﺎلِ ﺗﺤﻠﻴﻞ آﻣﺎري ﻧﻤﺮات داﻧﺸﺠﻮﻳﺎن ﻣﺮاﺟﻌﻪ ﻛﻨﻴﺪ‪.‬‬ ‫ﻧﺎم ﺗﺎﺑﻊ‬ ‫ﺧﺮوﺟﻲ ﺗﺎﺑﻊ‬ ‫‪30‬‬

‫)(‪max‬‬

‫)(‪min‬‬

‫)(‪mean‬‬

‫ﻋﻨﺼﺮ ﻣﺎﻛﺰﻳﻤﻢ ﻋﻨﺼﺮ ﻣﻲﻧﻴﻤﻢ ﻣﻘﺪار ﻣﻴﺎﻧﮕﻴﻦ ﻋﻨﺎﺻﺮ‬

‫)(‪hist‬‬

‫ﭘﻴﺸﻴﻨﻪ ﻧﮕﺎر‬

‫ﻧﺎم ﺗﺎﺑﻊ‬

‫)(‪std‬‬

‫)(‪sort‬‬

‫)(‪sum‬‬

‫ﺧﺮوﺟﻲ ﺗﺎﺑﻊ‬

‫ﻣﻘﺪار اﻧﺤﺮاف ﻣﻴﺎﻧﻪ ﻋﻨﺎﺻﺮ‬

‫ﻣﺮﺗﺐﺳﺎزي ﻋﻨﺎﺻﺮ‬

‫ﻣﺠﻤﻮع ﻋﻨﺎﺻﺮ‬

‫ﺗﻮاﺑﻊ زﻣﺎﻧﻲ‬ ‫ﺟﺪول زﻳﺮ ﺑﻌﻀﻲ از ﺗﻮاﺑﻊ زﻣﺎﻧﻲ را ﻧﺸﺎن ﻣﻲدﻫﺪ‪:‬‬ ‫ﺷﺮح‬

‫دﺳﺘﻮر‬ ‫‪ 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‬اﺳﺘﻔﺎده ﻛﺮدهاﻳﻢ‪% .‬‬ ‫‪33‬‬

‫‪8‬‬

‫‪26‬‬

‫‪11‬‬

‫‪ans = 2002‬‬

‫‪5‬‬

‫ﻧﻤﺎﻳﺶ ﺗﺎرﻳﺦ ﻛﺎﻣﭙﻴﻮﺗﺮ‬ ‫‪>> date‬‬ ‫‪ans = 26-May-2002‬‬

‫ﺗﻮاﺑﻊ ﺧﺎص‬ ‫ﻧﻤﻮﻧﻪﻫﺎﺋﻲ از ﺗﻮاﺑﻊ ﭘﻴﺸﺮﻓﺘﻪ رﻳﺎﺿﻲ در زﻳﺮ آﻣﺪهاﻧﺪ‪:‬‬ ‫ﺗﺎﺑﻊ ﻟﮋاﻧﺪر‬

‫ﺗﺎﺑﻊ ﺑﺴﻞ‬

‫ﺗﺎﺑﻊ ﮔﺎﻣﺎ‬

‫‪t x −1 e −t dt‬‬

‫∞‬

‫‪∫0‬‬

‫= )‪Γ( x‬‬

‫ﺗﺎﺑﻊ ﺑﺘﺎ‬

‫) ‪Γ ( x )Γ ( y‬‬ ‫) ‪Γ( x + y‬‬

‫)‪beta(x‬‬

‫)‪gamma(x) bessel(n,x) legendre(n,x‬‬ ‫ﺑﺮاي ﻛﺴﺐ اﻃﻼع ﺑﻴﺸﺘﺮ در ﻣﻮرد ﺗﻮاﺑﻊ ﺧﺎص از ‪ help‬ﻣﺮﺑﻮط ﺑﻪ آن ﺗﺎﺑﻊ اﺳﺘﻔﺎده ﻛﻨﻴﺪ‪.‬‬

‫ﺗﻮاﺑﻊ ﻛﺎرﺑﺮ‪ -‬ﺗﻌﺮﻳﻒ‬ ‫ﺗﻮاﺑﻊ ﻛﺘﺎبﺧﺎﻧﻪاي ﻣﺘﻠﺐ ﺑﺎ ﺗﻤﺎم ﮔﺴﺘﺮدﮔﻲ ﺗﻤﺎم ﻧﻴﺎزﻫﺎ را ﺑﺮآورده ﻧﻤﻲﻛﻨﻨﺪ‪ ،‬ﻟﺬا ﻛﺎرﺑﺮان ﻣﻲﺗﻮﻧﻨﺪ ﺗﻮاﺑﻊ ﻣﻮرد ﻧﻴﺎز و ﺧﺎص‬ ‫ﺧﻮد را در ﻓﺎﻳﻞﻫﺎﺋﻲ ﺑﻪ ﻧﺎم ‪ Function M-File‬ﺗﻌﺮﻳﻒ و ﻣﺸﺎﺑﻪ ﺑﺎ ﺗﻮاﺑﻊ ﻛﺘﺎبﺧﺎﻧﻪاي از آنﻫﺎ اﺳﺘﻔﺎده ﻛﻨﻨﺪ‪ .‬ﺷﺮح‬ ‫ﺑﻴﺸﺘﺮ در ﻓﺼﻮل ﺑﻌﺪ ﻣﻲآﻳﺪ‪.‬‬

‫‪31‬‬

‫ﺑﻌﻀﻲ از ﺗﻮاﺑﻊ رﻳﺎﺿﻲ ﻛﺘﺎب ﺧﺎﻧﻪ اي‬ ‫ﺗﺎﺑﻊ‬

‫ﻧﺎم‬

‫)‪abs(x‬‬

‫ﻗﺪر ﻣﻄﻠﻖ‬

‫)‪sqrt(x‬‬

‫رﻳﺸﻪي دوم‬ ‫‪x‬‬

‫)‪exp(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) [-π, π‬‬

‫ﮔﺮد ﻛﻨﻨﺪه ﺑﻪ ﻧﺰدﻳﻚﺗﺮﻳﻦ ﻋﺪد ﺻﺤﻴﺢ ﺑﻪ ‪x‬‬

‫** )‪round(x‬‬

‫ﮔﺮد ﻛﻨﻨﺪه ﺑﻪ ﻧﺰدﻳﻚﺗﺮﻳﻦ ﻋﺪد ﺻﺤﻴﺢ ﺑﻪ ‪ x‬در ﺟﻬﺖ ﺻﻔﺮ‬

‫** )‪fix(x‬‬

‫ﮔﺮد ﻛﻨﻨﺪه ﺑﻪ ﻧﺰدﻳﻚﺗﺮﻳﻦ ﻋﺪد ﺻﺤﻴﺢ ﺑﻪ ‪ x‬در ﺟﻬﺖ ∞‪+‬‬

‫** )‪ceil(x‬‬

‫ﮔﺮد ﻛﻨﻨﺪه ﺑﻪ ﻧﺰدﻳﻚﺗﺮﻳﻦ ﻋﺪد ﺻﺤﻴﺢ ﺑﻪ ‪ x‬در ﺟﻬﺖ ∞‪-‬‬

‫** )‪floor(x‬‬

‫ﺑﺎﻗﻲﻣﺎﻧﺪه ﺗﻘﺴﻴﻢ‪ ،‬ﺑﺎ ﻋﻼﻣﺖ ﻣﻮاﻓﻖ ‪x‬‬

‫*** )‪rem(x,y‬‬

‫ﺑﺎﻗﻲﻣﺎﻧﺪه ﺗﻘﺴﻴﻢ‪ ،‬ﺑﺎ ﻋﻼﻣﺖ ﻣﻮاﻓﻖ ‪y‬‬

‫*** )‪mod(x,y‬‬

‫ﺑﺰرگﺗﺮﻳﻦ ﻣﻘﺴﻮم ﻋﻠﻴﻪ ﻣﺸﺘﺮك‬

‫)‪gcd(x,y‬‬

‫ﻛﻮﭼﻚﺗﺮﻳﻦ ﻣﻀﺮب ﻣﺸﺘﺮك‬

‫)‪lcm(x,y‬‬

‫ﻧﺰدﻳﻚﺗﺮﻳﻦ ﻛﺴﺮ ﻣﺘﻌﺎرﻓﻲ ﺑﻪ ‪ x‬ﺑﻪ ﺻﻮرت ‪t/n‬‬

‫)‪[t,n] = rat(x‬‬ ‫)‪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‬‬

‫ﺗﺎﺑﻊ‬

‫ﻣﻘﺪار‬

‫ﺷﺮح‬

‫)‪ real(z‬ﻗﺴﻤﺖ ﺣﻘﻴﻘﻲ را ﺑﺮﻣﻲﮔﺮداﻧﺪ‬

‫‪a‬‬

‫)‪ imag(z‬ﻗﺴﻤﺖ ﻣﻮﻫﻮﻣﻲ را ﺑﺮﻣﻲﮔﺮداﻧﺪ‬

‫‪b‬‬

‫)‪ abs(z‬ﻗﺪر ﻣﻄﻠﻖ |‪ |z‬را ﺑﺮﻣﻲﮔﺮداﻧﺪ‬ ‫‪a2 + b2‬‬ ‫)‪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‬‬ ‫)‪z = mg * exp(j*ang‬‬

‫)‪mg = abs(z‬‬ ‫)‪ang = angle(z‬‬

‫ﻓﺮمﻫﺎي ﻧﻮﺷﺘﺎري ﻋﺪد ﻣﺨﺘﻠﻂ‬

‫ﻣﺜﺎل‪:‬‬ ‫ﻣﺎﺗﺮﻳﺲ ﻣﺨﺘﻠﻂ ‪ px‬را ﺑﺎ ﻗﺴﻤﺖﻫﺎي ﺣﻘﻴﻘﻲ و ﻣﺠﺎزي ‪ im,re‬ﺑﻪ دو ﻓﺮم ﻗﺎﺋﻢ و ﻗﻄﺒﻲ ﺑﻨﻮﻳﺴﻴﺪ‪ .‬ﻣﺨﺘﺼﺎت ﻗﻄﺒﻲ آنرا‬ ‫‪ mag,tet‬ﺑﮕﻴﺮﻳﺪ‪.‬‬ ‫‪3.0000 - 6.0000i‬‬

‫‪3.0000 - 6.0000i‬‬

‫;]‪>> re = [1 2 3]; im = [-4 -5 -6‬‬ ‫‪>> px = re + j*im‬‬ ‫‪px = 1.0000 - 4.0000i‬‬ ‫‪2.0000 - 5.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‬‬

‫‪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‬ﺑﺎ اﺳﺘﻔﺎده از ﺗﻮاﺑﻊ ﻣﺨﺘﻠﻂ ﻣﻘﺪار اﻣﭙﺪاﻧﺲ و ﺿﺮﻳﺐ ﺗﻮان ﻣﺪار زﻳﺮ را ﺑﺎ ﻣﻘﺎدﻳﺮ داده ﺷﺪه ﭘﻴﺪا ﻛﻨﻴﺪ‪.‬‬ ‫‪1000rad/s‬‬

‫‪34‬‬

‫= ‪ω‬‬

‫‪R = 1Ω, L = 1mH, C = 1µF,‬‬

‫ﻓﺼﻞ ‪ 3‬ﻣﺎﺗﺮﻳﺲ ﻫﺎ‬ ‫‪ 1-3‬ﺗﺸﺎﺑﻪ ﻣﺎﺑﻴﻦ ﻣﺎﺗﺮﻳﺲ ﻫﺎ‬ ‫راﺑﻄﻪ ﺗﺸﺎﺑﻪ ﺑﻪ ﻳﻜﻲ از اﺷﻜﺎل زﻳﺮ ﻣﺎﺑﻴﻦ ﻣﺎﺗﺮﻳﺲﻫﺎ ﺑﺮﻗﺮار اﺳﺖ‪ .‬در اﻳﻦ ﻣﺘﻦ از اﺻﻄﻼح ﻫﻢﺳﺎن اﺳﺘﻔﺎده زﻳﺎدي ﻣﻲﺷﻮد‪.‬‬ ‫ﻧﺎم‬

‫ﺗﻌﺮﻳﻒ‬

‫ﻫﻢردﻳﻒ‪ -‬ﻫﻢﺳﺘﻮن )ﻫﻢﺳﺎن(‬

‫ﻛﺎرﺑﺮد‬

‫ﭼﻨﺪ ﻣﺎﺗﺮﻳﺲ ﺑﺎ ﺗﻌﺪاد ردﻳﻒﻫﺎ و ﺳﺘﻮنﻫﺎي ﻣﺴﺎوي‬

‫ﺗﺮﺳﻴﻤﺎت‪... ،‬‬

‫ﻫﻢ ردﻳﻒ‪ -‬ﺑﺎ ﺳﺘﻮن )ﺿﺮبﭘﺬﻳﺮ( دو ﻣﺎﺗﺮﻳﺲ ﺑﺎ ﺗﻌﺪاد ردﻳﻒﻫﺎي ﻳﻜﻲ ﻣﺴﺎوي ﺳﺘﻮنﻫﺎي دﻳﮕﺮي ﺿﺮب ﻣﺎﺗﺮﻳﺴﻲ‬ ‫ﻣﺴﺎوي )ﻳﻜﺴﺎن(‬

‫ﻋﻤﻠﻴﺎت رﻳﺎﺿﻲ‬

‫ﭼﻨﺪ ﻣﺎﺗﺮﻳﺲ ﺑﺎ ﺗﻌﺪاد ردﻳﻒﻫﺎ و ﺳﺘﻮنﻫﺎي ﻣﺴﺎوي‬ ‫و ﻣﻘﺪار دراﻳﻪﻫﺎي ﻣﺴﺎوي‬

‫ﻣﺘﺴﺎوياﻟﻌﻨﺼﺮ‬

‫ﻋﻤﻠﻴﺎت ﻣﺎﺗﺮﻳﺴﻲ‬

‫ﭼﻨﺪ ﻣﺎﺗﺮﻳﺲ ﺑﺎ ﺗﻌﺪاد دراﻳﻪﻫﺎي ﻣﺴﺎوي‬ ‫اﻣﺎ ﺗﻌﺪاد ردﻳﻒﻫﺎ و ﺳﺘﻮنﻫﺎي ﻧﺎﻣﺴﺎوي‬

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

‫‪Elementary Matrices‬‬

‫ﻣﺎﺗﺮﻳﺲﻫﺎﺋﻲ ﻧﻈﻴﺮ )(‪ zeros(), ones(), rand(), eye‬در ﻣﺘﻠﺐ ﻣﺎﺗﺮﻳﺲ ﭘﺎﻳﻪ ﻧﺎم دارﻧﺪ‪ .‬راﻫﻨﻤﺎي آنﻫﺎ و‬ ‫ﺑﻌﻀﻲ اﻃﻼﻋﺎت دﻳﮕﺮ ﺑﺎ اﺟﺮاي ‪ help elmat‬روي ﭘﻨﺠﺮه ﻓﺮﻣﺎن ﻧﻤﺎﻳﺶ داده ﻣﻲﺷﻮﻧﺪ‪.‬‬

‫ﻣﺎﺗﺮﻳﺲ ﻳﮕﺎﻧﻲ‬

‫‪identity matrix‬‬

‫دﺳﺘﻮر)‪ eye(n,m‬ﻣﺎﺗﺮﻳﺴﻲ ﺑﺎ ﻗﻄﺮي ﻣﺘﺸﻜﻞ از ﻳﻚﻫﺎ و ﺳﺎﻳﺮ ﻋﻨﺎﺻﺮ ﻣﺴﺎوي ﺑﺎ ﺻﻔﺮ اﻳﺠﺎد ﻣﻲﻛﻨﺪ‪ .‬دﺳﺘﻮر )‪eye(n‬‬

‫ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﻳﮕﺎﻧﻲ ﻣﺮﺑﻌﻲ ‪ n × n‬اﻳﺠﺎد ﻣﻲﻛﻨﺪ‪.‬‬

‫ﻣﺜﺎل‪:‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬

‫ﻣﺎﺗﺮﻳﺲ ﻫﺎي )(‪ ones‬و‬

‫)‪>> x = eye(3‬‬ ‫‪x = 1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬

‫)(‪zeros‬‬

‫دﺳﺘﻮر)‪ 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,:) %‬‬ ‫‪3‬‬

‫‪2‬‬

‫‪A1 = 1‬‬

‫اﺳﺘﺨﺮاج ﻳﻚ ﺳﺘﻮن از ﻣﺎﺗﺮﻳﺲ‬ ‫;]‪>> 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) %‬‬ ‫‪3‬‬ ‫‪6‬‬

‫‪A23 = 2‬‬ ‫‪5‬‬

‫ﺗﻐﻴﻴﺮ ﻣﻘﺪار ﻋﻨﺎﺻﺮ ﻣﺎﺗﺮﻳﺲ‬ ‫ﻣﺜﺎل‪:‬‬ ‫⎤‪⎡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‬ﺗﻮﻟﻴﺪ ﻣﻲﻛﻨﻴﻢ‪:‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪9.00‬‬

‫;‪>> b1 = b‬‬ ‫)‪>> b1(1:2,2:3) = zeros(2‬‬ ‫‪b1 = 1.00‬‬ ‫‪0‬‬ ‫‪2.00‬‬ ‫‪0‬‬ ‫‪3.00‬‬ ‫‪6.00‬‬

‫ﻣﺎﺗﺮﻳﺲ ‪ b2‬را ﻣﺴﺎوي ‪ b‬ﺗﻮﻟﻴﺪ ﻣﻲﻛﻨﻴﻢ‪:‬‬ ‫‪1.00‬‬ ‫‪1.00‬‬ ‫‪9.00‬‬

‫‪36‬‬

‫;‪>> b2 = b‬‬ ‫)‪>> b2(1:2,2:3) = ones(2‬‬ ‫‪b2 = 1.00‬‬ ‫‪1.00‬‬ ‫‪2.00‬‬ ‫‪1.00‬‬ ‫‪3.00‬‬ ‫‪6.00‬‬

‫ﻗﺮار دادن ﻳﻚ ﻣﺎﺗﺮﻳﺲ در ﻣﺎﺗﺮﻳﺲ دﻳﮕﺮ‬ ‫ﻋﺒﺎرت ‪ 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‬‬ ‫‪= 30‬‬

‫>>‬ ‫>>‬ ‫>>‬ ‫‪cm‬‬

‫ﺣﺎﺻﻞ ﻣﺎﺗﺮﻳﺴﻲ‬ ‫]‪>> 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.‬‬

‫دو ﺟﻮاب ﻣﺨﺘﻠﻒ در ﻧﺘﻴﺠﻪ ﺟﺎﺑﺠﺎﺋﻲ ﻋﻮاﻣﻞ ﺿﺮب‬ ‫]‪3 0 -3‬‬ ‫‪-6‬‬ ‫‪-3‬‬ ‫]‪1 ; 2 6‬‬

‫‪-27‬‬ ‫‪-3‬‬ ‫‪-30:‬‬

‫;‪>> a = [1 2 -6‬‬ ‫‪a = 1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪0‬‬ ‫‪>> b = [2 5 ; 0‬‬ ‫‪b = 2‬‬ ‫‪5‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪6‬‬ ‫‪>> a * b‬‬ ‫‪ans = -10‬‬ ‫‪-29‬‬ ‫‪0‬‬ ‫‪-3‬‬ ‫‪>> b * a‬‬ ‫‪ans = 17‬‬ ‫‪4‬‬ ‫‪3‬‬ ‫‪0‬‬ ‫‪20‬‬ ‫‪4‬‬

‫ﺗﻮان ﻣﺎﺗﺮﻳﺴﻲ‬ ‫‪ 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‬ﺑﻪ اﻳﻦ ﺻﻮرت ﺗﻌﺮﻳﻒ ﻣﻲﺷﻮﻧﺪ‪:‬‬ ‫‪A‬‬ ‫‪B‬‬ ‫‪C‬‬ ‫‪D‬‬

‫=‬ ‫=‬ ‫=‬ ‫=‬

‫)‪E(:,:,1‬‬ ‫)‪E(:,:,2‬‬ ‫)‪E(:,:,3‬‬ ‫)‪E(:,:,4‬‬

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

‫‪39‬‬

‫ﻣﺜﺎل‪:‬‬ ‫ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﻓﻀﺎﺋﻲ ﺑﺎ ﭼﻬﺎر ﺻﻔﺤﻪ ﺗﻮﻟﻴﺪ ﻛﻨﻴﺪ‪ .‬ﺗﻌﺪاد ردﻳﻒ و ﺳﺘﻮنِ ﻫﺮ ﺻﻔﺤﻪ‪ ،‬و ﺗﻌﺪاد ﺻﻔﺤﻪﻫﺎي آنرا ﺑﺎ ﺗﺎﺑﻊ داﺧﻠﻲ‬ ‫)(‪ size‬ﻧﻤﺎﻳﺶ دﻫﻴﺪ‪ .‬ﺑ‪‬ﻌﺪ آن را ﺑﺎ اﺳﺘﻔﺎده از ﺗﺎﺑﻊ داﺧﻠﻲ)(‪ ndims‬ﺗﻌﻴﻴﻦ ﻛﻨﻴﺪ‪.‬‬ ‫;]‪[2 -5; 16 7.6; 13.3 -9‬‬ ‫;] ‪[-2 -5.2; 6 7.3; 5 1.4‬‬ ‫;] ‪[-2 2 ; 7 3; 1.55 1.4‬‬ ‫;] ‪[-2.2 12 ; 7.3 30; 5.5 1.4‬‬

‫=‬ ‫=‬ ‫=‬ ‫=‬

‫‪A‬‬ ‫‪B‬‬ ‫‪C‬‬ ‫‪D‬‬

‫>>‬ ‫>>‬ ‫>>‬ ‫>>‬

‫;‪>> 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‬‬ ‫‪6‬‬

‫‪1‬‬ ‫‪4 1‬‬ ‫‪10 5‬‬ ‫‪20 15‬‬

‫‪1‬‬ ‫‪3‬‬ ‫‪6‬‬ ‫‪10‬‬ ‫‪15‬‬

‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬

‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬

‫در ﻣﺜﻠﺚ ﭘﺎﺳﻜﺎل ﺳﺘﻮنﻫﺎ ﺿﺮاﺋﺐ ﺑﻴﻨﻢ ‪ binomial coefficient‬ﻫﺴﺘﻨﺪ‪ ،‬ﻛﻪ از راﺑﻄﻪ زﻳﺮ ﺑﻪ دﺳﺖ ﻣﻲآﻳﻨﺪ‪:‬‬ ‫)‪n ⎞ n(n-1)(n-2)...(n-r+1‬‬ ‫=⎟‬ ‫!‪r‬‬ ‫⎠‪r‬‬

‫⎛‬ ‫‪+ n-1‬‬ ‫‪( nr ) = r!( n-n! r )! = ( n-1‬‬ ‫⎜ ﻛﻪ ﺧﻼﺻﻪﺗﺮ آن اﻳﻦ اﺳﺖ ) ‪r ) ( r-1‬‬ ‫⎝‬

‫ﻧﺘﻴﺠﻪ اﻳﻦ راﺑﻄﻪ ﺗﻌﺪاد ﭼﻴﻨﺶ ‪ 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‬ﺗﻮﻟﻴﺪ ﻛﻨﻴﺪ‪.‬‬ ‫‪1‬‬ ‫‪4‬‬ ‫‪10‬‬ ‫‪20‬‬

‫‪7-3‬‬

‫)‪>> ps = pascal(4‬‬ ‫‪ps = 1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪1‬‬ ‫‪3‬‬ ‫‪6‬‬ ‫‪1‬‬ ‫‪4‬‬ ‫‪10‬‬

‫ﺑﺮدار ‪Vector‬‬

‫ﻋﻤﻠﮕﺮ ﻛﺎﻟﻦ‬ ‫ﻋﻤﻠﮕﺮ ﻛﺎﻟﻦ در ﻣﺘﻠﺐ ﺑﺮاي ﺗﻌﻴﻴﻦ داﻣﻨﻪ ‪ range‬و ﮔﺎم ‪ step‬ﺑﺮدار ﺑﻪ ﻛﺎر ﻣﻲرود‪.‬‬

‫ﻣﺜﺎل‪:‬‬

‫‪1.0000‬‬

‫ﺗﺎﺑﻊ‬

‫‪0.5000‬‬

‫‪0‬‬

‫‪>> x = 1:5‬‬ ‫‪x = 1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪>> x = -1: 0.5: 1‬‬ ‫‪x = -1.0000‬‬ ‫‪-0.5000‬‬

‫)(‪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‬‬

‫ﻛﺎرﺑﺮد ﻳﻚ ﺑﺮدار در ﺗﻌﺮﻳﻒ ﺑﺮدار دﻳﮕﺮ‬ ‫ﻣﺜﺎل‪:‬‬

‫‪0.50‬‬

‫‪3.00‬‬

‫;]‪>> a = [2 3 -4.5‬‬ ‫;]‪>> b = [-2.2 3 0.5‬‬ ‫]‪>> c = [a b‬‬ ‫‪c = 2.00‬‬ ‫‪3.00‬‬ ‫‪-4.50‬‬

‫‪-2.20‬‬

‫ﺑﺮدار ﺗﻬﻲ‬ ‫ﻋﺒﺎرت ][ = ‪ x‬ﺑﺮدار ﺗﻬﻲ را ﺑﻪ ‪ x‬ﻧﺴﺒﺖ ﻣﻲدﻫﺪ‪ .‬اﻳﻦ ﺗﻌﺮﻳﻒ ﺑﺎ ‪ x = 0‬ﻳﺎ ﭘﺎك ﻛﺮدن ‪ (clear x) x‬ﻓﺮق دارد‪.‬‬

‫ﻣﺜﺎل‪:‬‬ ‫ﺑﺮاي ﺣﺬف ﻋﻨﺼﺮ ‪ 2‬آن را ﺑﺮاﺑﺮ ﺑﺮدار ﺗﻬﻲ ﻗﺮار ﻣﻲدﻫﻴﻢ )ﺗﻮﺿﻴﺢ ﺑﻴﺸﺘﺮ راﺟﻊ ﺑﻪ ﺷﻤﺎره ﻋﻨﺎﺻﺮ ﺑﻌﺪاٌ ﻣﻲآﻳﺪ(‪.‬‬ ‫;]‪0.5‬‬ ‫‪-0.5000‬‬

‫‪3‬‬

‫‪-3.0000‬‬

‫‪>> c = [2‬‬ ‫‪3‬‬ ‫‪-4.5‬‬ ‫][ = )‪>> c(2‬‬ ‫‪c = -2.0000‬‬ ‫‪4.5000‬‬

‫‪-2.2‬‬ ‫‪2.2000‬‬

‫اﻧﺪﻳﺲ اﻋﻀﺎء ﺑﺮدار‬ ‫ﻫﺮ ﻋﻨﺼﺮ از ﺑﺮدار ﺟﺎيﮔﺎه ﻳﺎ اﻧﺪﻳﺴﻲ دارد ﻛﻪ ﺑﺎ آن ﺷﻨﺎﺧﺘﻪ ﻣﻲﺷﻮد‪ .‬در ﻣﺘﻠﺐ ﺷﻤﺎره ﺟﺎيﮔﺎه ﺑﺎ ‪ 1‬ﺷﺮوع ﻣﻲﺷﻮد‪ ،‬ﻟﺬا‬ ‫ﻣﺮاﺟﻌﻪ ﺑﻪ ﻳﻚ ﻋﻀﻮ ﺑﺮدار ﺑﺴﻴﺎر آﺳﺎنﺗﺮ از زﺑﺎﻧﻲ ﻣﺎﻧﻨﺪ ‪ C++‬اﺳﺖ ﻛﻪ در آن اﻧﺪﻳﺲ از ﺻﻔﺮ ﺷﺮوع ﻣﻲﺷﻮد ﻣﺜﺎل زﻳﺮ‬ ‫روشﻫﺎي ﻣﺮاﺟﻌﻪ ﺑﻪ ﻋﻨﺎﺻﺮ ﺑﺮدار را ﺗﻮﺿﻴﺢ ﻣﻲدﻫﺪ‪.‬‬

‫ﻣﺜﺎل ﻫﺎ‪:‬‬ ‫ﻣﺮاﺟﻌﻪ ﺑﻪ ﻋﻨﺎﺻﺮ ﺑﺮدار ﺑﺎ ﭼﻨﺪ روشﻫﺎ‬ ‫‪21‬‬

‫‪18‬‬

‫‪15‬‬

‫‪12‬‬

‫‪6‬‬

‫‪9‬‬

‫‪9‬‬ ‫‪18‬‬

‫‪12‬‬ ‫‪21‬‬

‫‪>> x = 0:3:23‬‬ ‫‪x = 0‬‬ ‫‪3‬‬ ‫)‪>> x(1), x(3‬‬ ‫‪ans = 0‬‬ ‫‪ans = 6‬‬ ‫)‪>> x(2:4‬‬ ‫‪ans = 3‬‬ ‫‪6‬‬ ‫)‪>> x(1:2:8‬‬ ‫‪ans = 0‬‬ ‫‪6‬‬ ‫)]‪>> x([1 5 8‬‬ ‫‪ans = 0‬‬ ‫‪12‬‬

‫ﺣﺬف ﻋﻨﺎﺻﺮ اول‪ ،‬دوم‪ ،‬و ﻫﻔﺘﻢ ﺑﺮدار‬ ‫‪7‬‬

‫‪6‬‬

‫‪5‬‬

‫‪4‬‬ ‫‪6‬‬

‫‪42‬‬

‫‪>> x = 1:7‬‬ ‫‪x = 1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫][ = )]‪>> x([1 2 7‬‬ ‫‪x = 3‬‬ ‫‪4‬‬ ‫‪5‬‬

‫‪ 8-3‬ﺑﺮدارﻫﺎي ﻣﻨﻄﻘﻲ‬ ‫ﻋﻨﺎﺻﺮ ﺑﺮدار ﻣﻨﻄﻘﻲ‪ ،‬ﻣﺠﻤﻮﻋﻪاي از ﺻﻔﺮ و ﻳﻚﻫﺎي ﻣﻨﻄﻘﻲ ﻫﺴﺘﻨﺪ‪ .‬ﺻﻔﺮ و ﻳﻚ ﻣﻨﻄﻘﻲ از ﻟﺤﺎظ ﻧﻮع ﺑﺎ ﺻﻔﺮ و ﻳﻚ ﻋﺪدي‬ ‫ﻓﺮق دارﻧﺪ‪ .‬ﻣﺜﺎلﻫﺎي زﻳﺮ اﻳﻦ ﻣﻮرد را ﺗﻮﺿﻴﺢ ﻣﻲدﻫﻨﺪ‪ .‬ﺑﺮاي اﻃﻼع ﺑﻴﺸﺘﺮ‪ help logical‬را اﺟﺮا ﻛﻨﻴﺪ‪.‬‬

‫ﺗﺒﺪﻳﻞ ﺑﺮدار ﻋﺪدي ﺑﻪ ﻣﻨﻄﻘﻲ ﺑﺎ ﺗﺎﺑﻊ‬

‫)(‪logical‬‬

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

‫ﻣﺜﺎل ﻫﺎ‪:‬‬ ‫ﺳﺎﺧﺘﻦ ﺑﺮدار ﻣﻨﻄﻘﻲ‬ ‫;]‪1‬‬

‫‪0‬‬

‫‪0‬‬

‫‪0‬‬

‫‪1‬‬

‫‪1‬‬

‫‪>> oz = [1‬‬ ‫‪0‬‬ ‫)‪>> islogical(oz‬‬ ‫‪ans = 0‬‬

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

‫‪0‬‬

‫‪0‬‬

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

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

‫>>‬ ‫‪ad‬‬ ‫>>‬ ‫‪ag‬‬

‫ﺷﻜﻞ ‪1-3‬‬

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

‫ﻣﺜﺎل ﻫﺎ‪:‬‬ ‫ﺣﺬف ﭼﻨﺪ ﻋﻨﺼﺮ‬ ‫;]‪10 11 12‬‬ ‫;)]‪1 0 1 1 1 0 1‬‬ ‫‪Logical Indexing‬‬ ‫‪6‬‬ ‫‪8‬‬ ‫‪10‬‬ ‫‪12‬‬

‫‪>> Li = [2 4 5 6 8‬‬ ‫‪>> Lg = logical([1‬‬ ‫‪>> LiEv = Li(Lg) %‬‬ ‫‪LiEv = 2‬‬ ‫‪4‬‬

‫ﻧﮕﻪ داري ﭼﻨﺪ ﻋﻨﺼﺮ‬ ‫;]‪>> Li = [2 4 5 6 8 10 11 12‬‬ ‫;)]‪>> Lg = logical([1 1 1‬‬ ‫)‪>> LiEv = Li(Lg‬‬ ‫‪LiEv = 2‬‬ ‫‪4‬‬ ‫‪5‬‬

‫ﺿﺮب ﺑﺮدار ﻋﺪدي در ﺑﺮدار ﻣﻨﻄﻘﻲ‬ ‫ﺑﺮاي ﺿﺮب ﻋﻨﺼﺮ ﺑﻪ ﻋﻨﺼﺮ‪ ،‬ﻋﻼﻣﺖ ﺿﺮب آراﻳﻪاي *‪ .‬ﺑﻪ ﻛﺎر ﻣﻲرود‪ ،‬و دو آراﻳﻪ ﺑﺎﻳﺪ ﻫﻤﺴﺎن ﺑﺎﺷﻨﺪ‪ .‬ﻧﺘﻴﺠﻪ ﺿﺮب ﻣﻨﻄﻖ‬ ‫در ﻋﺪد از ﻧﻮع ﻋﺪدي اﺳﺖ‪..‬‬

‫ﻣﺜﺎل ﻫﺎ‪:‬‬ ‫ﻣﺸﺎﺑﻪ ﺿﺮب ﻋﺪد در ﻋﺪد‬

‫‪12‬‬

‫‪10‬‬

‫‪0‬‬

‫;]‪>> 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‬‬ ‫)‪>> islogical(Lip‬‬ ‫‪ans = 0‬‬ ‫)‪>> isnumeric(Lip‬‬ ‫‪ans = 1‬‬

‫اﺳﺘﺨﺮاج ﺑﺮدار از ﺑﺮدار دﻳﮕﺮ‬ ‫‪0‬‬ ‫‪0‬‬

‫‪0‬‬ ‫‪0‬‬

‫; ‪>> r = 1 : 5‬‬ ‫)‪>> rL = (r <= 3‬‬ ‫‪rL = 1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪>> s = r .* rL‬‬ ‫‪s = 1‬‬ ‫‪2‬‬ ‫‪3‬‬

‫ﻳﺎﻓﺘﻦ ﻣﺤﻞ ﻋﻨﺎﺻﺮي ﺑﺎ ﻣﻘﺪار ﻣﻌﻴﻦ‬ ‫ﻣﺜﺎل‪:‬‬ ‫ﻣﺤﻞ ﻋﻨﺎﺻﺮ ﻣﺴﺎوي ﺑﺎ ‪ 9‬ﺑﺮدار ]‪ ab = [2 0 9 5 0 1.5 -6 9 0 -4.35‬را ﺗﻌﻴﻴﻦ ﻛﻨﻴﺪ‪ .‬ﺗﻮﺟﻪ ﻛﻨﻴﺪ ﻛﻪ‬ ‫دو ﻋﻼﻣﺖ ﻣﺴﺎوي ﭘﻴﻮﺳﺘﻪ )==( ﺗﺴﺎوي دو ﺑﺮدار را ﺗﺴﺖ ﻣﻲﻛﻨﺪ‪.‬‬ ‫‪0‬‬

‫‪0‬‬

‫‪1‬‬

‫‪0‬‬

‫;]‪>> ab = [2 0 9 5 0 1.5 -6 9 0 -4.35‬‬ ‫‪>> ab == 9‬‬ ‫‪ans = 0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪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‬‬

‫راه ﺣﻞ دﻳﮕﺮ‪:‬‬ ‫‪0‬‬

‫‪0‬‬

‫‪1‬‬

‫‪0‬‬

‫‪0‬‬

‫)‪>> k = (ab == 9‬‬ ‫‪k = 0 0 1 0 0‬‬ ‫)‪find(k‬‬ ‫‪ans = 3 8‬‬ ‫)‪>> ab(3),ab(8‬‬ ‫‪ans = 9‬‬ ‫‪ans = 9‬‬

‫‪ k‬ﻳﻚ ﺑﺮدار ﻣﻨﻄﻘﻲ اﺳﺖ ﻛﻪ در ازاي ﻋﻨﺎﺻﺮ ﻣﺴﺎوي ‪ 9‬ﺑﺮدارِ ‪ ab‬داراي ﻣﻨﻄﻖ ﻳﻚ )درﺳﺘﻲ( اﺳﺖ‪.‬‬ ‫ﻳﺎﻓﺘﻦ اﻧﺪﻳﺲ ﻋﻨﺎﺻﺮ‪ :‬ﻏﻴﺮﺻﻔﺮ‪ ،‬ﻣﻨﻔﻲ‪ ،‬و ﻧﺎﻣﻮﺟﻮد‬ ‫‪10‬‬

‫;]‪>> ab = [2 0 9 5 0 1.5 -6 9 0 -4.35‬‬ ‫)‪>> af1 = find(ab‬‬ ‫‪af1 = 1‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪6‬‬ ‫‪7‬‬ ‫‪8‬‬ ‫)‪>> 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‬را ﺣﺬف ﻛﻨﻴﺪ‪.‬‬ ‫‪ -14‬اﻳﻦ ﺑﺮدار ﻋﺪدي را درﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ‪5] :‬‬

‫‪4‬‬

‫‪8‬‬

‫‪9‬‬

‫‪4‬‬

‫‪7‬‬

‫‪4‬‬

‫‪1‬‬

‫‪0‬‬

‫‪ rv = [2‬ﺑﺎ اﺳﺘﻔﺎده‬

‫از ﺑﺮدار ﻣﻨﻄﻘﻲ ﻋﻨﺎﺻﺮ ﻛﻮﭼﻚﺗﺮ از ﻳﺎ ﻣﺴﺎوي ﺑﺎ ‪ 4‬ﺑﺮدار ‪ rv‬را در ‪ nv‬ﻗﺮار دﻫﻴﺪ‪.‬‬ ‫‪ -15‬ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﻧﺘﺎﻳﺞ زﻳﺮ ﻣﻘﺪار ﺑﺮدار ‪ a‬را ﺣﺪس ﺑﺰﻧﻴﺪ‪:‬‬ ‫‪0‬‬

‫‪1‬‬

‫‪1‬‬ ‫‪3‬‬

‫‪1‬‬ ‫‪2‬‬

‫‪1‬‬ ‫‪1‬‬

‫‪0‬‬ ‫‪0‬‬

‫‪1‬‬ ‫‪3‬‬

‫‪1‬‬ ‫‪2‬‬

‫‪>> a4 = a < 4‬‬ ‫‪a4 = 1‬‬ ‫‪1‬‬ ‫)‪>> a(a4‬‬ ‫‪ans = 0‬‬ ‫‪1‬‬

‫‪ -16‬ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﻧﺘﻴﺠﻪ زﻳﺮ ﺑﺮدار ‪ ab‬را ﺑﺎ ‪ 10‬ﻋﻨﺼﺮ ﺑﻨﻮﻳﺴﻴﺪ‪ ،‬آﻳﺎ ‪ af‬ﻳﻚ ﺑﺮدار ﻣﻨﻄﻘﻲ اﺳﺖ؟‬ ‫‪10‬‬

‫‪8‬‬

‫‪7‬‬

‫‪6‬‬

‫)‪>> af = find(ab‬‬ ‫‪af = 1‬‬ ‫‪3‬‬ ‫‪4‬‬

‫‪ -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‬ﺑﺎﻳﺪ >‪
‫ﻣﺜﺎل‪:‬‬ ‫‪>> 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‬‬ ‫اﻳﻦ دﺳﺘﻮر را ﺣﺘﻤﺎٌ ﺑﻨﻮﻳﺴﻴﺪ ‪%‬‬ ‫ﺷﻜﻞ ‪1-4‬‬

‫‪>> open nam.txt‬‬ ‫اﺳﺘﻔﺎده از ﻧﺎم دﻳﺴﻜﻲ ﻓﺎﻳﻞ در دﺳﺘﻮر ﺳﻴﺴﺘﻤﻲ ‪%‬‬ ‫‪>> delete nam.txt‬‬

‫ﺿﺒﻂ ﻣﺎﺗﺮﻳﺲ در ﻓﺎﻳﻞ ﻣﺘﻦ‬

‫‪.TXT‬‬

‫ﻣﺜﺎل‪:‬‬ ‫ﺑﺮﻧﺎﻣﻪاي ﻣﻲﻧﻮﻳﺴﻴﻢ ﻛﻪ ﻣﻘﺎدﻳﺮ ‪ x = 0.1: 0.1: 1‬را ﻫﻢراه )‪ log10(x‬ﺑﻪ ﺻﻮرت ﻳﻚ ﻣﺎﺗﺮﻳﺲ در ﻳﻚ ﻓﺎﻳﻞ‬ ‫ﻣﺘﻦ ﻧﮕﻪداري ﻛﻨﺪ‪ .‬ﻓﻀﺎي ﻛﺎر را ﭘﺎك ﻛﺮده اﻃﻼﻋﺎت ﻓﺎﻳﻞ ﻣﺘﻦ را وارد ﻓﻀﺎي ﻛﺎر ﻛﺮده‪ ،‬و ﻣﺎﺗﺮﻳﺲ را ﻧﻤﺎﻳﺶ ﻣﻲدﻫﻴﻢ‪ .‬ﻓﺎﻳﻞ‬ ‫ﻣﺘﻦ را ﺣﺬف ﻣﻲﻛﻨﻴﻢ‪.‬‬

‫‪49‬‬

>> x = 0.1: 0.1: 1; >> y = [x; log10(x)]; >> fl = fopen('lgt.txt','w'); % open to write >> fprintf(fl,'%f %f\n',y); >> fclose(fl); >> load lgt.txt >> lgt >> delete lgt.txt >> tx

lgt = 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000 0.9000 1.0000 .MAT

-1.0000 -0.6990 -0.5229 -0.3979 -0.3010 -0.2218 -0.1549 -0.0969 -0.0458 0

‫ﺿﺒﻂ ﻣﺎﺗﺮﻳﺲ در ﻓﺎﻳﻞ ﺑﺎﻳﻨﺮي‬

‫ دﺳﺘﻮر‬،‫ ﺿﺒﻂ ﻣﻲﻛﻨﺪ‬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 >> load lgm >> y

y = 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000 0.9000 1.0000

-1.0000 -0.6990 -0.5229 -0.3979 -0.3010 -0.2218 -0.1549 -0.0969 -0.0458 0 port

‫ﺑﺎز ﻛﺮدن درﮔﺎه‬ :‫ﻣﺜﺎل‬

.‫ و آن را ﻣﻲﺑﺒﻨﺪﻳﻢ‬،‫ ﺧﻮاص آن را ﻣﺸﺎﻫﺪه‬،‫ را ﺑﺎز ﻛﺮده‬COM3 ‫درﮔﺎه‬ >> >> >> >>

sr = serial('COM3'); fopen(sr) sr fclose(sr)

Serial Port Object : Serial-COM3 Communication Settings Port: COM3 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‬‬

‫ﻗﻄﺒﻲ ﺑﻪ ﻗﺎﺋﻢ‬

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

‫)(‪plot(), comet‬‬

‫ﻛﺎر ﺗﺮﺳﻴﻢ آراﻳﻪﻫﺎ ﺑﺮﺣﺴﺐ ﻳﻚدﻳﮕﺮ )ﻳﺎ ﺗﺮﺳﻴﻢ ﺗﻮاﺑﻌﻲ ﻛﻪ آراﻳﻪﻫﺎ را ﺑﻪ ﻫﻢ رﺑﻂ ﻣﻲدﻫﻨﺪ( ﺑﺴﻴﺎر آﺳﺎن اﺳﺖ‪.‬‬ ‫دﺳﺘﻮر)‪ plot(t,x‬ﻋﻨﺎﺻﺮ ﺑﺮدار ‪ x‬را ﺑﺮ ﺣﺴﺐ ﺑﺮدار ‪ t‬ﻧﻈﻴﺮ ﺑﻪ ﻧﻈﻴﺮ ﺑﻪ ﺻﻮرت ﻧﻘﺎﻃﻲ روي ﺻﻔﺤﻪ ﻣﺨﺘﺼﺎت ﻗﺎﺋﻢ‬ ‫ﻗﺮار ﻣﻲدﻫﺪ‪) ،‬ﻫﺮ دو ﺑﺮدار ﺑﺎﻳﺪ ﻣﺘﺴﺎوياﻟﻌﻨﺼﺮ ﺑﺎﺷﻨﺪ( ﺳﭙﺲ آنﻫﺎ را ﺑﻪ ﻫﻢ وﺻﻞ و ﻣﻨﺤﻨﻲ ﻣﻮرد ﻧﻈﺮ را اﻳﺠﺎد ﻣﻲﻛﻨﺪ‪.‬‬ ‫ﻣﺜﺎل ﺗﻮﺿﻴﺤﻲ زﻳﺮ اﺻﻮل ﻛﺎر را ﺑﻴﺎن ﻣﻲﻛﻨﺪ‪.‬‬

‫ﻣﺜﺎل‪:‬‬ ‫ﺑﺮاي رﺳﻢ ﻣﻌﺎدﻟﻪ ﻳﻚ ﺳﻬﻤﻲ اﺑﺘﺪا ﻳﻚ آراﻳﻪ ﺷﺎﻣﻞ ﻣﻘﺎدﻳﺮ ‪ x‬ﺗﻌﺮﻳﻒ ﻣﻲﻛﻨﻴﻢ‪:‬‬ ‫;]‪>> x = [-4 -3 -2 -1 0 1 2 3 4‬‬

‫ﺳﭙﺲ ﺗﺎﺑﻊ ﻣﻮرد ﻧﻈﺮ را ﻣﻴﻨﻮﻳﺴﻴﻢ‪:‬‬ ‫;]‪-7 -13‬‬

‫‪-3‬‬

‫‪-1‬‬

‫‪-1‬‬

‫‪-3‬‬

‫‪-7‬‬

‫‪>> y = [-21 -13‬‬

‫و ﺑﺎ ﻳﻚ دﺳﺘﻮر ﺳﺎده ‪ y‬را ﺑﺮ ﺣﺴﺐ ‪ x‬ﻧﻘﻄﻪ ﺑﻪ ﻧﻘﻄﻪ رﺳﻢ ﻣﻲﻛﻨﻴﻢ )ﺷﻜﻞ ‪(1-5‬‬ ‫)'‪>> plot(x,y,'o‬‬

‫اﮔﺮ ﭘﺎراﻣﺘﺮ '‪ 'o‬را از دﺳﺘﻮر ﺣﺬف ﻛﻨﻴﻢ‪ ،‬ﻧﻘﺎط ﺑﻪ ﺻﻮرت اﺗﻮﻣﺎﺗﻴﻚ ﺑﻪ ﻳﻚدﻳﮕﺮ وﺻﻞ و ﺗﺮﺳﻴﻢ ﺷﻜﻞ ﻣﻨﺤﻨﻲ ﺑﻪ ﺧﻮد ﻣﻲ‪-‬‬ ‫ﮔﻴﺮد‪ .‬ﺑﺮاي داﺷﺘﻦ ﻣﻨﺤﻨﻲ ﺑﺪون ﺷﻜﺴﺖ ﺑﺎﻳﺪ ﻧﻘﺎط ﺑﻴﺸﺘﺮي را ﺑﻪ ‪ x‬و ﻧﺘﻴﺠﺘﺎٌ ﺑﻪ ‪ y‬ﻧﺴﺒﺖ داد‪ .‬دﻗﺖ ﻛﻨﻴﺪ ﻛﻪ ﺑﺮاي رﺳﻢ دو‬ ‫آراﻳﻪ ﻋﺪدي ﺑﺮﺣﺴﺐ ﻳﻚدﻳﮕﺮ آن دو ﺑﺎﻳﺪ ﻫﻢﺳﺎن ﺑﺎﺷﻨﺪ‪ .‬ﺻﻮرت ﻓﺮﻣﻮﻟﻲ ﻣﻌﺎدﻟﻪ ﺳﻬﻤﻲ ﭼﻨﻴﻦ ﻧﻮﺷﺘﻪ ﻣﻲﺷﻮد‪:‬‬ ‫‪y = -x.^2 + x - 1‬‬

‫ﺑﺮاي ﺑﻪ ﺗﻮان رﺳﺎﻧﺪن ﺗﻚﺗﻚ ﻋﻨﺎﺻﺮ آراﻳﻪ )ﺗﻮان آراﻳﻪاي( از ﻋﻼﻣﺖ ^‪ .‬اﺳﺘﻔﺎده ﺷﺪه اﺳﺖ‪.‬‬ ‫دﺳﺘﻮر )(‪ comet‬ﻋﻴﻨﺎً ﺷﺒﻴﻪ )(‪ plot‬ﻋﻤﻞ ﻣﻲﻛﻨﺪ ﺑﺎ اﻳﻦ ﺗﻔﺎوت ﻛﻪ رﺳﻢ را ﺑﺎ ﺣﺮﻛﺖ آﻫﺴﺘﻪ ﺑﻪ ﺻﻮرت ﭘﻮﻳﺎ ﻧﻤﺎﺋﻲ‬ ‫اﻧﺠﺎم ﻣﻲدﻫﺪ )اﻣﺘﺤﺎن ﻛﻨﻴﺪ(‪.‬‬

‫‪52‬‬

‫)‪plot(x,y‬‬

‫)'‪plot(x,y,'o‬‬ ‫ﺷﻜﻞ ‪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‬ﺑﺎز و آن را ﭘﻨﺠﺮه ﺟﺎري ﻣﻲﻛﻨﺪ‪.‬‬

‫اﻓﺰودن ﺗﻮﺿﻴﺤﺎت روي ﻣﻨﺤﻨﻲ‬ ‫ﺟﺪول زﻳﺮ ﺑﻌﻀﻲ از ﺗﻮﺿﻴﺤﺎﺗﻲ را ﻛﻪ ﻣﻲﺗﻮان ﺑﺮروي ﮔﺮاف آورد ﻧﺸﺎن ﻣﻲدﻫﺪ‪ .‬ﺳﻪ ﻧﻘﻄﻪ ﻳﻌﻨﻲ ﺷﺮح ﻣﻮرد ﻧﻈﺮ ﺧﻮدﺗﺎن‪:‬‬ ‫ﺷﺮح‬

‫ﻋﻨﻮان ﻣﻨﺤﻨﻲ‬

‫ﺑﺮﭼﺴﺐ ﻣﺤﻮر ‪x‬‬

‫ﺑﺮﭼﺴﺐ ﻣﺤﻮر ‪y‬‬

‫دﺳﺘﻮر )'‪ylabel('...') xlabel('...') title('...‬‬ ‫'‪ylabel '...‬‬ ‫'‪xlabel '...‬‬ ‫'‪title '...‬‬

‫ﭘﻨﺠﺮه‬

‫ﺑﺮﭼﺴﺐ رﻧﮓ ﭼﻨﺪ ﻣﻨﺤﻨﻲ‬ ‫)(‪legend‬‬

‫‪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‬ﭘﻨﺠﺮه آﻣﺎر داده ﻫﺎ‬

‫‪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‬‬

‫→ ‪signal‬‬

‫>>‬ ‫>>‬ ‫>>‬ ‫>>‬ ‫>>‬ ‫>>‬ ‫>>‬ ‫>>‬ ‫>>‬ ‫>>‬ ‫>>‬ ‫>>‬

‫ﺷﻜﻞ ‪5-5‬‬

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

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

‫)(‪plot‬‬

‫دﺳﺘﻮرﻫﺎي ﺗﺮﺳﻴﻤﻲِ )(‪ 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‬رﺳﻢ ﻛﺮده و از ﻗﺴﻤﺖ ﻣﻮﻫﻮﻣﻲ‬ ‫ﺻﺮفﻧﻈﺮ ﻣﻲﺷﻮد‪.‬‬

‫ﻣﺜﺎل‪:‬‬ ‫ﻗﺴﻤﺖ ﻣﻮﻫﻮﻣﻲ ﺗﺎﺑﻊ ﻣﺨﺘﻠﻂ)‪= r(cosθ+jsinθ‬‬

‫‪jθ‬‬

‫‪ zp= re‬را ﺑﺮﺣﺴﺐ ﻗﺴﻤﺖ ﺣﻘﻴﻘﻲ آن رﺳﻢ ﻛﻨﺪ‪) .‬ﺗﻮﺟﻪ‬

‫ﻛﻨﻴﺪ ﻛﻪ ﻣﻨﺤﻨﻲ ﺳﻴﻨﻮس )ﻗﺴﻤﺖ ﻣﻮﻫﻮﻣﻲ( ﺑﺮ ﺣﺴﺐ ﻛﺴﻴﻨﻮس )ﻗﺴﻤﺖ ﺣﻘﻴﻘﻲ( ﻳﻚ داﻳﺮه ﻣﺜﻠﺜﺎﺗﻲ ﺑﺎ ﺷﻌﺎع ‪ 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‬‬

‫‪ 6-5‬رﺳﻢ آﺳﺎن ﺑﺎ‬

‫)(‪ezplot‬‬

‫در ﻣﺘﻠﺐ ﺑﻌﻀﻲ از ﺗﻮاﺑﻊ ﺑﺪون ﻣﻘﺪار دﻫﻲ ﺑﻪ ﻣﺘﻐﻴﺮ ﺑﺎ ﺗﻮاﺑﻌﻲ ﻣﺎﻧﻨﺪ))‪ 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‬‬

‫ﺗﻮاﺑﻊ ﺿﻤﻨﻲ ﺗﻮاﺑﻌﻲ ﻫﺴﺘﻨﺪ ﻛﻪ در آنﻫﺎ ‪ x‬و ‪ y‬ﺑﻪ ﺻﻮرت ﻣﺨﻠﻮط ﻣﻲآﻳﻨﺪ‪ ،‬ﻣﺜﻞ‪= 1 :‬‬

‫‪2‬‬

‫‪+ y‬‬

‫‪2‬‬

‫‪ . x‬ﻛﺎرﺑﺮد )(‪plot‬‬

‫ﺑﻪ ﻃﻮر ﻣﺴﺘﻘﻴﻢ در اﻳﻦﮔﻮﻧﻪ ﻣﻮارد ﻧﺘﻴﺠﻪ ﻣﻄﻠﻮب ﻧﻤﻲدﻫﺪ‪ ،‬اﻣﺎ )(‪ ezplot‬ﺑﻪراﺣﺘﻲ از ﻋﻬﺪه ﺑﺮﻣﻲآﻳﺪ‪ .‬وﻗﺘﻲ ﻳﻚ ﺗﺎﺑﻊ‬ ‫ﺿﻤﻨﻲ ﺑﻪ )(‪ ezplot‬ارﺳﺎل ﺷﻮد درﻃﺮف راﺳﺖ ﻣﻌﺎدﻟﻪ ﺧﻮدﺑﻪﺧﻮد ﺻﻔﺮ ﻗﺮار ﻣﻲﮔﻴﺮد‪.‬‬

‫رﺳﻢ ﺗﻮاﺑﻊ ﭘﺎراﻣﺘﺮﻳﻚ‬ ‫اﮔﺮ ‪ f‬و ‪ g‬ﺗﻮاﺑﻊ ‪ t‬ﺑﺎﺷﻨﺪ‪ ،‬ﺑﺎ )‪ ezplot(f,g‬ﻣﻲﺗﻮان آن دو را ﺑﺮﺣﺴﺐ ﻳﻚدﻳﮕﺮ رﺳﻢ و ﭘﺎراﻣﺘﺮ ‪ t‬را ﺣﺬف ﻛﺮد‪.‬‬ ‫داﻣﻨﻪ ﭘﻴﺶﻓﺮض ‪ t‬ﻓﺎﺻﻠﻪ ‪ 0, π‬اﺳﺖ‪.‬‬

‫ﻣﺜﺎل ﻫﺎ‪:‬‬ ‫ﺗﺎﺑﻊ آﺷﻜﺎر‬ ‫ﺗﺎﺑﻊ)‪ y = tan(x‬را ﺑﺮ ﺣﺴﺐ ‪ x‬ﺑﺎ )(‪ plot‬و )(‪ ezplot‬رﺳﻢ ﻛﻨﻴﺪ‪.‬‬ ‫))‪plot(x, tan(x‬‬

‫))‪plot(x,tan(x‬‬

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

‫‪62‬‬

‫)')‪>> ezplot('tan(x‬‬ ‫;)‪>> x = linspace(-2*pi, 2*pi‬‬

‫ﺗﺎﺑﻊ ﺿﻤﻨﻲ‬ ‫ﻳﻚ داﻳﺮه ﺑﺎ ﺷﻌﺎع ‪ 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‬‬

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

‫)(‪fplot‬‬

‫ﻓﺮم ﻛﻠﻲ اﻳﻦ ﺗﺎﺑﻊ ﭼﻨﻴﻦ اﺳﺖ)‪ 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(2‬‬

‫>>‬ ‫>>‬ ‫>>‬ ‫>>‬

‫)‪figure(1‬‬

‫ﺷﻜﻞ ‪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‬‬

‫ﺳﻔﻴﺪ‬

‫‪0 0‬‬

‫‪1‬‬

‫ﻗﺮﻣﺰ‬

‫‪1 0‬‬

‫‪0‬‬

‫ﺳﺒﺰ‬

‫‪0 1‬‬

‫‪0‬‬

‫آﺑﻲ‬

‫‪1 0‬‬

‫‪1‬‬

‫زرد‬

‫‪0 1‬‬

‫‪1‬‬

‫ارﻏﻮاﻧﻲ‬

‫‪1 1‬‬

‫‪0‬‬

‫ﻓﻴﺮوزهاي‬

‫‪0.5 0.5‬‬

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

‫‪0 0‬‬

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

‫‪1 0.62 0.40‬‬ ‫‪0.8‬‬

‫‪0.4‬‬

‫ﻣﺴﻲ‬

‫‪ 0.6‬ﻛﺒﻮد‬

‫ﺷﻜﻞ ‪22-5‬‬

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

‫‪graphics handles‬‬

‫ﻫﺮ ﮔﺮاف داراي ‪ 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‬رﺳﻢ ﻛﻨﻴﺪ‪.‬‬ ‫]‪, range [0,pi‬‬ ‫]‪,range [0,4*pi‬‬

‫')‪sin(3*t)*sin(t‬‬ ‫')‪t*sin(t‬‬

‫‪sin(3*t)*cos(t),‬‬ ‫‪t*cos(t),‬‬

‫‪ -5‬ﻣﺨﺘﺼﺎت ﻗﻄﺒﻲ آراﻳﻪاي ده ﻋﻨﺼﺮي از ﺑﺮدار‪ -‬ﻫﻨﺪﺳﻲﻫﺎي ﻫﻢﻃﻮل وﭼﺮﺧﻨﺪه ﺑﻪ ﺻﻮرت ﻣﺪور را ﺗﻌﺮﻳﻒ و‬ ‫ﺑﺰرﮔﻲ ﻫﺮ ﺑﺮدار‪ -‬ﻫﻨﺪﺳﻲ را ﺑﺮﺣﺴﺐ زاوﻳﻪاش رﺳﻢ ﻛﻨﻴﺪ‪ .‬ﻣﺨﺘﺼﺎت ﻗﺎﺋﻢِ اﻳﻦ ﺑﺮدار‪ -‬ﻫﻨﺪﺳﻲﻫﺎ را ﺑﻪ دﺳﺖ‬ ‫آورده‪ ،‬آنﻫﺎ را ﺑﺎ دﺳﺘﻮر )(‪ compass‬در ﻣﺨﺘﺼﺎت ﻗﻄﺒﻲ رﺳﻢ ﻛﻨﻴﺪ‪.‬‬ ‫‪ -6‬ﺑﺮاي ﺗﺎﺑﻊ ‪ ، y1 = sinα‬ﻣﻘﺎدﻳﺮ ‪ y1‬را ﺑﺮﺣﺴﺐ ﭼﻨﺪ ﻣﻘﺪار ‪ α‬روي ﻣﺨﺘﺼﺎت ﻗﻄﺒﻲ ﻧﺸﺎن داده و ﺑﺎ ﺟﺪول‬ ‫‪ y1‬ﺑﺮﺣﺴﺐ ‪ α‬ﻣﻄﺎﺑﻘﺖ ﻛﻨﺪ‪.‬‬ ‫‪ -7‬ﻣﻨﺤﻨﻲ ﻳﻚ ﻣﻌﺎدﻟﻪ درﺟﻪ دو )ﺳﻬﻤﻲ( را ﺑﺮ ﻣﺨﺘﺼﺎت ﻗﺎﺋﻢ و ﺑﺮ ﻣﺨﺘﺼﺎت ﻗﻄﺒﻲ رﺳﻢ ﻛﻨﻴﺪ‪.‬‬ ‫‪sinx‬‬ ‫‪ -8‬ﺗﺎﺑﻊ‬ ‫‪x‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪ -9‬ﺗﺎﺑﻊ ‪ y = sin‬را ﺑﺎ )(‪ fplot‬رﺳﻢ ﻛﻨﻴﺪ‪ .‬راﻫﻨﻤﺎ‪ sin :‬وﻗﺘﻲ ﺑﻪ ﻳﻚ رﺷﺘﻪ ﻧﺴﺒﺖ داده ﻣﻲﺷﻮد‬ ‫‪x‬‬ ‫‪x‬‬ ‫)‪ sin(1/x‬ﻧﻮﺷﺘﻪ ﺷﻮد‪ ،‬ﻧﻪ )‪sin(1./x‬‬

‫را ﺑﺎ )(‪ ezplot‬رﺳﻢ ﻛﻨﻴﺪ‪.‬‬

‫‪ -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‬‬

‫ﺳﺎل ﺑﺮاي ﭘﻨﺞ ﻧﻤﻮﻧﻪ از ﻣﻘﺪار ﺳﺮﻣﺎﻳﻪ اوﻟﻴﻪ ﺑﻪ دﺳﺖ دﻫﺪ‪.‬‬

‫‪177552.28‬‬ ‫‪236736.37‬‬ ‫‪710209.10‬‬ ‫‪1183681.84‬‬ ‫‪2367363.67‬‬

‫‪nama = 75000.00‬‬ ‫‪100000.00‬‬ ‫‪300000.00‬‬ ‫‪500000.00‬‬ ‫‪1000000.00‬‬

‫‪% BankIn.m‬‬ ‫;‪echo off‬‬ ‫‪format bank‬‬ ‫‪A = [75000 100000 300000‬‬ ‫ﻣﻘﺎدﻳﺮ ﺳﺮﻣﺎﻳﻪ اوﻟﻴﻪ ‪500000 1000000]; %‬‬ ‫;‪r = 0.09‬‬ ‫;‪n = 10‬‬ ‫;‪B = A * (1+r)^n‬‬ ‫]'‪nama = [A' B‬‬ ‫‪>> BankIn.m‬‬

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

‫را در ﻓﺎﺻﻠﻪ ‪ -4π‬ﺗﺎ ‪ 4π‬رﺳﻢ ﻛﻨﻴﺪ‪.‬‬

‫‪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) % good looking graph

Figure(1)

>> 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‬ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ‪:‬‬ ‫اﻟﻒ( ﺑﺰرﮔﺎي ﺳﺮﻋﺖ ﻳﻚ ﭘﺮﺗﺎﺑﻪ را ﺑﺎ ﻧﺨﺴﺘﻴﻨﻪﻫﺎي‪ :‬زاوﻳﻪ ﭘﺮﺗﺎب ‪ ،d0 = 45‬ﺳﺮﻋﺖ اوﻟﻴﻪ ‪60‬‬

‫= ‪ ،v‬و ﺷﺘﺎب‬

‫ﮔﺮاﻧﺶ ‪ 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‬‬ ‫‪k‬‬ ‫‪V2‬‬ ‫‪k‬‬ ‫‪V2‬‬ ‫= ‪, PL‬‬ ‫=‬ ‫×‬ ‫‪,‬‬ ‫‪Psc‬‬ ‫=‬ ‫ﺗﻮان اﺗﺼﺎل ﻛﻮﺗﺎه ﺛﺎﺑﺖ اﺳﺖ‬ ‫×‬ ‫‪,‬‬ ‫‪V‬‬ ‫‪V‬‬ ‫‪L‬‬ ‫)‪Ri (1 + k2‬‬ ‫‪Ri‬‬ ‫‪Ri‬‬ ‫‪k +1‬‬ ‫ﺗﻮان ﻣﺼﺮﻓﻲ و وﻟﺘﺎژ ﺑﺎر را ﺑﺮﺣﺴﺐ ‪) k‬ﻛﻪ ﻧﻤﺎﻳﺶ ﻣﻘﺪار ﺑﺎر اﺳﺖ( رﺳﻢ ﻛﻨﻴﺪ‪) V = 12, Ri = 10 .‬ﺷﻜﻞ‪.(9-6‬‬

‫=‪k‬‬

‫‪71‬‬

V

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

VL

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) >> hf

10-6‫ﺷﻜﻞ‬

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 |z21

z12|

|I1| z22| × |I2|

Z

*

I

= |V1| = |V2| =

V

,

I = Z \ V

72

I1 V1

Za

Zb Zc

11-6 ‫ﺷﻜﻞ‬

I2 V2

V1 = z11I1 + z12I2 V2 = z21I1 + z22I2 z11 z21 z12 z22

= = = =

V1/I1 V2/I1 V1/I2 V2/I2

|I2 |I2 |I1 |I1

= = = =

0 0 0 0

z11 = Za + Zc z22 = Zb + Zc z12 = z21 = Zc

:‫ﺣﺎل ﺑﺮﻧﺎﻣﻪاي ﺑﺮاي اﻧﺠﺎم ﻣﺤﺎﺳﺒﺎت ﺑﺎ ﻣﻘﺎدﻳﺮ داده ﺷﺪه ﻣﻴﻨﻮﻳﺴﻴﻢ‬ I = 0.0027 + 0.0220i 0.0136 + 0.0150i Iabs = 0.0222 0.0202 Iang = 1.4482 0.8339

% Tnet.m echo off omeg = 1000; Ra = 3050; Ca = 0.01e-6; 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)' >> Iang = angle(I)' >> compass(I)

12-6 ‫ﺷﻜﻞ‬

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Ω R2=1MΩ

C1=100pF 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‬‬ ‫‪ -7‬ﻗﺴﻂ ﭘﺮداﺧﺖ وام ﺧﺎﻧﻪ از اﻳﻦ ﻓﺮﻣﻮل ﺑﻪ دﺳﺖ ﻣﻲآﻳﺪ‪.‬‬ ‫]‪12[(1 + r/12)12N − 1‬‬

‫=‪P‬‬

‫ﻣﺒﻠﻎ ‪ 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‬را ﺗﺮاﻧﻬﺎد ﻣﻲﺳﺎزد‪.‬‬

‫ﻣﺜﺎل‪:‬‬

‫‪3‬‬

‫‪76‬‬

‫‪2‬‬

‫‪1‬‬

‫; ‪>> x = -3:3‬‬ ‫; ‪>> y = -2:2‬‬ ‫)‪>> [X,Y] = meshgrid(x,y‬‬ ‫‪X = -3‬‬ ‫‪-2‬‬ ‫‪-1‬‬ ‫‪0‬‬

‫‪3‬‬ ‫‪3‬‬ ‫‪3‬‬ ‫‪3‬‬

‫‪2‬‬ ‫‪2‬‬ ‫‪2‬‬ ‫‪2‬‬

‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬

‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬

‫‪-1‬‬ ‫‪-1‬‬ ‫‪-1‬‬ ‫‪-1‬‬

‫‪-2‬‬ ‫‪-2‬‬ ‫‪-2‬‬ ‫‪-2‬‬

‫‪-3‬‬ ‫‪-3‬‬ ‫‪-3‬‬ ‫‪-3‬‬

‫‪-2‬‬ ‫‪-1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬

‫‪-2‬‬ ‫‪-1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬

‫‪-2‬‬ ‫‪-1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬

‫‪-2‬‬ ‫‪-1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬

‫‪-2‬‬ ‫‪-1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬

‫‪-2‬‬ ‫‪-1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬

‫‪-2‬‬ ‫‪-1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬

‫= ‪Y‬‬

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

‫‪o‬‬ ‫‪o‬‬ ‫‪o‬‬ ‫‪o‬‬ ‫‪o‬‬ ‫‪q‬‬ ‫)‪Y(:,6‬‬

‫‪o‬‬ ‫‪o‬‬ ‫‪o‬‬ ‫‪o‬‬ ‫‪o‬‬ ‫‪q‬‬ ‫)‪Y(:,5‬‬

‫‪o‬‬ ‫‪o‬‬ ‫‪o‬‬ ‫‪o‬‬ ‫‪o‬‬ ‫‪q‬‬ ‫)‪Y(:,4‬‬

‫‪o‬‬ ‫‪o‬‬ ‫‪o‬‬ ‫‪o‬‬ ‫‪o‬‬ ‫‪q‬‬ ‫)‪Y(:,3‬‬

‫‪o‬‬ ‫‪o‬‬ ‫‪o‬‬ ‫‪o‬‬ ‫‪o‬‬ ‫‪q‬‬ ‫)‪Y(:,2‬‬

‫‪o‬‬ ‫‪o‬‬ ‫‪o‬‬ ‫‪o‬‬ ‫‪o‬‬ ‫‪q‬‬ ‫)‪Y(:,1‬‬

‫ˆ)‪X(1,:‬‬ ‫ˆ)‪X(2,:‬‬ ‫ˆ)‪X(3,:‬‬ ‫ˆ)‪X(4,:‬‬ ‫ˆ)‪X(5,:‬‬

‫ﻣﺜﺎل‪:‬‬ ‫ﺑﺮدار ‪ a = -3:3‬را ﺗﻌﺮﻳﻒ‪ ،‬و ﺑﺎ آن ﺻﻔﺤﻪ ‪ X-Y‬را ﭘﺪﻳﺪ آورﻳﺪ‪ .‬ﺗﻌﺪاد ﻧﻘﺎطِ ﺻﻔﺤﻪ ‪ X-Y‬ﭼﻨﺪﺗﺎ اﺳﺖ؟‬

‫ﺣﻞ‪:‬‬ ‫‪3‬‬ ‫‪3‬‬ ‫‪3‬‬ ‫‪3‬‬ ‫‪3‬‬ ‫‪3‬‬ ‫‪3‬‬ ‫‪-3‬‬ ‫‪-2‬‬ ‫‪-1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬

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

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

‫; ‪>> a = -3:3‬‬ ‫)‪>> [X,Y] = meshgrid(a‬‬ ‫‪X = -3‬‬ ‫‪-2‬‬ ‫‪-1‬‬ ‫‪0‬‬ ‫‪-3‬‬ ‫‪-2‬‬ ‫‪-1‬‬ ‫‪0‬‬ ‫‪-3‬‬ ‫‪-2‬‬ ‫‪-1‬‬ ‫‪0‬‬ ‫‪-3‬‬ ‫‪-2‬‬ ‫‪-1‬‬ ‫‪0‬‬ ‫‪-3‬‬ ‫‪-2‬‬ ‫‪-1‬‬ ‫‪0‬‬ ‫‪-3‬‬ ‫‪-2‬‬ ‫‪-1‬‬ ‫‪0‬‬ ‫‪-3‬‬ ‫‪-2‬‬ ‫‪-1‬‬ ‫‪0‬‬ ‫‪Y = -3‬‬ ‫‪-3‬‬ ‫‪-3‬‬ ‫‪-3‬‬ ‫‪-2‬‬ ‫‪-2‬‬ ‫‪-2‬‬ ‫‪-2‬‬ ‫‪-1‬‬ ‫‪-1‬‬ ‫‪-1‬‬ ‫‪-1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪2‬‬ ‫‪2‬‬ ‫‪2‬‬ ‫‪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‬‬ ‫)‪surfc(z‬‬

‫‪0‬‬

‫>>‬ ‫>>‬ ‫>>‬ ‫>>‬

‫‪-10‬‬ ‫‪-20‬‬ ‫‪-30‬‬ ‫‪-40‬‬ ‫‪-50‬‬ ‫‪15‬‬ ‫‪10‬‬ ‫‪10‬‬

‫‪5‬‬

‫‪5‬‬ ‫‪0‬‬

‫ﺷﻜﻞ ‪7-7‬‬

‫‪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‬ﻛﺎرﺑﺮد دارﻧﺪ‪.‬‬

‫ﻣﺜﺎل‪:‬‬ ‫‪0‬‬

‫ﻋﻤﻠﮕﺮﻫﺎي ﻣﻨﻄﻘﻲ‬ ‫ﻋﻼﻣﺖ‬ ‫ﻋﻤﻞ‬

‫&‬

‫‪0‬‬

‫‪1‬‬

‫‪ans = 1‬‬

‫;]‪>> A = [-2 0 2 4‬‬ ‫;]‪>> B = [-2 0 1 3‬‬ ‫‪>> A == B‬‬

‫‪Logical Operators‬‬

‫|‬

‫~‬

‫‪OR AND‬‬

‫‪NOT‬‬

‫ﻋﻤﻞﮔﺮﻫﺎي ﻣﻨﻄﻘﻲ ﻣﺎﺑﻴﻦ ﺻﻔﺮ و ﻳﻚﻫﺎي ﻣﻨﻄﻘﻲ ﻋﻤﻞ ﻣﻲﻛﻨﻨﺪ‪ ،‬و ﻧﺘﻴﺠﻪ آنﻫﺎ ‪ 0‬ﻳﺎ ‪ 1‬ﻣﻨﻄﻘﻲ اﺳﺖ‪ .‬ﺗﺮﻛﻴﺐ ﻋﻤﻠﻴﺎت‬ ‫ﻣﻘﺎﻳﺴﻪاي و ﻣﻨﻄﻘﻲ ﻣﻌﻤﻮﻻٌ در دﺳﺘﻮرﻫﺎي ﺷﺮﻃﻲ ﻧﻈﻴﺮ ‪ if‬ﻛﺎرﺑﺮد دارﻧﺪ‪.‬‬

‫ﻣﺜﺎل‪:‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬

‫ﺑﻠﻮك‬

‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬

‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬

‫‪CL = 1‬‬ ‫‪ans = 0‬‬ ‫‪ans = 1‬‬

‫)‪>> CL = (A == B‬‬ ‫‪>> (A < B) & CL‬‬ ‫‪>> (A < B)|CL‬‬

‫‪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 >> sw >> sw

2 9 0

Even Odd 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

‫‪Cosine‬‬ ‫‪1.00‬‬ ‫‪0.87‬‬ ‫‪0.50‬‬ ‫‪0.00‬‬ ‫‪-0.50‬‬ ‫‪-0.87‬‬ ‫‪-1.00‬‬

‫‪Sine‬‬ ‫‪0.00‬‬ ‫‪0.50‬‬ ‫‪0.87‬‬ ‫‪1.00‬‬ ‫‪0.87‬‬ ‫‪0.50‬‬ ‫‪0.00‬‬

‫‪>> sn‬‬ ‫‪Angle‬‬ ‫‪0.00‬‬ ‫‪30.00‬‬ ‫‪60.00‬‬ ‫‪90.00‬‬ ‫‪120.00‬‬ ‫‪150.00‬‬ ‫‪180.00‬‬

‫ﺗﻌﻴﻴﻴﻦ ﻓﺎﻛﺘﻮرﻳﻞ ﻋﺪد ﺻﺤﻴﺢ ﻣﺜﺒﺖ‪ ،‬اﻋﺪاد ‪ 1‬ﺗﺎ ‪5‬‬ ‫‪120‬‬

‫‪24‬‬

‫‪6‬‬

‫‪2‬‬

‫‪1‬‬

‫‪% fac.m‬‬ ‫‪clear‬‬ ‫ﻣﺘﻐﻴﺮﻫﺎ را از ﺣﺎﻓﻈﻪ ﭘﺎك ﻣﻲﻛﻨﺪ ‪%‬‬

‫= ‪fc‬‬

‫;‪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‬‬

‫ﺑﻪ دﺳﺖ آوردن ﻃﻮل زﻣﺎن ﻣﺤﺎﺳﺒﻪ ﺣﺎﺻﻞﺟﻤﻊ اﻋﺪاد ﺑﻴﻦ ﺻﻔﺮ ﺗﺎ ﻳﻚ ﺑﻴﻠﻴﻮن ﺑﺎ ﮔﺎم ﺻﺪ‬ ‫‪ n‬ﻳﻚ ﺷﻤﺎرﻧﺪه اﺳﺖ ﺑﺎ ﻣﻘﺪار ﻧﻬﺎﺋﻲ ﻳﻚ ﺑﻴﻠﻴﻮن ﺑﺎ ﮔﺎم ﺻﺪ ‪%‬‬

‫;‪t0 = clock‬‬ ‫;‪s1 = 0‬‬ ‫‪for n = 0 : 100 : 1e9‬‬

‫; ‪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‬از ﺑﺮدار اﺳﺘﻔﺎده ﻛﺮد‪.‬‬

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

‫‪break‬‬

‫ﺣﻠﻘﻪ ‪ 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‬ﻧﻜﺎﺗﻲ ﭘﻴﺮاﻣﻮن ﺗﻮاﺑﻊ و ﺗﺎﺑﻊ ﻛﺎرﺑﺮ‪ -‬ﺗﻌﺮﻳﻒ‬ ‫‪ 1-9‬ﺗﺎﺑﻊ ﺧﻂ ﻓﺮﻣﺎن‬

‫‪inline function‬‬

‫ﻣﺜﺎل‪:‬‬ ‫ﺗﺎﺑﻊ ‪ -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‬‬

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

‫‪function M-file‬‬

‫ﺗﺎﺑﻌﻲ ﻛﻪ ﺑﻪ ﺻﻮرت ﺑﺮﻧﺎﻣﻪ ﻧﻮﺷﺘﻪ ﺷﺪه و در داﺧﻞ ﻳﻚ ﻓﺎﻳﻞ ﺿﺒﻂ ﺷﻮد ام‪ -‬ﻓﺎﻳﻞ ﺗﺎﺑﻌﻲ ‪ 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‬ﻫﺎ و ﻣﺘﻐﻴﺮﻫﺎي داﺧﻠﻲ ﺗﺎﺑﻊ اﻧﺠﺎم و ﻣﻨﺠﺮ ﺑﻪ ﻣﻘﺪار‬ ‫)ﻣﻘﺎدﻳﺮ( ﺑﺮﮔﺸﺘﻲ ﻣﻲﺷﻮﻧﺪ‪.‬‬

‫ﻣﺜﺎل ﻫﺎ‪:‬‬ ‫ﻣﻘﺪار ﻣﻌﺎدﻟﻪ درﺟﻪ دو ‪ n2x + n1x + n0‬و ﻧﻮﺷﺘﻦ راﻫﻨﻤﺎ ﺑﺮاي ﺗﺎﺑﻊ‪.‬‬ ‫‪2‬‬

‫ﺗﺎﺑﻌﻲ ﺑﻪ ﻧﺎم ‪ 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.‬‬ ‫‪ans = -3.0000‬‬

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

‫ﻣﺤﺎﺳﺒﻪ ﻓﺎﻛﺘﻮرﻳﻞ از ﻃﺮﻳﻖ ﺧﻮد ﻓﺮاﺧﻮاﻧﻲ )ﺑﺎزﮔﺸﺘﻲ( ﻳﻚ ﺗﺎﺑﻊ ‪Function Recursivity‬‬ ‫ﺧﻮد ﻓﺮاﺧﻮاﻧﻲ اﺟﺮاي ﻳﻚ ﺗﺎﺑﻊ از داﺧﻞ ﺧﻮد آن ﺗﺎﺑﻊ اﺳﺖ‪ ،‬و ﻣﺎﻧﻨﺪ ﻳﻚ ﺣﻠﻘﻪ ﺗﺎ زﻣﺎﻧﻲﻛﻪ ﺧﺮوﺟﻲ ﺑﻪ ﻳﻚ ﻣﻘﺪار ﻣﻌﻴﻦ‬ ‫ﺑﺮﺳﺪ اداﻣﻪ ﻣﻲﻳﺎﺑﺪ‪.‬‬ ‫ﺑﺮﻧﺎﻣﻪ ﻣﺤﺎﺳﺒﻪ ﻓﺎﻛﺘﻮرﻳﻞ را از ﻃﺮﻳﻖ ﺧﻮد ﻓﺮاﺧﻮاﻧﻲ در ﻣﺤﻴﻂ ﻣﺘﻠﺐ اﺟﺮا ﻣﻲﻛﻨﻴﻢ‪.‬‬ ‫)‪function ff = facto(n‬‬ ‫‪if n > 1‬‬ ‫;)‪ff = n * facto(n - 1‬‬ ‫‪else‬‬ ‫;‪ff = 1‬‬ ‫‪end‬‬ ‫‪ans = 720‬‬ ‫)‪>> facto(6‬‬

‫ام‪ -‬ﻓﺎﻳﻞ ﺗﺎﺑﻌﻲ ﺑﺎ ﭼﻨﺪ آرﮔﻮﻣﺎن ﺧﺮوﺟﻲ‬ ‫ﻳﻜﻲ از وﻳﮋﮔﻲﻫﺎي ﻣﺘﻠﺐ اﻳﻦ اﺳﺖ ﻛﻪ در آن ﻣﻲﺗﻮان ﺗﻮاﺑﻌﻲ ﺑﺎ ﭼﻨﺪﻳﻦ ﺧﺮوﺟﻲ ﻛﻪ ﻫﺮ ﺧﺮوﺟﻲ ﻫﻢ ﻣﻲﺗﻮاﻧﺪ ﺑﺮدار ﺑﺎﺷﺪ‬ ‫ﺗﻌﺮﻳﻒ ﻛﺮد‪ .‬ﻣﺎﺑﻴﻦ ﻧﺎم آرﮔﻮﻣﺎنﻫﺎي ﺧﺮوﺟﻲ ﺗﺎﺑﻊ ﺑﺎﻳﺪ ﻛﺎﻣﺎ ﻗﺮار ﮔﻴﺮد ﻣﺜﻞ‪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‬‬ ‫]‪4.6 -5.8‬‬

‫‪Enter initial guess: 1‬‬ ‫‪Enter 3 coefficients: [3‬‬ ‫‪root = 0.82113‬‬

‫‪>> secndegree‬‬

‫]‪4.6 5.8‬‬

‫‪Enter initial guess: i‬‬ ‫‪Enter 3 coefficients: [3‬‬ ‫‪root = -0.76667+1.16i‬‬

‫‪>> secndegree‬‬

‫]‪4.6 5.8‬‬

‫‪Enter initial guess: -i‬‬ ‫‪Enter 3 coefficients: [3‬‬ ‫‪root = -0.76667-1.16i‬‬

‫ﺗﺎﺑﻊ ﺑﺪون ﻣﻘﺪار‪ ،‬ﻣﺘﻐﻴﺮ‬

‫‪>> secndegree‬‬

‫‪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‬‬ ‫‪Enter initial guess: 1‬‬ ‫‪>> eus‬‬ ‫‪root = 1.6506‬‬ ‫‪Enter initial guess: i‬‬ ‫‪root = 0.17469+1.5469i‬‬

‫‪>> eus‬‬

‫‪Enter initial guess: -i‬‬ ‫‪root = 0.17469-1.5469i‬‬

‫‪>> eus‬‬

‫‪ 3-9‬ﺗﺎﺑﻊِ ﺗﺎﺑﻊ‬ ‫ﮔﻴﺮه ﺗﺎﺑﻊ‬

‫‪feval() ، function handle‬‬

‫اﮔﺮ در ﻣﻘﺎﺑﻞ ﻧﺎم ﺗﺎﺑﻊ ﻋﻼﻣﺖ @ ﺑﻴﺎﻳﺪ ﮔﻴﺮه آن ﺗﺎﺑﻊ را اﻳﺠﺎد ﻛﺮدهاﻳﻢ )ﭼﻴﺰي ﺷﺒﻴﻪ اﺷﺎرهﮔﺮ ‪ pointer‬در ‪ .(C++‬ﺑﺮاي‬ ‫ﻣﺮاﺟﻌﻪ ﺑﻪ ﺗﺎﺑﻊ از ﻃﺮﻳﻖ ﮔﻴﺮه ﺑﺎﻳﺪ از)(‪ feval‬اﺳﺘﻔﺎده ﻛﻨﻴﻢ ﻣﻔﻬﻮم ﮔﻴﺮه اﻣﻜﺎن اﺳﺘﻔﺎده از ﺗﺎﺑﻌﻲ ﺑﻪ ﻋﻨﻮان آرﮔﻮﻣﺎن ﺗﺎﺑﻊ‬ ‫دﻳﮕﺮ را ﻓﺮاﻫﻢ ﻣﻲﻛﻨﺪ و از ﺗﻮاﻧﺎﺋﻲﻫﺎي ﻣﻬﻢ ﻣﺘﻠﺐ ﻣﺤﺴﻮب ﻣﻲﺷﻮد‪.‬‬

‫ﻣﺜﺎل ﻫﺎ‪:‬‬ ‫ﻧﺴﺒﺖ دادن ﮔﻴﺮه ﺗﺎﺑﻊ ﺑﻪ ﻣﺘﻐﻴﺮ دﻳﮕﺮ‬ ‫‪ans = 0.5000‬‬

‫;‪>> hs = @sin‬‬ ‫)‪>> feval(hs,pi/6‬‬

‫ﻛﺎرﺑﺮد ﻣﺴﺘﻘﻴﻢ ﮔﻴﺮه ﺗﺎﺑﻊ‬ ‫‪ans = 0.5000‬‬

‫)‪>> feval(@sin,pi/6‬‬

‫ﺗﺎﺑﻊِ ﺗﺎﺑﻊِ ﻛﺎرﺑﺮ‪ -‬ﺗﻌﺮﻳﻒ‬ ‫ﺗﻮاﺑﻌﻲ ﻛﻪ ﺗﺎﺑﻊ دﻳﮕﺮي را ﺑﻪ ﻋﻨﻮان آرﮔﻮﻣﺎن ﻣﻲﭘﺬﻳﺮﻧﺪ ﺗﺎﺑﻊِ ﺗﺎﺑﻊ ﻧﺎم دارﻧﺪ و آرﮔﻮﻣﺎن آنﻫﺎ ﻣﻲ ﺗﻮاﻧﺪ ﻳﻚ ﮔﻴﺮه ﺗﺎﺑﻊ ﺑﺎﺷﺪ‪ .‬ﺑﻪ‬ ‫ﺗﺎﺑﻊِ ﺗﺎﺑﻊ ﻛﺎرﺑﺮ‪ -‬ﺗﻌﺮﻳﻒ ﻣﺜﺎل ﺗﻮﺟﻪ ﻛﻨﻴﺪ‪.‬‬

‫ﻣﺜﺎل‪:‬‬ ‫ﻳﻚ ﻓﺎﻳﻞ ﺗﺎﺑﻌﻲ اﻳﺠﺎد ﻣﻲﻛﻨﻴﻢ ﻛﻪ آرﮔﻮﻣﺎن ورودﻳﺶ ﺗﺎﺑﻊ دﻳﮕﺮي ﺑﺎﺷﺪ‪.‬‬ ‫ﻳﻚ ﺗﺎﺑﻊ ﺑﻪ ﻧﺎم ‪ 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 = 2‬‬ ‫‪b = 3‬‬ ‫‪6‬‬ ‫‪14‬‬

‫)‪>> [a b] = ydh(@yd,1‬‬

‫‪a = 2‬‬ ‫;]‪>> x = [1 2‬‬ ‫)‪>> [a b] = ydh(@yd,x‬‬ ‫‪b = 3‬‬ ‫ﭼﻮن ‪ 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‬را ﺑﻪ‬ ‫دﻳﺮﻛﺘﻮري دﻳﮕﺮي ﻣﻨﺘﻘﻞ ﻛﺮده‪ ،‬ﻧﺘﻴﺠﻪ اﺟﺮاي آنرا ﻣﻼﺣﻈﻪ ﻛﻨﻴﺪ‪.‬‬ ‫‪>> pcode pascall‬‬

‫ﻓﺎﻳﻞ رﻣﺰﮔﺬريﺷﺪه ﺑﺎ ﻧﺎم‬ ‫‪pascall.p‬‬

‫ﭘﺪﻳﺪ ﻣﻲآﻳﺪ‪.‬‬

‫;‪ncr = 1‬‬ ‫;‪r = 2‬‬ ‫;‪n = 6‬‬ ‫‪for k = 1:r‬‬ ‫;‪ncr=ncr*(n-k+1)/k‬‬ ‫‪end‬‬ ‫)‪disp(ncr‬‬

‫‪93‬‬

‫ﺗﻮﻟﻴﺪ ﺑﺮﻧﺎﻣﻪ ‪ C‬ﺑﺎ ﻛﺎﻣﭙﺎﻳﻠﺮ ﻣﺘﻠﺐ‬

‫‪MATLAB Compiler‬‬

‫دﺳﺘﻮر ‪ 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‬اﺟﺮا ﻛﻨﻴﺪ‪.‬‬ ‫‪>> mcc -m dispp‬‬ ‫‪>> ! dispp.exe‬‬

‫‪function dispp‬‬ ‫;'‪xs='6.5‬‬ ‫;)]‪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‬‬ ‫;‪y=10*rem(t,T)/T‬‬

‫‪>> mcc -B sgl tsawt‬‬ ‫‪>> !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‬‬

‫ﻓﺼﻞ ‪ 10‬رﻳﺎﺿﻴﺎت ﻧﻤﺎدﻳﻦ‬

‫‪(Symbolic Math Tool Box) Symbolic Math‬‬

‫ﻧﻮﺷﺘﻦ ﻋﺒﺎرات و ﻓﺮﻣﻮلﻫﺎ ﺑﺎ ﺣﺮوف و ﻋﻼﺋﻢ‪ ،‬در ﻣﺘﻠﺐ رﻳﺎﺿﻴﺎت ﻧﻤﺎدﻳﻦ ﮔﻔﺘﻪ ﻣﻲﺷﻮد‪ .‬در ﺟﺒﺮ و آﻧﺎﻟﻴﺰ رواﺑﻂ رﻳﺎﺿﻲ ﺑﺎ‬ ‫ﺣﺮوﻓﻲ ﻧﻈﻴﺮ ‪ 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‬اﺳﺖ(‬ ‫‪dr = 0.0182 % 1/55‬‬

‫;'‪>> d = '7‬‬ ‫)‪>> dr = d^(-1‬‬

‫ﺳﭙﺲ ﻣﺘﻐﻴﺮ ﻧﻤﺎدﻳﻦ ‪ a‬را ﻣﺴﺎوي ‪ 7‬ﻧﻤﺎدﻳﻦ ﮔﺮﻓﺘﻪ و آن را ﻣﻌﻜﻮس ﻣﻲﻛﻨﻴﻢ‪ ،‬ﻧﻤﺎدﻳﻦ ﺑﻮدن ﻣﻘﺪار ﻣﻌﻜﻮس را اﻣﺘﺤﺎن ﻛﺮده‪،‬‬ ‫ﺳﭙﺲ آن را ﺑﻪ ﻣﻘﺪار ﻋﺪدي ﺗﺒﺪﻳﻞ ﻣﻲﻛﻨﻴﻢ‪ .‬ﺑﺎ ﻋﻤﻞ روي ‪ a‬ﻳﻚ ﻣﺘﻐﻴﺮ )ﺷﻴﺊ( ﻧﻤﺎدﻳﻦ دﻳﮕﺮ ﺑﻪ ﻧﺎم ‪ ar‬اﻳﺠﺎد ﻣﻲﺷﻮد‪.‬‬ ‫‪ar = 1/7‬‬

‫;)‪>> a = sym(7‬‬ ‫)‪>> ar = a^(-1‬‬

‫ﭼﻮن ‪ ar‬در ﺳﻤﺖ ﭼﭗ ﻳﻚ ﻋﺒﺎرت ﻧﻤﺎدﻳﻦ ﻗﺮار دارد‪ ،‬ﺧﻮد ﺑﻪ ﺧﻮد ﻣﻌﺮﻓﻲ ﻣﻲﺷﻮد و ﻧﻴﺎز ﺑﻪ ﻣﻌﺮﻓﻲ ﺟﺪا ﻧﺪارد‪ .‬ﻧﻤﺎدﻳﻦ‬ ‫ﺑﻮدن اﻳﻦ ﺷﻴﺊ را ﺑﺎ دﺳﺘﻮر )(‪ isobject‬اﻣﺘﺤﺎن ﻣﻲﻛﻨﻴﻢ‪:‬‬ ‫‪ans = 1‬‬

‫)‪>> isobject(ar‬‬

‫ﺑﺎ دﺳﺘﻮر ‪ double‬ﻣﻲﺗﻮان ﻣﻘﺎدﻳﺮ ﻧﻤﺎدﻳﻦ ﻋﺪدي را ﻧﻴﺰ ﺑﻪ ﻋﺪد ﺗﺒﺪﻳﻞ ﻛﺮد‪:‬‬ ‫)‪>> bs = double(ar‬‬ ‫‪bs = 0.1429‬‬ ‫)‪>> isnumeric(bs‬‬ ‫‪ans = 1‬‬ ‫ﻫﻤﻴﻦ ﻛﺎر ﺑﺎ دﺳﺘﻮر )(‪ eval‬ﻧﻴﺰ ﺷﺪﻧﻲ اﺳﺖ‪:‬‬ ‫‪ans = 0.1429‬‬ ‫)‪>> eval(ar‬‬

‫ﺟﺎي ﮔﺰﻳﻨﻲ ﻋﺪد ﻧﻤﺎدﻳﻦ در ﻣﺘﻐﻴﺮ ﻧﻤﺎدﻳﻦ‬ ‫ﻣﺘﻐﻴﺮ ﻧﻤﺎدﻳﻦ ‪ a‬را ﻣﺴﺎوي ‪ -5‬ﻧﻤﺎدﻳﻦ ﻗﺮار داده ‪ b = a^2 + a‬و ‪ z = b^.5‬را ﺑﻪ دﺳﺖ آورده ﻣﻘﺎدﻳﺮ ﻋﺪدي‬ ‫آنﻫﺎ را ﻧﻴﺰ ﭘﻴﺪا ﻣﻲﻛﻨﻴﻢ‪.‬‬ ‫)‪>> a = sym(-5‬‬ ‫‪>> b = a^2 + a‬‬ ‫‪>> z = b ^ 0.5‬‬

‫‪a = -5‬‬ ‫‪b = 20‬‬ ‫)‪z = 20^(1/2‬‬

‫ﭼﻮن ﺑﻪ ‪ b‬و ‪ z‬ﻣﻘﺎدﻳﺮ ﻧﻤﺎدﻳﻦ ﻧﺴﺒﺖ داده ﺷﺪه ﻗﺎﺑﻞ ﺗﺒﺪﻳﻞ ﺑﻪ ﻋﺪد ﻫﺴﺘﻨﺪ‪:‬‬ ‫‪bd = 20‬‬ ‫‪zd = 4.4721‬‬

‫)‪>> bd = double(b‬‬ ‫)‪>> zd = double(z‬‬

‫ﻳﺎﻓﺘﻦ ﻣﺘﻐﻴﺮﻫﺎي ﻧﻤﺎدﻳﻦ‬ ‫دﺳﺘﻮر )(‪ findsym‬ﻣﺘﻐﻴﺮﻫﺎي ﻧﻤﺎدﻳﻦ ﻳﻚ ﺗﺎﺑﻊ ﻧﻤﺎدﻳﻦ را ﺑﻪ ﺗﺮﺗﻴﺐ اﻟﻔﺒﺎ ﻧﺸﺎن ﻣﻲدﻫﺪ‪.‬‬ ‫‪ans = t, x‬‬

‫‪ans = t, x, y, z‬‬

‫‪>> syms x t y z‬‬ ‫;‪>> f = x^t; f1 = z + t^x*y‬‬ ‫)‪>> findsym(f), findsym(f1‬‬

‫ﺗﻌﺪاد ‪ n‬ﻣﺘﻐﻴﺮ اول ﻛﻪ از ‪ x‬ﺷﺮوع ﻣﻲﺷﻮﻧﺪ ﺑﺎ )‪ findsym(f1,n‬ﺑﻪ دﺳﺖ ﻣﻲآﻳﺪ‪:‬‬ ‫‪ans = x, y, z‬‬

‫)‪>> findsym(f1,3‬‬

‫ﻧﻤﺎﻳﺶ اﻋﺪاد ﻧﻤﺎدﻳﻦ‬ ‫ﻣﺘﻐﻴﺮ ﻋﺪدي ‪ u = 0.257‬را در ﻧﻈﺮ ﻣﻲﮔﻴﺮﻳﻢ و ﺑﺎ آن ﻣﺘﻐﻴﺮ ﻧﻤﺎدﻳﻦ ‪ us‬را ﭘﺪﻳﺪ آورده‪ ،‬ﺑﻪ دو ﺻﻮرت ﻛﺴﺮي و‬ ‫اﻋﺸﺎري )ﺗﺎ ﭘﻨﺞ رﻗﻢ( ﻧﻤﺎﻳﺶ ﻣﻲدﻫﻴﻢ‪.‬‬ ‫‪us = 257/1000‬‬

‫;‪>> u = 0.257‬‬ ‫)‪>> us = sym(u‬‬

‫‪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‬ﻣﻌﺮﻓﻲ ﻧﺸﺪه اﺳﺖ‪:‬‬ ‫‪??? Undefined function or variable 'w'.‬‬

‫)‪>> (a+w)^(1/2‬‬

‫ﻳﻚ ﻣﺘﻐﻴﺮ ﻧﻤﺎدﻳﻦ ﻣﻘﺪاردار و ﻳﻚ ﻣﺘﻐﻴﺮ ﻧﻤﺎدﻳﻦ ﺑﺪون ﻣﻘﺪار را ﺟﻤﻊ ﻛﺮده و رﺷﻴﻪ دوم ﻣﻲﮔﻴﺮﻳﻢ‪ .‬ﺑﻪ ﻣﻌﺮﻓﻲ ﻳﻚ ﻣﺘﻐﻴﺮ‬ ‫ﻧﻤﺎدﻳﻦ )ﺳﻤﺒﻠﻴﻚ( ﺑﺎ ﻣﻘﺪار دﻫﻲ و ﺑﺪون ﻣﻘﺪار دﻫﻲ ﺗﻮﺟﻪ ﻛﻨﻴﺪ‪ .‬اﻣﺎ ﻣﺘﻐﻴﺮ ‪ c‬ﻛﻪ از ﻋﻤﻠﻴﺎت ﺑﺮ روي ﻣﺘﻐﻴﺮﻫﺎي ﻗﺒﻼً ﻣﻌﺮﻓﻲ‬ ‫ﺷﺪه ﺑﻪ دﺳﺖ ﻣﻲآﻳﺪ‪ ،‬ﻧﻴﺎز ﺑﻪ ﻣﻌﺮﻓﻲ ﻧﺪارد‬ ‫;)‪>> a = sym(7‬‬ ‫‪>> syms b‬‬ ‫)‪>> c = (a+b)^(1/2‬‬

‫)‪c = (7+b)^(1/2‬‬ ‫ﺑﺎ ﻛﺎرﺑﺮد ﻋﺒﺎرات ﺑﺎﻻ ﻣﻘﺪار ﻧﻤﺎدﻳﻦ ‪ a‬ﻫﻔﺖ اﺳﺖ و ﻣﻘﺪار ﻧﻤﺎدﻳﻦ ‪ b‬ﺧﻮدِ ‪ b‬اﺳﺖ‪ ،‬ﻣﻘﺪار اﺷﻴﺎء ﻧﻤﺎدﻳﻦِ ﺑﺪون ﻣﻘﺪار ﺑﺎ‬

‫ﺧﻮدﺷﺎن ﻣﺴﺎوي اﺳﺖ‪ .‬اﻳﻦ ﻣﻮﺿﻮع را ﻣﻲﺗﻮان روي ﭘﻨﺠﺮه ﻓﺮﻣﺎن ﺗﺤﻘﻴﻖ ﻛﺮد‪:‬‬ ‫‪b = b‬‬

‫‪>> a , b‬‬

‫‪a = 7‬‬

‫ﻣﺘﻐﻴﺮ ﻣﺴﺘﻘﻞ ﻧﻤﺎدﻳﻦ‬ ‫ﺑﻪ ﺻﻮرت ﭘﻴﺶﻓﺮض ﻣﺘﻐﻴﺮ ﻣﺴﺘﻘﻞ ‪ x‬اﺳﺖ‪ ،‬ﻟﺬا ﺑﺪون ذﻛﺮ ﭘﺎراﻣﺘﺮ‪ ،‬ﻋﻤﻞ رﻳﺎﺿﻲ ﺑﺮ ﺣﺴﺐ ‪ x‬ﻳﺎ ﻧﺰدﻳﻚﺗﺮﻳﻦ ﻧﺎم ﺑﻪ ‪ x‬اﻧﺠﺎم‬ ‫‪t‬‬

‫ﻣﻲﺷﻮد‪ .‬ﻣﺜﻼً ﻣﺸﺘﻖ ‪ x‬را ﺑﺮ ﺣﺴﺐ ‪ x‬و ‪ t‬ﭘﻴﺪا ﻣﻲﻛﻨﻴﻢ‪.‬‬ ‫‪>> syms x t‬‬ ‫‪>> f = x^t‬‬ ‫)‪>> diff(f‬‬

‫‪ans =x^t*t/x‬‬

‫اﮔﺮ ﺑﺨﻮاﻫﻴﻢ ﻣﺘﻐﻴﺮ ﻣﺴﺘﻘﻞ را ﺧﻮدﻣﺎن ﺗﻌﻴﻴﻦ ﻛﻨﻴﻢ‪ ،‬آنرا ﺑﻪ ﻋﻨﻮان ﭘﺎراﻣﺘﺮ دوم ﻣﻲآورﻳﻢ‪:‬‬ ‫)‪>> 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‬را ﺑﻪ دﺳﺖ آورده ﻣﻘﺎدﻳﺮ ﻋﺪدي‬ ‫آنﻫﺎ را ﻧﻴﺰ ﭘﻴﺪا ﻣﻲﻛﻨﻴﻢ‪.‬‬ ‫)‪z = 20^(1/2‬‬

‫‪b = 20‬‬

‫‪a = -5‬‬

‫‪>> a = sym(-5),b = a^2 + a,z = b^.5‬‬ ‫ﭼﻮن ﺑﻪ ‪ b‬و ‪ z‬ﻣﻘﺎدﻳﺮ ﻧﻤﺎدﻳﻦ ﻧﺴﺒﺖ داده ﺷﺪه‬

‫ﻗﺎﺑﻞ ﺗﺒﺪﻳﻞ ﺑﻪ ﻋﺪد ﻫﺴﺘﻨﺪ‪:‬‬ ‫‪zd = 4.4721‬‬

‫‪98‬‬

‫‪bd = 20‬‬

‫)‪>> bd = double(b), zd = double(z‬‬

‫ﻳﺎﻓﺘﻦ ﻣﺘﻐﻴﺮﻫﺎي ﻧﻤﺎدﻳﻦ‬ ‫دﺳﺘﻮر زﻳﺮ ﻣﺘﻐﻴﺮﻫﺎي ﻧﻤﺎدﻳﻦ ﺗﺎﺑﻊ‬

‫‪t‬‬

‫‪ f = x‬را ﻧﻤﺎﻳﺶ ﻣﻲدﻫﺪ‪:‬‬ ‫‪ans = t, x‬‬

‫)‪>> findsym(f‬‬

‫اوﻟﻴﻦ ﻣﺘﻐﻴﺮ ﻣﺴﺘﻘﻞ ﺑﺎ اﺿﺎﻓﻪ ﻛﺮدن ﭘﺎراﻣﺘﺮ ‪ 1‬ﺑﻪ دﺳﺘﻮر ﻓﻮق ﺑﻪ دﺳﺖ ﻣﻲآﻳﺪ‪:‬‬ ‫‪ans = x‬‬

‫)‪>> findsym(f,1‬‬

‫ﻧﻤﺎﻳﺶ اﻋﺪاد ﻧﻤﺎدﻳﻦ‬ ‫ﺑﺎ ﻣﺘﻐﻴﺮ ﻋﺪدي ‪ u = 0.257‬ﻣﺘﻐﻴﺮ ﻧﻤﺎدﻳﻦ ‪ us‬را ﭘﺪﻳﺪ آورده‪ ،‬ﺑﻪ دو ﺻﻮرت ﻛﺴﺮي و اﻋﺸﺎري )ﺗﺎ ﭘﻨﺞ رﻗﻢ( ﻧﻤﺎﻳﺶ‬ ‫ﻣﻲدﻫﻴﻢ‪.‬‬ ‫‪us = 257/1000‬‬

‫;‪>> u = 0.257‬‬ ‫)‪>> us = sym(u‬‬

‫ﭘﺎراﻣﺘﺮ '‪ 'd‬ﻧﻤﺎﻳﺶ را ﺑﻪ ﺻﻮرت اﻋﺸﺎري در ﻣﻲآورد‪ .‬دﺳﺘﻮر )(‪ digits‬ﻛﻪ ﻓﻘﻂ ﺑﺮاي ﻣﺘﻐﻴﺮﻫﺎي ﻧﻤﺎدﻳﻦ ﺑﻪ ﻛﺎر ﻣﻲ‪-‬‬ ‫رود ﺗﻌﺪاد ارﻗﺎم اﻋﺪاد ﻧﻤﺎدﻳﻦ را ﺗﻌﻴﻴﻦ ﻣﻲﻛﻨﺪ‪.‬‬ ‫‪us = .25700‬‬

‫)‪>> digits(5‬‬ ‫)'‪>> us = sym(u,'d‬‬

‫‪ 3-10‬ﻋﻤﻠﻴﺎت رﻳﺎﺿﻲ‬ ‫رﻳﺸﻪ دوم‬ ‫رﻳﺸﻪ دوم ﻣﺘﻐﻴﺮ ﻧﻤﺎدﻳﻦ ‪ a‬ﺑﻪ ﻃﺮﻳﻖ زﻳﺮ ﺑﻪ دﺳﺖ ﻣﻲآﻳﺪ‪.‬‬ ‫)‪b = a^(1/2‬‬

‫‪>> syms a‬‬ ‫)‪>> b = sqrt(a‬‬

‫ﺗﻮان‬ ‫رﻳﺸﻪ دوم )‪ exp(-z‬را از ﻃﺮﻳﻖ ﺑﻪ ﺗﻮان رﺳﺎﻧﺪن ﺑﻪ دﺳﺖ ﻣﻲآورﻳﻢ‪.‬‬ ‫)‪z = exp(-z)^(1/2‬‬

‫‪>> syms z‬‬ ‫;)‪>> b = exp(-z‬‬ ‫‪>> z = b ^ 0.5‬‬

‫ﻣﺸﺘﻖ‬ ‫ﻣﺸﺘﻖ اول و دوم ﻋﺒﺎرت ‪ -z^2 + a^2‬را ﭘﻴﺪا ﻣﻲﻛﻨﻴﻢ‪.‬‬ ‫‪d = -2*z‬‬ ‫‪dd = -2‬‬

‫‪>> syms a z‬‬ ‫)‪>> d = diff(-z^2 + a^2‬‬ ‫)‪>> dd = diff(d‬‬

‫اﻧﺘﮕﺮال‬ ‫اﻧﺘﮕﺮال ‪ a^2 + a‬را ﺗﻌﻴﻴﻦ ﻣﻲﻛﻨﻴﻢ‪.‬‬ ‫‪c = 1/3*a^3+1/2*a^2‬‬

‫‪>> syms a‬‬ ‫‪>> b = a^2 + a‬‬ ‫)‪>> c = int(b‬‬

‫اﻧﺘﮕﺮال ﻣﺤﺪود‬ ‫اﻧﺘﮕﺮال )‪ exp(-z‬را ﻣﺎﺑﻴﻦ ﺻﻔﺮ ﺗﺎ ﺑﻲﻧﻬﺎﻳﺖ ﭘﻴﺪا ﻣﻲﻛﻨﻴﻢ‪.‬‬ ‫‪c = 1‬‬

‫‪>> syms z‬‬ ‫;)‪>> b = exp(-z‬‬ ‫)‪>> c = int(b,z,0,inf‬‬

‫‪99‬‬

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

‫ﻓﺮم ‪2‬‬

‫ﻓﺮم ‪1‬‬

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

‫‪1.3320‬‬ ‫‪-0.4093‬‬

‫‪-0.6653‬‬ ‫‪-1.1644‬‬

‫ﻓﺮم ‪1‬‬

‫‪r = -1.4167‬‬ ‫‪p = 1.5737‬‬ ‫‪k = -1.2500‬‬

‫]‪>> b = [ 5 3 -2 7‬‬ ‫]‪>> a = [-4 0 8 3‬‬ ‫)‪>> [r, p, k] = residue(b,a‬‬

‫ﺗﺒﺪﻳﻞ ﻋﺒﺎرت ﺟﺒﺮي ﺑﻪ ﻛﺴﺮ ﻣﺘﻌﺎرﻓﻲ ﮔﻮﻳﺎ‬ ‫)‪ [N,D] = numden(A‬ﻋﻨﺎﺻﺮ ﻣﺎﺗﺮﻳﺲ ‪ A‬را ﺑﻪ ﻛﺴﺮ ﻣﺘﻌﺎرﻓﻲ ﮔﻮﻳﺎ ﺗﺒﺪﻳﻞ ﻣﻲﻛﻨﺪ‪ .‬ﭼﻨﺪﺟﻤﻠﻪايﻫﺎي ﺻﻮرت و‬ ‫‪x y‬‬ ‫ﻣﺨﺮج ﺣﺘﻲاﻻﻣﻜﺎن ﺗﺠﺰﻳﻪﻧﺎﭘﺬﻳﺮ ﺑﻮده و ﺿﺮاﺋﺐ آنﻫﺎ اﻋﺪاد ﺻﺤﻴﺢ ﻫﺴﺘﻨﺪ‪ .‬اﮔﺮ ﻋﺒﺎرت ‪+‬‬ ‫‪y x‬‬

‫را ﺑﻪ ﺻﻮرت ﻛﺴﺮ‬

‫ﻣﺘﻌﺎرﻓﻲ ﮔﻮﻳﺎ درآورﻳﻢ‪.‬‬ ‫‪n = x^2 + y^2‬‬ ‫‪d = y*x‬‬

‫‪>> syms x y‬‬ ‫)‪>> [n,d] = numden(x/y + y/x‬‬

‫‪x2 + y 2‬‬ ‫ﻋﺒﺎرت ﺗﺒﺪﻳﻞ ﺷﺪه ﺑﻪ اﻳﻦ ﺷﻜﻞ ﻣﻲﺑﺎﺷﺪ‪:‬‬ ‫‪yx‬‬

‫‪ 4-10‬اﻋﺪاد ﻣﺨﺘﻠﻂ ﻧﻤﺎدﻳﻦ‬ ‫ﺑﺮاي اﻳﻦ ﻛﻪ ﺑﺘﻮاﻧﻴﻢ ﻗﺴﻤﺖ ﻣﻮﻫﻮﻣﻲ را ﺑﻪ ﺻﻮرت ‪ i*y‬ﻧﺸﺎن دﻫﻴﻢ ﺑﺎﻳﺴﺘﻲ ‪ y‬ﺣﺘﻤﺎٌ ﻋﺪد ﺣﻘﻴﻘﻲ ﺑﺎﺷﺪ‪ .‬ﻟﺬا از ﭘﺎراﻣﺘﺮ‬ ‫‪ real‬اﺳﺘﻔﺎده ﻣﻲﻛﻨﻴﻢ‪ .‬ﺣﻘﻴﻘﻲ ﺑﻮدن ‪ x‬و ‪ y‬ﺑﻪ ﻣﻌﻨﻲ ﻣﺜﺒﺖ ﺑﻮدن ﻋﺒﺎرت ‪ x^2 + y^2‬ﻣﻲﺑﺎﺷﺪ‪.‬‬

‫ﻣﺰدوج ﻳﻚ ﻋﺪد ﻣﺨﺘﻠﻂ‬ ‫ﻣﺰدوج ﻳﻚ ﻋﺪد ﻣﺨﺘﻠﻂ ﻧﻤﺎدﻳﻦ را ﺑﻪ دﺳﺖ آورده‪ ،‬در ﺧﻮدش ﺿﺮب ﻛﺮده‪ ،‬و ﻧﻤﺎﻳﺶ ﻣﻲدﻫﻴﻢ‪ .‬دﺳﺘﻮر )(‪ expand‬در‬ ‫اﻳﻦﺟﺎ ﺿﺮب دو ﭘﺮاﻧﺘﺰ را ﺑﺎز ﻣﻲﻛﻨﺪ‪.‬‬ ‫‪cz = x-i*y‬‬ ‫)‪az =(x+i*y)*(x-i*y‬‬ ‫‪ans = x^2+y^2‬‬

‫‪100‬‬

‫‪syms x y real‬‬ ‫; ‪z = x + i*y‬‬ ‫)‪cz = conj(z‬‬ ‫)‪az = z*conj(z‬‬ ‫))‪expand(z*conj(z‬‬

‫>>‬ ‫>>‬ ‫>>‬ ‫>>‬ ‫>>‬

‫‪ 5-10‬ﺗﻮاﺑﻊ ﻧﻤﺎدﻳﻦ‬ ‫ﻣﻌﺮﻓﻲ ﻳﻚ ﺗﺎﺑﻊ ﻛﻠﻲ‬ ‫ﻣﺜﺎل‪:‬‬ ‫ﺗﺎﺑﻊ )‪ f(x‬را ﺑﻪ ﺻﻮرت ﻧﻤﺎدﻳﻦ ﻣﻌﺮﻓﻲ ﻣﻲﻛﻨﻴﻢ‪.‬‬ ‫)‪f = f(x‬‬

‫ﺟﺎي ﮔﺰﻳﻨﻲ ﻳﻚ ﻋﺒﺎرت ﺑﻪ ﺟﺎي‬

‫)')‪>> f = sym('f(x‬‬

‫‪(subs = substitution) x‬‬

‫ﻣﺜﺎل ﻫﺎ‪:‬‬ ‫‪(1‬‬ ‫ﺑﺎ ﻋﺒﺎرت )‪ x+h ، subs(f,x,x+h‬را ﺑﻪ ﺟﺎي ‪ x‬ﻗﺮار ﻣﻲدﻫﻴﻢ‬ ‫)‪fs = f(x+h‬‬

‫‪>> syms x h y‬‬ ‫)‪>> fs = subs(f,x,x+h‬‬

‫‪(2‬‬ ‫‪fs − f‬‬ ‫ﻣﻘﺪار ﻧﻤﺎدﻳﻦ‬ ‫‪h‬‬

‫را ﺑﻪ دﺳﺖ آورﻳﺪ‪.‬‬ ‫‪df = (f(x+h)-f(x))/h‬‬

‫‪>> df = (fs-f)/h‬‬

‫ﺗﺎﺑﻊ ﻧﻤﺎدﻳﻦ ﻣﺨﺘﻠﻂ‬ ‫ﻣﺜﺎل‪:‬‬ ‫ﻣﺸﺘﻖ ‪ eix‬را ﺑﻪ دﺳﺖ ﻣﻲآورﻳﻢ‪.‬‬ ‫)‪ep1 = i*exp(i*x‬‬

‫)‪>> ep = exp(i*x‬‬ ‫)‪>> ep1 = diff(ep‬‬

‫‪ 6-10‬ﺣﺪ ﺗﺎﺑﻊ‬ ‫در ﮔﺮﻓﺘﻦ ﺣﺪ‪ ،‬اﮔﺮ ﺟﻬﺖ ﻣﻴﻞ ﻣﺘﻐﻴﺮ را ﻧﻨﻮﻳﺴﻴﻢ‪ ،‬ﭘﻴﺶ ﻓﺮضِ ﺣﺪ ﻳﻌﻨﻲ ‪ x → 0‬اﻋﻤﺎل ﻣﻲﺷﻮد‪.‬‬

‫ﻣﺜﺎل ﻫﺎ‪:‬‬ ‫‪cos(x + h)− cosx‬‬ ‫ﺗﻌﻴﻴﻦ‬ ‫‪h‬‬

‫‪lim‬‬ ‫∞→‪h‬‬

‫‪li = 0‬‬

‫‪>> syms x h‬‬ ‫ )‪>> lm = '(cos(x+h‬‬‫;'‪cos(x))/h‬‬ ‫) ‪>> li = limit(lm, h, inf‬‬ ‫‪ h‬ﻣﺘﻐﻴﺮ ﻣﻴﻞ ﻛﻨﻨﺪه و ‪ (∞) inf‬ﻣﻘﺼﺪ ﺗﻤﺎﻳﻞ اﺳﺖ ‪%‬‬

‫ﻣﻲﺗﻮان ﺑﻪ اﻳﻦ ﺻﻮرت ﻧﻮﺷﺖ‪ ، lm = sym('(cos(x+h) - cos(x))/h') :‬اﻣﺎ ﻣﺘﻠﺐ اﺟﺎزه ﻣﻲدﻫﺪ ﻛﻪ‬ ‫ﺗﺎﺑﻊ را ﺑﻪ ﺻﻮرت رﺷﺘﻪ ﺗﻌﺮﻳﻒ ﻛﺮده‪ ،‬ﺳﭙﺲ ﻋﻤﻠﻴﺎت ﻧﻤﺎدﻳﻦ را اﻧﺠﺎم دﻫﻴﻢ‪ .‬ﺑﻪ اﻳﻦ ﺗﺮﺗﻴﺐ ﻧﻮﺷﺘﻦ ﺗﻮاﺑﻊ راﺣﺖﺗﺮ و ﻧﻤﺎﻳﺶ‬ ‫آنﻫﺎ واﺿﺢﺗﺮ ﻣﻲﺷﻮد‪.‬‬

‫ﺳﺆال‪ :‬ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ رﺷﺘﻪاي ﺑﻮدن ‪ lm‬ﻣﺘﻐﻴﺮ ‪ li‬از ﭼﻪ ﻧﻮع اﺳﺖ؟‬

‫ﺗﻌﻴﻴﻦ ﻣﺸﺘﻖ از ﻃﺮﻳﻖ ﻳﺎﻓﺘﻦ ﺣﺪ‬

‫)‪lz = -sin(x‬‬

‫‪>> syms x h‬‬ ‫ )‪>> lm = '(cos(x+h‬‬‫'‪cos(x))/h‬‬ ‫) ‪>> lz = limit(lm, h, 0‬‬

‫‪101‬‬

‫ﺣﺪ و ﮔﺮاﻳﺶ ﺣﺪ‬ ‫‪ans = NaN‬‬

‫ﺣﺪ ﺗﺎﺑﻊ ‪ 1/x‬را ﺑﻪ ازاي ‪ x → 0‬ﺑﺪون ﮔﺮاﻳﺶ‬ ‫)‪>> limit(1/x‬‬

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

‫‪ 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‬‬ ‫‪ans = 1‬‬

‫;)‪>> x = sym(0‬‬ ‫)‪>> sinc(x‬‬

‫‪>> 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‬‬ ‫ﻣﺤﺎﺳﺒﻪ ﺳﺮي‪:‬‬ ‫∑‬ ‫‪2‬‬ ‫‪k‬‬ ‫‪k =1‬‬

‫‪>> 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‬‬

‫ﺗﻮاﺑﻊ )(‪ collect‬و‬

‫)(‪expand‬‬

‫ﻣﻜﻤﻞ ﻳﻚ دﻳﮕﺮ ﻫﺴﺘﻨﺪ و ﻋﺒﺎرات ﻧﻤﺎدﻳﻦ را ﺑﺎز ﻳﺎ ﺑﺴﺘﻪ ﻣﻲﻛﻨﻨﺪ‪.‬‬

‫ﻣﺜﺎل‪:‬‬

‫ﻓﺎﻛﺘﻮرﮔﻴﺮي‬

‫‪ans = (y-1)*x^2+(y-2)*x‬‬

‫‪>> syms x y‬‬ ‫;‪>> f = x^2*y + y*x - x^2 - 2*x‬‬ ‫)‪>> collect(f‬‬

‫‪ans = 4*x^2+20*x+25‬‬

‫‪>> g = (2*x+5)^2‬‬ ‫)‪>> expand(g‬‬

‫)(‪factor‬‬

‫ﻣﺜﺎل‪:‬‬ ‫از ﻋﺒﺎرت ‪ x 3 − 1‬و ﻋﺪد ﻧﻤﺎدﻳﻦ ‪ 625‬ﻓﺎﻛﺘﻮر ﻣﻲﮔﻴﺮﻳﻢ‪.‬‬

‫ﺳﺎده ﻛﺮدن ﺑﺎ‬

‫)‪gf =(x-1)*(x^2+x+1‬‬

‫‪>> syms x‬‬ ‫‪>> g = x^3-1‬‬ ‫)‪>> gf = factor(g‬‬

‫‪ans = (5)^4‬‬

‫;)‪>> y = sym(625‬‬ ‫)‪>> factor(y‬‬

‫)(‪simplify‬‬

‫ﺳﻌﻲ ﻣﻲﻛﻨﺪ ﻫﺮ ﻋﺒﺎرت ﻧﻤﺎدﻳﻦ را ﻳﻪ ﺳﺎدهﺗﺮﻳﻦ ﻓﺮم ﻧﻤﺎدﻳﻦ ﻧﻤﺎﻳﺶ دﻫﺪ‪.‬‬

‫ﻣﺜﺎل‪:‬‬ ‫‪2 5‬‬

‫‪2‬‬

‫‪2‬‬

‫‪y x‬‬

‫ﻋﺒﺎرات ‪ e e , sin x + cos x, x x‬را ﺳﺎده ﻣﻲﻛﻨﻴﻢ‪.‬‬

‫ﺳﺎده ﻛﺮدن ﺑﺎ‬

‫)‪ans = exp(y+x‬‬

‫‪>> syms x y‬‬ ‫))‪>> simplify(exp(y)*exp(x‬‬

‫‪ans = 1‬‬

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

‫‪ans = x^7‬‬

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

‫)(‪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] >> s2 = sum(M(2,:))% ‫ﻣﺠﻤﻮع ﻋﻨﺎﺻﺮ ردﻳﻒ دو‬

M = [ a, b, c] [ 1/2*a, 1/2*b, 1/2*c] [ c, a, b] 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 = [ -sin(a*x)*a, cos(a*x)*a] >> Md = diff(M) [ -cos(a*x)*a, -sin(a*x)*a] >> a = sym(-1); Mde = [ -sin(x), -cos(x)] >> Mde = eval(Md) [ cos(x), -sin(x)] >> x = sym(pi/4); >> MM = eval(Mde) >> double(MM)

MM = [ -1/2*2^(1/2), -1/2*2^(1/2)] [ 1/2*2^(1/2), -1/2*2^(1/2)] ans = -0.7071 0.7071

-0.7071 -0.7071

104

‫‪ 11-10‬رﺳﻢ ﺗﺎﺑﻊ ﻧﻤﺎدﻳﻦ ﺑﺎ‬

‫)(‪ezplot‬‬

‫ﻣﺜﺎل‪:‬‬ ‫رﺳﻢ ﺗﺎﺑﻊ‬

‫‪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‬ﻣﻘﺎدﻳﺮ ﻋﺪدي رﻳﺸﻪﻫﺎ را ﺑﻪ دﺳﺖ آورﻳﺪ‪.‬‬ ‫‪d2u‬‬ ‫‪du‬‬ ‫‪d3u‬‬ ‫‪(0)=-1,‬‬ ‫=)‪(0‬‬ ‫‪π‬‬ ‫اوﻟﻴﻪ‬ ‫ﺷﺮاﺋﻂ‬ ‫ﺑﺎ‬ ‫را‬ ‫‪ -12‬ﻣﻌﺎدﻟﻪ دﻳﻔﺮاﻧﺴﻴﻞ ‪= u‬‬ ‫‪dx‬‬ ‫‪dx2‬‬ ‫‪dx3‬‬

‫‪ u(0)=1,‬ﺣﻞ ﻛﻨﻴﺪ‪.‬‬

‫‪ -13‬ﺷﺪت ﺟﺮﻳﺎن ﻳﻚ ﻣﺪار ‪ RLC‬را ﺑﺮاي ‪ ω = 1‬ﺑﺎ ﻣﻘﺎدﻳﺮ ﻳﻚ ﺑﺮاي ﻋﻨﺎﺻﺮ ﻣﺪار‪ ،‬ورودي ﺳﻴﻨﻮﺳﻲ‪ ،‬و ﺑﺎ ﺷﺮاﺋﻂ‬ ‫اوﻟﻴﻪ ﺻﻔﺮ ﺑﻪدﺳﺖ آورده و رﺳﻢ ﻛﻨﻴﺪ‪ .‬راﻫﻨﻤﺎ‪ :‬ﺑﺮاي ﻧﺸﺎﻧﻪ ﺷﺪت ﺟﺮﻳﺎن ﺑﻪﺟﺎي ‪ i‬از ‪ cur‬اﺳﺘﻔﺎده ﻛﻨﻴﺪ‪.‬‬ ‫‪R=1‬‬ ‫‪cur‬‬

‫‪L=1‬‬

‫‪sin t‬‬

‫‪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‬ﺣﻞ ﻣﻌﺎدﻻت‬ ‫ﻣﻌﺎدﻟﻪ ﭼﻨﺪ ﺟﻤﻠﻪ اي‪ ،‬دﺳﺘﻮرﻫﺎي )(‪ roots‬و‬

‫)(‪poly‬‬

‫دﺳﺘﻮر )‪ 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‬‬

‫ﺿﺮاﺋﺐ ﭼﻨﺪ ﺟﻤﻠﻪاي از روي رﻳﺸﻪﻫﺎ‬ ‫)]‪-4.0001‬‬

‫ﺣﻞ ﻣﻌﺎدﻟﻪ ﺑﺎ ﺗﺎﺑﻊ ﻛﺘﺎب ﺧﺎﻧﻪ اي‬

‫‪3.0001‬‬

‫‪-2.0000‬‬

‫‪-4.0001‬‬

‫‪3.0001‬‬

‫‪>> rr = roots( [1.0000‬‬ ‫‪rr = 1.6506‬‬ ‫‪0.1747 + 1.5469i‬‬ ‫‪0.1747 - 1.5469i‬‬ ‫)‪>> poly(rr‬‬ ‫‪ans = 1.0000‬‬ ‫‪-2.0000‬‬

‫)(‪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‬‬

‫‪-0.00‬‬

‫‪>> format bank‬‬ ‫;]‪>> x0 = [2 2‬‬ ‫;)‪>> [a,fv] = fsolve(@fsl,x0‬‬ ‫‪a = 2.98‬‬ ‫‪0.55‬‬ ‫‪fv = -0.00‬‬

‫ﻧﻮﺷﺘﻦ ‪ fv‬ﺑﻪ ﻋﻨﻮان ﭘﺎراﻣﺘﺮ ﻣﺸﺎﺑﻪ ﻋﻤﻞ زﻳﺮ اﺳﺖ‪:‬‬ ‫‪-0.00‬‬

‫ﺣﻞ دﺳﺘﮕﺎه ﻣﻌﺎدﻻت ﺧﻄﻲ‬ ‫ﺑﻬﺘﺮ اﺳﺖ دﺳﺘﮕﺎه ﻣﻌﺎدﻻت ﺧﻄﻲ ﺑﺎ اﺳﺘﻔﺎده از ﺗﻘﺴﻴﻢ راﺳﺖ ﺑﻪ ﭼﭗ ﻣﺎﺗﺮﻳﺴﻲ ﺣﻞ ﺷﻮد‪.‬‬

‫ﻣﺜﺎل‪:‬‬ ‫دﺳﺘﮕﺎه ﻣﻌﺎدﻻت زﻳﺮ را در ﺑﺮﻧﺎﻣﻪ اﺻﻠﻲ ﻣﺘﻠﺐ ﺣﻞ ﻛﻨﻴﺪ‪.‬‬

‫‪108‬‬

‫)‪>> fsl(a‬‬ ‫‪ans = -0.00‬‬

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

‫‪x‬‬

‫‪+‬‬

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

‫│‪│X1‬‬

‫×‬

‫│‪│X1│ = │1‬‬ ‫│‪│1‬‬

‫│‪│X1‬‬

‫│ ‪1/3‬‬ ‫│ ‪1/5‬‬

‫‪1/2‬‬ ‫‪1/4‬‬

‫│ ‪1/4‬‬

‫‪1/3‬‬

‫‪│ 1‬‬ ‫‪│ 1/3‬‬ ‫‪│ 1/2‬‬

‫ﻛﻪ ﺑﻪ ﺻﻮرت ‪ 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‬‬

‫]‪0‬‬

‫‪-2*a‬‬

‫‪= 0‬‬ ‫‪y‬‬ ‫‪- a = 0‬‬ ‫ ‪x‬‬‫‪2‬‬ ‫; '‪>> q = 'x^2*y^2, x-y/2-a‬‬ ‫)‪>> [x,y] = solve(q‬‬ ‫]‪x = [ 0 0 a a‬‬ ‫‪y = [ -2*a‬‬

‫رد ﻣﻌﺎدﻻت ﺑﻪ ﺻﻮرت ﺳﻤﺒﻠﻴﻚ و ﻣﺤﺎﺳﺒﻪ ﻣﻘﺎدﻳﺮ ﻋﺪدي‬

‫]‪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‬‬

‫‪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‬‬ ‫ﺣﻞ ﻣﻌﺎدﻟﻪ دﻳﻔﺮاﻧﺴﻴﻞ درﺟﻪ ﻳﻚ ﻣﺮﺗﺒﻪ اولِ ‪= 1 + y 2‬‬ ‫‪dx‬‬

‫ﺑﺪون ﺷﺮط اوﻟﻴﻪ و ﺑﺎ ﺛﺎﺑﺖِ ‪C1‬‬ ‫)'‪>> 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‬‬ ‫‪dt‬‬ ‫)'‪>> x = dsolve('Dx)^2 + x^2 = 1','x(0) = 0‬‬ ‫])‪x = [-sin(t‬‬ ‫])‪[ sin(t‬‬

‫( ﺑﺎ ﺷﺮط اوﻟﻴﻪ ‪x(0) = 0‬‬

‫‪dy‬‬ ‫‪d2 y‬‬ ‫ﺑﺎ ﺷﺮاﺋﻂ اوﻟﻴﻪ ‪(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‬‬ ‫‪y(0) = 1,‬‬

‫‪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‬ارﺳﺎل ﺷﻮد‪ ،‬ﻛﺪﻫﺎي‬ ‫اﺳﻜﻲ ﻛﺎراﻛﺘﺮﻫﺎي آن ﭼﺎپ ﻣﻲﺷﻮد‪.‬‬

‫ﻣﺜﺎل ﻫﺎ‪:‬‬

‫;]‪66‬‬

‫رﺷﺘﻪ ‪× n‬‬

‫‪65‬‬

‫‪76‬‬

‫)'‪>> single('pi‬‬ ‫‪ans = 112‬‬ ‫‪105‬‬ ‫)'‪>> Mt = double('LAB‬‬ ‫‪Mt = 76‬‬ ‫‪65‬‬ ‫‪66‬‬ ‫‪>> Mt1 = [77‬‬ ‫‪65‬‬ ‫‪84‬‬ ‫)‪>> char(Mt1‬‬ ‫‪ans = MATLAB‬‬

‫‪m‬‬

‫ﺑﺮاي اﻳﺠﺎد ﻣﺎﺗﺮﻳﺲ رﺷﺘﻪاي از ﺗﺎﺑﻊ )(‪ 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‬‬

‫رﺷﺘﻪ ﺑﻪ ﺻﻮرت اﻋﺪاد )اﺳﻜﻲ(‬ ‫‪114‬‬

‫‪115‬‬

‫‪116‬‬

‫‪117‬‬

‫‪118‬‬

‫‪119‬‬

‫‪122‬‬

‫‪121‬‬

‫‪120‬‬

‫‪119‬‬

‫‪118‬‬

‫‪117‬‬

‫ﻣﺮﺗﺐ ﺳﺎزي رﺷﺘﻪ ﺑﺎ ﺗﺎﺑﻊ ﺣﺒﺎﺑﻲ و ﻣﻘﺎﻳﺴﻪ ﺑﺎ‬

‫'‪>> ss = 'z' : -1 : 'r‬‬ ‫‪ss = 122‬‬ ‫‪121‬‬ ‫‪120‬‬ ‫)‪>> stn = sort(ss‬‬ ‫‪stn = 114‬‬ ‫‪115‬‬ ‫‪116‬‬ ‫)‪>> 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‬‬

‫‪0‬‬

‫ﺟﻤﻊ ﻛﺮدن رﺷﺘﻪﻫﺎ ﺑﺎ دﺳﺘﻮر‬

‫‪1‬‬

‫‪1‬‬

‫‪1‬‬

‫‪0‬‬

‫‪0‬‬

‫‪0‬‬

‫;'‪= 'Arman‬‬ ‫;'‪= 'arman‬‬ ‫‪== s2‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪> s1‬‬ ‫‪1‬‬ ‫‪0‬‬

‫= ‪ans‬‬ ‫‪>> s1‬‬ ‫‪>> s2‬‬ ‫‪>> s1‬‬ ‫= ‪ans‬‬ ‫‪>> s2‬‬ ‫= ‪ans‬‬

‫)(‪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‬‬

‫‪ 4-12‬ﻗﺎﻟﺐﺑﻨﺪي رﺷﺘﻪ‬

‫‪String Formatting‬‬

‫ﺗﻌﻴﻴﻦ ﻓﺮﻣﺖ ﺑﺮاي ﻧﻤﺎﻳﺶ رﺷﺘﻪ ﺑﺎ‬

‫)(‪fprintf‬‬

‫ﺑﺎ اﺳﺘﻔﺎده از )(‪ fprintf‬ﻳﻚ رﺷﺘﻪ را ﻣﻲﺗﻮان ﺑﻪ اﻧﺤﺎء ﻣﺨﺘﻠﻒ ﻧﻤﺎﻳﺶ داد‪ .‬ﺑﺮاي ﻧﻤﺎﻳﺶ ﻛﺎراﻛﺘﺮﻫﺎﺋﻲ ﻧﻈﻴﺮ ﺗﻘﺴﻴﻢ‬ ‫ﻣﻌﻜﻮس \ ‪ ،‬و آﭘﻮﺳﺘﺮوف ' در ﺗﻌﺮﻳﻒ رﺷﺘﻪ دو ﺗﺎ از آن ﻫﺎ را ﻣﻲآورﻳﻢ‬

‫ﻣﺜﺎل‪:‬‬ ‫ﺟﻤﻠﻪ زﻳﺮ را ﺑﺎ )(‪ fprintf‬ﺗﻮﻟﻴﺪ ﻛﻨﻴﺪ‪.‬‬ ‫‪Mathworks'MATLAB‬‬ ‫‪a poweful language.‬‬ ‫?‪Is'nt it‬‬ ‫;'‪ss1 = 'Mathworks''MATLAB‬‬ ‫;'?‪tt1 = 'Is''nt it‬‬ ‫)‪fprintf('%20s \nis a poweful language.\t%s',ss1,tt1‬‬ ‫?‪Is'nt it‬‬

‫ﻧﮕﻪ داري رﺷﺘﻪ در ﻳﻚ ﻣﺘﻐﻴﺮ ﺑﺎ‬

‫‪is‬‬ ‫>>‬ ‫>>‬ ‫>>‬

‫‪Mathworks'MATLAB‬‬ ‫‪is a poweful language.‬‬

‫)(‪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‬اﺳﺘﻔﺎده ﻛﻨﻴﺪ‪.‬‬ ‫‪ -6‬آراﻳﻪ ﻣﺘﺸﻜﻞ از ﻛﺪﻫﺎي اﺳﻜﻲ ]‪97‬‬

‫‪98‬‬

‫‪99‬‬

‫‪ xn = [100‬را ﻣﺮﺗﺐ ﻛﺮده ﺑﻪ ﺻﻮرت‬

‫ﻛﺎراﻛﺘﺮي ﻧﻤﺎﻳﺶ دﻫﻴﺪ‪.‬‬

‫‪119‬‬

‫ﻓﺼﻞ ‪ 13‬ﺳﻴﮕﻨﺎل‪ ،‬ﺳﻴﺴﺘﻢ‪ ،‬ﻓﻴﻠﺘﺮ‬ ‫‪ 1-13‬ﺗﺒﺪﻳﻼت ﻓﻮرﻳﻪ‬ ‫ﺗﺒﺪﻳﻞ ﻓﻮرﻳﻪ ﮔﺴﺴﺘﻪ‬

‫)(‪fft‬‬

‫دﺳﺘﻮر )‪ Y = fft(y‬ﺗﺒﺪﻳﻞ ﻓﻮرﻳﻪ ﮔﺴﺴﺘﻪي ﺑﺮدار ‪ y‬را ﻛﻪ ‪ N‬ﻋﻨﺼﺮ دارد ﺑﻪ دﺳﺖ ﻣﻲدﻫﺪ‪ y .‬و ‪ Y‬ﻣﺘﺴﺎوياﻟﻌﻨﺼﺮ‬ ‫ﻫﺴﺘﻨﺪ‪ .‬در ﺗﺌﻮري ﻣﺨﺎﺑﺮات ‪ y‬و ‪ Y‬دو ﺑﺮدار ﻣﻜﻤﻞ در ﺣﻮزه زﻣﺎن و در ﺣﻮزه ﻓﺮﻛﺎﻧﺲ ﻧﺎم دارﻧﺪ‪ .‬ﻣﻌﻤﻮﻻٌ ﺑﺮاي آﻧﺎﻟﻴﺰ‬ ‫ﺳﻴﮕﻨﺎلﻫﺎي ﻣﺨﺎﺑﺮاﺗﻲ ﺑﻴﻦ ﻣﻴﺪان زﻣﺎن و ﻣﻴﺪان ﻓﺮﻛﺎﻧﺲ آﻣﺪ و رﻓﺖ ﻣﻲﻛﻨﻴﻢ‪.‬‬ ‫ﺑﺎﻳﺪ دﻗﺖ داﺷﺖ ﻛﻪ ﻫﺮ ﺳﻴﮕﻨﺎل در ‪ MATLAB‬ﺑﻪﺻﻮرت ﻳﻚ ﺑﺮدار ﺗﻌﺮﻳﻒ ﻣﻲﺷﻮد و ﻣﺠﻤﻮﻋﻪاي از ﻧﻘﺎط ﻣﺠﺰا ﻳﺎ ﻧﻤﻮﻧﻪ‪-‬‬ ‫ﺑﺮداري ﺷﺪه )‪ (sampled‬اﺳﺖ‪ .‬ﻓﺮض ﻛﻨﻴﺪ ﺳﻴﮕﻨﺎل ‪ y‬داراي ‪ N‬ﻋﻨﺼﺮ اﺳﺖ‪ ،‬ﻋﺒﺎرت )‪ ، Y = fft(y‬ﺑﺮدار ‪ Y‬را‬ ‫ﺑﻪ ﺻﻮرت زﻳﺮ اﻳﺠﺎد ﺧﻮاﻫﺪ ﻛﺮد‪:‬‬ ‫‪N‬‬

‫‪Σ‬‬

‫‪y(n)*exp(-j*2*pi*(k-1)*(n-1)/N), 1 <= k <= N.‬‬

‫= )‪Y(k‬‬

‫‪n=1‬‬

‫)‪ Y(k‬ﻋﻨﺼﺮ ‪k‬ام ﺑﺮدار ‪ Y‬اﺳﺖ‪ ،‬ﭼﻨﺎنﭼﻪ ذﻛﺮ ﺷﺪ ﺗﻌﺪاد ﻋﻨﺎﺻﺮ ‪ Y‬ﻧﻴﺰ ‪ N‬اﺳﺖ‪.‬‬ ‫ﭼﻮن )‪ Y(k‬ﻣﺨﺘﻠﻂ اﺳﺖ‪ ،‬ﺑﺎﻳﺪ ﻗﺪرﻣﻄﻠﻖ آنرا ﺑﺎ دﺳﺘﻮر)(‪ bar‬ﻳﺎ )(‪ stem‬ﻧﻤﺎﻳﺶ دﻫﻴﻢ‪.‬‬

‫ﺗﺒﺪﻳﻞ ﻓﻮرﻳﻪ ﮔﺴﺴﺘﻪ وارون‬

‫)‪ifft(t‬‬

‫اﻳﻦ ﺗﺎﺑﻊ ﺑﺮدار ‪ Y‬را ﺑﻪ ﻣﻴﺪان ﻣﻌﻜﻮس ﻣﻲﺑﺮد )در ﺳﻴﮕﻨﺎلﻫﺎي ﻣﺨﺎﺑﺮاﺗﻲ از ﻣﻴﺪان ﻓﺮﻛﺎﻧﺲ ﺑﻪ ﻣﻴﺪان زﻣﺎن ﻣﻲروﻳﻢ(‪.‬‬ ‫ﻋﺒﺎرت )‪ ، y = ifft(Y‬ﺑﺮدار ‪ y‬را ﺑﻪ ﺻﻮرت زﻳﺮ اﻳﺠﺎد ﺧﻮاﻫﺪ ﻛﺮد‪:‬‬ ‫‪N‬‬

‫‪Y(k)*exp( j*2*pi*(k-1)*(n-1)/N), 1 <= n <= N.‬‬

‫‪Σ‬‬

‫)‪y(n) = (1/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‬‬ ‫‪Transfer function:‬‬ ‫‪s‬‬ ‫‪-------------‬‬‫‪s^2 + 2 s + 10‬‬

‫اﺳﺘﺨﺮاج ﻛﻨﻴﺪ‪ .‬و ﺗﺎﺑﻊ ﺗﺒﺪﻳﻞ ﻣﺮﺑﻮﻃﻪ را ﺑﻪدﺳﺖ آورﻳﺪ‪.‬‬ ‫;]‪>> num = [1 0‬‬ ‫;]‪>> den = [1 2 10‬‬ ‫)‪>> h = tf(num, den‬‬

‫ﺗﺮﺳﻴﻢ )(‪ 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‬‬ ‫‪1/RC‬‬ ‫───────‬ ‫‪s + 1/RC‬‬

‫ﺷﻜﻞ ‪4-13‬‬

‫‪% intr.m‬‬ ‫;]‪num = [0 1]; den = [1 1‬‬ ‫)‪H = tf(num,den‬‬ ‫)‪subplot(2,2,1),bode(H‬‬ ‫)‪subplot(2,2,2),step(H‬‬ ‫)‪subplot(2,2,3),impulse(H‬‬ ‫)‪subplot(2,2,4),nyquist(H‬‬ ‫‪>> intr‬‬

‫‪122‬‬

‫ﻣﻨﺤﻨﻲ ﺷﺎرژ ﺧﺎزن ﻣﺘﻌﻠﻖ ﺑﻪ ﻣﺪار اﻧﺘﮕﺮاﺗﻮر و ﭘﺎﺋﻴﻦﮔﺬر اﺳﺖ‬

‫‪1‬‬ ‫‪----‬‬‫‪s + 1‬‬

‫‪Transfer function:‬‬

‫ﺷﻜﻞ ‪5-13‬‬

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

‫‪1/LC‬‬ ‫───────‬ ‫‪2‬‬ ‫‪s + 1/LC‬‬ ‫ﺷﻜﻞ ‪6-13‬‬

‫‪10H‬‬ ‫‪10µF‬‬

‫ﺷﻜﻞ ‪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‬‬

‫‪ 3-13‬ﻣﺪل زﻣﺎن ﮔﺴﺴﺘﻪ‬

‫‪Discrete-Time Models‬‬

‫ﻣﺪل زﻣﺎن ﮔﺴﺴﺘﻪ ﺑﺮاي آﻧﺎﻟﻴﺰ ﺳﻴﺴﺘﻢﻫﺎﺋﻲ ﻛﻪ ﺑﺎ ﺳﻴﮕﻨﺎلﻫﺎي ﮔﺴﺴﺘﻪ ﻳﺎ ﻧﻤﻮﻧﻪﺑﺮداﺷﺘﻪ)‪ (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‬ﻓﻴﻠﺘﺮﻫﺎ‬ ‫ﻓﻴﻠﺘﺮ ‪ Butterworth‬آﻧﺎﻟﻮگ و دﻳﺠﻴﺘﺎل‪ ،‬دﺳﺘﻮر‬

‫)(‪butter‬‬

‫دﺳﺘﻮر )'‪[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‬واﺳﻂ ﮔﺮاﻓﻴﻜﻲ ﻛﺎرﺑﺮ‬ ‫‪ 1-14‬واﺳﻂ ﮔﺮاﻓﻴﻜﻲ ﻛﺎرﺑﺮ‬

‫‪(GUI) graphical user interface‬‬

‫ﺑﺎ دﺳﺘﻮر ‪ 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‬‬

‫)ادﻳﺖ ﻧﺸﺪه(‬

‫ﺷﻴﺊ‬

‫)ادﻳﺖ ﺷﺪه(‬ ‫‪Runtime window‬‬

‫‪Time Date‬‬

‫‪figure1‬‬

‫دﻛﻤﻪ ﻣﺘﻦِ اﻳﺴﺘﺎ‬

‫‪Static text‬‬

‫‪Date‬‬

‫‪text1‬‬

‫دﻛﻤﻪ ﻓﺸﺎري‪1‬‬

‫‪Push Button1‬‬

‫‪pushbutton1 Time‬‬

‫دﻛﻤﻪ ﻓﺸﺎري‪2‬‬

‫‪Push Button2‬‬

‫‪pushbutton2 Refresh‬‬

‫ﭘﻨﺠﺮه اﺟﺮا‬

‫ﺗﻮاﺑﻊ ﻓﺮاﺧﻮان‬

‫‪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‬را ﺑﺎ ‪ 12‬ﻣﻜﺎن اﻳﺠﺎد و رﺷﺘﻪي ﺗﺎرﻳﺦ را در آن ﻣﻲﻧﻮﻳﺴﺪ ‪%‬‬

‫;)‪dt = sprintf('%12s',d‬‬

‫)‪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‬ﭘﻴﺶﻓﺮض(‬ ‫‪TwoA‬‬

‫‪figure1‬‬ ‫‪text1...text5‬‬

‫‪LE‬‬ ‫‪ 5 Static Text‬دﻛﻤﻪ ﻣﺘﻦ اﻳﺴﺘﺎ را ﻣﻄﺎﺑﻖ ﺷﻜﻞ ﻧﺎم ﮔﺬارﻳﺪ‬

‫‪100, 1000, 0:0.0001:0.03‬‬

‫‪edit1...edit3‬‬ ‫‪axes1,axes2‬‬ ‫‪pushbutton1‬‬

‫‪Edit‬‬ ‫‪Axes‬‬ ‫‪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 ‫ﺑﺮﭼﺴﺐ‬ tex1 edit1 pushbutton1 text2 text3 pushbutton2

(‫ )ادﻳﺖ ﺷﺪه‬String or Name ‫ﻋﻨﻮان‬

Enter the upper limit(5
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‬را ﺑﺎ اﺳﺘﻔﺎده از ﺑﺮﭼﺴﺐ ﮔﺬاري در ﺳﻠﻮل ﺑﻌﺪ از آﺧﺮﻳﻦ‬ ‫ﻣﻘﺪار ﻗﺮار ﻣﻲدﻫﻴﻢ‪.‬‬

‫ﺷﻜﻞ ‪5-15‬‬

‫ﺷﻜﻞ ‪4-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‬‬ ‫‪Max's‬‬

‫‪20‬‬

‫‪Min's‬‬

‫‪15‬‬ ‫‪10‬‬ ‫‪5‬‬

‫ﺷﻜﻞ ‪2-16‬‬

‫‪0‬‬ ‫‪Sun‬‬

‫‪Sat‬‬

‫‪Fri‬‬

‫‪Thu‬‬

‫‪Wed‬‬

‫‪Tue‬‬

‫‪Mon‬‬

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

‫و ﺑﺮاي ‪ ، Category (X) axis labels:‬ﺳﺘﻮن ‪ x‬را وارد ﻣﻲﻛﻨﻴﻢ‪.‬‬

‫‪142‬‬

‫‪20‬‬ ‫‪15‬‬ ‫‪10‬‬ ‫‪5‬‬ ‫‪0‬‬

‫‪Series1‬‬ ‫‪5‬‬

‫‪4‬‬

‫‪3‬‬

‫‪2‬‬

‫‪1‬‬

‫‪0‬‬

‫‪-5 -4 -3 -2 -1‬‬

‫‪-5‬‬ ‫‪-10‬‬ ‫‪-15‬‬

‫ﺷﻜﻞ ‪3-16‬‬

‫‪-20‬‬

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

‫ﻳﺎ ﺿﺮﻳﺐ ﺗﻌﻴ‪‬ﻦ ﻫﺮ ﻗﺪر ﺑﻪ ﻳﻚ ﻧﺰدﻳﻚﺗﺮ ﺑﺎﺷﺪ‪ ،‬ﺗﻘﺮﻳﺐ ﻣﻨﺤﻨﻲ ﺑﻬﺘﺮ اﺳﺖ‪.‬‬

‫ﺷﻜﻞ ‪4-16‬‬

‫‪20‬‬ ‫‪15‬‬ ‫‪10‬‬ ‫‪Series1‬‬ ‫)‪Linear (Series1‬‬

‫‪5‬‬ ‫‪0‬‬ ‫‪-5 -4 -3 -2 -1 0 1 2 3 4 5‬‬

‫‪-5‬‬ ‫‪-10‬‬

‫‪y = -2.9273x + 18.2‬‬ ‫‪2‬‬ ‫‪R = 0.9309‬‬

‫‪-15‬‬ ‫‪-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‬‬

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

‫‪VBA in Excel‬‬

‫ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ‬ ‫ﺑﺎ اﺳﺘﻔﺎده از ‪ 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‬‬

‫ﺷﻜﻞ ‪9-16‬‬

‫‪146‬‬

‫ﺷﻜﻞ ‪10-16‬‬

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

‫‪ B2‬در ﺳﻠﻮلﻫﺎي زﻳﺮﻳﻦ ﺑﻪ ﺗﻨﺎﺳﺐ ﺗﻐﻴﻴﺮ ﻣﻲﻛﻨﺪ‪.‬‬ ‫ﻣﻘﺪار ﺳﺮﻋﺖ از ردﻳﻒ ‪ 19‬ﺑﻪ ﺑﻌﺪ ﺗﻘﺮﻳﺒﺎٌ ﻳﻚﻧﻮاﺧﺖ ﺷﺪه‪ ،‬اﻳﻦ ﻣﻮﺿﻮع در ﻧﻤﻮدار رﺳﻢ ﺷﺪه ﺷﻜﻞ ‪ 11-16‬ﻫﻢ دﻳﺪه ﻣﻲ‪-‬‬ ‫ﺷﻮد‪.‬‬

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

‫‪Velocity‬‬

‫‪72‬‬

‫‪63‬‬

‫‪54‬‬

‫‪45‬‬

‫‪36‬‬

‫‪27‬‬

‫‪18‬‬

‫‪9‬‬

‫‪0‬‬

‫‪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‬‬ ‫‪ -6‬ﻣﻌﺎدﻟﻪ ‪+ e− x = 0‬‬ ‫‪5‬‬ ‫‪x‬‬

‫را ﺑﺎ ‪ Goal Seek‬ﺣﻞ ﻛﻨﻴﺪ‪.‬‬

‫‪ -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‬‬

Related Documents

Matlab
July 2020 24
Matlab
May 2020 31
Matlab
April 2020 36
Matlab
May 2020 39
Matlab
August 2019 56
Matlab
November 2019 32