Ëàáîðàòîðíàÿ ðàáîòà 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
0
You can add this document to your study collection(s)
Sign in Available only to authorized usersYou can add this document to your saved list
Sign in Available only to authorized users(For complaints, use another form )