####################################### # DIN Sistemi dinamici. Din.componenti = function (X,f) {I=Din.iniziali(X,f); L=list(); for (u in I) {nuova=T; x=Din.omega(u,f); O=Din.orbita(u,f); m=length(L); if (m>0) for (k in 1:m) {C=L[[k]]; if (is.element(x,C)) {L[[k]]=union(C,O); nuova=F; break;}} if (nuova) L=c(L,list(O))}; L} Din.grafo = function (X,f,r=2, cex=0.5,lwd=0.3,punta=0.2, nomi=function (x) x, scambi=c(), rotazioni=function (x) c(0,1)) {n=length(X); t=seq(0,length=n,by=2*pi/n); centri=round(Gf.cerchio(t,r),2) for (k in 1:n) {u=rotazioni(X[k]); centri[k]=G.rot(centri[k],u[1],t=u[2])} m=length(scambi)/2 if (m>0) for (k in 1:m) {x=scambi[2*k-1]; y=scambi[2*k] ix=match(x,X); iy=match(y,X) cx=centri[ix]; centri[ix]=centri[iy]; centri[iy]=cx} t=seq(0,2*pi,by=0.01) cerchio=Gf.cerchio(t,0.2) for (k in 1:n) {polygon(cerchio+centri[k],col="yellow"); text(Re(centri[k]),Im(centri[k]), nomi(X[k]),cex=cex)} par(lwd=lwd) for (x in X) {y=f(x); if (y!=x) Gdf.mezzo(centri[match(x,X)], centri[match(y,X)], punta=punta,d1=0.2,d2=0.2)} for (x in X) if (x==Din.omega(x,f)) lines(cerchio+centri[match(x,X)], col="red",lwd=2)} Din.iniziali = function (X,f) {N=c(); for (x in X) {if (x==Din.omega(x,f)) next N=union(N,setdiff(Din.orbita(x,f),x))} setdiff(X,N)} # Omega(x). Pagina 3. Din.Omega = function (x,f) {Din.orbita(Din.omega(x,f),f)} # omega(x). Pagina 3. Din.omega = function (x,f) {A=c(x) repeat {x=f(x); if (is.element(x,A)) return(x) A=c(A,x)}} # Orbita di x nel sistema dinamico # (X,f). Pagina 1. Din.orbita = function (x,f) {A=c(x) repeat {x=f(x); if (is.element(x,A)) return(A) A=c(A,x)}}