Nous définissons notre fonction et diverses suites récurrentes l'utilisant avec des valeurs initiales différentes:

(%i56) f(x):=x^2/2 - 1;
u[n]:=if n=0 then 1+%i else ratsimp(f(u[n-1]));
v[n]:=if n=0 then 1+2*%i else ratsimp(f(v[n-1]));
w[n]:=if n=0 then 2+%i else ratsimp(f(w[n-1]));
x[n]:=if n=0 then %i else ratsimp(f(x[n-1]));
y[n]:=if n=0 then 0.5+0.3*%i else ratsimp(f(y[n-1]));
z[n]:=if n=0 then 0.2+0.7*%i else ratsimp(f(z[n-1]));

Result

Pour rappel, les points de convergence de nos suites sont:

(%i63) numer:false$
solve(f(x)-x);
numer:true$
"Soit numériquement:";
solve(f(x)-x);

Result

Nous pouvons alors visualiser les différentes valeurs d'une suite:

(%i68) numer:false$
for i:0 thru 10 do display(u[i]);
for i:0 thru 10 do display(abs(u[i]));

Result

Ou plus efficace, observer graphiquement le comportement des modules, parties réelles, parties imaginaires ...
Par exemple pour 1+%i, la suite des modules converge et la suite des parties réelles aussi.
La suite des parties imaginaires alterne entre -1 et 1.

(%i71) numer:false$
abs_u:makelist([n, abs(u[n])], n, 0, 20)$
real_u:makelist([n, realpart(u[n])], n, 0, 20)$
imag_u:makelist([n, imagpart(u[n])], n, 0, 20)$
wxplot2d([[discrete, abs_u], [discrete, real_u], [discrete, imag_u]], [style, points], [y,-1.5,2.5], [legend, "module", "reelle", "imaginaire"])$

Result

Notez l'échelle logarithmique pour les deux graphiques qui suivent.
La divergence est flagrante.

(%i76) numer:false$
abs_v:makelist([n, abs(v[n])], n, 0, 8)$
real_v:makelist([n, realpart(v[n])], n, 0, 8)$
imag_v:makelist([n, imagpart(v[n])], n, 0, 8)$
wxplot2d([[discrete, abs_v], [discrete, real_v], [discrete, imag_v]], [style, points], [logy], [legend, "module", "reelle", "imaginaire"])$

Result

On notera l'alternance des parties réelles et imaginaires.

(%i81) numer:true$
abs_w:makelist([n, abs(w[n])], n, 0, 8)$
real_w:makelist([n, realpart(w[n])], n, 0, 8)$
imag_w:makelist([n, imagpart(w[n])], n, 0, 8)$
wxplot2d([[discrete, abs_w], [discrete, real_w], [discrete, imag_w]], [style, points], [logy], [legend, "module", "reelle", "imaginaire"])$
"Parties réelles:";real_w;
"Parties imaginaires:";imag_w;

Result

(%i90) numer:true$
abs_x:makelist([n, abs(x[n])], n, 0, 20)$
real_x:makelist([n, realpart(x[n])], n, 0, 20)$
imag_x:makelist([n, imagpart(x[n])], n, 0, 20)$
wxplot2d([[discrete, abs_x], [discrete, real_x], [discrete, imag_x]], [style, points], [legend, "module", "reelle", "imaginaire"])$
"La suite est réelle et converge vers:"; x[100];

Result

Maxima ne parvient pas à calculer les modules au delà du 7ème élement.
Pourtant, la suite converge.

(%i97) numer:true$
abs_y:makelist([n, abs(y[n])], n, 0, 7)$
real_y:makelist([n, realpart(y[n])], n, 0, 20)$
imag_y:makelist([n, imagpart(y[n])], n, 0, 20)$
wxplot2d([[discrete, abs_y], [discrete, real_y], [discrete, imag_y]], [style, points], [legend, "module", "reelle", "imaginaire"])$
"La suite converge vers: ";y[100];

Result

Ici encore, maxima ne parvient pas à calculer le module pour un rang supérieur à 6.
Mais la suite converge bien.

(%i104) numer:true$
abs_z:makelist([n, abs(z[n])], n, 0, 6)$
real_z:makelist([n, realpart(z[n])], n, 0, 100)$
imag_z:makelist([n, imagpart(z[n])], n, 0, 100)$
wxplot2d([[discrete, abs_z], [discrete, real_z], [discrete, imag_z]], [style, points], [legend, "module", "reelle", "imaginaire"])$
"La suite converge vers";z[100];

Result


Created with wxMaxima.