You are on page 1of 9

Fractali generaţi de metoda lui Newton

1. Cazul real.
Rezolvarea numerică a ecuaţiei f(z)=z3-1=0 prin metoda tangentei (metoda lui Newton),
cu z număr complex, conduce la studiul recurenţei zn+1=F(zn) cu F(z)=z-f(z)/f’(z)=(2z3+1)/(3z2).
Dacă z0=x0+0i este real, atunci şirul (zn) este real şi comportarea lui poate fi ilustrată cu
următorul program:
import java.awt.*;
public class RNewton extends GraphicFrame{
double F(double x){
return (2.0*x*x*x+1.0)/(3.0*x*x);
}
public void deseneaza(){
double xmin=-10.0;
double xmax=10.0;
double ymin=-10.0;
double ymax=10.0;
double x,y,xv,yv,xp,xn;
int i,j,k;
setXminXmaxYminYmax(xmin,xmax,ymin,ymax);
setLine(xmin,0,xmax,0);
setLine(0,ymin,0,ymax);
int imin=0,imax=getWidth(),jmin=0,jmax=getHeight();
setLine(xmin,xmin,xmax,xmax);
setAxis();
int i0=getI(0.0);

setColor(Color.yellow);
xv=getX(imin);
yv=F(xv);
for(i=imin;i<i0;i++){
x=getX(i);
y=F(x);
setLine(xv,yv,x,y);
xv=x;
yv=y;
}
xv=getX(i0+1);
yv=F(xv);
for(i=i0+2;i<imax;i++){
x=getX(i);
y=F(x);
setLine(xv,yv,x,y);
xv=x;
yv=y;
}
setColor(Color.red);
xv=-7.7;
xp=F(xv);
for(i=0;i<20;i++){
xn=F(xp);
setLine(xv,0,xv,xp);
setLine(xv,xp,xp,xp);
setLine(xp,xp,xp,xn);
xv=xp;
xp=xn;
}
setColor(Color.green);
xv=-7.1;
xp=F(xv);
setLine(xv,0.0,xv,xp);
for(i=0;i<20;i++){
xn=F(xp);
setLine(xv,xp,xp,xp);
setLine(xp,xp,xp,xn);
delay(300);
xv=xp;
xp=xn;
}
}

public static void main(String[] args) {


RNewton cadru = new RNewton();
cadru.setLocation(200,100);
cadru.setVisible(true);
}
}

Rezultatul rulării este arătat în figura de pe pagina următoare. In fereastra grafică este
reprezentată regiunea [-10,10] x [-10,10] din plan, graficul funcţiei reale de variabilă reală
y=F(x) este trasat cu galben, cu roşu sunt evidenţiaţi strămoşii lui zero (punctele care ajung în
zero şi care sunt apoi aruncate la plus infinit), iar cu verde este ilustrată comportarea şirului care
pleacă din punctul iniţial x0=-7,1. Se observă cum şirul sare în ordine peste strămoşii lui zero
până ajunge la valori pozitive unde îşi schimbă comportarea: după un eventual salt la valori
supraunitare devine un şir monoton descrescător cu limita x*=1. Punctul fix x*=1 este un
atractor care are ca bazin de convergenţă întreaga axă reală cu excepţia strămoşilor lui zero.
Sirul nu are puncte periodice (altele decât cel de ordin 1, punctul fix x*).
2. Cazul general. Ecuaţia z=F(z) este echivalentă cu f(z)=0, adică z3=1. Sistemul nostru dinamic
discret admite deci trei puncte fixe, şi anume rădăcinile de ordin 3 ale unităţii, notate aici cu
ε0=1, ε1= ε, ε2= ε2. Deoarece F’(εk)=0, k=0,1,2, rezultă că toate cele trei puncte fixe sunt atracti-
ve şi, în consecinţă, bazinele lor de atracţie sunt mulţimi deschise. In sala de curs vom demonstra
următoarea proprietate: orice punct de frontieră pentru un bazin este punct de frontieră şi pentru
fiecare dintre celelalte două bazine de atracţie.
Următoarea secvenţă de cod colorează în roşu, verde şi albastru cele trei bazine de
atracţie:
Complex unu=new Complex(1.0,0.0);
Complex eps0=Complex.setRoTheta(1.0,0.0*Math.PI/3.0);
Complex eps1=Complex.setRoTheta(1.0,2.0*Math.PI/3.0);
Complex eps2=Complex.setRoTheta(1.0,4.0*Math.PI/3.0);

Complex f(Complex z){ // f=(2*z*z*z+1)/(3*z*z)


Complex w=z.ori(z);
return Complex.frac(Complex.ori(2.0,z.ori(w)).plus(unu),
Complex.ori(3.0,w));
}
void doNewton2(){
double xmin=-1.5;
double xmax=1.5;
double ymin=-1.5;
double ymax=+1.5;
setXminXmaxYminYmax(xmin,xmax,ymin,ymax);
setLine(xmin,0,xmax,0);
setLine(0,ymin,0,ymax);
int imin=0,imax=getWidth(),jmin=0,jmax=getHeight(),i,j,k;
Complex z,z0;
Color clr;
int nrIter=100;
for(i=imin;i<imax;i++)
for(j=jmin;j<jmax;j++){
z=z0=new Complex(getX(i),getY(j));
clr=Color.black;
for(k=0;k<nrIter;k++){
if(z.minus(eps0).modul2()<0.01) {
clr=Color.red;
break;
}else if(z.minus(eps1).modul2()<0.01) {
clr=Color.green;
break;
}else if(z.minus(eps2).modul2()<0.01) {
clr=Color.blue;
break;
}
z=f(z);
}
setColor(clr);
setPixel(z0);
}
}
Bazinul lui ε0=1 are culoarea roşie, bazinul lui ε 1= ε este verde iar cel al lui ε2= ε2 este
colorat în albastru. Mulţimea punctelor necolorate, (frontiera oricărui bazin) formează fractalul
lui Newton. Această mulţime este de fapt mulţimea Julia asociată funcţiei F.

Colorarea bazinelor de convergenţă înseamnă colorarea cu aceeaşi culoare punctelor care


ajung în acelaşi loc. Un alt mod de colorare este cel care pune în evidenţă viteza de convergenţă
a şirurilor în funcţie de data lor iniţială. Fixăm o precizie, de exemplu p=0.001, şi colorăm cu
aceeaşi culoare, a n-a din paletă, toate punctele care după n paşi ajung, cu precizia p, în vecinăta-
tea limitei lor. Acest mod de colorare se numeşte Escape Time Algorithm. Vezi figura următoare:
Aplicând metoda lui Newton pentru rezolvarea altor ecuaţii de forma f(z)=0, obţinem o
serie foarte largă de fractali, iată numai trei exemple:

You might also like