Un parell de fractals senzills amb R

koch

Del temps en que jo estudiava, cap als anys noranta, i els fractals estaven de moda, m’ha quedat el vici de provar de dibuixar-ne cada cop que descobreixo les possibilitats gràfiques d’un nou llenguatge. Vaig començar amb QBasic i amb Autolist (veure una falguera fractal dibuixada punt a punt amb un plotter de plometes des de l’Autocad és una experiència llarga però inoblidable), i he arribat a dibuixar-ne fins i tot amb Scratch. Em quedava pendent l’R, i m’ha sorprès la simplicitat i compacitat dels programes resultants. Per exemple, el floc de neu de Koch:

func<-function (x) {c(x,x+60,x-60,x)}
v0<-func(func(func(func(func(func(0))))))
df=data.frame(dx=cos(v0*pi/180),dy=sin(v0*pi/180))
punts<-cumsum(df)
plot(x=punts$dx,y=punts$dy,type="l",asp=1)

D’acord que fer “func(func(func(func(func(func” és una mica un nyap, però diria que és més clar i potser fins i tot més curt que fer un for, i de fet el que volia fer és un programa compacte. Per la resta, la gràcia és l’enfoc de R cap a objectes sencers que estalvia uns quants for i simplifica molt la sintaxi.

Un altre exemple, una fulla construïda a partir de transformacions afins:

matriu1<-matrix(c(0.7,0.2,-0.1,0.92),2,2)
v1<-c(0.005,0.02)
matriu2<-matrix(c(0,-0.4,0.7,0.05),2,2)
v2<-c(0.06,0.003)
pfinal<-matrix(c(0,0),ncol=1,nrow=2)
f1<-function(v) {matriu1%*%v+v1}
f2<-function(v) {matriu2%*%v+v2}
func<-function(p) {cbind(f1(p),f2(p))}
for (i in 1:19) {pfinal<-func(pfinal)}
plot(x=pfinal[1,],y=pfinal[2,],asp=1,pch=46,axes=FALSE)

fulla

Aquí, a més d’aprofitar l’enfoc a objectes, s’aprofita que R ja pot multiplicar matrius tot sol, cosa que avui en dia no és gran cosa, però comparat amb el QBasic i l’Autolisp és una grans simplificació. Un altre canvi respecte aquell temps és que els llibres d’aleshores (i potser els d’ara) recomanaven fer aquests fractals a partir de transformacions afins aplicades aleatòriament i amb pesos segons les àrees. Ara, la potència de R fa molt més pràctic deixar de banda l’aleatoreïtat i aplicar totes les transformacions a la vegada, doblant el nombre de punts amb cada cicle.

Anuncis

L’aventura de llogar pel nostre compte

Teníem pisos però la cerca de llogaters l’havíem deixada sempre en mans de professionals, i la veritat és que tampoc ens anava malament amb l’agència que ens comercialitzava els pisos, perquè els llogaters que ens trobaven no ens havien donat mai cap problema i perquè ens semblava que de preus en sabien més que nosaltres. L’única pega és que trigaven a llogar, però tampoc teníem gaires referències de si unes setmanes (de vegades algun més) era molt o poc, i ens hi jugàvem massa com per tenir ganes de córrer el risc de canviar d’agència per trobar uns llogaters més ràpid però pitjors.

La cosa no va canviar fins que un primer d’agost teníem un pis buit i l’agència, després de no haver trobat llogater en un mes, plegava per vacances. Amb la perspectiva de tenir el pis buit tot el mes estava clar que no hi perdíem res per posar un anunci i ensenyar-lo, perquè el pitjor que podia passar és que tampoc el lloguéssim i l’agència continués ensenyant-lo el setembre, que és el mateix que hauria passat si no haguéssim fet res. A més, el pis era a la mateixa escala on tenim el despatx i a l’agost jo treballava, de manera que em costava poc aixecar-me de la taula quan convingués per pujar un moment a ensenyar-lo, i encara em feia gràcia.

Vaig fer unes fotos, vaig buscar els portals que vaig trobar per posar l’anunci, vaig assegurar-me que tenia qui em fes el contracte si calia i em vaig posar a rebre visites. Tot i que la mestressa de l’agència m’havia dit abans de marxar de vacances que l’activitat a l’agost era nul·la, en una setmana ja havia trobat llogater al mateix preu que l’agència l’havia estat anunciant, i a més m’hi havia divertit.

Des d’aleshores que cada pis que es queda buit el lloguem pel nostre compte, i no crec que lloguem més car que abans (potser més aviat al contrari) però el que és segur és que lloguem molt abans. I és veritat que em costa passar un setmana de vertigen que no em paga ningú amb visites a totes hores que no em deixen fer res més, però també és veritat que acostumat a treballar de cara a l’ordinador, aquesta setmana parlant amb la gent ve a ser com una setmana de vacances. Potser si cada setmana em passés quaranta hores ensenyant pisos no ho trobaria tan divertit, però una vegada de tant en tant és un bon canvi.