Wstęp do Matlaba

Dokument: pdf (164.8 KB)
  • 3 stron
Opublikowany 2017-07-23 02:19:13

%Podstawy środowiska MATLAB % Orientacja macierzowa środowiska. A=[1,2,3;4,5,6;7,8,9] % Odwołania do elementu macierzy A(2,3) A=A(2,3) % Instrukcja podstawienia powoduje aktualizację rozmiaru obiektu B=(1:9) B=reshape(B,3,3)' % Możliwość dynamicznej zmiany rozmiaru bez konieczności deklaracji rozmiaru C=[B B] C=[B;B] A(4,5)=10 % Nie można się odwoływać do elementu spoza zakresu indeksów A(6,7) % pojawia się informacja o błędzie: ??? Index exceeds matrix dimensions. % Przydatne kreatory tablic A=zeros(5) C=ones(3,6) D=eye(4) E=rand(10,1) F=ones(3)+3*eye(3) % Przeanalizować działanie komend (indeksowanie tablic i operacje tablicowe) C(1,2:3)=-1 E(6:end)=1 F(end,1:end-1)=-1 G=fliplr(F) G=flipud(F) N=numel(F) [G,I]=sort(F) % Działania matematyczne + - / * ./ .* A=B B=A.^2 A+B B-A A*B B*A A.*B B./A % Układy równań A=[6,-1,-2;1,2,0;2,3,-2] b=[-2;5;2] x=A\b % Rozwiązanie układu A*x=b A*x-b % Sprawdzenie – jaki powinien być wynik, a jaki jest % dla innego ciekawego układu równań A=ones(10)+eye(10)*1e-14; b=sum(A,2) x=A\b A*x-b % Skrypty i funkcje % Skrypt - plik tekstowy tworzony w edytorze Matlaba zawierający komendy matlabowskie % poniższe linie napisać w edytorze i zapamiętać w pliku o nazwie skrypt1.m clear all ; close all f=@(x) 2*sin(x).*cos(x); %definicja funkcji anonimowej x=(-pi:pi/100:pi); y=sincos2(x); plot(x,y);hold on plot(x,y,'xb'); pause % program czeka na naciśnięcie dowolnego klawisza hold off plot(x,sincos2(x),'or');grid on; zoom on % i wykonać skrypt pisząc w oknie komend Matlaba jego nazwę: skrypt1 % Funkcja - m-plik definiujący nową funkcję – tworzona w edytorze Matlaba % function [lista parametrów wyjściowych]=fname(lista parametrów wejściowych) % Funkcja wyznaczająca wartość 2sin(x)cos(x) ma być zapamiętana w pliku sincos2.m %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function f=sincos2(x) % tekst jaki pokaze sie po napisaniu komendy "help sincos2" f=2*sin(x).*cos(x); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % utworzyć funkcję i sprawdzić działanie wywołując ją w oknie komend Matlaba % należy pamiętać o podaniu parametrów wejściowych, np. sincos2(3.14), sincos2(pi) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % poniższe linie napisać w edytorze i zapamiętać w pliku o nazwie skrypt2.m f2=@(x,n) n*(sin(x))'*sin(x); x=linspace(0,2*pi,50); mesh(f2(x,3)) mesh(x,x,f2(2*x,5)) % i wykonać naciskając ikonę SAVE&RUN zielonej strzałki w prawo % procedura pomiaru czasu działania dodawania macierzy dwiema metodami (plik sumamac.m) function [czas,czasm]=sumamac(a,b,pmax) if all(size(a)==size(b)) c=zeros(size(a)); tic; for p=1:pmax for i=1:size(a,1) for j=1:size(a,2) c(i,j)=a(i,j)+b(i,j); end end end czas=toc/pmax; tic; for p=1:pmax c=a+b; end czasm=toc/pmax; else disp('Blad rozmiarów macierzy'); end; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % sprawdzić poprawność funkcji wykonując ją w oknie komend Matlaba % pamiętać o parametrach wejściowych i wyjściowych, % np. [c1,c2]=sumamac(rand(20),hilb(20),100) % Skrypt zawierający badania procedury dodawania macierzy w funkcji rozmiaru macierzy % oraz prezentację uzyskanych wyników (skrypt2.m) clear all, close all N=10:10:150; for i=1:size(N,2) a=rand(N(i)); b=hilb(N(i)); if N(i)<80, powtmax=100; elseif N(i)<120, powtmax=50; else powtmax=20;end [czas(i), czasm(i)]=sumamac(a,b,powtmax); end; figure(1);hold off; plot(N,czas);hold on plot(N,czasm,'r') grid on, zoom on % wykonać napisany skrypt i przeanalizować uzyskane wyniki %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Skrypt wyznaczający wpływ zaburzenia danych na wynik odejmowania wektorów % (ilustracja złego uwarunkowania numerycznego zadania) (skrypt3.m) clear all, close all a=rand(10,1); % Utworzenie losowego wektora a b=a+(rand(10,1)-0.5)*1e-8; % Utworzenie wektora b bliskiego a r=a-b; % Odejmowanie liczb bliskich sobie az=a.*(1+2*(rand(10,1)-0.5)*1e-4); % Zaburzanie multiplikatywne a na poziomie 0.01% bz=b+2*(rand(10,1)-0.5)*1e-3*max(b);% Zaburzanie addytywne b na poziomie 0.1% rz=az-bz; % Odejmowanie wektorów zaburzonych bb=rz-r; % Błąd bezwzględny odejmowania bw=(rz-r)./r; % Błąd względny odejmowania figure(1) hold off plot(bb) title('Blad bezwzględny odejmowania') grid on, zoom on figure(2) hold off plot(bw*100) title('Procentowy blad względny odejmowania') grid on; zoom on % wykonać napisany skrypt i przeanalizować uzyskane wyniki %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % generacja liczb losowych - właściwości z=(rand(1000,1)-1/2)*2*0.01; plot(z,'*') sum(z<0.008 & z>0.006) % ok. 100 sum(z<0.004 & z>0.002) % ok. 100 z=randn(1000,1)*0.01; plot(z,'*') sum(z<0.01 & z>-0.01) % ok. 68.27% sum(z<0.02 & z>-0.02) % ok. 95.45% sum(z<0.03 & z>-0.03) % ok. 99.73%

Tagi:
  • Matlaba

Komentarze do: Wstęp do Matlaba • 0