4.2 Òðåõìåðíàÿ ãðàôèêà
4.2.4 Ïå÷àòü, õðàíåíèå è ýêñïîðò èçîáðàæåíèé
Íàïå÷àòàòü èçîáðàæåíèå èç ãðàôè÷åñêîãî îêíà íà ïðèíòåðå, ïîäñîåäèíåííîì ê êîìïüþòåðó, íà êîòîðîì ðàáîòàåò ïîëüçîâàòåëü, íåñëîæíî. Äëÿ ýòîãî äîñòàòî÷íî â ìåíþ ãðàôè÷åñêîãî îêíà âûáðàòü ïîçèöèþ "File", à â îòêðûâøåìñÿ ïîäìåíþ âûáðàòü ïîçèöèþ "Print". Äàëüíåéøèå äåéñòâèÿ òàêæå ñîîòâåòñòâóþò ñòàíäàðòíûì äåéñòâèÿì â ñèñòåìå Windows.
Ïåðåíåñòè èçîáðàæåíèå íà êîìïüþòåð ñ òàêîé æå âåðñèåé MATLAB'a óäàåòñÿ ñîõðàíèâ åãî. Äëÿ ýòîãî íåîáõîäèìî â ìåíþ ãðàôè÷åñêîãî îêíà âûáðàòü ïîçèöèþ "File", à â îòêðûâøåìñÿ ïîäìåíþ ïîçèöèè "Save"èëè "Save as". Ðàçëè÷íûå âåðñèè MATLAB'a ïðåäëàãàþò ðàçëè÷íûå ñïîñîáû ñîõðàíåíèÿ èçîáðàæåíèé: âåðñèè áîëåå ðàííèå ÷åì MATLAB 5.2 èñïîëüçóþò äëÿ ñîõðàíåíèÿ∗.mè∗.matôàéëû, âåðñèÿ MATLAB 5.3 - ∗.m è ∗.f ig ôàéëû. Ïðè îòêðûòèè ýòèõ ∗.f ig ôàéëîâ ñ èñïîëüçîâàíèåì ïîçèöèè ïîäìåíþ "Open"èçîáðàæåíèå ïîÿâëÿåòñÿ â òåêóùåì ãðàôè÷åñêîì îêíå. Äëÿ âîññòàíîâëåíèÿ èçîáðàæåíèÿ èç∗.mè∗.matñëåäóåò âûïîëíèòü ñîîòâåòñòâóþùèé ñöåíàðèé èç∗.môàéëà. Îäíàêî íå âñå âåðñèè MATLAB'a íîðìàëüíî ÷èòàþò ÷óæèå ôàéëû.
Ïðîáëåìû âîçíèêàþò â ñëó÷àå, åñëè Âàì íåîáõîäèìî âêëþ÷èòü èçîáðàæåíèå â îò÷åò. Ïðè íàáîðå îò÷åòà â ðåäàêòîðå MS Word ìîæíî âîñïîëüçîâàòüñÿ ñòàíäàðòíûì øàáëîíîì M-book, ïîñòàâëÿåìûì ñîâìåñòíî ñ ñèñòåìîé MATLAB. Äëÿ èñïîëüçîâàíèÿ äðóãèõ ðåäàêòîðîâ ñëåäóåò ýêñïîðòèðîâàòü èçîáðàæåíèå èñïîëüçóÿ Clipboard ñèñòåìû Windows. Äëÿ ýòîãî íåîáõîäèìî â ìåíþ ãðàôè÷åñêîãî îêíà âûáðàòü ïîçèöèþ "Edit", à â îòêðûâøåìñÿ ïîäìåíþ ïîçèöèþ "Copy Figure".  çàâèñèìîñòè îò óñòàíîâîê ïðîèçâîäèòñÿ êîïèðîâàíèå èçîáðàæåíèÿ â îäíîì èç ôîðìàòîâ "Windows Metafile"èëè
"Windows Bitmap". Ýòè èçîáðàæåíèÿ ìîæíî âîññòàíîâèòü â ëþáîì ãðàôè÷åñêîì ðåäàêòîðå ñ èñïîëüçîâàíèåì ïóíêòà ïîäìåíþ "Paste"ëèáî êîìáèíàöèè êëàâèø Ctrl-v. Äëÿ ôîðìàòà "Windows Metafile"ïðè âîññòàíîâëåíèè èçîáðàæåíèÿ â ðåäàêòîðàõ Paint, Paintbrush, Adobe Photoshop è èì ïîäîáíûõ íàáëþäàåòñÿ èñêàæåíèå
øðèôòîâ â íàäïèñÿõ. Ïðè èñïîëüçîâàíèè ôîðìàòà "Windows Bitmap"øðèôòû ïåðåäàþòñÿ áåç èñêàæåíèé.
Äëÿ óñòàíîâêè ñîîòâåòñòâóþùåãî ôîðìàòà íåîáõîäèìî â ìåíþ ãðàôè÷åñêîãî îêíà âûáðàòü ïîçèöèþ
"File", à â îòêðûâøåìñÿ ïîäìåíþ ïîçèöèþ "Preferences...". Âî âíîâü îòêðûâøåìñÿ îêíå ñëåäóåò
âûáðàòü ñòðàíèöó ñ çàêëàäêîé "Copying Options"è â ðàçäåëå "Clipboard Format"óñòàíîâèòü âûáðàííûé Âàìè ôîðìàò.
5 ×èñëåííîå ðåøåíèå çàäà÷è Êîøè äëÿ îáûêíîâåííûõ äèôôåðåíöèàëüíûõ óðàâíåíèé
 ïàêåòå MATLAB ñóùåñòâóåò íåñêîëüêî âîçìîæíîñòåé ðåøåíèÿ çàäà÷è Êîøè äëÿ îáûêíîâåííûõ
äèôôåðåíöèàëüíûõ óðàâíåíèé: ñòàíäàðòíûå ODE-ðåøàòåëè, ñïåöèàëèçèðîâàííûå ïðîãðàììû èññëåäîâàíèÿ ìîäåëåé óïðàâëÿåìûõ ñèñòåì, ñðåäñòâà èìèòàöèè àíàëîãîâîãî ìîäåëèðîâàíèÿ ñðåäû SIMULINK.
Èçëîæåíèå ñðåäñòâ ñðåäû SIMULINK ìîæåò ÿâëÿåòñÿ ïðåäìåòîì îòäåëüíîãî îáñóæäåíèÿ (ñì., íàïðèìåð, [10], [5]). Äâå ïåðâûå âîçìîæíîñòè ðàññìîòðèì çäåñü ïîäðîáíåå.
5.1 Ñòàíäàðòíûå ODE-ðåøàòåëè.
Ñòàíäàðòíûå ODE-ðåøàòåëè ïðåäñòàâëÿþò ñîáîé ïàêåò ïðîãðàìì, ñîñòîÿùèé èç M-ôóíêöèé:ode45, ode23, ode113, ode15s, ode23s, ode23t, ode23tb, êîòîðûå â äàëüíåéøåì áóäåì îáîçíà÷àòü ÷åðåç solver . Óêàçàííûå ôóíêöèè ðåàëèçóþò ñëåäóþùèå ìåòîäû ðåøåíèÿ ñèñòåì îáûêíîâåííûõ äèôôåðåíöèàëüíûõ óðàâíåíèé
• ode45 îäíîøàãîâûå ÿâíûå ìåòîäû Ðóíãå-Êóòòà 4 è 5 ïîðÿäêà. Ýòîò êëàññè÷åñêèé ìåòîä, ðåêîìåíäóåòñÿ äëÿ íà÷àëüíîé ïðîáû ðåøåíèÿ, îáû÷íî äàåò óäîâëåòâîðèòåëüíûå ðåçóëüòàòû.
• ode23 îäíîøàãîâûå ÿâíûå ìåòîäû Ðóíãå-Êóòòà 2 è 3 ïîðÿäêà. Ïðè óìåðåííûõ òðåáîâàíèÿõ ê òî÷íîñòè ðåøåíèÿ äëÿ íåæåñòêèõ ñèñòåì ìåòîä ìîæåò äàòü âûèãðûø â ñêîðîñòè ðåøåíèÿ.
• ode113 ìíîãîøàãîâûé ìåòîä Àäàìñà-Áàøâîðòà-Ìóëòîíà ïåðåìåííîãî ïîðÿäêà. Ýòîò àäàïòèâíûé ìåòîä ïðèçâàí îáåñïå÷èòü âûñîêóþ òî÷íîñòü ðåøåíèÿ.
• ode15s ìíîãîøàãîâûé ìåòîä ïåðåìåííîãî ïîðÿäêà (îò 1 äî 5). Ýòîò àäàïòèâíûé ìåòîä ïðèçâàí îáåñïå÷èòü âûñîêóþ òî÷íîñòü ðåøåíèÿ äëÿ æåñòêèõ ñèñòåì.
• ode23s îäíîøàãîâûé ìîäèôèöèðîâàííûé ìåòîä Ðîçåíáðîêà 2-ãî ïîðÿäêà. Ïðèçâàí îáåñïå÷èòü âûñîêóþ ñêîðîñòü âû÷èñëåíèé äëÿ æåñòêèõ ñèñòåì ïðè íèçêîé òî÷íîñòè.
• ode23t ìåòîä òðàïåöèé ñ èíòåðïîëÿöèåé. Ìåòîä äàåò õîðîøóþ òî÷íîñòü ïðè ðåøåíèè æåñòêèõ çàäà÷, îïèñûâàþùèõ îñöèëëÿòîðû ñ ïî÷òè ïåðèîäè÷åñêèì âûõîäíûì ñèãíàëîì.
• ode23tb íåÿâíûé ìåòîä Ðóíãå-Êóòòà â íà÷àëüíîé ñòàäèè ðåøåíèÿ è ìåòîä, èñïîëüçóþùèé ôîðìóëû îáðàòíîãî äèôôåðåíöèðîâàíèÿ 2-ãî ïîðÿäêà â ïîñëåäóþùåì. Ïðè íèçêîé òî÷íîñòè äëÿ æåñòêèõ ñèñòåì ýòîò ìåòîä ìîæåò îêàçàòüñÿ ýôôåêòèâíåé, ÷åì ode23s.
Âñå óêàçàííûå ôóíêöèè ïðåäíàçíà÷åíû äëÿ ÷èñëåííîãî ðåøåíèÿ çàäà÷è Êîøè äëÿ ñèñòåì îáûêíîâåííûõ äèôôåðåíöèàëüíûõ óðàâíåíèé âèäà
( dy
dt = f(y, t) y(0) = y0
(4) ãäåy - âåêòîð äëèíûn.
Ðåøàòåëè ode15s, ode23s, ode23t, ode23tb ïðåäíàçíà÷åíû òàêæå äëÿ ðåøåíèÿ çàäà÷è Êîøè äëÿ ñèñòåì îáûêíîâåííûõ äèôôåðåíöèàëüíûõ óðàâíåíèé íåÿâíîãî âèäà
(
M(t)dy
dt = f(y, t) y(0) = y0
(5) ãäåM(t) ìàòðèöà ìàññîâûõ êîýôôèöèåíòîâ. Äëÿ ôóíêöèè ode23s ìàòðèöàM íå äîëæíà çàâèñåòü îò àðãóìåíòàt.
Îáðàùåíèå ê ôóíêöèÿì ÷èñëåííîãî èíòåãðèðîâàíèÿ ìîæåò ïðèíèìàòü ñëåäóþùèå ôîðìû:
[T, Y] = solver(0F un0, tspan, y0)
[T, Y] = solver(0F un0, tspan, y0, options)
[T, Y] = solver(0F un0, tspan, y0, options, p1, p2, ...) [T, Y, T E, Y E, IE] = solver(0F un0, tspan, y0, options, p1, p2, ...)
• F un- èìÿ ôàéëà, â êîòîðîì ïîìåùåíà Ì-ôóíêöèÿ âû÷èñëåíèÿ ïðàâûõ ÷àñòåé ñèñòåìû äèôôåðåíöèàëüíûõ óðàâíåíèé. Îïèñàíèå ýòîé ôóíêöèè ïðèíèìàåò îäíó èç ñëåäóþùèõ ôîðì
f unction f = F un(t, y) (6)
f unction f = F un(t, y, f lag) (7)
f unction f = F un(t, y, f lag, p1, p2, ...) (8)
• tspan âåêòîð çíà÷åíèé ìîìåíòîâ âðåìåíè. Åñëè âåêòîð tspan ñîñòîèò èç äâóõ êîìïîíåíò [t0, tf in], òî ýòè çíà÷åíèÿ âîñïðèíèìàþòñÿ êàê íà÷àëüíîå è ôèíàëüíîå çíà÷åíèå àðãóìåíòà.
Äëÿ âåêòîðà áîëüøåé äëèíû [t0, t1, . . . , tf in], êîìïîíåíòû êîòîðîãî ðàñïîëîæåíû â ïîðÿäêå âîçðàñòàíèÿ èëè óáûâàíèÿ, ðåçóëüòàòû ÷èñëåííîãî èíòåãðèðîâàíèÿ âûäàþòñÿ äëÿ óêàçàííûõ çíà÷åíèé àðãóìåíòà.
• y0 âåêòîð íà÷àëüíûõ çíà÷åíèé.
• options àðãóìåíò çàäàþùèé ïàðàìåòðû äëÿ ÷èñëåííîãî èíòåãðèðîâàíèÿ. Ýòîò àðãóìåíò çàäàåòñÿ ôóíêöèåéodeset, èñïîëüçîâàíèå êîòîðîé áóäåò îáñóæäàòüñÿ íèæå.
• p1, p2, . . . ïðîèçâîëüíûå ïàðàìåòðû, ïåðåäàâàåìûå â ôóíêöèþF un.
• T âåêòîð çíà÷åíèé àðãóìåíòà, äëÿ êîòîðîãî âûäàþòñÿ çíà÷åíèÿ ôóíêöèèy.
• Y ìàòðèöà ðåøåíèé, êàæäàÿ ñòðîêà êîòîðîé ñîîòâåòñòâóåò çíà÷åíèþ àðãóìåíòà, âîçâðàùåííîìó â Y.
• T E, Y E, IE âûõîäíûå ìàòðèöû, â êîòîðûõ âûâîäÿòñÿ çíà÷åíèÿ àðãóìåíòà t, ôóíêöèè y è íîìåðà ñîáûòèÿ ('event') äëÿ ðàáîòû îïöèè ôèêñèðîâàíèÿ ñîáûòèé.
5.2 Ïðîñòåéøèé ïðèìåð ÷èñëåííîãî èíòåãðèðîâàíèÿ.
Ïðåæäå ÷åì ðàçáèðàòü äàëüøå ðàçëè÷íûå âîçìîæíîñòè ðåøåíèÿ çàäà÷ ÷èñëåííîãî èíòåãðèðîâàíèÿ ñèñòåì îáûêíîâåííûõ äèôôåðåíöèàëüíûõ óðàâíåíèé, ïðèâåäåì ïðîñòîé ïðèìåð, êîòîðûé ìîæåò ïîñëóæèòü îáðàçöîì äëÿ ðåøåíèÿ 90% çàäà÷ òàêîãî òèïà.
Áóäåì èñêàòü ðåøåíèå óðàâíåíèÿ Âàí äåð Ïîëÿ
¨
x=−x+ 0.3∗x˙∗(1−x2) ïðè íà÷àëüíûõ óñëîâèÿõ
x(0) = 1; x(0) = 0˙
Ñäåëàåì çàìåíó ïåðåìåííûõy1=xèy2= ˙x. Ïðåîáðàçóåì çàäà÷ó ê âèäó
˙
y1 = y2
˙
y2 = −y1+ 0.3∗y2∗(1−y21) y1(0) = 1
y2(0) = 0
(9)
Äëÿ ýòîé ñèñòåìû ñîçäàäèì ôóíêöèþ âû÷èñëåíèÿ ïðàâûõ ÷àñòåé ñ îïèñàíèåì òèïà 6, ïîìåñòèâ ýòó ôóíêöèþ â ôàéëvanderp.mâ ðàáî÷åé ïàïêå
function f=vanderp(t,x)
% function f=vanderp(t,x)
% right part for VanDerPol equation calculation
% dx1/dt=x2
% dx2/dt=-x1+e*x2*(1-x1 2) f(1,1)=x(2);
f(2,1)=-x(1)+0.3*x(2)*(1-x(1) 2);
Ðåçóëüòàò ïîëó÷èì íàáðàâ â êîìàíäíîì îêíå MATLAB'à êîìàíäó ode45('vanderp',[0,30],[1,0])
 ðåçóëüòàòå òàêîãî îáðàùåíèÿ MATLAB îòêðîåò ãðàôè÷åñêîå îêíî è áóäåò âûâîäèòü â íåãî çàâèñèìîñòü x(t) ïî ìåðå ÷èñëåííîãî èíòåãðèðîâàíèÿ. Ðåçóëüòàò ïðèâåäåí íà ðèñ. 9. Ãðàôèêè ðàçëè÷íûõ êîìïîíåíò âåêòîðà y âûâîäÿòñÿ ðàçëè÷íûìè öâåòàìè. Ìàðêåðàìè îòìå÷åíû òî÷êè, â êîòîðûõ âû÷èñëåíû çíà÷åíèÿ.
Ðèñ. 9: Ðåçóëüòàò äåéñòâèÿ ôóíêöèèode45
×òîáû ïîëó÷èòü ÷èñëåííûå çíà÷åíèÿ ðåøåíèé èñïîëüçóåì îáðàùåíèå [T,Y]=ode45('vanderp',[0,30],[1,0]);
 ýòîì ñëó÷àå èçîáðàæåíèå íà ýêðàíå íå îòîáðàæàåòñÿ, íî â âûõîäíûå ìàññèâûT, Y çàïîëíåíû.
Ñ èõ èñïîëüçîâàíèåì ìîæíî ïîëó÷èòü, íàïðèìåð, ôàçîâûé ïîðòðåò äëÿ íàéäåííîãî ðåøåíèÿ. Äëÿ ýòîãî ïîñòðîèì çàâèñèìîñòüy2îòy1ñ ïîìîùüþ êîìàíäû
plot(Y(:,1),Y(:,2))
Ðåçóëüòàò ïîñòðîåíèÿ ïðèâåäåí íà ðèñ. 10.
Ðèñ. 10: Ôàçîâûé ïîðòðåò ðåøåíèé óðàâíåíèÿ Âàí äåð Ïîëÿ.
Ëþáîïûòñòâóþùåìó ÷èòàòåëþ ñîâåòóþ òàêæå ïîñìîòðåòü çàâèñèìîñòü äëèíû øàãà èíòåãðèðîâàíèÿ îò íîìåðà øàãà. Ýòî íåñëîæíî ñäåëàòü, âûïîëíèâ êîìàíäóplot(dif f(T)). Ïîëó÷åííûé Âàìè ãðàôèê íàãëÿäíî ïðîäåìîíñòðèðóåò ïåðåìåííîñòü øàãà â õîäå ÷èñëåííîãî èíòåãðèðîâàíèÿ. Ïîäîáíûé àâòîìàòèçì â âûáîðå øàãà ìîæåò îêàçàòü ïëîõóþ óñëóãó ïðè èíòåãðèðîâàíèè ñèñòåì ñ ðàçðûâíîé ïðàâîé
÷àñòüþ. Àâòîìàòè÷åñêèé âûáîð øàãà ïðè ÷àñòîì "ïåðåêëþ÷åíèè"ïðèâîäèò "òî÷íûå"ìåòîäû ê íåïîìåðíîìó óâåëè÷åíèþ âðåìåíè âû÷èñëåíèé.