«компьютерлік модельдеу негіздері»


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



бет6/6
Дата25.04.2016
өлшемі408 Kb.
#88629
1   2   3   4   5   6

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



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

Тақырыбы: MatLab-та сызықты, сызықты емес теңдеулерді шешу, туындыны және интегралды есептеу

Функция шақырылған жалпы параметрлер санын тексеруге болады. Осы мақсат үшін Matlab жүйесінде nargin атымен айнымалы көрсетілген. Оның мәні болып аргумент мөлшері табылады. Онда параметр санына тексеру келесі түрде орындалады:

if nargin~=3

error (‘Bad numbr of parameters’)

end

Matlab жүйесінде nargout айнымалысы да қараытырылған. Мысалы,



[s1, s2, s3]=MatrProg1(X1, X2, x)

үш қайтару мәнін алады.



MatrProg1 функция шақыруын жүзеге асыру үшін және пайдаланушыға сандардың сәйкес келмеуін ескертіп функция денесінде nargout айнымалысын келесі түрде көрсетуге болады:

if nargout ~=2



error(‘Must be 2 return values’)

end

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

М-функцияны өңдеуде әр түрлі кіру аргументінің санында көп нұсқаулы жұмыс мүмкіндігі бар; оларды санын тексеру кезінде көрсету және жұмысты тоқтатудың орнына функцияға әр түрлі орындалуды жүзеге асыру керек.

М-функция мәтінінде бірінші және екінші максимальді санды пайдалану керек.



TestFunc2 функция

Function [res1, res2]=TestFunc2(var1, var2)



Switch nargin

Case 1

If nargout==1, res1=var1*2;

Elseif nargout==2, res1=var1*2; res2=var1+3;

Else error (‘Must be 1 or 2 return values’);

End

Case 2

If nargout==1, res1=var.*var2;

Elseif==1, res1=var1.*var2; res2=var1+3;

Else error (‘Must be 1 or 2 return values’);

End

Otherwise error (‘Must be 1 or 2 parameters’);

End

Алдын ала көрсетілген формат шақыруына рұқсат етеді. Қорыта келе дәрежені тексеру функциядан тұрады. Егер М-функция меншік қолдануда жазылса, онда тексеру қатты болуы мүмкін. Қате жағдайлар автоматты түрде осы жүйеде өңделеді және командалық терезеге сәйкес диагностикалық хабарлама береді.

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

type имя_функции

кейбір алгоритм функцияның деталін үйренумен қатар, кіру параметрін және шығу мәнін тексеру әдістерін үйренген жөн.

Команданы орындап және енгізіп repmat функциясын қарастырайық:

type repmat

нәтижесінде оның толық мәтінін аламыз:

function B=repmat(A, M, N)



%REPMAT Replicate and tile an array.

% B= REPMAT(A, M, N) replicates and tiles the matrix a

% to produce the M-by-N block matrix B.

%

% B= REPMAT(A, [M N]) produces the same thing.

%

% B= REPMAT(A, [M N P…]) tiles the array a to

% produce a M-by-N-by-P-by-… block array. a can be N-D.

%

% REPMAT(A, M, N), when a is a scalar, is commonly used to

% produce an M-by-N matrix filled with A’s value.

% This can be much faster than A*ONES(M, N)

% when M and/or N are large.

%

% Example:

% repmat(magic (2), 2, 3)

% repmat(NaN, 2, 3)

%

% See also MESHGRID.

%

% Copyright (c) 1984-98 by The MathWorks, Inc.

% $Revision: 1.11 $ $Date: 1997/11/21 23:30:13 $



if nargin<2

error (‘Reguires at least 2 inputs.’)

elseif nargin= =2

if prod(size(M))= =1

siz=[M M];

else

siz=M;

end

else

siz=[M N];

end
if length(A)= =1

% This produces the same answer as B=A(ones(siz));

% but uses less memory.

B=…

Reshape (A(ones(1, siz(1)), ones(1, prod(siz(2:end)))), siz);

Elseif ndims(A)= =2 & length(siz)= =2

[m, n]=size(A);

mind=(1:m)’;

nind=(1:n)’;

mind=mind(:, ones(1, siz(1)));

nind=nind(:, ones(1, siz(2)));

B=A(mind, nind);

Else

Asiz=size(A);

Asiz=[Asiz ones (1, length(siz)-length(Asiz))];

siz= [siz ones (1, length(Asiz)-length(siz))];

for i=length(Asiz):-1:1

ind=(1:Asiz(i))’;

subs{i}=ind(:, ones(1, siz(i)));

end

B=A(subs{:});

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

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


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



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

Тақырыбы: MatLab-та жаңа функциялар құру, дифференциалдық теңдеулерді шешу

Repmat функциясының мәтіні үйренуге пайдалы. Себебі мұнда эффективті алгоритм шешімі М рет вертикаль бойынша және N рет горизанталь бойынша берілген А матрицасы көрсетілген.

Мысалы, міне repmat функциясының жұмыс істелінуі

4
-сурет

Функцияның жұмыс жасау облысы.

Әрбір М-функциядан Matlab жүйесінің жұмыс істеу облысымен қиылыспайтын жадының қосымша облысы болады. Matlab жүйесімен жұмыс атқарғанда жүйенің жұмыс істеу облысында немесе функцияның жұмыс жасау облысында орналасқан тек айнымалыға ғана жол алуға болады. Егер айнымалы глобальді деп хабарланса, онда оны бірнеше жұмыс жасау облысына тәуелді деп қарастыруға болады. Функцияның шақыруымен nargin және nargout функциялары аргументтерінің кіретін және шығатын сандарын анықтауға мүмкіндік береді. Бұл ақпаратты кейін есептеу жүрісін өзгерту шартты операторында пайдалануға болады.



Мысал:









Кіретін аргументін берген кезде функция кіретін айнымалының квадратын есептейді, екі аргуметті бергенде қосу операциялары орындалады. Күрделі мысалды қарастырайық. Символдық жолдың жартысын бөлгенге дейін белгілеу. Оның пайдалануына пробел немесе басқа символдар жатады. Функцияның бір кіретін аргументін бергенде жарты бөлігін бөлгенге дейін белгілейік, ол пробел, сол уақытта бастапқы жолдардағы барлық пробелдар тазартылады. Екі аргументті бергенде екінші аргуметте бөлінуі және көрсетілуі керек.

Бұл функция strtok М-функциясы түрінде, strfun каталогына көшіріледі.

function [token, remainder]=strtok(string, delimiters)

if nargin<1,

error(‘Недостаточно входных аргументов.’);

end

token=[];

remainder=[];

len=length(string);

if len= =0

return

end

if(nargin= =1)

delimiters=[9:13 32]; % Символы пробелов

end

i=1;



while (any(string(i)= =delimiters))

i=i+1;

if (i>len),

return

end

end

start=i

while (~any(string(i)= =delimiters))

i=i+1;

if (i>len),

break

end

end0

finish=i-1;

token=string(start:finish);

if (nargout = =2)

remainder= string(finish+1:end);

end

Осында көргеніміздей шығатын тізімдегі аргументтер қатарлы реті керекті мәнге ие болады. Егер М-функциясына назар аударғанда шығатын аргумент көрсетілмесе, онда бірінші аргумент мейлінше шығады. Қалыптастыруға және келесі аргументтер шешіміне М-функцияға соған қатысты ұйымдасқан түрде келуге болады.



Аргументтер тізімі.

Varargin және varargout функциялары кез келген кіретін және шығатын аргументтер санын береді. Matlab жүйесі кіретін және шығатын аргументтердің берілгендерін массив ұяшықтарына жабдықтайды. Әрбір ұяшық өзінде кез келген типті және мәліметтер санын қамтиды.

Мысал: Testvar функциясы екі элементтерден кіретін аргументтер ретінде кез келген векторлардың санын береді.

Сонымен, testvar функциясы түрлі ұзындықтардың кіретін тізімдерімен жұмыс жасай алады.


Мысал:


Varargin кіретін массивтің қалыптасуы.

Varargin тізімі ұяшықтардың массивіне кіретін агументтері сақтаса, онда берілгендерді шығаруға ұяшықтардың индекстерін пайдалануға қажетті. Ұяшықтардың индексі екі компоненттерден тұрады:

  • фигуралы жақшадағы индекстер;

  • дөңгелек жақшадағы индекстер;

Мысал: ;

Мұндағы, {i} фигуралы жақшадағы индекс varargin массивтің і-ші ұяшықты адресті көрсетеді, ал (2) дөңгелек жақшадағы индекс ұяшықтың екінші элементін көрсетеді.



Varargout шығатын массивтің қалыптасуы. Көптеген шығатын аргументтерді varargout массив ұяшығына қажетті түрде жабдықтау керек. Функцияның шығатын аргументтерінің санын анықтау үшін nargout функциясын пайдалану керек.

Мысал: келесі функция екі бағаннан кіретін массивтерді пайдаланады, мұндағы бірінші баған-х координатының мәндер жиыны, ал екіншісі-у координатының мәндер жиыны. Функция массивтерді жеке векторларға бөледі. Олар кіретіндер ретінде testvar функциясына берілуі мүмкін.



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

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

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



4.студенттің өздік жұмысы

4.1.Өздік жұмысты ұйымдастыру бойынша әдістемелік нұсқаулар: студенттің өздік жұмысы (СӨЖ) реферат түрінде орындалады және студенттердің өздік жұмысын қойлатын талаптарға сәйкес тапсырылады.

Өздік жұмысты бақылау келесі формада өтуі мүмкін:

– жасалған жұмысты көрсету;

– өздік меңгерген тақырып бойынша баяндама;

– аудиториялық сабақтарды немесе ОБСӨЖ-де ауызша сұрау;

– жазбаша орындалған тапсырмаларды қорғау.

Өздік жұмысының нәтижелерін тапсырмаған студент қорытынды аттестацияға жіберілмейді.

Өз бетімен меңгерген материал оқытушумен бірге меңгерілген материалмен қоса қорытынды бақылауға шығарылады.
4.2.Өздік жұмыс тақырыптары:

1. Модельдер классификациясы

2.Компьютерлік модельдеудің негізгі принциптері

3.Модельдер құру технологиясы

4.Кездейсоқ заңдылықтарды имитациялау әдістері

5.Мәліметтерді интерпретациялау

6.Модельдеу нәтижелерін талдау және өндеу

7.Массалық қызмет көрсету жүйелерін модельдеу

8.Петри желілерін модельдеу

9.Үздіксіз жүйелерді модельдеу әдістері

10.Әлеуметті-экономикалық жүйелерді модельдеу

11.Өндірістік процестерді модельдеу





Достарыңызбен бөлісу:
1   2   3   4   5   6




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

    Басты бет