11. cvičení z předmětu PPEL - MATLAB x=0:0.01:5; % vektor x obsahující řadu čísel od 0 do 5 s krokem 0.01 y=sin2x2(x); % funkce sin2x2.m % viz http://home.zcu.cz/~lsroubov/PPEL % pro vstupní hodnoty x vrací vypočtené % funkční hodnoty y=(sin(x.^2)).^2 plot(x,y) % vykreslení dvourozměrného grafu funkce (sin(x.^2)).^2 x=0:0.01:5; % vektor x obsahující řadu čísel od 0 do 5 s krokem 0.01 plot(x,sin2x2(x)) % vykreslení dvourozměrného grafu funkce (sin(x.^2)).^2 % sin2x2 - funkce uložena v m-file sin2x2.m % viz http://home.zcu.cz/~lsroubov/PPEL % pro vstupní hodnoty x vrací vypočtené % funkční hodnoty y=(sin(x.^2)).^2 fplot(@sin2x2,[0,5]) % vykreslí průběh funkce dané v m-file sin2x2.m % v zadaném rozsahu osy x, tj. od 0 do 5 fplot(@cos,[0,2*pi]) % vykreslí průběh funkce cos(x) % v zadaném rozsahu osy x, tj. od 0 do 2*pi fplot(@cos,[0,5/2*pi]) % vykreslí průběh funkce cos(x) % v zadaném rozsahu osy x, tj. od 0 do 5/2*pi % ------------------------------------------------ % výpočet integrálu - nimerická integrace % quad(@název funkce, dolní mez, horní mez) % ------------------------------------------------ quad(@cos,0,2*pi) % výpočet integrálu z cos(x)dx v mezích od 0 do 2*pi % výsledek uložen do proměnné ans ans = -4.0143e-009 quad(@cos,0,pi/2) % výpočet integrálu z cos(x)dx v mezích od 0 do pi/2 ans = 1.0000 quad(@cos,0,5/2*pi) % výpočet integrálu z cos(x)dx v mezích od 0 do 5/2*pi ans = 1.0000 quad(@sin2x2,0,5) % výpočet integrálu z funkce sin2x2 v mezích od 0 do 5 % funkce, jejíž integrál je hledán, je uložena v m-file sin2x2.m % viz http://home.zcu.cz/~lsroubov/PPEL ans = 2.2852 quad(@sin2x2,0,10) % výpočet integrálu z funkce sin2x2 v mezích od 0 do 10 % funkce, jejíž integrál je hledán, je uložena v m-file sin2x2.m % viz http://home.zcu.cz/~lsroubov/PPEL ans = 4.7894 integ=quad(@sin2x2,0,10) % výpočet integrálu z funkce sin2x2 v mezích od 0 do 10 % výsledek uložen do proměnné integ % funkce, jejíž integrál je hledán, je uložena v m-file sin2x2.m % viz http://home.zcu.cz/~lsroubov/PPEL integ = 4.7894 Integral_1 % funkce Integral_1.m % viz http://home.zcu.cz/~lsroubov/PPEL % výpočet integrálu funkce cos(x) v mezích od 0 do 5/2*pi a zobrazení jeho průběhu Integral z cos(x) v mezich od 0 do 5/2*pi je 1.000. Integral_2 % funkce Integral_2.m % viz http://home.zcu.cz/~lsroubov/PPEL % výpočet integrálu funkce (sin(x.^2)).^2 v mezích od 0 do 5 a zobrazení jeho průběhu % integrovana funkce (sin(x.^2)).^2 uvedena v m-file s nazvem sin2x2.m Integral z sin2x2 v mezich od 0 do 5 je 2.285. Integral_2 % funkce Integral_2.m % viz http://home.zcu.cz/~lsroubov/PPEL % výpočet integrálu funkce (sin(x.^2)).^2 v mezích od 0 do 5 a zobrazení jeho průběhu % integrovaná funkce (sin(x.^2)).^2 uvedena v m-file s nazvem sin2x2.m % přidán příkaz pause, aby se graf zavřel samostatně po stisknutí libovolné klávesy Integral z sin2x2 v mezich od 0 do 5 je 2.285. Pro zavreni grafu stiskni klavesu ... % ------------------------------------------------ % řešení diferenciálních rovnic % ode45(@název, časovy interval, počáteční podmínka) % ------------------------------------------------ [t,proud]=ode45(@RLobvod,[0,0.1],0) % řeší diferenciální rovnici sériového obvodu R,L s konstantním % zdrojem napětí danou v m-file RLobvod.m % v časovem intervalu od 0 do 1 s počáteční podmínkou i(0)=0 % výsledkem je [t,proud], tj. pro každý čas t z čas.intervalu je vypočten proud t = 0 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0001 0.0001 0.0001 0.0002 0.0003 0.0005 0.0006 0.0008 0.0012 0.0016 0.0020 0.0024 0.0029 0.0033 0.0038 0.0043 0.0049 0.0054 0.0060 0.0066 0.0073 0.0079 0.0086 0.0093 0.0101 0.0109 0.0117 0.0125 0.0135 0.0145 0.0155 0.0165 0.0178 0.0191 0.0203 0.0216 0.0233 0.0249 0.0266 0.0283 0.0306 0.0329 0.0352 0.0375 0.0400 0.0425 0.0450 0.0475 0.0494 0.0513 0.0531 0.0550 0.0569 0.0588 0.0607 0.0625 0.0647 0.0669 0.0691 0.0713 0.0737 0.0760 0.0784 0.0808 0.0830 0.0852 0.0874 0.0896 0.0914 0.0933 0.0951 0.0970 0.0978 0.0985 0.0993 0.1000 proud = 0 0.0001 0.0001 0.0002 0.0002 0.0005 0.0007 0.0010 0.0012 0.0025 0.0037 0.0049 0.0062 0.0124 0.0184 0.0245 0.0304 0.0590 0.0858 0.1110 0.1347 0.1885 0.2344 0.2735 0.3069 0.3406 0.3685 0.3914 0.4104 0.4287 0.4433 0.4549 0.4641 0.4726 0.4792 0.4841 0.4878 0.4912 0.4937 0.4954 0.4966 0.4978 0.4985 0.4990 0.4993 0.4996 0.4998 0.4998 0.4999 0.5000 0.5000 0.5000 0.5000 0.5000 0.5001 0.5000 0.4999 0.5002 0.5002 0.4999 0.4997 0.5000 0.5001 0.5000 0.4999 0.5000 0.5001 0.5000 0.4999 0.5001 0.5001 0.5000 0.4999 0.5002 0.5003 0.4999 0.4997 0.5002 0.5004 0.4999 0.4996 0.5000 0.5001 0.4999 0.4998 0.4998 0.4999 0.4999 0.4999 plot(t,proud) % vykreslení grafu - řešení dif. rovnice RL_reseni % funkce RL_reseni.m % viz http://home.zcu.cz/~lsroubov/PPEL % Řešení sériového obvodu R,L s konstantním zdrojem napětí, % diferenciální rovnice obvodu dána v m-file RLobvod.m [t,proud]=ode45(@RLCobvod,[0,0.1],[0,100/0.5]) % řeší diferenciální rovnici 2.řádu sériového obvodu R,L,C % s konstantním zdrojem napětí danou v m-file RLCobvod.m % v časovem intervalu od 0 do 1 s počáteční % podmínkou i(0)=0, i'(0)=Uo/L=100/0.5; % výsledkem je [t,proud], tj. pro každý čas t z čas.intervalu je % vypočten proud a jeho derivace (proměnná proud je matice s 2 sloupci) t = 0 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0001 0.0001 0.0001 0.0002 0.0003 0.0005 0.0006 0.0008 0.0011 0.0014 0.0018 0.0021 0.0024 0.0027 0.0030 0.0033 0.0036 0.0040 0.0043 0.0046 0.0050 0.0053 0.0056 0.0059 0.0062 0.0065 0.0068 0.0071 0.0074 0.0077 0.0080 0.0083 0.0087 0.0090 0.0093 0.0096 0.0100 0.0103 0.0106 0.0109 0.0112 0.0115 0.0118 0.0121 0.0124 0.0128 0.0131 0.0134 0.0137 0.0140 0.0143 0.0146 0.0149 0.0152 0.0156 0.0159 0.0162 0.0165 0.0168 0.0171 0.0174 0.0177 0.0181 0.0184 0.0187 0.0190 0.0193 0.0196 0.0199 0.0202 0.0205 0.0209 0.0212 0.0215 0.0218 0.0221 0.0224 0.0227 0.0231 0.0234 0.0237 0.0240 0.0243 0.0246 0.0249 0.0252 0.0256 0.0259 0.0262 0.0265 0.0268 0.0272 0.0275 0.0278 0.0281 0.0284 0.0287 0.0291 0.0294 0.0297 0.0300 0.0303 0.0306 0.0310 0.0313 0.0316 0.0320 0.0323 0.0326 0.0330 0.0333 0.0336 0.0339 0.0342 0.0345 0.0348 0.0352 0.0356 0.0360 0.0364 0.0368 0.0371 0.0375 0.0378 0.0381 0.0385 0.0388 0.0391 0.0394 0.0397 0.0400 0.0403 0.0407 0.0410 0.0414 0.0417 0.0421 0.0424 0.0428 0.0431 0.0434 0.0437 0.0441 0.0444 0.0447 0.0450 0.0453 0.0456 0.0459 0.0463 0.0466 0.0470 0.0474 0.0477 0.0481 0.0484 0.0487 0.0491 0.0494 0.0497 0.0500 0.0503 0.0506 0.0509 0.0512 0.0516 0.0519 0.0523 0.0526 0.0530 0.0533 0.0537 0.0540 0.0543 0.0546 0.0549 0.0552 0.0555 0.0558 0.0561 0.0565 0.0568 0.0572 0.0575 0.0579 0.0582 0.0586 0.0589 0.0592 0.0595 0.0599 0.0602 0.0605 0.0608 0.0611 0.0615 0.0618 0.0622 0.0625 0.0629 0.0632 0.0636 0.0640 0.0643 0.0647 0.0650 0.0653 0.0657 0.0661 0.0665 0.0669 0.0673 0.0677 0.0681 0.0686 0.0690 0.0694 0.0698 0.0702 0.0706 0.0711 0.0715 0.0720 0.0724 0.0730 0.0735 0.0740 0.0745 0.0751 0.0756 0.0761 0.0766 0.0772 0.0777 0.0783 0.0789 0.0796 0.0804 0.0812 0.0819 0.0825 0.0832 0.0838 0.0844 0.0854 0.0863 0.0873 0.0882 0.0890 0.0898 0.0905 0.0913 0.0923 0.0933 0.0942 0.0952 0.0964 0.0976 0.0988 0.1000 proud = 0 200.0000 0.0001 199.9799 0.0001 199.9598 0.0002 199.9397 0.0002 199.9196 0.0005 199.8190 0.0007 199.7184 0.0010 199.6176 0.0012 199.5168 0.0025 199.0117 0.0037 198.5047 0.0049 197.9959 0.0062 197.4852 0.0124 194.9045 0.0184 192.2797 0.0244 189.6123 0.0303 186.9038 0.0586 172.8006 0.0846 157.9063 0.1081 142.4120 0.1292 126.5010 0.1648 93.0958 0.1896 60.1079 0.2039 28.8144 0.2085 0.1982 0.2047 -23.9390 0.1941 -44.4084 0.1777 -60.8876 0.1569 -73.2632 0.1310 -82.0071 0.1031 -86.3274 0.0744 -86.5938 0.0463 -83.2951 0.0208 -77.3096 -0.0025 -69.1321 -0.0229 -59.3408 -0.0400 -48.4838 -0.0526 -37.9916 -0.0622 -27.4387 -0.0687 -17.1775 -0.0722 -7.4970 -0.0731 1.9593 -0.0711 10.2313 -0.0668 17.1484 -0.0606 22.6227 -0.0523 26.8177 -0.0430 29.3975 -0.0330 30.4548 -0.0230 30.1357 -0.0136 28.6932 -0.0047 26.3293 0.0032 23.2479 0.0100 19.6485 0.0154 15.9745 0.0196 12.1773 0.0227 8.4017 0.0246 4.7695 0.0256 1.2182 0.0255 -1.9576 0.0244 -4.6816 0.0226 -6.9087 0.0202 -8.5709 0.0174 -9.7435 0.0143 -10.4412 0.0111 -10.6944 0.0076 -10.5258 0.0043 -9.9702 0.0013 -9.0966 -0.0015 -7.9761 -0.0038 -6.7472 -0.0056 -5.4230 -0.0071 -4.0624 -0.0081 -2.7159 -0.0088 -1.3801 -0.0090 -0.1517 -0.0089 0.9345 -0.0084 1.8556 -0.0078 2.5509 -0.0069 3.0854 -0.0060 3.4591 -0.0049 3.6778 -0.0037 3.7516 -0.0025 3.6691 -0.0013 3.4528 -0.0003 3.1270 0.0007 2.7362 0.0014 2.2924 0.0021 1.8180 0.0026 1.3334 0.0029 0.8420 0.0031 0.3774 0.0032 -0.0452 0.0031 -0.4153 0.0029 -0.7096 0.0027 -0.9461 0.0023 -1.1230 0.0020 -1.2413 0.0016 -1.3062 0.0011 -1.3112 0.0007 -1.2634 0.0003 -1.1712 -0.0000 -1.0492 -0.0003 -0.9031 -0.0006 -0.7411 -0.0008 -0.5710 -0.0010 -0.3950 -0.0011 -0.2249 -0.0011 -0.0668 -0.0011 0.0747 -0.0011 0.1908 -0.0010 0.2869 -0.0009 0.3617 -0.0008 0.4152 -0.0006 0.4495 -0.0005 0.4615 -0.0003 0.4535 -0.0002 0.4282 -0.0000 0.3881 0.0001 0.3371 0.0002 0.2786 0.0003 0.2159 0.0003 0.1537 0.0004 0.0931 0.0004 0.0363 0.0004 -0.0151 0.0004 -0.0576 0.0004 -0.0932 0.0003 -0.1214 0.0003 -0.1420 0.0002 -0.1576 0.0002 -0.1618 0.0001 -0.1560 0.0000 -0.1419 -0.0000 -0.1242 -0.0001 -0.1032 -0.0001 -0.0803 -0.0001 -0.0567 -0.0001 -0.0355 -0.0001 -0.0155 -0.0001 0.0027 -0.0001 0.0186 -0.0001 0.0311 -0.0001 0.0412 -0.0001 0.0487 -0.0001 0.0537 -0.0001 0.0565 -0.0000 0.0563 -0.0000 0.0537 -0.0000 0.0490 0.0000 0.0427 0.0000 0.0353 0.0000 0.0273 0.0000 0.0190 0.0000 0.0117 0.0000 0.0047 0.0000 -0.0016 0.0000 -0.0070 0.0000 -0.0113 0.0000 -0.0148 0.0000 -0.0173 0.0000 -0.0190 0.0000 -0.0198 0.0000 -0.0197 0.0000 -0.0186 0.0000 -0.0168 -0.0000 -0.0145 -0.0000 -0.0118 -0.0000 -0.0089 -0.0000 -0.0060 -0.0000 -0.0034 -0.0000 -0.0011 -0.0000 0.0011 -0.0000 0.0029 -0.0000 0.0043 -0.0000 0.0054 -0.0000 0.0062 -0.0000 0.0067 -0.0000 0.0070 -0.0000 0.0069 -0.0000 0.0065 -0.0000 0.0058 0.0000 0.0050 0.0000 0.0041 0.0000 0.0031 0.0000 0.0021 0.0000 0.0012 0.0000 0.0003 0.0000 -0.0004 0.0000 -0.0010 0.0000 -0.0015 0.0000 -0.0019 0.0000 -0.0022 0.0000 -0.0024 0.0000 -0.0024 0.0000 -0.0024 0.0000 -0.0023 0.0000 -0.0020 -0.0000 -0.0018 -0.0000 -0.0014 -0.0000 -0.0011 -0.0000 -0.0007 -0.0000 -0.0004 -0.0000 -0.0001 -0.0000 0.0001 -0.0000 0.0004 -0.0000 0.0005 -0.0000 0.0007 -0.0000 0.0008 -0.0000 0.0008 -0.0000 0.0009 -0.0000 0.0008 -0.0000 0.0008 0.0000 0.0007 0.0000 0.0006 0.0000 0.0004 0.0000 0.0003 0.0000 0.0002 0.0000 0.0001 0.0000 -0.0000 0.0000 -0.0001 0.0000 -0.0002 0.0000 -0.0002 0.0000 -0.0003 0.0000 -0.0003 0.0000 -0.0003 0.0000 -0.0003 -0.0000 -0.0002 -0.0000 -0.0002 -0.0000 -0.0001 -0.0000 -0.0001 -0.0000 -0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0001 -0.0000 0.0001 -0.0000 0.0001 -0.0000 0.0001 -0.0000 0.0001 0.0000 0.0001 0.0000 0.0001 0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000 -0.0000 -0.0000 -0.0000 -0.0000 0.0000 plot(t,proud) % vykreslení grafu - řešení dif. rovnice % proud a jehho derivace v jednom grafu plot(t,proud(:,1)) % vykreslení grafu - pouze 1. sloupec matice proud, % tj. proud procházející obvodem plot(t,proud(:,2)) % vykreslení grafu - pouze 2. sloupec matice proud, % tj. derivace proudu RLC_reseni % funkce RLC_reseni.m % viz http://home.zcu.cz/~lsroubov/PPEL % Řešení sériového obvodu R,L,C s konstantním zdrojem napětí, % diferenciální rovnice obvodu dána v m-file RLCobvod.m % ---------------------------------- % Některé další operace s maticemi % ---------------------------------- A=[0:3;-2:1;1:4] A = 0 1 2 3 -2 -1 0 1 1 2 3 4 A' % transpozice ans = 0 -2 1 1 -1 2 2 0 3 3 1 4 rot90(A) % otočení matice A o 90 stupňů ans = 3 1 4 2 0 3 1 -1 2 0 -2 1 rot90(A,2) % otočení matice A o 2*90 stupňů, tj. o 180 stupňů ans = 4 3 2 1 1 0 -1 -2 3 2 1 0 rot90(A,3) % otočení matice A o 3*90 stupňů, tj. o 270 stupňů ans = 1 -2 0 2 -1 1 3 0 2 4 1 3 rot90(A,4) % otočení matice A o 4*90 stupňů, tj. o 360 stupňů, tj. A ans = 0 1 2 3 -2 -1 0 1 1 2 3 4 all(A) % jsou - li prvky ve sloupcích matice A nenulové % výsledek: 1. sloupec matice A obsahuje 0 - nepravda 2. sloupec matice A neobsahuje 0 - pravda 3. sloupec matice A obsahuje 0 - nepravda 4. sloupec matice A neobsahuje 0 - pravda ans = 0 1 0 1 all(A,2) % jsou - li prvky v řádcích matice A nenulové % výsledek: 1. řádek matice A obsahuje 0 - nepravda 2. řádek matice A obsahuje 0 - nepravda 3. řádek matice A neobsahuje 0 - pravda ans = 0 0 1 all(A,3) % jsou - li prvky v matici A nenulové % výsledek pro jednotlivé prvky pravda/nepravda ans = 0 1 1 1 1 1 0 1 1 1 1 1 any(A) % je - li některý sloupec matice A nenulový % výsledek: 1. sloupec matice A není nulový vektor - pravda 2. sloupec matice A není nulový vektor - pravda 3. sloupec matice A není nulový vektor - pravda 4. sloupec matice A není nulový vektor - pravda ans = 1 1 1 1 any(A,2) % je - li některý řádek matice A nenulový % výsledek: 1. řádek matice A není nulový vektor - pravda 2. řádek matice A není nulový vektor - pravda 3. řádek matice A není nulový vektor - pravda ans = 1 1 1 A(4,:)=[0,0,0,0] % přídání 4. řádku k matici A A = 0 1 2 3 -2 -1 0 1 1 2 3 4 0 0 0 0 any(A,2) % je - li některý řádek matice A nenulový % výsledek: 1. řádek matice A není nulový vektor - pravda 2. řádek matice A není nulový vektor - pravda 3. řádek matice A není nulový vektor - pravda 4. řádek matice A je nulový vektor - nepravda ans = 1 1 1 0 any(A,3) % je - li některý prvek matice A nenulový % výsledek pro jednotlivé prvky pravda/nepravda ans = 0 1 1 1 1 1 0 1 1 1 1 1 0 0 0 0 v=7 % přiřazení 7 do proměnné v v = 7 isreal(v) % je v reálné číslo? ans = % odpověď pravda 1 isprime(v) % je v prvočíslo? ans = % odpověď pravda 1 w=10 w = 10 isreal(w) % je w reálné číslo? ans = % odpověď pravda 1 isprime(w) % je w prvočíslo? ans = % odpověď nepravda 0 primes(30) % generuje prvočísla do zadaného čísla ans = 2 3 5 7 11 13 17 19 23 29 c=-3+i c = -3.0000 + 1.0000i isreal(c) % je c reálné číslo? ans = % odpověď nepravda 0 ~isreal(c) % není c reálné číslo? (~ negace) ans = % odpověď pravda 1 % -------------------------------------------- % Symbolic Math Toolbox - nadstavba MATLABu % Toolbox pro symbolické výpočty % -------------------------------------------- x=sym('x') % vytvoření symbolické proměnné x % viz Workspace x = x A=[sin(x),cos(x);-cos(x),-sin(x)] % vytvoření matice funkcí A = [ sin(x), cos(x)] [ -cos(x), -sin(x)] d=diag(A) % diagonála matice A d = sin(x) -sin(x) int(sin(x)) % integrace funkce sin (x - symbolická proměnná) ans = -cos(x) int(cos(x)) % integrace funkce cos (x - symbolická proměnná) ans = sin(x) int(x^2*sin(x)) % integrace funkce x^2*sin(x) (x - symbolická proměnná) ans = -x^2*cos(x)+2*cos(x)+2*x*sin(x) diff(sin(x)) % derivace funkce sin (x - symbolická proměnná) ans = cos(x) diff(cos(x)) % derivace funkce cos (x - symbolická proměnná) ans = -sin(x) diff(x^2*sin(x)) % derivace funkce x^2*sin(x) (x - symbolická proměnná) ans = 2*x*sin(x)+x^2*cos(x) diff(exp(x)) % derivace funkce e na x (x - symbolická proměnná) ans = exp(x) diff(5*exp(x)) % derivace funkce 5e na x (x - symbolická proměnná) ans = 5*exp(x) diff(5*exp(5*x)) % derivace funkce 5e na 5x (x - symbolická proměnná) ans = 25*exp(5*x) dsolve('Dx = -2*x') % řešení diferenciální rovnice x'=-2x ans = C1*exp(-2*t) dsolve('Dx = -2*x','x(0)=1') % řešení diferenciální rovnice x'=-2x % s počáteční podmínkou x(0)=1 ans = exp(-2*t) dsolve('(Dy)^2 + y^2 = 1','y(0) = 0') % řešení diferenciální rovnice ans = -sin(t) sin(t)