20.07.2013 Views

Software matematic

Software matematic

Software matematic

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

40 Introducere în MATLAB<br />

Sursa MATLAB 1.6 Funct¸ia koch<br />

function koch(pl,pr,level)<br />

%KOCH Curba Koch generata recursiv.<br />

% Apel KOCH(PL, PR, LEVEL) unde punctele PL s¸i PR<br />

% sunt extremitatea stângă s¸i dreaptă<br />

% LEVEL este nivelul de recursivitate.<br />

if level == 0<br />

plot([pl(1),pr(1)],[pl(2),pr(2)]); % Uneste pl si pr.<br />

hold on<br />

else<br />

A = (sqrt(3)/6)*[0 1; -1 0]; % matrice rot./scal.<br />

end<br />

pmidl = (2*pl + pr)/3;<br />

koch(pl,pmidl,level-1) % ramura stanga<br />

ptop = (pl + pr)/2 + A*(pl-pr);<br />

koch(pmidl,ptop,level-1) % ramura stanga-mijloc<br />

pmidr = (pl + 2*pr)/3;<br />

koch(ptop,pmidr,level-1) % ramura mijloc<br />

koch(pmidr,pr,level-1) % ramura dreapta<br />

for k = 1:4<br />

subplot(2,2,k)<br />

koch(pl,pr,k)<br />

axis(’equal’)<br />

title([’Koch curve: level = ’,num2str(k)],’FontSize’,16)<br />

end<br />

hold off<br />

Apelând koch cu perechi de puncte echidistante situate pe cercul unitate se<br />

obt¸ine o curbă numită fulgul de zăpadă al lui Koch (Koch’s snowflake). Codul este<br />

dat în sursa 1.7. Funct¸ia snowflake acceptă la intrare numărul de laturi edges<br />

s¸i nivelul de recursivitate level. Valorile implicite ale acestor parametrii sunt 7 s¸i<br />

respectiv 4. În figura 1.2 se dau două exemple.<br />

Pentru alte exemple de recursivitate, a se vedea funct¸iile MATLAB quad s¸i<br />

quadl s¸i sursele din sect¸iunile ?? s¸i ??, utilizate pentru integrarea numerică.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!