close all; clear all; l_neur=1; %liczba neuronów W=zeros(l_neur,1); %przygotowanie wag początkowych wyjściowych %parametry sieci beta=4; alfa=0.5; gamma=0; rand('state',5); V=0.5-rand(2,l_neur); %losowanie wag początkowych wejściowych Vt=V'; emax=0; l_sek =30; l_pkt_na_s=100; l_pkt =l_sek*l_pkt_na_s; for i=1:1:l_pkt x(i)=i/l_pkt_na_s; fx(i)=2*exp(x(i))^(-0.02*x(i))*sin(x(i)); xsn=[1 x(i)/l_sek]'; for k=1:1:l_neur S(k,i)=1/(1+exp(-beta*Vt(k,:)*xsn)); end y(i)=W'*S(:,i); % wartoś aproksymacji funkcji f_d(x) e(i)=y(i)-fx(i); % błąd aproksymacji if(i==1) W_plot(:,i)=W; W=W-alfa*e(i)*S(:,i); % uczenie wag poczatkowych else W_plot(:,i)=W; W=W-alfa*e(i)*S(:,i)+gamma*(W-W_plot(:,i-1));%zastosowanie momentum end end if(abs(max(e))>abs(min(e))) emax=max(e) else emax=min(e) end RMSE=sqrt(sum(e.^2)/length(x)) plot(x,fx,x,y); title('Zadana funkcja f(x)oraz wartości wyjścia z SN'); xlabel('x'); ylabel('fd(x),f(x)'); legend('fd(x)','f(x)'); figure for(j=1:1:length(W)) plot(x,W_plot(j,:)); hold on; end hold off title('Wartości wag warstwy wyjściowej W'); xlabel('x'); ylabel('Wagi W'); figure plot(x,e); title('Błąd estymacji nieliniowego odwzorowania e'); xlabel('x'); ylabel('e'); figure for(j=1:1:length(W)) plot(x,S(j,:)); hold on; end hold off title('Wartości funkcji aktywacji neuronów typu funkcja sigmoidalna bipolarna S(.)'); xlabel('x'); ylabel('S(.)');