logo

М- файл функцияларини тузилиши ва хоссалари. Локал ва глобал ўзгарувчилар. Ўзгарувчи сондаги аргументли функциялар.

Yuklangan vaqt:

08.08.2023

Ko'chirishlar soni:

0

Hajmi:

66.1767578125 KB
М- файл функ ц ияларини тузилиши   ва хоссалари. Локал ва глобал
ў згарувчилар.  Ў згарувчи   сондаги аргументли функ ц иялар.
Режа:
1. М- файл функцияларини тузилиши   ва хоссалари;
2. Локал ва глобал  ў згарувчилар;
3. Ў згарувчи   сондаги аргументли функ ц иялар. 1.М-   файл   функ ц ияларини   тузилиши   ва   хоссалари.   Матлаб
тизимида   фойдаланувчи   учун   аниқ   бир   мақсадли   ҳисоблашларни
бажарувчи   ва   Матлаб   каталогида   йў қ   б ў лган   функ ц ия   зарур   б ў либ
қолади.   Бунда   фойдаланувчи   янги   функ ц ияни   ҳ осил   қилиб   Матлаб
каталогига   қ ў шиб   қ ў йиш   имкониятига   эга.   Янги   функ ц ияни   ташкил
қилувчи   команда   ва   функ ц иялар   ҳар   доим   матнли   м-файлларда
жойлашган б ў лади.
Янги   яратилган,   бир   нечта   командалар   кетма-кетлигидан   иборат
функциялар   ўзининг   номига,     локал   характердаги   ўзгарувчиларга   эга
бўлиб, унга параметрлар орқали мурожат қилиш мумкин бўлади.
Функсция   яратиб,   сақланаётган   м-файлнинг   номи   алифбо
белгилардан бошланиб *. m кенгайтмасига эга бўлади. Кенгайтмасиз м-
файлнинг   номи   бу   Матлабда   мурожат   қилиш   мумкин   бўлган   файл
функция ёки ишчи файлнинг номидир.
Функция   яратилаётган   м-файлнинг   бошланғич   қаторлари   матнли
шарҳлардан   иборат   бўлиб,   м-файлда   яратилаётган   функцияни
моҳиятини   очиб   берувчи   бўлади.   Ундан   кейинги   биринчи   қаторда
аниқланган   функция   номи   м-файлнинг   кенгайтмасиз   номи   билан   бир
хил бўлиши керак. Умумий кўринишида м-файлдаги функция ҳар доим
function сўзидан бошланиб, қуйидагича бўлади:
Function y=<функция номи>.
Функция     номидан   кейин   оддий   қавс   ичига   аргументлар
(параметрлар) вергул(,) билан ажратиб ёзилади.
Масалан, дискдаги sred.m номли файлдаги қуйидаги код:
function [y, sr, sd]=sred(x)
n=length(x);
sr=sum(x)/n;
sd=sqrt(sum(x-sr).^2/n); y=(sr+sd)/2;
sred   номи   билан   аниқланган   ва   х   вектор   координаталари   ўрта
арифметигини ( sr ), стандарт четланишини ( sd ) ҳамда уларнинг ўртасини
( y )   ҳисобловчи   янги   функцияни   аниқлайди.   Функция   ичидаги   барча
ўзгарувчилар   локал   характерга   эгадир,   sum(x)-эса   вектор
координаталари йиғиндисини ҳисобловчи Матлаб функциясидир.
М-файл функция ичидагина кўринадиган функция ости функцияси
ҳам   бўлиши   мумкин.   Бу   функция   ости   функцияси   ҳам   асосий   файл
функция   командалардан   кейин   ёзилиб,   у   ҳам   худди   асосий   файл
функция каби аниқланади. Масалан, srg функция sred файлдаги функция
ости бўлса, код 
function [y, sr, sd]=sred(x)
n =length(x);
sr=srg(x,n);
sd=sqrt(sum((x-srg(x,n)).^2)/n);
function sr=srg(x,n)
sr=sum(x)/n;
Агар     Матлаб   функсияни   номи   б ў йича   топа   олмаса ,   у   ҳолда   шу
номдаги   файлни   қидиради .   Функ ц ия   топилгандан   кейин ,   уни
кейинчалик   ишлатиш   учун   Матлаб   тизими   функ ц ияни   хотирага
компеля ц ия   қилади .
Функ ц ионал   м-файлдан   чақирилса,   Матлаб   функ ц ияни   анализ
қилади   ва   хотирада   сақлаб   қ ў яди.   Бу   функ ц ия,   хотира   clear   буйру ғ и
билан тозаланмагунча хотирада сақланиб туради.
Матлаб   каталогидаги   барча   тригонометрик   функ ц иялар   радиан
аргументларда   ҳисоблашни   бажаради.   Энди   биз   градусларда   берилган
ихтиёрий  бурчакнинг синусини  ҳисоблаб  берувчи файл функ ц ия ҳосил қилиш   мисолини   к ў рамиз.   Бунда,   шунга   э ъ тибор   бериш   керакки,
функ ц ия   номи   файл   номи   билан   бир   хил   б ў лиши   керак.   Бу   функ ц ия
учун   sing ( x )   функ ц ия   номи   қилиб   оламиз.   Масалани   ҳал   қилувчи   код
қуйидагича б ў лади:
Function   y = sing ( x )
%Бу функ ц ия градусларда берилган
%аргументнинг   синусини ҳисоблаб беради
y = sin ( x .* pi ./180)
Энди тизим ичида х нинг аниқ градус қийматлари билан  sing ( x )  га
мурожат   қилсак,   унга   қиймат   чиқариб   берилади.   Юқоридаги   ўхшаш
мисоллардан бир нечтасини мустақил бажаринг.
м-файл функция қуйидаги хоссаларга эга бўлади:
 y   function   эълон   билан   бошланади,   ундан   кейин   ўзгарувчининг
номи ва чиқиш параметрларнинг рўйҳати кўрсатилади;
 Функция   ўз   қийматини   қайтаради   ва   уни   математик   ифодаларда
номи(параметрлар рўйҳати) кўринишида ишлатиш мумкин;
 Файл-функциянинг   қобиғидаги   ҳамма   ўзгарувчилар   локал
ўзгарувчилардир, яъни фақат функциянинг ичида ўринли;
 Файл-функция   мустақил   дастурий   модул   бўлиб,   бошқа   модуллар
билан   ўзининг   кириш   ва   чиқиш   параметрлари   орқали   алоқада
бўлади;
 Файл-функ ц ия Матлаб тизимини кенгайтириш воситасидир;
 Файл-функ ц ия   компеля ц ия   қилинади   ва   бажарилади,   ҳосил
қилинган   машина   кодлари   Матлаб   тизимининг   ишчи   соҳасида
сақланади.
2.   Локал   ва   глобал   ў згарувчилар.   Функ ц ия   параметрларининг
р ў йҳатида к ў рсатилган параметрлар локал  ў згарувчилар б ў либ функ ц ия чақирилганда   уларнинг   ў рнига   қ ў йиладиган   қийматларни   олиб   ў тиш
учун хизмат қилади.
Агар функциядаги ўзгарувчилар глобал бўлиши зарур бўлса, улар
глобал  var 1,  var 2, … командаси ёрдамида эълон қилинади.
Қуйидаги   мисолни   кўрайлик.   Таҳрирлагич   ойнасида     Z=x2 +	y2
ифодани   ҳисобловчи   икки   ўзгарувчили   (x   вa   y)   fun   функцияси   ҳосил
қилинган.
Дастурда х ва y ўзгарувчилар fun(x,y) функциянинг параметрлари
бўлганликлари   сабабли,   улар   локал   ўзгарувчилардир.   Функция
қобиғидан   ташқарида   уларга   нол   қийматлар   берилган.   Агар   функция
қобиғида fun(2,3)нинг қиймати ҳисобланадиган бўлса уларга x=2 вa y=3
қийматлар берилади.
2.   Lokal   va   global   o'zgaruvchilar.   Funksiya   parametrlarining   
ro'yxatida   ko'rsatilgan   parametrlar   lokal   o'zgaruvchilar   bo'lib   
funksiya   chaqilirganda   ularning   o'rniga   qo'yiladigan   qiymatlarni   
olib   o'tish   uchun   xizmat   qiladi.
Agar   funksiyadagi   o'zgaruvchilar   global   bo'lishi   zarur   bo'lsa,   ular
global   var1,   var2,…   komandasi   yordamida   e'lon   qilinadi.
quyidagi   misolni   ko'raylik.   Taxrirlagich   oynasida   Z=+   ifodani   
hisoblovchi   ikki   o'zgaruvchili   (x   va   y)   fun   funksiyasi   hosil   
qilingan.
Dasturda       h       va       y       o'zgaruvchilar       fun(x,y)       funksiyaning
parametrlari       bo'lganliklari       sababli,       ular       lokal       o'zgaruvchilardir.
Funksiya       qobig`idan       tashqarida       ularga       nol       qiymatlar       berilgan.
Agar       funksiya       qobig`ida       fun(2,3)ning       qiymati       hisoblanadigan
bo'lsa   ularga   x=2   va   y=3   qiymatlar   beriladi.       Шунинг   учун   натижа   z=13     бўлади.   Лекин   функциянинг
қобиғидан   чиққандан   кейин   х   ва   y   ўзгарувчилар   ўзларининг   дастлабки
нолга   тенг   бўлган   қийматларини   олади.   Шундай   қилиб,   ушбу
ўзгарувчилар   ўз   қийматларини   функция   параметрларининг
қийматларига   фақат   локал   тарзда-   функция   қобиғининг   ичидагина
ўзгартиради.
Ҳар қандай
функция қобиғида аниқланган ўзгарувчи сингари z ўзгарувчи ҳам локал
ўзгарувчидир.   Дастлаб   унинг   қиймати   аниқланмаган   бўлади.
Функциянинг   ичида     у   z=13     қийматни   қабул   қилади.   Функциядан
қайтгандан   кейин   функцияда   қўлланилганлигига   қарамасдан,   у   ноаниқ
бўлиб   қолади.   Агар   z   ни   чиқаришга   ҳаракат   қилинса   командалар
ойнасида хатолик т ўғ рисида ахборот ҳосил б ў лади. Бунга ишонч ҳосил
қилиш учун қуйидаги мисолни к ў райлик:
Таҳрирлаш ойнасида функ ц ия киритамиз :    
>> fun(2,3)
z =    13
ans =    13
>> z ??? Undefined function or variable 'z'.
>>
Функ ц иядаги   ҳамма   амаллар   бажарилгандан   кейин ,   я ъ ни   функ ц ия
файлнинг   охирига   етилгандан   кейин   функ ц иядан   қайтилади .   Функ ц ия
шартли   операторлар ,   сикллар   ёки   танлаш   оператори   ишлатилганда
функ ц иянинг   ма ъ лум   жойидан   қайтиш   зарурияти   ҳосил   б ў лиши
мумкин .  Бунинг   учун  return  командаси   хизмат   қилади .  Ҳар   қандай   ҳолда
ҳам   функ ц ия   чиқиш   параметрининг   қийматини   қайтаради .   Юқоридаги
мисолда  z  ў згарувчиси   чиқиш   параметрик   б ў либ   ҳисобланади .
  3.Ўзгарувчи   сондаги   аргументли   функциялар.   Махсус
хусусиятларга   эга   бўлган   функцияларни   яратишда   қуйидаги   икки
функция фойдали бўлиши мумкин:
 Nargin   -берилган   функсиядаги   кириш   параметрларининг   сонини
қайтаради;
 Nargout   -берилган   функсиядаги   чиқиш   параметрларининг   сонини
қайтаради.
Айтайлик, бешта х1, х2, х3, х4 ва х5 аргументлар квадратларининг
йи ғ индисини ҳисоблайдиган функ ц ия яратиш зарур б ў лсин.
Одатдаги   йў л   билан   sum 2_5   номли   функ ц ияни   яратиш   зарур
б ў лсин.
Function f=sum2_5(x1,x2,x3,x4,x5);
Z = x 1^2+ x 2^2+ x 3^2+ x 4^2+ x 5^2;
Унинг ишлашини текшириб к ў рамиз:
>>  sum 2_5(1,2,3,4,5)
ans =    55
>> sum2_5(1,2)
??? Input argument "x3" is undefined.
Error in ==> sum2_5 at 2 f=x1^2+x2^2+x3^2+x4^2+x5^2;
Ш ундай   қилиб ,  бешта   аргумент   б ў лганда   функ ц ия   т ўғ ри   ишлайди .
Лекин   аргументлар   сони   бештадан   кам   б ў лса   хатолик   т ўғ рисида
ахборот   беради.   Ҳар   қандай   сондаги   кириш   аргументлари   б ў лганда
(юқоридаги   мисол   учун   бештагача)   т ўғ ри   ишлайдиган   функ ц ияни
яратиш учун  nargin  функ ц иясидан фойдаланамиз:
  
Функ ц ия
ни ишлашини текшириб к ў рамиз:
>>  sum 2_5(1)
ans =     1
>> sum2_5(1,2)
ans =     5
>> sum2_5(1,2,3)
ans =    14
>> sum2_5(1,2,3,4)
ans =    30
>>
>> sum2_5(1,2,3,4,5)
ans =    55 >> sum2_5(1,2,3,4,5,6)
??? Error using ==> sum2_5
Too many input arguments.
Шундай   қилиб,   кириш   параметрларининг   сони   1   дан   5   тагача
бўлганда   ҳисоблашлар   тшғрисида   ахборот   чиқади.   Бу   ахборотни
интерпретаторга   бириктирилган   хатоликларни   диагно ст ика   қилиш
тизими беради.

М- файл функ ц ияларини тузилиши ва хоссалари. Локал ва глобал ў згарувчилар. Ў згарувчи сондаги аргументли функ ц иялар. Режа: 1. М- файл функцияларини тузилиши ва хоссалари; 2. Локал ва глобал ў згарувчилар; 3. Ў згарувчи сондаги аргументли функ ц иялар.

1.М- файл функ ц ияларини тузилиши ва хоссалари. Матлаб тизимида фойдаланувчи учун аниқ бир мақсадли ҳисоблашларни бажарувчи ва Матлаб каталогида йў қ б ў лган функ ц ия зарур б ў либ қолади. Бунда фойдаланувчи янги функ ц ияни ҳ осил қилиб Матлаб каталогига қ ў шиб қ ў йиш имкониятига эга. Янги функ ц ияни ташкил қилувчи команда ва функ ц иялар ҳар доим матнли м-файлларда жойлашган б ў лади. Янги яратилган, бир нечта командалар кетма-кетлигидан иборат функциялар ўзининг номига, локал характердаги ўзгарувчиларга эга бўлиб, унга параметрлар орқали мурожат қилиш мумкин бўлади. Функсция яратиб, сақланаётган м-файлнинг номи алифбо белгилардан бошланиб *. m кенгайтмасига эга бўлади. Кенгайтмасиз м- файлнинг номи бу Матлабда мурожат қилиш мумкин бўлган файл функция ёки ишчи файлнинг номидир. Функция яратилаётган м-файлнинг бошланғич қаторлари матнли шарҳлардан иборат бўлиб, м-файлда яратилаётган функцияни моҳиятини очиб берувчи бўлади. Ундан кейинги биринчи қаторда аниқланган функция номи м-файлнинг кенгайтмасиз номи билан бир хил бўлиши керак. Умумий кўринишида м-файлдаги функция ҳар доим function сўзидан бошланиб, қуйидагича бўлади: Function y=<функция номи>. Функция номидан кейин оддий қавс ичига аргументлар (параметрлар) вергул(,) билан ажратиб ёзилади. Масалан, дискдаги sred.m номли файлдаги қуйидаги код: function [y, sr, sd]=sred(x) n=length(x); sr=sum(x)/n; sd=sqrt(sum(x-sr).^2/n);

y=(sr+sd)/2; sred номи билан аниқланган ва х вектор координаталари ўрта арифметигини ( sr ), стандарт четланишини ( sd ) ҳамда уларнинг ўртасини ( y ) ҳисобловчи янги функцияни аниқлайди. Функция ичидаги барча ўзгарувчилар локал характерга эгадир, sum(x)-эса вектор координаталари йиғиндисини ҳисобловчи Матлаб функциясидир. М-файл функция ичидагина кўринадиган функция ости функцияси ҳам бўлиши мумкин. Бу функция ости функцияси ҳам асосий файл функция командалардан кейин ёзилиб, у ҳам худди асосий файл функция каби аниқланади. Масалан, srg функция sred файлдаги функция ости бўлса, код function [y, sr, sd]=sred(x) n =length(x); sr=srg(x,n); sd=sqrt(sum((x-srg(x,n)).^2)/n); function sr=srg(x,n) sr=sum(x)/n; Агар Матлаб функсияни номи б ў йича топа олмаса , у ҳолда шу номдаги файлни қидиради . Функ ц ия топилгандан кейин , уни кейинчалик ишлатиш учун Матлаб тизими функ ц ияни хотирага компеля ц ия қилади . Функ ц ионал м-файлдан чақирилса, Матлаб функ ц ияни анализ қилади ва хотирада сақлаб қ ў яди. Бу функ ц ия, хотира clear буйру ғ и билан тозаланмагунча хотирада сақланиб туради. Матлаб каталогидаги барча тригонометрик функ ц иялар радиан аргументларда ҳисоблашни бажаради. Энди биз градусларда берилган ихтиёрий бурчакнинг синусини ҳисоблаб берувчи файл функ ц ия ҳосил

қилиш мисолини к ў рамиз. Бунда, шунга э ъ тибор бериш керакки, функ ц ия номи файл номи билан бир хил б ў лиши керак. Бу функ ц ия учун sing ( x ) функ ц ия номи қилиб оламиз. Масалани ҳал қилувчи код қуйидагича б ў лади: Function y = sing ( x ) %Бу функ ц ия градусларда берилган %аргументнинг синусини ҳисоблаб беради y = sin ( x .* pi ./180) Энди тизим ичида х нинг аниқ градус қийматлари билан sing ( x ) га мурожат қилсак, унга қиймат чиқариб берилади. Юқоридаги ўхшаш мисоллардан бир нечтасини мустақил бажаринг. м-файл функция қуйидаги хоссаларга эга бўлади:  y function эълон билан бошланади, ундан кейин ўзгарувчининг номи ва чиқиш параметрларнинг рўйҳати кўрсатилади;  Функция ўз қийматини қайтаради ва уни математик ифодаларда номи(параметрлар рўйҳати) кўринишида ишлатиш мумкин;  Файл-функциянинг қобиғидаги ҳамма ўзгарувчилар локал ўзгарувчилардир, яъни фақат функциянинг ичида ўринли;  Файл-функция мустақил дастурий модул бўлиб, бошқа модуллар билан ўзининг кириш ва чиқиш параметрлари орқали алоқада бўлади;  Файл-функ ц ия Матлаб тизимини кенгайтириш воситасидир;  Файл-функ ц ия компеля ц ия қилинади ва бажарилади, ҳосил қилинган машина кодлари Матлаб тизимининг ишчи соҳасида сақланади. 2. Локал ва глобал ў згарувчилар. Функ ц ия параметрларининг р ў йҳатида к ў рсатилган параметрлар локал ў згарувчилар б ў либ функ ц ия

чақирилганда уларнинг ў рнига қ ў йиладиган қийматларни олиб ў тиш учун хизмат қилади. Агар функциядаги ўзгарувчилар глобал бўлиши зарур бўлса, улар глобал var 1, var 2, … командаси ёрдамида эълон қилинади. Қуйидаги мисолни кўрайлик. Таҳрирлагич ойнасида Z=x2 + y2 ифодани ҳисобловчи икки ўзгарувчили (x вa y) fun функцияси ҳосил қилинган. Дастурда х ва y ўзгарувчилар fun(x,y) функциянинг параметрлари бўлганликлари сабабли, улар локал ўзгарувчилардир. Функция қобиғидан ташқарида уларга нол қийматлар берилган. Агар функция қобиғида fun(2,3)нинг қиймати ҳисобланадиган бўлса уларга x=2 вa y=3 қийматлар берилади. 2. Lokal va global o'zgaruvchilar. Funksiya parametrlarining ro'yxatida ko'rsatilgan parametrlar lokal o'zgaruvchilar bo'lib funksiya chaqilirganda ularning o'rniga qo'yiladigan qiymatlarni olib o'tish uchun xizmat qiladi. Agar funksiyadagi o'zgaruvchilar global bo'lishi zarur bo'lsa, ular global var1, var2,… komandasi yordamida e'lon qilinadi. quyidagi misolni ko'raylik. Taxrirlagich oynasida Z=+ ifodani hisoblovchi ikki o'zgaruvchili (x va y) fun funksiyasi hosil qilingan. Dasturda h va y o'zgaruvchilar fun(x,y) funksiyaning parametrlari bo'lganliklari sababli, ular lokal o'zgaruvchilardir. Funksiya qobig`idan tashqarida ularga nol qiymatlar berilgan. Agar funksiya qobig`ida fun(2,3)ning qiymati hisoblanadigan bo'lsa ularga x=2 va y=3 qiymatlar beriladi.