Ëàáîðàòîðíàÿ ðàáîòà 1 Öåëü ðàáîòû: Èçó÷èòü ñèìâîëüíûå è ÷èñëåííûå ìåòîäû ðåøåíèÿ ñè- ñòåì íåëèíåéíûõ óðàâíåíèé ïðè ïîìîùè ïàêåòà MATLAB è ïðàêòè÷åñêè ïðîäåìîíñòðèðîâàòü ïðèîáðåò¼ííûå íàâûêè. Çàäà÷à: Ðåøèòå ñèñòåìó â ñèìâîëüíîì âèäå è ÷èñëåííûì ìåòîäîì: x2 − y − 4 = 0 2x + y = 0 Ðåçóëüòàò ðàñ÷¼òîâ âûâåäèòå â ôàéë result.txt (1) â ñëåäóþùåì âèäå: Ñèñòåìà: ... Ðåøåíèå, ïîëó÷åííîå â ñèìâ. âèäå: x= ... y= ... ×èñëåííîå ðåøåíèå: x= ... y= ... Êîëè÷åñòâî èòåðàöèé: ... Íà÷àëüíûå óñëîâèÿ: x0=..., y0=... Õîä ðàáîòû 1. Çàïóñêàþ ïðîãðàììó Matlab. Íàæàòèåì íà êíîïêó ¾New Script¿ ñîçäàþ íîâûé ñöåíàðèé. Ñîõðàíÿþ åãî ïîä èìåíåì ¾solution_system_of_equation_symbol_method¿. 2. Îáúÿâëÿþ äâå ïåðåìåííûå ¾x¿ è ¾y¿, êîòîðûå ïåðåäàþ êîìàíäå ¾syms()¿ â êà÷åñòâå àðãóìåíòîâ.  ðåçóëüòàòå îíè ïðèîáðåòàþò çíà÷åíèå è èì ïðèñâàèâàåòñÿ ñèìâîëüíûé òèï. 3. Îïðåäåëÿþ äâà óðàâíåíèÿ ïîä èìåíàìè ¾eq1¿ è ¾eq2¿ è òóò æå èíèöèàëèçèðóþ èõ çíà÷åíèÿìè ôóíêöèé èç çàäàíèÿ.  ñëó÷àå âûïîëíåíèÿ ñöåíàðèÿ MATLAB àâòîìàòè÷åñêè îïðåäåëÿåò äëÿ ïåðåìåííûõ ¾eq1¿ 2 è ¾eq2¿ òèï ¾syms¿ è èíèöèàëèçèðóåò èõ çíà÷åíèÿìè èç óêàçàííûõ óðàâíåíèé. 4. Äëÿ íàõîæäåíèÿ êîðíåé ñèñòåìû óðàâíåíèé èñïîëüçóþ êîìàíäó ¾solve()¿ , ïåðåäàþ åé â êà÷åñòâå àðãóìåíòîâ çíà÷åíèÿ ¾eq1¿ è ¾eq2¿ è èíèöèàëèçèðóþ èõ íóëåâûì çíà÷åíèåì ñ ïîìîùüþ êîìàíäû ¾==¿.  ñëó÷àå âûïîëíåíèÿ ñöåíàðèÿ, ïðè ïîìîùè àëãîðèòìà çàëîæåííîãî â îáúåêòå ¾solve¿, MATLAB îñóùåñòâëÿåò íàõîæäåíèÿ âñåõ âîçìîæíûõ êîðíåé ñèñòåìû â ñèìâîëüíîì âèäå è âîçâðàùàåò çíà÷åíèÿ ýòèõ êîðíåé. Ïîñêîëüêó, â ðåçóëüòàòå âûïîëíåíèÿ äàííîé êîìàíäû âîçâðàùàåòñÿ îïðåäåë¼ííîå çíà÷åíèå, ìîæíî ïðèñâîèòü åìó èìÿ.  äàííîì ñëó÷àå ÿ èíèöèàëèçèðóþ ýòèì çíà÷åíèåì ìàññèâ èç äâóõ ïåðåìåííûõ ¾solx¿ è ¾soly¿. 5. Äàëåå äëÿ íàãëÿäíîñòè è äëÿ óäîáñòâà íàõîæäåíèÿ êîðíåé ÷èñëåííûì ìåòîäîì ñòðîþ ãðàôèêè ñîîòâåòñòâóþùèõ ôóíêöèé: (a) Îáúÿâëÿþ ëîêàëüíûå ïåðåìåííûå ¾xx¿ è ¾yy¿. (b) Ñíà÷àëà, ëîêàëüíóþ ïåðåìåííóþ ¾yy¿ èíèöèàëèçèðóþ çíà÷åíèåì ¾xx2 − 4¿ è ïàðàìåòðû ¾xx¿ è ¾yy¿ ïåðåäàþ ôóíêöèè ¾ezplot()¿ â êà÷åñòâå àðãóìåíòîâ. Çàòåì, âêëþ÷àþ êîìàíäó ¾hold¿, ëîêàëüíîé ïåðåìåííîé ¾yy¿ ïðèñâàèâàþ çíà÷åíèå ¾−2∗xx¿ è ñíîâà ïåðåäàþ îáå ïåðåìåííûå ôóíêöèè ¾ezplot()¿.  ðåçóëüòàòå âûïîëíåíèÿ áóäóò ïîñòðîåíû äâà ãðàôèêà ôóíêöèé. (c) Äëÿ ëó÷øåãî ïîíèìàíèÿ ãðàôèêà ñ ïîìîùüþ êîìàíä ¾xlabel()¿, ¾ylabel()¿, ¾text()¿ è ¾title()¿ äîáàâëÿþ íà ãðàôèê ïîäïèñè îñåé è ãðàôèêîâ.  ðåçóëüòàòå ïîëó÷àåòñÿ ëàêîíè÷íûé è íàãëÿäíûé ãðàôèê äâóõ ôóíêöèé, èç êîòîðîãî ìîæíî âûáðàòü àäåêâàòíûå íà÷àëüíûå óñëîâèÿ (ðèñ. 1). 3 Ðèñ. 1: Ãðàôèêè ôóíêöèé 6. Ñ ïîìîùüþ êîìàíäû ¾fopen()¿ ñîçäàþ íîâûé ôàéë ñ ðàñøèðåíèåì ¾txt¿, ïðèñâàèâàþ åìó èìÿ ¾result.txt¿ â êà÷åñòâå àðãóìåíòà è èíèöèàëèçèðóþ ýòèì çíà÷åíèåì ïåðåìåííóþ ¾le1¿. 7.  ñîîòâåòñòâèè ñ çàäàíèåì çàïèñûâàþ â ýòîò ôàéë ñòðîêîâûå äàííûå, êîòîðûå ïåðåäàþ êîìàíäå ¾fprintf()¿ â êà÷åñòâå àðãóìåíòîâ. 8. ×òîáû ðåøèòü óðàâíåíèå â ÷èñëåííîì âèäå íåîáõîäèìî âîñïîëüçîâàòüñÿ êîìàíäîé ¾fsolve()¿. Íî äëÿ íàõîæäåíèÿ êîðíåé ñèñòåìû óðàâíåíèé ýòîé êîìàíäå â êà÷åñòâå àðãóìåíòà íåîáõîäèìî ïåðåäàâàòü ïåðåìåííóþ, êîòîðàÿ ññûëàåòñÿ íà ôóíêöèþ. Ïîñêîëüêó çàäàííàÿ ôóíêöèÿ ïðåäñòàâëÿåò ñîáîé ñèñòåìó óðàâíåíèé, íåîáõîäèìî ñîçäàòü îòäåëüíûé ñöåíàðèé äëÿ ýòîé ôóíêöèè è ïðèñâîèòü åìó èìÿ: 4 (a) Ñîçäàþ íîâûé ñöåíàðèé ñ èìåíåì ¾root2d¿. (b) Îïðåäåëÿþ â íåì ïåðåìåííóþ òèïà ¾function¿ ñ èìåíåì ¾F¿ è çíà÷åíèåì ¾root2d(x)¿. (c) Íèæå èíèöèàëèçèðóþ ìàññèâ ¾F¿ ìàññèâîì ôóíêöèé èç çàäàíèÿ. (d) Ñîõðàíÿþ ñöåíàðèé â áàçîâîì êàòàëîãå MATLAB ñ îñíîâíûì ñöåíàðèåì. 9. ×òîáû íàéòè êîðíè ñèñòåìû ÷èñëåííûì ìåòîäîì íåîáõîäèìî çàäàòü íà÷àëüíûå óñëîâèÿ. Äëÿ ýòèõ öåëåé áóäó èñïîëüçîâàòü êîìàíäó ¾fsolve()¿. Äëÿ ýòîãî, íà ïîñòðîåííîì ãðàôèêå âèçóàëüíî íàõîæó òî÷êè ïåðåñå÷åíèÿ äâóõ ãðàôèêîâ è óêàçûâàþ ïðèáëèæ¼ííûå çíà÷åíèÿ êîîðäèíàò. Èç ãðàôèêîâ âèäíî, ÷òî ñèñòåìà èìååò äâà êîðíÿ, ïîýòîìó áóäåò äâå ïàðû íà÷àëüíûõ óñëîâèé è ñîîòâåòñòâåííî äâà âûçîâà êîìàíäû ¾fsolve()¿ ñ ðàçíûìè íà÷àëüíûìè óñëîâèÿìè. 10. Ïî çàäàíèþ íåîáõîäèìî ïîëó÷èòü èíôîðìàöèþ î êîëè÷åñòâå èòåðàöèé. Äëÿ ýòèõ öåëåé äëÿ êàæäîãî êîðíÿ ñîçäàþ ìàññèâ çíà÷åíèé èç ÷åòûð¼õ ïåðåìåííûõ, â êîòîðîì ïåðå÷èñëÿþ çíà÷åíèÿ êîðíÿ, ìåòêè âûõîäà è âûõîäíûå ïàðàìåòðû. Âûõîäíûå ïàðàìåòðû êîìàíäû ¾fsolve()¿ ïðåäñòàâëÿþò ñîáîé ìàññèâ ¾struct¿, êîòîðûé ñîñòîèò èç ïåðåìåííûõ ðàçëè÷íûõ òèïîâ. Äëÿ ïîëó÷åíèÿ èíôîðìàöèè î êîëè÷åñòâå èòåðàöèé îáðàùàþñü ê ïåðåìåííîé ¾iterations¿ èç ìàññèâà ¾struct¿, êîòîðàÿ âîçâðàùàåò çíà÷åíèå ÷èñëà â íåèçâåñòíîì ôîðìàòå. Èñïîëüçóþ êîìàíäó ¾double()¿ äëÿ ïðåîáðàçîâàíèÿ å¼ â òèï ¾double¿. 11. Çàïèñûâàþ ïîëó÷åííûå ðåçóëüòàòû â ôàéë ¾result.txt¿ â âèäå îïðåäåë¼ííîì çàäàíèåì. 5 12. Çàïóñêàþ íàïèñàííûé ñêðèïò.  ðåçóëüòàòå âûïîëíåíèÿ ñêðèïòà â áàçîâîì êàòàëîãå MATLAB ñîçäà¼òñÿ ôàéë ¾result.txt¿ ñ îòâåòàìè â çàäàííîì âèäå. Âûâîä  ïðîöåññå âûïîëíåíèÿ ëàáîðàòîðíîé ðàáîòû áûëè èçó÷åíû ñèìâîëüíûå è ÷èñëåííûå ìåòîäû ðåøåíèÿ çàäà÷ ïðè ïîìîùè ïàêåòà MATLAB è ïîëó÷åíû ïðàêòè÷åñêèå íàâûêè. Áûëè îñâîåíû: ïîëüçîâàòåëüñêèé èíòåðôåéñ, ñèíòàêñèñ ÿçûêà, îñíîâíûå ïðèíöèïû ðåøåíèÿ ìàòåìàòè÷åñêèõ çàäà÷, îñíîâíûå êîìàíäû, ïðèíöèïû ïîñòðîåíèÿ ãðàôèêîâ è âûâîäà äàííûõ â ôàéëû. Áûëè èçó÷åíû íåêîòîðûå äîïîëíèòåëüíûå âîçìîæíîñòè, â ÷àñòíîñòè äîïîëíåíèÿ ¾Symbolic Math Toolbox¿ è ñèìâîëüíûå ìåòîäû ðåøåíèÿ ñèñòåì íåëèíåéíûõ óðàâíåíèé. Çàäàííàÿ ñèñòåìà óðàâíåíèé ðåøåíà â ñèìâîëüíîì âèäå è ÷èñëåííûì ìåòîäîì, ðåçóëüòàò ðàñ÷¼òîâ âûâåäåí â ôàéë âèäå: Ñèñòåìà: x^2-y-4=0 2x+y=0 Ðåøåíèå, ïîëó÷åííîå â ñèìâ. âèäå: x= 1.2361, -3.2361 y= -2.4721, 6.4721 ×èñëåííîå ðåøåíèå: x= 1.2361, -3.2361 y= -2.4721, 6.4721 Êîëè÷åñòâî èòåðàöèé: Ïðè íàõîæäåíèè ïåðâîãî êîðíÿ: 4 Ïðè íàõîæäåíèè âòîðîãî êîðíÿ: 3 Íà÷àëüíûå óñëîâèÿ: Ïðè íàõîæäåíèè ïåðâîãî êîðíÿ: x0 = -4, y0 = 6 Ïðè íàõîæäåíèè âòîðîãî êîðíÿ: x0 = 1, y0 = -2 6 result.txt è ïðåäñòàâëåíè â Äàëåå ïðåäñòàâëåí ëèñòèíã èòîãîâîé ïðîãðàììû: %Design_by_Medvedev_SS;-) %Declare variable syms x y; %Set the system of eqation eq1 = x^2-y-4; eq2 = 2*x+y; %find the roots by the method "solve" [solx, soly] = solve(eq1==0, eq2==0); %For convenient visualization let's build graphs of the %corresponding functions syms xx, yy = xx.^2-4; ezplot(yy), grid on, hold on, yy = -2*xx; ezplot(yy), hold off, axis ([-6 6 -10 20]); %For better understanding I will create signatures to axes %and to graph xlabel ('x'); ylabel ('y'); text (1, - 7, 'y=-2x \rightarrow', 'FontSize', 16); text (1, 12, 'y=x^2-4 \rightarrow', 'FontSize', 16); title ({'Ãðàôèêè ôóíêöèé:', 'y=x^2-4', 'y=-2x'}); %Convert the result to a format "double" ans1x = double(solx(1)); ans1y = double(soly(1)); ans2x = double(solx(2)); ans2y = double(soly(2)); %Create file "system of equation.txt" file1 = fopen ('result.txt', 'wt'); %Writing data to this file fprintf (file1, 'Ñèñòåìà:\nx^2-y-4=0\n2x+y=0\n\n'); fprintf (file1, 'Ðåøåíèå, ïîëó÷åííîå â ñèìâ. âèäå:\n'); 7 fprintf (file1, 'x = %2.5g, %2.5g \n', ans1x, ans2x); fprintf (file1, 'y = %2.5g, %2.5g \n\n', ans1y, ans2y); %Let's create the another script with our system of equations fun = @root2d; %Define the start conditions xy1 = [-4, 6]; xy2 = [1, -2]; %Solution [ans1, fval1, exitflag1, output1] = fsolve(fun, xy1); [ans2, fval2, exitflag2, output2] = fsolve (fun, xy2); %Writing data fprintf (file1, '×èñëåííîå ðåøåíèå:\n'); fprintf (file1, 'x = %2.5g, %2.5g \n', ans2(1), ans1(1)); fprintf (file1, 'y = %2.5g, %2.5g \n\n', ans2(2), ans1(2)); %Get the information from array of type "struct" and insert him %in the our file i1 = double(output1(1).iterations); i2 = double(output2(1).iterations); fprintf (file1, 'Êîëè÷åñòâî èòåðàöèé:\n'); fprintf (file1, 'Ïðè íàõîæäåíèè ïåðâîãî êîðíÿ - %2.2g \n', i1); fprintf (file1, 'Ïðè íàõîæäåíèè âòîðîãî êîðíÿ - %2.2g \n\n', i2); fprintf (file1, 'Íà÷àëüíûå óñëîâèÿ: \n'); fprintf (file1, 'Ïðè íàõîæäåíèè ïåðâîãî êîðíÿ - x0 '); fprintf (file1, '= %2.2g, y0 = %2.2g\n',xy1(1),xy1(2)); fprintf (file1, 'Ïðè íàõîæäåíèè âòîðîãî êîðíÿ - x0 '); fprintf (file1, '= %2.2g, y0 = %2.2g',xy2(1),xy2(2)); 8