Анализ возможностей использования матричных макроопераций системы MatLab при решении прикладных задач

На примерах решения практических задач программирования проанализированы возможности использования векторных и матричных макроопераций для реализации классических и оригинальных алгоритмов. Для объяснения основных особенностей этих операций введены новые понятия арифметико-логического выражения, рек...

Full description

Saved in:
Bibliographic Details
Published in:Электронное моделирование
Date:2009
Main Author: Мельник, И.В.
Format: Article
Language:Russian
Published: Інститут проблем моделювання в енергетиці ім. Г.Є. Пухова НАН України 2009
Subjects:
Online Access:https://nasplib.isofts.kiev.ua/handle/123456789/101492
Tags: Add Tag
No Tags, Be the first to tag this record!
Journal Title:Digital Library of Periodicals of National Academy of Sciences of Ukraine
Cite this:Анализ возможностей использования матричных макроопераций системы MatLab при решении прикладных задач / И.В. Мельник // Электронное моделирование. — 2009. — Т. 31, № 3. — С. 37-51. — Бібліогр.: 10 назв. — рос.

Institution

Digital Library of Periodicals of National Academy of Sciences of Ukraine
_version_ 1859705246655184896
author Мельник, И.В.
author_facet Мельник, И.В.
citation_txt Анализ возможностей использования матричных макроопераций системы MatLab при решении прикладных задач / И.В. Мельник // Электронное моделирование. — 2009. — Т. 31, № 3. — С. 37-51. — Бібліогр.: 10 назв. — рос.
collection DSpace DC
container_title Электронное моделирование
description На примерах решения практических задач программирования проанализированы возможности использования векторных и матричных макроопераций для реализации классических и оригинальных алгоритмов. Для объяснения основных особенностей этих операций введены новые понятия арифметико-логического выражения, рекуррентного арифметико-логического выражения и вектора-функции. Показано, что при решении задач среднего уровня сложности предложенный подход может стать альтернативой современным методам и средствам структурного программирования. На прикладах розв’язку практичних задач програмування проаналізовано можливості використання векторних та матричних макрооперацій для реалізації класичних та оригінальних алгоритмів. Для пояснення головних особливостей цих операцій введено нові поняття арифметико-логічного виразу, рекурентного арифметико-логічного виразу та вектора-функції. Показано, що при розв’язуванні задач середнього рівня складності запропонований підхід може стати альтернативою сучасним методам та засобам структурного програмування. The possibilities of using the vector and matrix macrooperations to realize classical and original algorithms have been analyzed in the paper on the examples of solving the pragmatic programming tasks. Some new definitions of the arithmetic-logical expression, recurrent arithmetic-logical expression and vector-function were introduced to explained the basic singularities of the analyzed macrooperations. It is demonstrated on a lot of different examples, that the proposed method can be really considered as an alternative to currently used structured coding for the tasks of middle-level complicity.
first_indexed 2025-12-01T02:07:21Z
format Article
fulltext ÓÄÊ 519.6 È. Â. Ìåëüíèê, ä-ð òåõí.íàóê Íàöèîíàëüíûé òåõíè÷åñêèé óíèâåðñèòåò Óêðàèíû «Êèåâñêèé ïîëèòåõíè÷åñêèé èíñòèòóò» (Óêðàèíà, 03056, Êèåâ, ïð. Ïîáåäû, 37, êîðï. 12, 2203 òåë. (044) 2419672, (044) 4549505, E-mail: imelnik@edd.ntu-kpi.kiev.ua) Àíàëèç âîçìîæíîñòåé èñïîëüçîâàíèÿ ìàòðè÷íûõ ìàêðîîïåðàöèé ñèñòåìû MatLab ïðè ðåøåíèè ïðèêëàäíûõ çàäà÷ (Ñòàòüþ ïðåäñòàâèë ÷ë.-êîð. ÍÀÍ Óêðàèíû Â. Â. Âàñèëüåâ) Íà ïðèìåðàõ ðåøåíèÿ ïðàêòè÷åñêèõ çàäà÷ ïðîãðàììèðîâàíèÿ ïðîàíàëèçèðîâàíû âîçìîæ- íîñòè èñïîëüçîâàíèÿ âåêòîðíûõ è ìàòðè÷íûõ ìàêðîîïåðàöèé äëÿ ðåàëèçàöèè êëàññè÷åñ- êèõ è îðèãèíàëüíûõ àëãîðèòìîâ. Äëÿ îáúÿñíåíèÿ îñíîâíûõ îñîáåííîñòåé ýòèõ îïåðàöèé ââåäåíû íîâûå ïîíÿòèÿ àðèôìåòèêî-ëîãè÷åñêîãî âûðàæåíèÿ, ðåêóððåíòíîãî àðèôìå- òèêî-ëîãè÷åñêîãî âûðàæåíèÿ è âåêòîðà-ôóíêöèè. Ïîêàçàíî, ÷òî ïðè ðåøåíèè çàäà÷ ñðåä- íåãî óðîâíÿ ñëîæíîñòè ïðåäëîæåííûé ïîäõîä ìîæåò ñòàòü àëüòåðíàòèâîé ñîâðåìåííûì ìåòîäàì è ñðåäñòâàì ñòðóêòóðíîãî ïðîãðàììèðîâàíèÿ. Íà ïðèêëàäàõ ðîçâ’ÿçêó ïðàêòè÷íèõ çàäà÷ ïðîãðàìóâàííÿ ïðîàíàë³çîâàíî ìîæëèâîñò³ âèêîðèñòàííÿ âåêòîðíèõ òà ìàòðè÷íèõ ìàêðîîïåðàö³é äëÿ ðåàë³çàö³¿ êëàñè÷íèõ òà îðè- ã³íàëüíèõ àëãîðèòì³â. Äëÿ ïîÿñíåííÿ ãîëîâíèõ îñîáëèâîñòåé öèõ îïåðàö³é ââåäåíî íîâ³ ïîíÿòòÿ àðèôìåòèêî-ëîã³÷íîãî âèðàçó, ðåêóðåíòíîãî àðèôìåòèêî-ëîã³÷íîãî âèðàçó òà âåêòîðà-ôóíêö³¿. Ïîêàçàíî, ùî ïðè ðîçâ’ÿçóâàíí³ çàäà÷ ñåðåäíüîãî ð³âíÿ ñêëàäíîñò³ çà- ïðîïîíîâàíèé ï³äõ³ä ìîæå ñòàòè àëüòåðíàòèâîþ ñó÷àñíèì ìåòîäàì òà çàñîáàì ñòðóêòóð- íîãî ïðîãðàìóâàííÿ. Ê ë þ ÷ å â û å ñ ë î â à: ìàòðè÷íûå ìàêðîîïåðàöèè, àðèôìåòèêî-ëîãè÷åñêîå âûðàæåíèå, ðåêóððåíòíûå âû÷èñëåíèÿ, ðåêóððåíòíîå àðèôìåòèêî-ëîãè÷åñêîå âûðàæåíèå, âåêòîð- ôóíêöèÿ. Ìàòåìàòè÷åñêèå ÑÀÏÐ íàõîäÿò âñå áîëåå øèðîêîå ïðèìåíåíèå ïðè ðåàëè- çàöèè èíæåíåðíûõ è íàó÷íî-òåõíè÷åñêèõ ðàñ÷åòîâ, è ÷èñëî ñòîðîííèêîâ èõ èñïîëüçîâàíèÿ óâåëè÷èâàåòñÿ ñ êàæäûì ãîäîì.  ïîñëåäíåå âðåìÿ ñðåäè ñóùåñòâóþùèõ ìàòåìàòè÷åñêèõ ÑÀÏÐ îñîáîå ìåñòî çàíèìàåò ñèñ- òåìà MatLab, îðèåíòèðîâàííàÿ íà èñïîëüçîâàíèå ìàòðè÷íûõ è âåêòîðíûõ ìàêðîîïåðàöèé ïðè îáðàáîòêå ÷èñëîâûõ ñòðóêòóð äàííûõ [1,2]. Îñíîâ- íûìè ïðåèìóùåñòâàìè ýòîé ÑÀÏÐ ÿâëÿåòñÿ îòêðûòûé ïðîãðàììíûé êîä äëÿ áîëüøèíñòâà ôóíêöèé è ïðèíöèï ìîäóëüíîé àðõèòåêòóðû.  ÿçûêå ISSN 0204–3572. Ýëåêòðîí. ìîäåëèðîâàíèå. 2009. Ò. 31. ¹ 3 37 ïðîãðàììèðîâàíèÿ ñèñòåìû MatLab ðåàëèçîâàíû ðàçëè÷íûå ñîâðåìåííûå ïîäõîäû è ïàðàäèãìû ïðîãðàììèðîâàíèÿ, âêëþ÷àÿ ñòðóêòóðíîå, îáúåêò- íî-îðèåíòèðîâàííîå, ëîãè÷åñêîå, ôóíêöèîíàëüíîå è ìîäóëüíîå ïðîãðàì- ìèðîâàíèå [1,2]. Îäíàêî ñòîðîííèêè èñïîëüçîâàíèÿ ñèñòåìû MatLab â èíæåíåðíîé è íàó÷íîé äåÿòåëüíîñòè ñ÷èòàþò, ÷òî â ñèñòåìàõ ñ ðàçâèòûì íàáîðîì ìàò- ðè÷íûõ ìàêðîîïåðàöèé ìîæíî âîîáùå îòêàçàòüñÿ îò èñïîëüçîâàíèÿ òðà- äèöèîííûõ ìåòîäîâ è ñðåäñòâ ñòðóêòóðíîãî ïðîãðàììèðîâàíèÿ. Ïðè ýòîì ðå÷ü èäåò â îñíîâíîì îá îïåðàòîðàõ öèêëà è íå óïîìèíàþòñÿ âåòâÿùèåñÿ âû÷èñëèòåëüíûå ïðîöåññû è óñëîâíûé îïåðàòîð [2].  ðåçóëüòàòå àíàëèçà ëèòåðàòóðíûõ èñòî÷íèêîâ ìîæíî ñäåëàòü âûâîä î òîì, ÷òî äëÿ îïðåäåëåíèÿ ïîòåíöèàëüíûõ âîçìîæíîñòåé èñïîëüçîâàíèÿ ìàòðè÷íûõ è âåêòîðíûõ ìàêðîîïåðàöèé ïðè ðåàëèçàöèè êëàññè÷åñêèõ è îðèãèíàëüíûõ àëãîðèòìîâ íåîáõîäèìî ïðîâåäåíèå äîïîëíèòåëüíûõ ñèñ- òåìíûõ èññëåäîâàíèé ïî èçó÷åíèþ îáîáùåííûõ ñâîéñòâ ýòèõ îïåðàöèé è âîçìîæíîñòåé èõ ïðàêòè÷åñêîãî ïðèìåíåíèÿ, âêëþ÷àÿ ïðèíöèïèàëüíûå îãðàíè÷åíèÿ. Ðàññìîòðèì âîçìîæíîñòü ðåàëèçàöèè ñòàíäàðòíûõ âû÷èñëèòåëüíûõ àëãîðèòìîâ ÷åðåç ìàòðè÷íûå ìàêðîîïåðàöèè.  êà÷åñòâå òåñòîâûõ êëàññè- ÷åñêèõ çàäà÷ áóäåì îñóùåñòâëÿòü ïîèñê ìèíèìàëüíûõ è ìàêñèìàëüíûõ çíà- ÷åíèé è ñîðòèðîâêó ýëåìåíòîâ âåêòîðà. Äëÿ ïðîñòîòû îïèñàíèÿ îñîáåííîñòåé ðåàëèçàöèè âû÷èñëèòåëüíûõ àëãîðèòìîâ ÷åðåç ìàòðè÷íûå ìàêðîîïåðàöèè ââåäåì òàêèå áàçîâûå ïîíÿòèÿ, êàê àðèôìåòèêî-ëîãè÷åñêîå âûðàæåíèå, ðå- êóððåíòíîå àðèôìåòèêî-ëîãè÷åñêîå âûðàæåíèå è âåêòîð-ôóíêöèÿ. Ñóùåñòâóþùèå âåêòîðíûå è ìàòðè÷íûå ìàêðîîïåðàöè. Íàèáîëåå èíòåðåñíûì äîñòèæåíèåì ðàçðàáîò÷èêîâ ñèñòåìû MatLab â îáëàñòè èñïîëü- çîâàíèÿ ìàòðè÷íûõ ìàêðîîïåðàöèé ÿâëÿåòñÿ ïîýëåìåíòíàÿ îáðàáîòêà óïîðÿ- äî÷åííûõ ÷èñëîâûõ ñòðóêòóð, âêëþ÷àÿ ñîîòâåòñòâóþùèå îïåðàöèè íàä ìàò- ðèöàìè è âåêòîðàìè [1,2].  êà÷åñòâå ïðèìåðà ðàññìîòðèì äâå ïðîãðàììû äëÿ âû÷èñëåíèÿ ñóììû êâàäðàòîâ ýëåìåíòîâ äâóõ âåêòîðîâ, íàïèñàííûå ñ èñïîëüçîâàíèåì ïîýëåìåíòíûõ îïåðàöèé è ñðåäñòâàìè ñòðóêòóðíîãî ïðî- ãðàììèðîâàíèÿ. Ïðèìåð 1. Ïîýëåìåíòíûå îïåðàöèè »V1=[1,2,7,3,4]; »V2=[4,2,7,3,9]; »R= V1.^2+V2.^2 »R = 17 8 98 18 97 » È. Â. Ìåëüíèê 38 ISSN 0204–3572. Electronic Modeling. 2009. V. 31. ¹ 3 Ñòðóêòóðíîå ïðîãðàììèðîâàíèå V1=[1,2,7,3,4]; V2=[4,2,7,3,9]; for ii=1:length(V1) R(ii)=V1(ii)^2+V2(ii)^2; end; Áîëåå ñëîæíûì ïðèìåðîì ýôôåêòèâíîãî èñïîëüçîâàíèÿ ìàòðè÷íûõ ìàêðîîïåðàöèé â MatLab ÿâëÿåòñÿ ìíîæåñòâåííàÿ èíäåêñàöèÿ [2]. Ðàñ- ñìîòðèì âîçìîæíîñòü åå ïðèìåíåíèÿ íà ïðèìåðå îáðàùåíèÿ ê ñîâîêóï- íîñòè ýëåìåíòîâ âåêòîðà. Äîïóñòèì, íåîáõîäèìî âûäåëèòü ýëåìåíòû âåê- òîðà ñ ïÿòîãî ïî âîñüìîé. Ïðèìåð 2. »V1=[9,8,7,6,5,4,3,2,1]; »ii=[5:8]; »V2=V1(ii) »V2 = 5 4 3 2 » Òàêèì îáðàçîì, ïîýëåìåíòíûå îïåðàöèè è ìíîæåñòâåííàÿ èíäåêñàöèÿ ìîãóò èñïîëüçîâàòüñÿ êàê äåêëàðàòèâíûå îïåðàòîðû ÿçûêà âûñîêîãî óðîâ- íÿ âìåñòî îïåðàòîðîâ öèêëà. Ïðîàíàëèçèðóåì âîçìîæíîñòè èñïîëüçî- âàíèÿ ýòèõ ñðåäñòâ ïðîãðàììèðîâàíèÿ ïðè ðåàëèçàöèè áîëåå ñëîæíûõ âû- ÷èñëåíèé. Àðèôìåòèêî-ëîãè÷åñêîå âûðàæåíèå. Ðàññìîòðèì âåòâÿùèéñÿ ïðî- öåññ íà ïðîñòîì ïðèìåðå âû÷èñëåíèÿ êóñî÷íî-çàäàííûõ ôóíêöèé. Ïðè èñïîëüçîâàíèè ñðåäñòâ ñòðóêòóðíîãî ïðîãðàììèðîâàíèÿ âû÷èñëÿòü çíà- ÷åíèÿ òàêèõ ôóíêöèé äëÿ ðàçëè÷íûõ çíà÷åíèé àðãóìåíòà ìîæíî òîëüêî â ñëó÷àå èñïîëüçîâàíèÿ óñëîâíîãî îïåðàòîðà âíóòðè îïåðàòîðà öèêëà. Íà- ïðèìåð, äëÿ âû÷èñëåíèÿ çíà÷åíèé ôóíêöèé f x f x x f x x ( ) ( ), , ( ), , � � � � � � 1 2 0 0 f x e x x 1 2 1 ( ) � � , f x e x x x 2 2 2 1 ( ) � � (1) íà îòðåçêå [– 5; 5] ñ øàãîì 0,01 íåîáõîäèìî íàïèñàòü òàêîé ôðàãìåíò ïðîãðàììû. Ïðèìåð 3. x=-5:0.01:5; for ii=1:length(x) if (x(ii)<=0) z(ii)=(exp(x(ii))-x(ii)^2)/(1+x(ii)^2); … else z(i)=(exp(x(i)))/(1+x(i)^2); end; Àíàëèç âîçìîæíîñòåé èñïîëüçîâàíèÿ ìàòðè÷íûõ ìàêðîîïåðàöèé ñèñòåìû MatLab ISSN 0204–3572. Ýëåêòðîí. ìîäåëèðîâàíèå. 2009. Ò. 31. ¹ 3 39 Ïîñêîëüêó â ÿçûêå ïðîãðàììèðîâàíèÿ ñèñòåìû MatLab ïðè èñïîëü- çîâàíèè óñëîâíîãî îïåðàòîðà íå ïðåäïîëàãàåòñÿ ïîýëåìåíòíàÿ îáðàáîòêà óïîðÿäî÷åííûõ ñòðóêòóð ÷èñëîâûõ äàííûõ, âñå âåòâÿùèåñÿ ïðîöåññû ðåà- ëèçóþòñÿ ñðåäñòâàìè ñòðóêòóðíîãî ïðîãðàììèðîâàíèÿ. Âîçìîæíîé àëüòåðíàòèâîé èñïîëüçîâàíèþ óñëîâíîãî îïåðàòîðà ÿâëÿþò- ñÿ àðèôìåòèêî-ëîãè÷åñêèå âûðàæåíèÿ, ïðåäñòàâëÿþùèå ñîáîé êîìáèíàöèþ àðèôìåòè÷åñêèõ è ëîãè÷åñêèõ ôóíêöèé âèäà [3] F x F x L x F x L x F x L x F x Ln n( ) ( ) ( ) ( ) ( ) ( ) ( ) ... ( ) (� � � � �1 1 2 2 3 3 x), (2) ãäå F x F x F x F xn1 2 3( ), ( ), ( ),..., ( ) — àðèôìåòè÷åñêèå ôóíêöèè; L x L x1 2( ), ( ),... ..., ( )L xn — ëîãè÷åñêèå ôóíêöèè. Åñëè äëÿ âû÷èñëåíèÿ (1) èñïîëüçîâàòü âûðàæåíèå (2), ïåðåïèñàâ êóñî÷íî-çàäàííóþ ôóíêöèþ â âèäå F x x e x x e x x x x ( ) ( ) ( )� � � � � � 0 1 0 12 2 2 , òî êîä ïðîãðàììû, ïî ñðàâíåíèþ ñ ïðèìåðîì 3, ñóùåñòâåííî óïðîùàåòñÿ. Ïðèìåð 4. x=-5:0.01:5; f=(x>0).*(exp(x)./(x.^2+1))+(x<=0).*((exp(x)-x.^2)./(x.^2+1)); Åñëè ôóíêöèÿ çàäàíà íå íà äâóõ, à íà áîëüøåì ÷èñëå îòðåçêîâ, òî ñîîò- âåòñòâóþùèå ëîãè÷åñêèå âûðàæåíèÿ L xn ( ) çàïèñûâàþòñÿ ÷åðåç îïåðàöèþ «and» (&). Ðåçóëüòàòû ïðîâåðêè ýôôåêòèâíîñòè ïðîãðàììíîãî êîäà äëÿ ïðèìå- ðîâ 3 è 4 ñâèäåòåëüñòâóþò î òîì, ÷òî âàðèàíò ñ îïåðàòîðîì öèêëà áîëåå ýôôåêòèâåí òîëüêî ïðè ìàëîì ÷èñëå ýëåìåíòîâ âåêòîðà õ, â îñíîâíîì ïðè length (x) < 104, â òî âðåìÿ êàê äëÿ áîëüøèõ ÷èñëîâûõ ñòðóêòóð áîëåå ýô- ôåêòèâíûì ÿâëÿåòñÿ âòîðîé âàðèàíò ðåàëèçàöèè. Íà îñíîâå ïðîâåäåííîãî àíàëèçà ìîæíî ñäåëàòü ñëåäóþùèé âûâîä. Âåòâÿùèåñÿ âû÷èñëèòåëüíûå ïðîöåññû â ðàìêàõ ìàòðè÷íîãî ïðîãðàì- ìèðîâàíèÿ ðåàëèçóþòñÿ ñ ïîìîùüþ àðèôìåòèêî-ëîãè÷åñêèõ âûðàæåíèé âèäà (2). Ðåêóððåíòíûå âû÷èñëåíèÿ.  ïðèêëàäíûõ çàäà÷àõ âû÷èñëèòåëüíîé ìàòåìàòèêè ÷àñòî èñïîëüçóþòñÿ âû÷èñëèòåëüíûå ïðîöåäóðû, îñíîâàííûå íà èçìåíÿåìûõ ïåðåìåííûõ öèêëà. Èç íèõ íàèáîëåå ïðîñòûìè ÿâëÿþòñÿ ðåêóððåíòíûå àëãîðèòìû, îïèñûâàåìûå ñîîòíîøåíèÿìè âèäà [4] x c1 1� ; x c2 2� ; x c3 3� ; ... x cn n� ; x f i x x xi i i i n� ( , , ,..., )1 2 , (3) ãäå x1, x2, …, xn … xi — çíà÷åíèÿ ýëåìåíòîâ âåêòîðà x; c1, c2, …, cn — êîíñ- òàíòû. Âû÷èñëåíèå ðåêóððåíòíûõ ïîñëåäîâàòåëüíîñòåé ñ èñïîëüçîâàíèåì È. Â. Ìåëüíèê 40 ISSN 0204–3572. Electronic Modeling. 2009. V. 31. ¹ 3 ñòàíäàðòíûõ âåêòîðíûõ ìàêðîîïåðàöèé ñèñòåìû MatLab íåâîçìîæíî. Ýòî âèäíî èç ñëåäóþùåãî ïðèìåðà, â êîòîðîì ñäåëàíà ïîïûòêà âû÷èñëèòü ýëåìåíòû ïîñëåäîâàòåëüíîñòè Ôèáîíà÷÷è [4]. Ïðèìåð 5. » i=1:10; j=3:10; » x=i; x(2)=1; » x(j)=x(j-1)+x(j-2); » x x = 1 1 2 4 7 9 11 13 15 17 » Ïðè÷èíîé îøèáêè ÿâëÿåòñÿ òî, ÷òî âìåñòî óæå âû÷èñëåííûõ çíà÷åíèé íà êàæäîì øàãå âû÷èñëåíèé èñïîëüçóþòñÿ ïðåäûäóùèå, ïåðâîíà÷àëüíî çàäàííûå çíà÷åíèÿ ýëåìåíòîâ âåêòîðà õ. Íà îñíîâå ïðîâåäåííîãî àíàëèçà ìîæíî ñäåëàòü ñëåäóþùèé âûâîä. Ñðåäñòâà ìíîæåñòâåííîé èíäåêñàöèè ñèñòåìû MatLab íå ïîçâîëÿþò ðåàëèçîâàòü ðåêóððåíòíûå âû÷èñëèòåëüíûå àëãîðèòìû, à ñëåäîâàòåëüíî, íàáîð ìàòðè÷íûõ è âåêòîðíûõ ìàêðîîïåðàöèé ÿçûêà ïðîãðàììèðîâàíèÿ ñèñòåìû ÿâëÿåòñÿ íåïîëíûì.  ñâÿçè ñ ýòèì â áèáëèîòåêó ñòàíäàðòíûõ ôóíêöèé ñèñòåìû áûëà äîáàâëåíà ôóíêöèÿ recvect, ïîçâîëÿþùàÿ ðåàëèçîâûâàòü ðåêóððåíòíûå âû÷èñëåíèÿ ÷åðåç ïåðåäà÷ó ôóíêöèè f i x x xi i i n( , , ,..., ) 1 2 êàê ïàðàìåòðà â âèäå ñòðîêè ñèìâîëîâ. Ýòà ïðîöåäóðà íàïèñàíà ñ èñïîëüçîâàíèåì îïåðà- òîðîâ öèêëà, îäíàêî ïðè åå ïðèìåíåíèè ðåêóððåíòíûå âû÷èñëåíèÿ ðåàëè- çóþòñÿ áåç èñïîëüçîâàíèÿ öèêëîâ. Ïðèâåäåííàÿ â ñëåäóþùåì ïðèìåðå ïðîöåäóðà ïîçâîëÿåò äîñòè÷ü äî- ñòàòî÷íî âûñîêîé ýôôåêòèâíîñòè è ïðîñòîòû ïðîãðàììíîãî êîäà. Ïðèìåð 6. for ii=1:n if (ii<=nr) w(ii)=v(ii); else if (ch==0) w(ii)=eval(ff); end; if ((ch==1)&(nr==1)) res=eval(ff); w(ii)=res(2); w(ii-1)=res(1); end; if ((ch==1)&(nr==2)) res=eval(ff); w(ii)=res(3); w(ii-1)=res(2); w(ii-2)=res(1); end; if ((ch==1)&(nr==3)) res=eval(ff); w(ii)=res(4); w(ii-1)=res(3); w(ii-2)=res(2); w(ii-3)=res(1); end; if ((ch==1)&(nr==4)) res=eval(ff); w(ii)=res(5); w(ii-1)=res(4); w(ii-2)=res(3); w(ii-3)=res(2); Àíàëèç âîçìîæíîñòåé èñïîëüçîâàíèÿ ìàòðè÷íûõ ìàêðîîïåðàöèé ñèñòåìû MatLab ISSN 0204–3572. Ýëåêòðîí. ìîäåëèðîâàíèå. 2009. Ò. 31. ¹ 3 41 w(ii-4)=res(1); end; if ((ch==1)&(nr==5)) res=eval(ff); w(ii)=res(6); w(ii-1)=res(5); w(ii-2)=res(4); w(ii-3)=res(3); w(ii-4)=res(2); w(ii-5)=res(1); end; if (abs(w(ii)-w(ii-1))<el)return; end; if (abs(w(ii)-w(ii-1))>eh)return; end; end; end; Ïðèâåäåì ïðèìåð âû÷èñëåíèÿ ýëåìåíòîâ ïîñëåäîâàòåëüíîñòè Ôèáî- íà÷÷è ñ èñïîëüçîâàíèåì ïðîöåäóðû recvect. Ïðèìåð 7. » ffh=’w(ii-1)+w(ii-2)’; » c=recvect(2,10,[1,1],ffh,1e-10,1e10) c = 1 1 2 3 5 8 13 21 34 55 » Îñíîâíûå âõîäíûå ïàðàìåòðû, ïåðåäàâàåìûå ïðîöåäóðå recvect ïðè åå âûçîâå, ñëåäóþùèå: n — ñòåïåíü çàâèñèìîñòè ýëåìåíòîâ â ðåêóððåíòíîé ôîðìóëå, ò. å. ïîëîæåíèå íàèáîëåå îòäàëåííîãî ýëåìåíòà, èñïîëüçóåìîãî ïðè âû÷èñëå- íèè òåêóùåãî; ññûëêà íà ýòîò ýëåìåíò îñóùåñòâëÿåòñÿ ÷åðåç ïàðàìåòð (i – � n), íàïðèìåð äëÿ ðÿäà Ôèáîíà÷÷è n = 2. N — ìàêñèìàëüíîå ÷èñëî âû÷èñëÿåìûõ ÷ëåíîâ ðÿäà, N > n, ïî óìîë- ÷àíèþ N = 100; V — âõîäíîé âåêòîð íà÷àëüíûõ çíà÷åíèé, ÷èñëî ýëåìåíòîâ êîòîðîãî äîëæíî ñîîòâåòñòâîâàòü ñòåïåíè çàâèñèìîñòè n, ò. å. length (V) = n, íàïðè- ìåð äëÿ ðÿäà Ôèáîíà÷÷è ýòî âåêòîð [1,1]; ffh — ðåêóððåíòíàÿ ôóíêöèÿ, çàäàâàåìàÿ â âèäå ñòðîêè ñèìâîëîâ; l — ìèíèìàëüíàÿ ðàçíîñòü ìåæäó ñîñåäíèìè ÷ëåíàìè ðÿäà ïðè åãî ñõîäèìîñòè; h — ìàêñèìàëüíàÿ ðàçíîñòü ìåæäó ñîñåäíèìè ÷ëåíàìè ðÿäà ïðè åãî ðàñõîäèìîñòè; ïî óìîë÷àíèþ ïðåäïîëàãàåòñÿ l = 10–10, h = 1010. Äàëåå ðàññìîòðèì ïðèìåðû ðåàëèçàöèè ñòàíäàðòíûõ è îðèãèíàëüíûõ àëãîðèòìîâ ñ èñïîëüçîâàíèåì âåêòîðíûõ è ìàòðè÷íûõ ìàêðîîïåðàöèé. Àëãîðèòìû ïîèñêà è ñîðòèðîâêè. Ñíà÷àëà ðàññìîòðèì îñîáåííîñòè èñïîëüçîâàíèÿ âåêòîðíûõ è ìàòðè÷íûõ ìàêðîîïåðàöèé ïðè ðåøåíèè ñòàí- äàðòíûõ çàäà÷ îáðàáîòêè äàííûõ. Îäíîé èç òàêèõ çàäà÷ ÿâëÿåòñÿ ïîèñê ìàêñèìàëüíîãî èëè ìèíèìàëüíîãî ýëåìåíòîâ âåêòîðà [4].  îáùåì ñëó÷àå çàäà÷ó ïîèñêà ìàêñèìàëüíîãî ýëåìåíòà ìîæíî çàïèñàòü â âèäå ñëåäóþùåãî È. Â. Ìåëüíèê 42 ISSN 0204–3572. Electronic Modeling. 2009. V. 31. ¹ 3 ðåêóððåíòíîãî ñîîòíîøåíèÿ: x xmax ( ) ( )1 1� ; x x x x x x max max max ( ) ( ), ( ) ( ), ( ), ( i i i i i � � åñëè åñëè 1 1 i i) ( ),max� � � � x 1 (4) ãäå x — èñõîäíûé âåêòîð, à x xmax ... ( ) max ( ))i k k i � �1 ( — âåêòîð ðåçóëüòàòà. Ðå- êóððåíòíóþ ôîðìóëó (4) ïåðåïèøåì â âèäå àðèôìåòèêî-ëîãè÷åñêîãî âû- ðàæåíèÿ (2): x xmax ( ) ( )1 1� ; x x x x x x xmax max max ma( ) ( ( ) ( )) ( ) ( ( ) ( ))i i i i i i� � � � 1 1 x ( )i 1 . (5) Ñîîòíîøåíèÿ (5), êîòîðûå ôàêòè÷åñêè ÿâëÿþòñÿ ðåêóððåíòíûìè, íî â òî æå âðåìÿ ñîîòâåòñòâóþò îïðåäåëåíèþ àðèôìåòèêî-ëîãè÷åñêîãî âûðà- æåíèÿ (2), áóäåì íàçûâàòü ðåêóððåíòíûìè àðèôìåòèêî-ëîãè÷åñêèìè âû- ðàæåíèÿìè. Ïðèâåäåì ïðèìåð, â êîòîðîì ïîèñê ìàêñèìàëüíîãî ýëåìåíòà âåêòîðà âûïîëíåí ñ èñïîëüçîâàíèåì ñîîòíîøåíèÿ (5) è ðåàëèçîâàí ÷åðåç ïðîöåäóðó recvect. Ïðèìåð 8. » x=[1,100,-25,20,150,40,-50]; » ffh=’v(ii)*(v(ii)>=w(ii-1))+(v(ii)<w(ii-1))*w(ii-1)’; » c=recvect(1,length(x),x,ffh,1e-10,1e10) c = 1 100 100 100 150 150 150 » Çäåñü v — èñõîäíûé âåêòîð, w — âåêòîð ðåçóëüòàòà, à ôóíêöèÿ, îïèñûâàåìàÿ ñîîòíîøåíèåì (5), çàïèñàíà â âèäå ñòðîêîâîé ïåðåìåííîé ffh, êîòîðàÿ ÿâëÿåò- ñÿ âõîäíûì ïàðàìåòðîì äëÿ ïðîöåäóðû recvect. Èç ïðèìåðà 8 âèäíî, ÷òî âåêòîðíûå è ìàòðè÷íûå ìàêðîîïåðàöèè ÿâëÿ- þòñÿ èçáûòî÷íûìè ïî ñðàâíåíèþ ñî ñðåäñòâàìè ñòðóêòóðíîãî ïðîãðàììè- ðîâàíèÿ ñ òî÷êè çðåíèÿ ýêîíîìèè âû÷èñëèòåëüíûõ ðåñóðñîâ, ïîñêîëüêó äëÿ èõ ðåàëèçàöèè òðåáóåòñÿ ñîõðàíåíèå âñåõ ðåçóëüòàòîâ ïðåäûäóùèõ âû÷èñëåíèé. Îäíàêî òàêèå ðåçóëüòàòû ëåãêî àíàëèçèðîâàòü ïðè îòëàäêå ïðîãðàìì, öåëåñîîáðàçíà òàêàÿ ôîðìà ïðåäñòàâëåíèÿ è ïðè èçó÷åíèè òåî- ðèè àëãîðèòìîâ. Áîëåå ñëîæíûì ñïîñîáîì ðåàëèçàöèè ðåêóððåíòíûõ âû÷èñëåíèé ÷åðåç ìàòðè÷íûå ìàêðîîïåðàöèè ÿâëÿåòñÿ âû÷èñëåíèå êàæäîé ñëåäóþùåé ñòðîêè ìàòðèöû ÷åðåç ýëåìåíòû åå ïðåäûäóùèõ ñòðîê.  îáùåì ñëó÷àå ñîîò- âåòñòâóþùèé ðåêóððåíòíûé àëãîðèòì ìîæíî çàïèñàòü â âèäå M v� � �1 1, M v� � �2 2, ..., M v� � �n n , M F M M M� � � � � � � ��i i i i ni( , , , ..., )1 2 , (6) Àíàëèç âîçìîæíîñòåé èñïîëüçîâàíèÿ ìàòðè÷íûõ ìàêðîîïåðàöèé ñèñòåìû MatLab ISSN 0204–3572. Ýëåêòðîí. ìîäåëèðîâàíèå. 2009. Ò. 31. ¹ 3 43 ãäå v — âåêòîð; M� �i — ñòðîêà ìàòðèöû ñ íîìåðîì i; F — âåêòîð-ôóíêöèÿ, îïðåäåëÿþùàÿ ôóíêöèè äëÿ âû÷èñëåíèÿ êàæäîãî ýëåìåíòà ñòðîêè ðåçóëü- òèðóþùåé ìàòðèöû. Òàêèå ðåêóððåíòíûå àëãîðèòìû òàêæå ñîñòàâëÿþò îñíî- âó âû÷èñëèòåëüíîé ìàòåìàòèêè è èñïîëüçóþòñÿ íå ðåæå, ÷åì ñòàíäàðòíûå, îïðåäåëÿåìûå ñîîòíîøåíèåì (3). Äëÿ ðåàëèçàöèè ðåêóððåíòíûõ àëãîðèòìîâ, îïèñûâàåìûõ ñîîòíîøåíèåì (6), ïîëó÷åíà ôóíêöèÿ recmat, ïðîãðàììíûé êîä êîòîðîé çäåñü íå ïðèâåäåí èç-çà îãðàíè÷åííîãî îáúåìà ñòàòüè. Ðàññìîòðèì áîëåå ñëîæíûé ïðèìåð, â êîòîðîì ÷åðåç ðåêóððåíòíîå àðèôìåòèêî-ëîãè÷åñêîå âûðàæåíèå ðåàëèçîâàí êëàññè÷åñêèé àëãîðèòì ïóçûðüêîâîé ñîðòèðîâêè ýëåìåíòîâ âåêòîðà ïî âîçðàñòàíèþ è óáûâà- íèþ [4, 5]. Àðèôìåòèêî-ëîãè÷åñêîå âûðàæåíèå äëÿ àëãîðèòìà ñîðòèðîâêè ïî âîçðàñòàíèþ èìååò âèä xs xs x xs xs x x i i i n i i i i i � � � � � � � � � � � � � � � � �1 2 1 1 ... ( ) ( xs x xs i i i � � � � � �1 1 ) , (7) ãäå x — èñõîäíûé âåêòîð; xs — âåêòîð ðåçóëüòàòà; n — ÷èñëî ñîðòèðóåìûõ ýëåìåíòîâ. Äëÿ ñîðòèðîâêè ïî óáûâàíèþ âûðàæåíèå (7) çàïèøåì â âèäå xs xs x xs x xs x i i i n i i i i i � � � � � � � � � � � � � � � � �1 2 1 1... ( ) ( xs xs x i i i � � � � � �1 1 ) . (8) Íåîáõîäèìî çàìåòèòü, ÷òî ñ ïîìîùüþ ñîîòíîøåíèé (7), (8), â ñîîòâåòñò- âèè ñ àëãîðèòìîì ïóçûðüêîâîé ñîðòèðîâêè, ìîæíî ïðîàíàëèçèðîâàòü òîëüêî äâà ñîñåäíèõ ýëåìåíòà, ïîýòîìó ñëåäóåò èñïîëüçîâàòü èòåðàöèîííóþ ïðî- öåäóðó. Âû÷èñëåíèÿ ïðåêðàùàþòñÿ, êîãäà ïîëó÷åíû äâå îäèíàêîâûå ñòðîêè ðåçóëüòèðóþùåé ìàòðèöû. Ïðèâåäåì ïðèìåð ïðîãðàììû sortbuble, ñîðòèðóþùåé ýëåìåíòû âåêòî- ðà ïî âîçðàñòàíèþ ïðè m=1 èëè ïî óáûâàíèþ ïðè m=-1. Äëÿ ðàñ÷åòîâ ïî ôîðìóëàì (7), (8) èñïîëüçîâàíà ïðîöåäóðà recmat. Ìàòðèöà ðåçóëüòàòà îáîçíà÷åíà ÷åðåç Ì. Ïðèìåð 9. function ws=sortbuble (vv,m) fh1=’recvect(1,length(M(ii-1,:)),M(ii-1,:),’’’; fh2=’([v(ii)>w(ii-1),v(ii)>w(ii-1)].*[w(ii-1),v(ii)])+... ([w(ii-1)>=v(ii),w(ii-1)>=v(ii)].*[v(ii),w(ii-1)])’; fh3=’’’,1e-10,1e10)’; fh4=’([v(ii)<w(ii-1),v(ii)<w(ii-1)].*[w(ii-1),v(ii)])+... ([w(ii-1)<=v(ii),w(ii-1)<=v(ii)].*[v(ii),w(ii-1)])’; if (m==1) fh=strcat(fh1,fh2,fh3); end; È. Â. Ìåëüíèê 44 ISSN 0204–3572. Electronic Modeling. 2009. V. 31. ¹ 3 if (m==-1) fh=strcat(fh1,fh4,fh3);end; ws=recmat(1,length(vv),vv,fh,1e-10,1e10);  ñëåäóþùåì ïðèìåðå ïðèâåäåí ðåçóëüòàò ðàáîòû ýòîé ïðîãðàììû. Ïðèìåð 10. » x=[1,-3,10,-5,50,5,15,10,20]; » sortbuble(x,1) ans = 1 -3 10 -5 50 5 15 10 20 -3 1 -5 10 5 15 10 20 50 -3 -5 1 5 10 10 15 20 50 -5 -3 1 5 10 10 15 20 50 -5 -3 1 5 10 10 15 20 50 » Êàê ïîêàçàëè ðåçóëüòàòû âû÷èñëèòåëüíûõ ýêñïåðèìåíòîâ, ýôôåêòèâ- íîñòü ôóíêöèè sortbuble íèæå, ÷åì âñòðîåííîé ôóíêöèè MatLab sort. Òåì íå ìåíåå, âîçìîæíîñòü ðåàëèçàöèè àëãîðèòìîâ âëîæåííûõ öèêëîâ ïîçâî- ëÿåò ðàñöåíèâàòü ïðîöåäóðû recvect è recmat êàê ýôôåêòèâíûå ñðåäñòâà ìàòðè÷íîãî ïðîãðàììèðîâàíèÿ. Äàëåå ðàññìîòðèì îñîáåííîñòè ðåàëèçàöèè ñðåäñòâàìè ìàòðè÷íîãî ïðîãðàììèðîâàíèÿ èòåðàöèîííûõ âû÷èñëèòåëüíûõ àëãîðèòìîâ, êîòîðûå ñîñòàâëÿþò îñíîâó ÷èñëåííûõ ìåòîäîâ. Èòåðàöèîííûå âû÷èñëèòåëüíûå àëãîðèòìû. Ðåêóððåíòíûå âû÷èñ- ëåíèÿ ïî ôîðìóëàì (3), (6) ìîãóò íàéòè øèðîêîå ïðèìåíåíèå â âû÷èñ- ëèòåëüíîé ìàòåìàòèêå. Íàïðèìåð âû÷èñëåíèå ñòåïåííûõ ðÿäîâ äëÿ çàäàí- íîãî âåêòîðà àðãóìåíòîâ Õ ìîæíî ðåàëèçîâàòü, èñïîëüçóÿ ðåêóððåíòíóþ ôîðìóëó (6): A X� � �1 , A F X A� � � ��n n n( , , )1 ; R X A n i n ( ) � � � � � 1 . (9)  ñëåäóþùåì ïðèìåðå ïðèâåäåíà ïðîãðàììà, â êîòîðîé ðåàëèçîâàíû ðåêóððåíòíûå âû÷èñëåíèÿ ïî ôîðìóëå (9). Ïðèìåð 11. function R=powseries(x,n,ff,el) c1=0; c2=0;d=size(x); if (d(1)==1) nr=1; fs=strcat(‘[M(ii-1,:);’,ff,’]’); end; if (d(1)==2) nr=2; fs=strcat(‘[M(ii-2,:);M(ii-1,:);’,ff,’]’);end; Rm=recmat(nr,n,x,fs,el,1e10);R=sum(Rm); return; Àíàëèç âîçìîæíîñòåé èñïîëüçîâàíèÿ ìàòðè÷íûõ ìàêðîîïåðàöèé ñèñòåìû MatLab ISSN 0204–3572. Ýëåêòðîí. ìîäåëèðîâàíèå. 2009. Ò. 31. ¹ 3 45 Íàïðèìåð äëÿ ôóíêöèè sin ( )x x ñòåïåííîé ðÿä èìååò âèä [6] sin ( ) ! ! ... ( ) ( ) ( )! x x x x O x x n n n n n � � � � � �� � �1 3 5 1 2 1 2 4 2 0 , èëè â ðåêóððåíòíîé ôîðìå — R x1 1( ) � , R x x 2 2 6 ( ) � , ..., R x R x x n n n n( ) ( ) ( )( ) � 1 2 2 1 2 1 ; S x R xn n ( ) ( )� � � � 1 . (10)  ñëåäóþùåì ïðèìåðå ïðèâåäåíà ïîñëåäîâàòåëüíîñòü êîìàíäíûõ ñòðîê äëÿ âû÷èñëåíèÿ ðÿäà (10). Ïðèìåð 12. >> x=-10:0.001:10; >> xx=ones(1,length(x)); >> xr=[xx;-x.^2/6]; >> S=powseries(xr,1000,’6*M(ii-1,:).*M(2,:)./(2*ii-2)./(2*ii-1)’,1e-30); Ìåíÿÿ ôóíêöèþ F X A( , , )� �n n1 , ìîæíî ôîðìèðîâàòü ðàçëè÷íûå ñòå- ïåííûå è ôóíêöèîíàëüíûå ðÿäû, ÷òî äàåò øèðîêèå âîçìîæíîñòè äëÿ ñîçäàíèÿ ìàòåìàòè÷åñêèõ áèáëèîòåê. Ñ èñïîëüçîâàíèåì ïðîöåäóð recvect è recmat ëåãêî ðåàëèçîâàòü è èòå- ðàöèîííûå àëãîðèòìû ÷èñëåííûõ ìåòîäîâ. Íàïðèìåð ÷èñëåííîå èíòå- ãðèðîâàíèå ôóíêöèé ìåòîäîì òðàïåöèé ðåàëèçóåòñÿ ñ ïîìîùüþ ñëåäóþ- ùåãî ïðîñòîãî ðåêóððåíòíîãî ñîîòíîøåíèÿ [6, 7]: S( )0 0� ; S S x x x x ( ) ( ) ( ( ) ( )) ( ) i i f fi i i i� � � 1 2 1 1 , ãäå õ — ïåðåìåííàÿ èíòåãðèðîâàíèÿ; f i( )x — çíà÷åíèÿ èíòåãðèðóåìîé ôóíêöèè â òî÷êàõ îòñ÷åòà; S — âû÷èñëÿåìîå çíà÷åíèå èíòåãðàëà.  ñëåäóþùåì ïðèìåðå âû÷èñëèì çíà÷åíèå èíòåãðàëà f x e dxx x ( ) � � 2 0 íà èíòåðâàëå 0 � x � 3 ñ øàãîì 10–4. Ïðèìåð 13. >> x=0:0.0001:3; >> f=[0,exp(-x.^2)]; >>S=recvect(1, length(f), f,’(w(ii-1)+((v(ii-1)+v(ii))*0.0001/2)).*(ii~=2)+0.*(ii==2)’, 0,1e50); È. Â. Ìåëüíèê 46 ISSN 0204–3572. Electronic Modeling. 2009. V. 31. ¹ 3 Àíàëîãè÷íî, ñ èñïîëüçîâàíèåì ôóíêöèè recvect, ìîæíî ÷èñëåííî ðå- øàòü íåëèíåéíûå è äèôôåðåíöèàëüíûå óðàâíåíèÿ [3]. Òåñòèðîâàíèå ôóíêöèé recvect è recmat ïðîâîäèëîñü è äëÿ áîëåå ñëîæ- íûõ âû÷èñëèòåëüíûõ àëãîðèòìîâ, îäèí èç êîòîðûõ ðàññìîòðèì äàëåå. Èñïîëüçîâàíèå ìåòîäîâ ìàòðè÷íîãî ïðîãðàììèðîâàíèÿ äëÿ ðåøå- íèÿ ôèçè÷åñêèõ çàäà÷. Ðàññìîòðèì âîçìîæíîñòè èñïîëüçîâàíèÿ ìàòðè÷íûõ ìàêðîîïåðàöèé äëÿ ðåøåíèÿ ïðàêòè÷åñêèõ èíæåíåðíûõ çàäà÷ íà ïðèìåðå ðàñ÷åòà òðàåêòîðèé çàðÿæåííûõ ÷àñòèö â ïîëå ñèììåòðè÷íîé êîðîòêîé ìàã- íèòíîé ëèíçû. Ìàòåìàòè÷åñêàÿ ïîñòàíîâêà äàííîé çàäà÷è, â îáùåì ñëó÷àå, ñâîäèòñÿ ê ñèñòåìå àëãåáðî-äèôôåðåíöèàëüíûõ óðàâíåíèé [8, 9] v U� 2 0�, v vr � sin ( )� , v v2 � cos ( ),� dr dz v v r z � , �� e m , d r dz erB mU z 2 2 0 2 08 � , B z INR z R z0 0 2 2 2 32 ( ) ( ) � � � , d dt B z� � � 0 2 , (11) dr dz dr dz d r dz dz� 2 2 , � � � � B dz v z z 0 2 , r r dr dz dz d r dz dz � � 2 2 22 ( ) , ãäå z è r — ïðîäîëüíàÿ è ïîïåðå÷íàÿ êîîðäèíàòû; Bz0 — ôóíêöèÿ ðàñ- ïðåäåëåíèÿ ìàãíèòíîãî ïîëÿ âäîëü îñè z; U0 — óñêîðÿþùåå íàïðÿæåíèå; I — òîê ëèíçû; N — ÷èñëî âèòêîâ; R — ðàäèóñ ëèíçû; �0 — ìàãíèòíàÿ ïîñòîÿííàÿ; v — ñêîðîñòü äâèæåíèÿ ÷àñòèöû; � — óãîë âëåòà ÷àñòèöû; e — çàðÿä ýëåêòðîíà; m — åãî ìàññà. Çàïèñü àëãîðèòìà â âèäå ñèñòåìû óðàâíåíèé (11) íåóäîáíà, òàê êàê íå óêàçàí ïîðÿäîê èñïîëüçîâàíèÿ óðàâíåíèé, êîòîðûé ïðè ðåøåíèè ðåàëüíûõ ôèçè÷åñêèõ çàäà÷ ìîæåò îêàçûâàòü ñóùåñòâåííîå âëèÿíèå íà ñõîäèìîñòü èòåðàöèîííûõ ïðîöåäóð [10]. Ïîýòîìó ïåðåïèøåì ñèñòåìó (11) â èòåðàöèîííîé ôîðìå: z0, B z0, dr dz � � � � � � 0 , � 0, r0 — íà÷àëüíûå çíà÷åíèÿ; z z dzn n� � 1 , B zn � � B zz n( )1 ; dr dz dr dz d r dzn n n � � � � � � �� � � � � � � � �� � � �� 1 2 2 ; � � � n n z n n U B z dz dr dz � � � � � � � 1 0 0 1 1 2 ( ) cos ; r r dr dz dz d r dz dzn n� � � 1 2 2 2 2 ( ) , (12) Àíàëèç âîçìîæíîñòåé èñïîëüçîâàíèÿ ìàòðè÷íûõ ìàêðîîïåðàöèé ñèñòåìû MatLab ISSN 0204–3572. Ýëåêòðîí. ìîäåëèðîâàíèå. 2009. Ò. 31. ¹ 3 47 ãäå n — íîìåð òåêóùåé èòåðàöèè; n 1 — íîìåð ïðåäûäóùåé èòåðàöèè. Òîãäà ñîâîêóïíîñòü ïåðåìåííûõ, âû÷èñëÿåìûõ ñ ïîìîùüþ èòåðàöèîííûõ ñîîòíîøåíèé (12), ëåãêî óïîðÿäî÷èòü â âèäå ñòðîê ìàòðèöû. Ïðè ýòîì èòåðàöèîííàÿ ïðîöåäóðà âû÷èñëåíèé ñâîäèòñÿ ê ñîîòíîøåíèþ (6), à ðå- çóëüòèðóþùàÿ ìàòðèöà áóäåò èìåòü âèä z B z dr dz r z B z dr dz r z z 0 0 0 0 0 0 1 0 1 1 1 1 ( ) ( ) � � � � � � � � � � � � � � � � � � � z B z dr dz rn z n n n n0( ) � � � � � � � � � � � � � � � � � � . (13) Ïðåäñòàâèì ðåêóððåíòíûå ñîîòíîøåíèÿ (12) â âèäå âåêòîðà-ôóíêöèè, ïîñëåäîâàòåëüíî ôîðìèðóþùåãî ñòðîêè ìàòðèöû (13): z B dr dz r z dz INR n z n n n n n! � � ( ) , , , , ( 0 1 0 2 2 � � � � � � � �� � � � � z R dr dz n n � � � � � � � � � � � 1 2 2 3 1) , � � � erB z dz mU U B z dz dr dz z n n z n0 2 1 0 1 0 0 1 8 2 ( ) ( ) cos ! � � � � � � n nr 1 1, È. Â. Ìåëüíèê 48 ISSN 0204–3572. Electronic Modeling. 2009. V. 31. ¹ 3 2 2 4 1 0 0 0 1 2 2 "!2 "!2 # � $% # � &% "!' ( r )10 ì 3 , z, ì y, ì Ìîäåëèðîâàíèå òðàåêòîðèé ýëåêòðîíîâ â êîðîòêîé ìàãíèòíîé ëèíçå ñ èñïîëüçîâàíèåì ïðîãðàììû, ïðèâåäåííîé â ïðèìåðå 14 � � � � � � � � � � dz dr dz erB z dz mUn z n 1 0 2 1 2 016 ( )( ) . (14) Òàêèì îáðàçîì, ðåøåíèå ñèñòåìû óðàâíåíèé (12) ñâîäèòñÿ ê âû÷èñëå- íèþ ñòðîê ðåêóððåíòíîé ìàòðèöû (13) ñ ïîìîùüþ ñîîòíîøåíèé (14). Ïðåäëîæåííàÿ ìåòîäèêà ðàñ÷åòà ðåàëèçîâàíà â ñëåäóþùåì ïðèìåðå, à ðåçóëüòàòû â ãðàôè÷åñêîì âèäå ïðåäñòàâëåíû íà ðèñóíêå. Ïðèìåð 14. I=1; N=1000; mu0=1.26e-6;R=0.05; teta=1.6e-19/9.1e-31;U0=1000; IS=num2str(I); mu0S=num2str(mu0); NS=num2str(N);RS=num2str(R); TetaS=num2str(teta);U0S=num2str(U0);r0=0.001; v=sqrt(2*U0*teta); dzS=’1e-4’;a=0.01; vr=v*sin(a); vz=v*cos(a); vzS=num2str(vz); zS=strcat(‘M(ii-1,1)+’,dzS); BZS=strcat(‘((0.5*’,RS,’^2*’,IS,’*’,NS,’*’,mu0S,’)./’,... ‘(sqrt((M(ii-1,1))^2+’,RS,’^2))^3)’); d2rdzS=strcat(‘0.125*’,TetaS,’*M(ii-1,5)*(M(ii-1,2))^2/’,U0S); drdzS=strcat(‘M(ii-1,3)-(‘,d2rdzS,’)*’,dzS); thetaS=strcat(‘M(ii-1,4)-(0.5*’,dzS,’*’,TetaS,’*M(ii-1,2))/’,vzS); drS=strcat(‘M(ii-1,5)+M(ii-1,3)*’,dzS,’-’,d2rdzS,’)*0.5*’,dzS,’^2’); Vin=[-0.2,0.5*R^2*I*N*mu0*((-0.2)^2+R^2)^(-1.5),vr/vz,0,r0]; funstr=strcat(‘[‘,zS,’,’,BZS,’,’,drdzS,’,’,thetaS,’,’,drS,’]’); Mout=recmat(1,4002,Vin,funstr,1e-10,1e10); Ïî ðåçóëüòàòàì òåñòîâûõ ýêñïåðèìåíòîâ âðåìÿ ðàáîòû ïðîãðàììû, ïðèâåäåííîé â ïðèìåðå 14, ïðèáëèçèòåëüíî â òðè ðàçà ïðåâûøàåò âðåìÿ ðàáîòû àíàëîãè÷íîé ïðîãðàììû, íàïèñàííîé ñ èñïîëüçîâàíèåì îïåðàòîðà öèêëà. Îäíàêî ïðîñòîòà èñõîäíîãî êîäà è âîçìîæíîñòü ýôôåêòèâíîé îò- ëàäêè òàêîé ïðîãðàììû ÿâëÿþòñÿ åå íåîñïîðèìûìè ïðåèìóùåñòâàìè, à âðåìÿ ñ÷åòà íà êîìïüþòåðå êëàññà AMD Duron 800 ÌÃö 256 Ìá ÎÇÓ íå ïðåâûøàåò îäíîé ñåêóíäû. Àíàëèç ðåçóëüòàòîâ èññëåäîâàíèé è ðåêîìåíäàöèè. Ñðåäñòâà ìàò- ðè÷íîãî ïðîãðàììèðîâàíèÿ ïðè ðåøåíèè ðåàëüíûõ çàäà÷ ñðåäíåãî óðîâíÿ ñëîæíîñòè ÿâëÿþòñÿ âïîëíå ïðèåìëåìûìè. Äàæå ñ ó÷åòîì ñëîæíûõ îïå- ðàöèé ñî ñòðîêàìè îòñóòñòâèå ñòðóêòóð äåëàåò ïðîãðàììó ïðîñòîé è ïî- íÿòíîé, à èñïîëüçîâàíèå àðèôìåòèêî-ëîãè÷åñêèõ âûðàæåíèé âèäà (2) ïîç- âîëÿåò ëåãêî ðåàëèçîâûâàòü è âåòâÿùèåñÿ âû÷èñëèòåëüíûå ïðîöåññû. Ðà- çóìååòñÿ, ðåàëèçàöèÿ ðàçðàáîò÷èêîì ðåêóððåíòíûõ âû÷èñëåíèé â öèêëàõ íà óðîâíå ÿäðà ñèñòåìû MatLab çíà÷èòåëüíî ïîâûñèëà áû èõ ýôôåêòèâ- íîñòü, à ïðè ïðîñòîòå ñîîòâåòñòâóþùèõ ëèíãâèñòè÷åñêèõ ñðåäñòâ óïðîñ- òèëñÿ áû è ïðîãðàììíûé êîä. Îäíàêî èñïîëüçîâàíèå ôóíêöèé recvect è Àíàëèç âîçìîæíîñòåé èñïîëüçîâàíèÿ ìàòðè÷íûõ ìàêðîîïåðàöèé ñèñòåìû MatLab ISSN 0204–3572. Ýëåêòðîí. ìîäåëèðîâàíèå. 2009. Ò. 31. ¹ 3 49 recmat ïîçâîëÿåò ââîäèòü íåîáõîäèìîå ÷èñëî ïàðàìåòðîâ äëÿ îãðàíè÷åíèÿ ïðîâîäèìûõ âû÷èñëåíèé íå òîëüêî ïî ÷èñëó èòåðàöèé, íî è ïî ðåçóëü- òàòàì ñõîäèìîñòè èëè ðàñõîäèìîñòè èòåðàöèîííîãî ïðîöåññà. Áûëî ïðîâåäåíî òåñòèðîâàíèå ìàòðè÷íûõ ìåòîäîâ âû÷èñëåíèé íà áîëåå ñëîæíûõ ðåàëüíûõ çàäà÷àõ, â ÷àñòíîñòè íà çàäà÷å òðàíñïîðòèðîâêè ýëåêò- ðîííîãî ïó÷êà èç íèçêîãî â âûñîêèé âàêóóì [8].  ýòîì ñëó÷àå ðåàëèçîâàòü ìàòðè÷íûé ïîäõîä äëÿ âñåé çàäà÷è áûëî ñëîæíî âñëåäñòâèå áîëüøîãî ÷èñëà âõîäíûõ ïàðàìåòðîâ è ñîîòâåòñòâóþùåé ðàçìåðíîñòè ðåçóëüòèðóþùåé ìàò- ðèöû. Îäíàêî ñîâìåùåíèå ìåòîäîâ ìàòðè÷íîãî è ñòðóêòóðíîãî ïðîãðàììè- ðîâàíèÿ ïîçâîëèëî ñîçäàòü äîñòàòî÷íî ïðîñòîé è ýôôåêòèâíûé ïðîãðàì- ìíûé êîä. Ìåòîäèêà íàïèñàíèÿ ïðîãðàìì ñðåäñòâàìè ìàòðè÷íîãî ïðîãðàììèðî- âàíèÿ ìîæåò áûòü ôîðìàëèçîâàíà ñëåäóþùèì îáðàçîì: 1. Ôîðìèðóåòñÿ ñèñòåìà àëãåáðî-äèôôåðåíöèàëüíûõ óðàâíåíèé, àíà- ëîãè÷íàÿ (11). 2. Íà åå îñíîâå ôîðìèðóåòñÿ ñèñòåìà èòåðàöèîííûõ óðàâíåíèé, àíàëî- ãè÷íàÿ (12). 3. Íà îñíîâå ñèñòåìû èòåðàöèîííûõ óðàâíåíèé ôîðìèðóåòñÿ ðåêóð- ðåíòíàÿ ìàòðèöà, àíàëîãè÷íàÿ (13). 4. Äëÿ ïîëó÷åííîé ñèñòåìû èòåðàöèîííûõ óðàâíåíèé è ðåêóððåíòíîé ìàòðèöû ôîðìèðóåòñÿ âåêòîð-ôóíêöèÿ, àíàëîãè÷íàÿ (14). 5. Ïîëó÷åííîå ðåêóððåíòíîå ìàòðè÷íîå óðàâíåíèå, àíàëîãè÷íîå (6), ðåøàåòñÿ ñ èñïîëüçîâàíèåì ïðîöåäóðû recmat. Âîïðîñ, ñâÿçàííûé ñ èçáûòî÷íîñòüþ èñïîëüçóåìîé îïåðàòèâíîé ïà- ìÿòè ïðè ïîñòðîåíèè ìàòðèöû ðåçóëüòàòîâ, ìîæåò áûòü ðåøåí ïóòåì îïòèìèçàöèè àëãîðèòìà è óäàëåíèÿ ñòðîê, íåíóæíûõ äëÿ ïîñëåäóþùèõ âû÷èñëåíèé. Âûâîäû. Ìàòðè÷íûå ìåòîäû ïðîãðàììèðîâàíèÿ óñïåøíî ïðîòåñòèðî- âàíû íà ðÿäå ñòàíäàðòíûõ è îðèãèíàëüíûõ çàäà÷, ÷òî ïîçâîëÿåò ñ áîëüøîé äîñòîâåðíîñòüþ ïðåäïîëàãàòü âîçìîæíîñòü èõ ýôôåêòèâíîãî èñïîëüçîâàíèÿ â êà÷åñòâå ðåàëüíîé àëüòåðíàòèâû ñòðóêòóðíîìó ïðîãðàììèðîâàíèþ. Òåì íå ìåíåå, âîïðîñ îá ýêâèâàëåíòíîñòè ýòèõ äâóõ ïîäõîäîâ ïðè ðåàëèçàöèè ðàç- ëè÷íûõ âû÷èñëèòåëüíûõ àëãîðèòìîâ ïîêà îñòàåòñÿ îòêðûòûì. Îí ìîæåò ñòàòü ïðåäìåòîì îòäåëüíûõ èññëåäîâàíèé â îáëàñòè òåîðèè àëãîðèòìîâ è ïðèêëàäíûõ âîïðîñîâ ïðîãðàììèðîâàíèÿ. Ïðè ââåäåíèè ñ ïîìîùüþ ñîîòâåòñòâóþùèõ ëèíãâèñòè÷åñêèõ ñðåäñòâ ìåõàíèçìîâ íàñëåäîâàíèÿ è ïîëèìîðôèçìà ìåòîäû ìàòðè÷íîãî ïðîãðàì- ìèðîâàíèÿ ìîãóò áûòü ñîâìåùåíû ñ ñîâðåìåííûìè ìåòîäàìè îáúåêòíî- îðèåíòèðîâàííîãî ïðîãðàììèðîâàíèÿ, à èñïîëüçîâàíèå àðèôìåòèêî-ëîãè- ÷åñêèõ âûðàæåíèé ìîæåò ñîñòàâèòü ñåðüåçíóþ àëüòåðíàòèâó ñîâðåìåí- íûì ìåòîäàì è ñðåäñòâàì ëîãè÷åñêîãî ïðîãðàììèðîâàíèÿ. Ïðåäëîæåííàÿ È. Â. Ìåëüíèê 50 ISSN 0204–3572. Electronic Modeling. 2009. V. 31. ¹ 3 ìåòîäèêà ïðîãðàììèðîâàíèÿ îòëè÷àåòñÿ îòíîñèòåëüíîé ïðîñòîòîé è ìî- æåò íàéòè ïðèìåíåíèå ïðè èçó÷åíèè òåîðèè àëãîðèòìîâ, à òàêæå ïðè ðàçðàáîòêå íîâûõ ýôôåêòèâíûõ âû÷èñëèòåëüíûõ ìåòîäîâ. The possibilities of using the vector and matrix macrooperations to realize classical and original algorithms have been analyzed in the paper on the examples of solving the pragmatic program- ming tasks. Some new definitions of the arithmetic-logical expression, recurrent arithmetic-logi- cal expression and vector-function were introduced to explained the basic singularities of the ana- lyzed macrooperations. It is demonstrated on a lot of different examples, that the proposed method can be really considered as an alternative to currently used structured coding for the tasks of middle-level complicity. 1. Äüÿêîíîâ Â. Ï. Matlab 6/6.1/6.5+Simulink 4/5. Ïîëíîå ðóêîâîäñòâî ïîëüçîâàòåëÿ. — Ì. : Ñîëîí-Ïðåññ, 2002. — 768 ñ. 2. Ìàðòûíîâ Í. Í. Ââåäåíèå â Matlab 6. — Ì. : Êóäèö-Îáðàç, 2002. — 352 c. 3. Ìåëüíèê È. Â. Èñïîëüçîâàíèå ìàòðè÷íûõ ìàêðîîïåðàöèé ïðè ðàáîòå â ìàòåìàòè÷åñ- êèõ ÑÀÏÐ íà ïðèìåðå ñèñòåìû MATLAB//Âåñò. Õåðñîíñêîãî ãîñóäàðñòâåííîãî òåõ- íè÷åñêîãî óíèâåðñèòåòà. Âûï. 2 (28). — Õåðñîí, 2007. — Ñ. 199—205. 4. Êíóäò Ä. Èñêóññòâî ïðîãðàììèðîâàíèÿ/Ïåð. ñ àíãë. ïîä îáù. ðåä. Þ.Â. Êîçà÷åíêî. — Ì. : Âèëüÿìñ, 2003. — 560 ñ. 5. Ñýäæâèê Ð. Ôóíäàìåíòàëüíûå àëãîðèòìû íà Ñ++. Àíàëèç. Ñòðóêòóðû äàííûõ. Ñîð- òèðîâêà. Ïîèñê/ Ïåð ñ àíãë. — Ñ-Ïá. : ÎÎÎ «ÄèàÑîôò ÞÏ», 2002. — 688 ñ. 6. Ìýòüþç Ä., Êóðòèñ Ä. ×èñëåííûå ìåòîäû. Èñïîëüçîâàíèå Matlab. — Ì. : Èçä. äîì «Âèëüÿìñ», 2001. — 720 ñ. 7. Ñàìàðñêèé À. À., Ãóëèí À. Â. ×èñëåííûå ìåòîäû. — Ì. : Íàóêà, 1989. — 432 ñ. 8. Ìåëüíèê È. Â. Ìîäåëèðîâàíèå òðàíñïîðòèðîâêè ýëåêòðîííûõ ïó÷êîâ èç îáëàñòè íèç- êîãî â îáëàñòü âûñîêîãî âàêóóìà â ýêâèïîòåíöèàëüíîì êàíàëå// Ýëåêòðîí. ìîäåëèðî- âàíèå. — 2001. — 23, ¹ 4. — Ñ. 82—92. 9. Ìîëîêîâñêèé Ñ. È., Ñóøêîâ À. Ä. Èíòåíñèâíûå ýëåêòðîííûå è èîííûå ïó÷êè. — Ì. : Ýíåðãîàòîìèçäàò, 1991. — 304 ñ. 10. Èëüèíà Â. À., Ñèëàåâ Ï. Ê. ×èñëåííûå ìåòîäû äëÿ ôèçèêîâ-òåîðåòèêîâ. — Ìîñêâà- Èæåâñê : Èíñòèòóò êîìïüþòåðíûõ èññëåäîâàíèé, 2003. — 132 ñ. Ïîñòóïèëà 18.11.08; ïîñëå äîðàáîòêè 25.02.09 ÌÅËÜÍÈÊ Èãîðü Âèòàëüåâè÷, ä-ð òåõí. íàóê, äîöåíò êàôåäðû ýëåêòðîííûõ ïðèáîðîâ è óñòðîéñòâ Íàöèîíàëüíîãî òåõíè÷åñêîãî óíèâåðñèòåòà Óêðàèíû «Êèåâñêèé ïîëèòåõíè÷åñêèé èí-ò», êîòîðûé îêîí÷èë â 1989 ã. Îáëàñòü íàó÷íûõ èññëåäîâàíèé — èçó÷åíèå ñàìîñîãëà- ñîâàííîé ýëåêòðîííî-èîííîé îïòèêè â âûñîêîâîëüòíîì òëåþùåì ðàçðÿäå, ýíåðãåòèêà ãàçî- âîãî ðàçðÿäà è ðàçðÿäíîé ïëàçìû, âçàèìîäåéñòâèÿ ýëåêòðîííûõ è èîííûõ ïó÷êîâ ñ âåùåñòâîì. Àíàëèç âîçìîæíîñòåé èñïîëüçîâàíèÿ ìàòðè÷íûõ ìàêðîîïåðàöèé ñèñòåìû MatLab ISSN 0204–3572. Ýëåêòðîí. ìîäåëèðîâàíèå. 2009. Ò. 31. ¹ 3 51
id nasplib_isofts_kiev_ua-123456789-101492
institution Digital Library of Periodicals of National Academy of Sciences of Ukraine
issn 0204-3572
language Russian
last_indexed 2025-12-01T02:07:21Z
publishDate 2009
publisher Інститут проблем моделювання в енергетиці ім. Г.Є. Пухова НАН України
record_format dspace
spelling Мельник, И.В.
2016-06-03T19:01:51Z
2016-06-03T19:01:51Z
2009
Анализ возможностей использования матричных макроопераций системы MatLab при решении прикладных задач / И.В. Мельник // Электронное моделирование. — 2009. — Т. 31, № 3. — С. 37-51. — Бібліогр.: 10 назв. — рос.
0204-3572
https://nasplib.isofts.kiev.ua/handle/123456789/101492
519.6
На примерах решения практических задач программирования проанализированы возможности использования векторных и матричных макроопераций для реализации классических и оригинальных алгоритмов. Для объяснения основных особенностей этих операций введены новые понятия арифметико-логического выражения, рекуррентного арифметико-логического выражения и вектора-функции. Показано, что при решении задач среднего уровня сложности предложенный подход может стать альтернативой современным методам и средствам структурного программирования.
На прикладах розв’язку практичних задач програмування проаналізовано можливості використання векторних та матричних макрооперацій для реалізації класичних та оригінальних алгоритмів. Для пояснення головних особливостей цих операцій введено нові поняття арифметико-логічного виразу, рекурентного арифметико-логічного виразу та вектора-функції. Показано, що при розв’язуванні задач середнього рівня складності запропонований підхід може стати альтернативою сучасним методам та засобам структурного програмування.
The possibilities of using the vector and matrix macrooperations to realize classical and original algorithms have been analyzed in the paper on the examples of solving the pragmatic programming tasks. Some new definitions of the arithmetic-logical expression, recurrent arithmetic-logical expression and vector-function were introduced to explained the basic singularities of the analyzed macrooperations. It is demonstrated on a lot of different examples, that the proposed method can be really considered as an alternative to currently used structured coding for the tasks of middle-level complicity.
ru
Інститут проблем моделювання в енергетиці ім. Г.Є. Пухова НАН України
Электронное моделирование
Математические методы и модели
Анализ возможностей использования матричных макроопераций системы MatLab при решении прикладных задач
Analysis of Possibilities of Using the Matrix Macrooperations of the MatLab System when Solving the Applied Problems
Article
published earlier
spellingShingle Анализ возможностей использования матричных макроопераций системы MatLab при решении прикладных задач
Мельник, И.В.
Математические методы и модели
title Анализ возможностей использования матричных макроопераций системы MatLab при решении прикладных задач
title_alt Analysis of Possibilities of Using the Matrix Macrooperations of the MatLab System when Solving the Applied Problems
title_full Анализ возможностей использования матричных макроопераций системы MatLab при решении прикладных задач
title_fullStr Анализ возможностей использования матричных макроопераций системы MatLab при решении прикладных задач
title_full_unstemmed Анализ возможностей использования матричных макроопераций системы MatLab при решении прикладных задач
title_short Анализ возможностей использования матричных макроопераций системы MatLab при решении прикладных задач
title_sort анализ возможностей использования матричных макроопераций системы matlab при решении прикладных задач
topic Математические методы и модели
topic_facet Математические методы и модели
url https://nasplib.isofts.kiev.ua/handle/123456789/101492
work_keys_str_mv AT melʹnikiv analizvozmožnosteiispolʹzovaniâmatričnyhmakrooperaciisistemymatlabprirešeniiprikladnyhzadač
AT melʹnikiv analysisofpossibilitiesofusingthematrixmacrooperationsofthematlabsystemwhensolvingtheappliedproblems