nom, date

(1) titre

(2) save

(3) rappel : print .... utiliser preview

>

Itérations : Rappel des épisodes précédents

> (1- z)/(z+2): f:= unapply(%, z);

f := proc (z) options operator, arrow; (1-z)/(z+2) ...

> pl1:= plot(f(t), t=-10..10):

> pl2:= plot(t, t=-10..10, color=blue):

> x0:= -3.15; li:= seq( (f@@k)(x0), k=0..15);

x0 := -3.15

li := -3.15, -3.608695652, -2.864864865, -4.4687499...
li := -3.15, -3.608695652, -2.864864865, -4.4687499...

> pl3:= plots[pointplot]([ li[1]$3, seq(k$4, k=li[2..-2]), li[-1]$3 ], style=line, color=green):

> a,b:= -10,4; display(pl1, pl2,pl3, view=[a..b, a..b], scaling=constrained);

a, b := -10, 4

[Maple Plot]

>

Itérateur

> Z=f(z); solve(%, z); g:= unapply(%,Z);

Z = (1-z)/(z+2)

-(2*Z-1)/(Z+1)

g := proc (Z) options operator, arrow; -(2*Z-1)/(Z+...

Ecrire par morceaux

> it:= proc(z,n)
end;

it := proc (z, n) end proc

Il faut des return

> it1:= proc(z,n)
if n=0 then return z
elif n>0 then return (f@@n)(z)
elif n<0 then return (g@@(-n))(z)
fi;
end;

it1 := proc (z, n) if n = 0 then return z elif 0 < ...

> li;

-3.15, -3.608695652, -2.864864865, -4.468749999, -2...
-3.15, -3.608695652, -2.864864865, -4.468749999, -2...

> it1(x0, 0); it1(x0,2); it1(%, -2);

-3.15

-2.864864865

-3.150000000

Traiter les cas indéterminés

> it1(x0, m);

Error, (in it1) cannot evaluate boolean: -m < 0

> it2:= proc(z,n) ;
if not type(n, numeric) then return 'it'(z,n)
elif n=0 then return z
elif n>0 then return (f@@n)(z)
elif n<0 then return (g@@(-n))(z)
fi;
end: it2(x0, m);

it(-3.15,m)

Empecher les cas stupides

> it2(x0, 1.5);

Error, (in @@) invalid arguments

> it3:= proc(z,n) ;
if not type(n, numeric) then return 'it'(z,n)
elif n=0 then return z
elif n>0 then return (f@@n)(z)
elif n<0 then return (g@@(-n))(z)
fi;
end: it3(x0, m); map(it3, [1,2,3], 4); map2(it3, x0, [0,2,-2,m]);

it(-3.15,m)

[4/11, 17/40, 22/47]

[-3.15, -2.864864865, -3.252427185, it(-3.15,m)]

> it4:= proc(z, n::{integer, symbol}) ;
if not type(n, numeric) then return 'it'(z,n)
elif n=0 then return z
elif n>0 then return (f@@n)(z)
elif n<0 then return (g@@(-n))(z)
fi;
end: it4(x0, m); it4(x0,-2); it4(x0, 1.5);

it(-3.15,m)

-3.252427185

Error, it4 expects its 2nd argument, n, to be of type {integer, symbol}, but received 1.5

>

Points fixes

> alpha, beta:= solve(f(z)=z);

alpha, beta := -3/2-1/2*sqrt(13), -3/2+1/2*sqrt(13)...

> fsolve(f(z)=z); fsolve(f(z)=z, z=-5..0);

.3027756377

-3.302775638

> ka, kb:= D(f)(alpha), D(f)(beta);

ka, kb := -1/(1/2-1/2*sqrt(13))-(5/2+1/2*sqrt(13))/...

> rationalize(ka);

-7/6-1/6*sqrt(13)

> ka, kb:= (rationalize@D(f))(alpha), (rationalize@D(f))(beta);

ka, kb := -7/6-1/6*sqrt(13), -7/6+1/6*sqrt(13)

Pourquoi sont-ils inverses ?

> expand(ka*kb);

1

Et alors ?

> evalf(ka), evalf(kb);

-1.767591880, -.5657414542

>

Transformation

> (z-beta)/(z-alpha): phi:= unapply(%,z);

phi := proc (z) options operator, arrow; (z+3/2-1/2...

Trouver theta, la fonction réciproque

> solve(Z=phi(z), z); psi:= unapply(%,Z);

-1/2*(3*Z+Z*sqrt(13)-3+sqrt(13))/(Z-1)

psi := proc (Z) options operator, arrow; -1/2*(3*Z+...

Diagramme commutatif

> (factor@expand@rationalize@normal@phi@f@psi)(Z);

1/6*(-7+sqrt(13))*Z

Tiens, c'est le même nombre

>

Newton

> a:='a': (x+a/x)/2; new:= unapply(%,x);

1/2*x+1/2*a/x

new := proc (x) options operator, arrow; 1/2*x+1/2*...

> Digits:= 40; a:=3; seq((new@@k)(1.), k=0..8); Digits:=10;

Digits := 40

a := 3

1., 2.000000000000000000000000000000000000000, 1.75...
1., 2.000000000000000000000000000000000000000, 1.75...
1., 2.000000000000000000000000000000000000000, 1.75...
1., 2.000000000000000000000000000000000000000, 1.75...

Digits := 10

A nouveau deux points fixes

> a:='a':so:= solve(new(x)=x, x);

so := sqrt(a), -sqrt(a)

Et alors ....

> (z-so[1])/(z-so[2]); phi:= unapply(%,z);

> Z= phi(new(zeta)), z= phi(zeta);

> solve({%}, {Z, zeta});

(z-sqrt(a))/(z+sqrt(a))

phi := proc (z) options operator, arrow; (z-sqrt(a)...

Z = (1/2*zeta+1/2*a/zeta-sqrt(a))/(1/2*zeta+1/2*a/z...

{zeta = -sqrt(a)*(z+1)/(z-1), Z = z^2}

>

>

>

Quotients (z-a)/(z-b)

> h:= unapply((z-I)/(z-1), z);

h := proc (z) options operator, arrow; (z-I)/(z-1) ...

si h(z) est connu

> h(z)= 3+I; solve(%, {z});

(z-I)/(z-1) = 3+I

{z = 6/5-3/5*I}

Si l'argument est connu

> h(z)= k* exp(I*t); eq_z:= (solve)(%, z);

(z-I)/(z-1) = k*exp(I*t)

eq_z := -(I-k*exp(I*t))/(-1+k*exp(I*t))

Tracer un lieu

> subs(t=Pi/4, eq_z); plots[complexplot](%, k=0..10, scaling=constrained);

-(I-k*exp(1/4*I*Pi))/(-1+k*exp(1/4*I*Pi))

[Maple Plot]

En tracer plusieurs
seq(plots[complexplot](subs(t=j, eq_z) , k=0..10, scaling=constrained), t=[Pi/6, Pi/4, Pi/2, 2*Pi/3]):
pl1:= display(%, view=[-2..3,-2..3]): %;

[Maple Plot]

En tracer plusieurs
seq(plots[complexplot](subs(t=j, eq_z) , k=0..10, color=blue), t=[Pi+Pi/6, Pi+Pi/4, Pi+Pi/2, Pi+2*Pi/3]):
pl2:= display(pl1,%, view=[-2..3,-2..3], scaling=constrained): %;

[Maple Plot]

>

>

>

>

Si le module est connu

> h(z)= k* exp(I*t); eq_z:= (solve)(%, z);

(z-I)/(z-1) = k*exp(I*t)

eq_z := -(I-k*exp(I*t))/(-1+k*exp(I*t))

Tracer plusieurs lieux

> subs(k=2, eq_z); plots[complexplot](%, t=-Pi..Pi, scaling=constrained);

Puis expliquer

-(I-2*exp(I*t))/(-1+2*exp(I*t))

[Maple Plot]

> seq(plots[complexplot](subs(k=j, eq_z) , t=-Pi..Pi, color= black), j=[1/4,1/3,1/2,$1..4]):
display(pl2, %, view=[-2..3,-2..3], scaling=constrained);

[Maple Plot]

>

>

>

>