[]



жүктеу 0,57 Mb.
Pdf просмотр
бет17/19
Дата26.05.2018
өлшемі0,57 Mb.
#17904
1   ...   11   12   13   14   15   16   17   18   19

ОӘК 

042-18-12.1.55/3-2013



 

№1 басылым 18.09.2013ж  



50 беттің 40-сі   

 

қарастырылған  оңды  бүтін  санды  факториалды  есептеу  мысалында  толыққанды 



кезінде қарастырамыз. Соңында рекурсивті анықтауға бірлікте аз мӛлшерде берілген 

санның  туындысы  факториал  санына  анықтау  болады.  М-функция  рекурсивті 

түрінде М-тілінде рекурентті түрде факториалды анықтаудың реализациясы:   

 

 

 

 

Function res=MyRecursFact(n) 

 

 

 

 

If n==1 

 

 

 

 

res=1; 

 

 

 

 

return 

 

 

 

 

else 

 

 

 

 

res=n* MyRecursFact(n-1); 

 

 

 

 

end 

Рекурсивті  шақырудың  тізбекті  аяқталу  кепілдігіне  шартты  оператор  болып 

табылады.  Бұнда  шақырылу  аргументтердің  аз  мәнімен  беріледі.  Олар  1  мәніне 

жетсе,  оң  санға  тізбекті  түрде  кӛбеюінде  мәнді  қайтарылымының  тізбектеп 

кӛбейтуімен  осы  функциялар  экземплярынан  керісінше  тізбектік  қайтарылымы 

басталады. Соңында, факториалды есептеуге әкеледі. Ӛңделген рекурсивті функция 

түрлі бүтін сандық факториалдарды жақсы есептейді: 

MyRecursFact(57) 

ans= 

4.0527e+076 

MyRecursFact(163) 

ans= 

2.0044e+291 

Ұсынылатын әдебиет: 

1.Статистический  анализ данных  в пакете  Mathcad  Радченко  Т.А.,  Дылевский  А.В, 

Воронеж, 2004 

2.Дьяконов В.П. Справочник по MathCAD PLUS 6.0 PRO. - М.: СК-Пресс, 1997.  

 

6-Лабораториялық сабағы.  



Тақырыбы: MatLab-тағы үшӛлшемді беттер, анимациялық графика 

М-функцияны  анықтауда  қарастырылған  кіру  параметрлері  және  шығу 

мәндерінің  соңғы  сандарын  әр  кезде  қатал  түрде  белгіленетін.  Алайда, 

жағдайлардың  болуында  бұлардың  айнымалы  санды  штатты  түрде  ӛңдеудегі  бір 

функцияны  иемдену  пайдалы.  Мысалы,  векторлар  санының  ұзындығының 

қосындысын  беретін  функцияны  иемденуге  жаман  болмайды.  Бұндай  функция  ӛзі 

шақырылғандар  бойынша  параметрлерді  нақты  санын  аңғара  алуы  керек.  Matlab 

жүйесінің М-тілінде ондай мүмкіндік ұяшықтардың массивіне пайдалануға жүреді. 

М-функцияны  анықтауда  параметрді  кіретін  аргументінде  белгісіз  саны  алдын  ала 

берілуде  varagin  кілтті  сӛзі  ретінде  белгілеу  керек.  Бұндай  кілт  сӛзін  белгілейтін 




ОӘК 

042-18-12.1.55/3-2013



 

№1 басылым 18.09.2013ж  



50 беттің 41-сі   

 

ұяшықтар массиві, яғни онда сол параметрлер жабдықталған. Varargin параметрінде 



жабдықталған  аргументтердің  нағыз  саны  функция  әр  кезде  біле  алады.  Ол  үшін 

length функциясы қолданылады.  

 

Тӛменде  функция  коды  таныстырылды.  Ол  ӛзінде  вектор-жол  кӛлденең 



санының ұзындығын квадраттар қосындысын есептейді:    

function SumLen=NumLenght(varargin) 

n=length(varargin0); SumLen=0; 

for k=1:n 

Sumlen=Sumlen+ varargin{k}(1)^2+ varargin{k}(2)^2; 

end 

 

Параметрлер  тізімінде  varargin  аргументі  жалғыз  болмаса,  онда  ол  соңында 

тұру керек. 

Қарастырлған  мысалда  фигуралық  жақша  кӛмегімен  бӛлек  ұяшықтағы 

қамтылуды  шығарамыз,  яғни  вектор,  ал  дӛңгелек  жақша  инденсациясының  келесі 

кӛмегімен вектордың бірінші және екінші координаттарын шығарамыз.  



NumLength    функциясын  шақыруда  ұяшықтар  массивінде  вектор-жолдар  кіретін 

санын  жабдықтамаса  да  болады.  Оны  Matlab  ӛзі  жасайды.  Оларды  ақиқатталған 

параметрлері ретінде үтір арқылы жеткілікті түрде санауға болады: 

Numlenth([1 2], [3 4]) 

ans= 

30 

NumLength функциясын басқа параметрлер санымен шақырайық:  

Numlenth([1 2], [3 4], [5 6]) 

ans= 

91 

Функция екі жағдайда да оңай ӛңделеді. М-функцияны анықтауда қайтарылымды 

мәндегі  айнымалы  сан  ұяшықтар  массивінде  жабдықталады.  Оның  қолданылатын 

сӛзі Varargout :  



Function varargout=MyFunc3(X) 

Мұнда  varargout  атымен  ұяшықтар  массивінде  шығарылатын  мәнді,  кӛлденең 

санды  функция  денесіне  жабдықтау.  Айталық,  MyFunc3  кіретін  функциясына 

кірудің  жалғыз  жол  түрлі  ӛлшемдегі  массив  және  ӛлшемдер  параметрін  береді. 

Оның ӛлшемінің біреуінен жағалай кіретін массив ӛлшемі болып табылатын әрбіреу 

бірнеше  скалярларды  қайтаруымыз  керек.  ӛлшеу  саны  алдын  ала  белгісіз  болады, 

онда динамикалық функция денесінде анықтауға болады және барлық скалярларды 

жалғыз varargout шығу айнымалысында жабдықтау. Бұның шешімі мынау: 



 Function varargout=MyFunc3(X) 

n=ndims(X); 


ОӘК 

042-18-12.1.55/3-2013



 

№1 басылым 18.09.2013ж  



50 беттің 42-сі   

 

for i=1:n 



varargout(i)={size(X,i)}; 

end 

Мұнда size(x,i) функциясы i-ші бағытта х массивінің ӛлшемін есептейді: 



A=[1 2 3; 4 5 6]; 

[m, n] =MyFunc3(a); 

Мұндағы  m  және  n  скалярлары  2  және  3  мәндеріне  сәйкес.  С  үш  ӛлшемді 

массивті құрайық және оған MyFunc3 функциясын шақырайық:  

B=[4 5 6; 9 8 7]; 

C(:, :, 1)=A; C(:, :, 2)=B; 

[m,n,k]=MyFunc3(C); 

 m, n және k  скалярлары сәйкесінше 2,3,2 мәндерді қабылдайды. Олардың ішіне 

С үш ӛлшемді массивтің барлық ӛлшемдерінде ӛлшем енгізіледі. Егер екі ӛлшемдегі 

массивтің  ӛлшемі  бізді  қызықтырса,  онда  MyFunc3  функцияны  келесі  форматта 

шақыруға болады:  



[m,n]=MyFunc3(C) 

М-тілдегі  синтаксистік  тұрғыда  корректілі  болып  келеді,  бірақ  үшінші 

шығарылатын MyFunc3 функциясымен шығарылатын мән жоғалады. 

 

М-функцияның кіру параметрі және шығу мәнін бақылау 

 

Түрлердің  сәйкес  келмеуі  және  нақты  сандар  жалған  параметрлері  М-



функцияның  дұрыс  жұмыс  істемеуіне  әкеледі.  Бірақ  пайдаланушы  оны  шақыру 

кезінде  қателесуі  мүмкін.  Жоғары  кӛрсетілген  MatrProg1  функция  мысалының 

мәселесін қарастырайық. Бұл функция бірдей ӛлшемді бірінші және екінші аргумент 

массивін пайдалануды жорамалдады. Егер пайдаланушы әр түрлі ӛлшемдегі массив 

түріндегі  нақты  параметрлерді  қателесіп  беретін  болса,  онда  функцияны  орындау 

кезінде қате болады. Осыны болдыртпау үшін MatrProg1 функция денесінде бірінші 

және екінші ӛлшемді параметрлерді тексеру керек: 

 

Function [A, B]= MatrProg1(X1, X2, x) 

 

N1=ndims(X1); n2=ndims(X2); 

 

%---parameters control-------------------- 

 

if n1~=n2 

 

error(‘Different dimensions’) 

 

else 

 

for i=1:n1 

 

   if size(X1, i) ~=size(X2, i) 

 

   error(‘Different sizes of lst and 2

nd

 parameters’) 

 

   end 



жүктеу 0,57 Mb.

Достарыңызбен бөлісу:
1   ...   11   12   13   14   15   16   17   18   19




©g.engime.org 2024
әкімшілігінің қараңыз

    Басты бет
рсетілетін қызмет
халықаралық қаржы
Астана халықаралық
қызмет регламенті
бекіту туралы
туралы ережені
орталығы туралы
субсидиялау мемлекеттік
кеңес туралы
ніндегі кеңес
орталығын басқару
қаржы орталығын
қаржы орталығы
құрамын бекіту
неркәсіптік кешен
міндетті құпия
болуына ерікті
тексерілу мемлекеттік
медициналық тексерілу
құпия медициналық
ерікті анонимді
Бастауыш тәлім
қатысуға жолдамалар
қызметшілері арасындағы
академиялық демалыс
алушыларға академиялық
білім алушыларға
ұйымдарында білім
туралы хабарландыру
конкурс туралы
мемлекеттік қызметшілері
мемлекеттік әкімшілік
органдардың мемлекеттік
мемлекеттік органдардың
барлық мемлекеттік
арналған барлық
орналасуға арналған
лауазымына орналасуға
әкімшілік лауазымына
инфекцияның болуына
жәрдемдесудің белсенді
шараларына қатысуға
саласындағы дайындаушы
ленген қосылған
шегінде бюджетке
салығы шегінде
есептелген қосылған
ұйымдарға есептелген
дайындаушы ұйымдарға
кешен саласындағы
сомасын субсидиялау