Numer ćw.: | Nazwa wydziału: | Ocena: |
---|---|---|
5 | Wydział Inżynierii Elektrycznej i Komputerowej | |
Grupa stud. / grupa lab. | ||
MiDUE | Nazwa przedmiotu: | |
Data wykonania ćw.: | Metody numeryczne | |
Temat ćw.: | Podpis: | |
Data oddania sprawozdania: | Metoda Monte Carlo | |
16.06.13 | ||
Skład zespołu | ||
Łukasz Kąkol Michał Kurek |
Wstęp
Metodę Monte Carlo wykorzystuje się w celu modelowania matematycznego zbyt złożonych procesów. Ważna rolę w metodzie Monte Carlo pełni losowanie wielkości które charakteryzują proces. Losowanie musi odbywać się zgodnie z rozkładem, który musi być znany.
Kod programu wykonanego w środowisku Matlab:
% Identyfikacja parametrów modelu układu oscylacyjnego 2-go rzędu
Y = @(t,B,w0)(1-exp(-B.*w0.*t)*1./sqrt(1-B.^2).*sin(w0.*t.*sqrt(1-B.^2)+asin(sqrt(1-B.^2))));
t1=0:0.01:4;
B1=0.08;
w1=6;
y = Y(t1,B1,w1);
M = 10^5; % Definiujemy liczbę losowań
beta=rand(1,M)+B1; % Poszukiwanie punktów w odniesieniu do założonych wartości
omega=rand(1,M)+w1;
for t=1:length(t1) % Macierz wartości wyjsciowych
u(:,t) = Y(t-1,beta,omega);
end
for t=1:length(t1) % Macierz błędów modelu
delta(:,t) = u(:,t) - y(t)';
delta1(:,t)=(delta(:,t)).*(delta(:,t));
end
SQR=zeros(M,1); %definiujemy wektor sumy błędów wypełniony zerami
for i=1:M
for k = 1:length(t1)
SQR(i) = SQR(i)+ delta1(i,k);
end
end
mini=SQR(1); %Minimalna wartość sumy kwadratów błędów w losowaniach
for j = 1:M
if(SQR(j)<mini)
mini = SQR(j);
j1 = j;
end
end
% Rysowanie wykresów
plot(t1,y,'o',t1,Y(t1,beta(j1),omega(j1)),'r')
xlabel('t');
ylabel('f(t)');
Otrzymane wyniki