Exercice 3
| > |
Question a)
| > | restart: |
| > | perturbee:=proc(u1,n) option remember; Méthode récursive
local u; if n=1 then [u1]; else u:=perturbee(u1,n-1);[op(u),evalf(u[n-1]*(u[n-1]+1/n))]; fi; end: |
| > | perturbee(1,5); |
| > | perturbee(1,10); |
| > |
| > |
Question b)
| > | test:=proc(u1)
local l,u,n,suite,sol,maxi; maxi:=10: pour éviter une boucle infinie on se fixe un nombre maximal (maxi) d'itérations n:=1;l:=1; Par défaut nous affectons la valeur l=1 u:=u1; la limite potentielle l est déterminée lors d'une des conditions ci-dessous pour u1 if is(u<=1-1/n) then l:=0; elif is(u>=1) then l:=+infinity; fi; N'ayons pas de réponse déterminnée pour u1, nous essayons les valeurs successives (jusqu'à l'indice maxi) while is(l=1 and n<maxi) do u:=u*(u+1/n);n:=n+1; if is(u<=1-1/n) then l:=0; elif is(u>=1) then l:=+infinity; fi; od; Après ces nombreuses tentatives, on peut espérer conclure sans trop se tromper if l=+infinity then sol:=true else sol:=false; fi; end: |
| > | test(0.3);test(1); |
| > |
Question c)
| > | alpha:=proc(epsilon)
local a,b,m,n,t; n:=0:a:=0;b:=1; intialement (n=0) on travaille sur l'intervalle [a,b]=[0,1] while is(b-a>epsilon) do n:=n+1:m:=(a+b)/2;t:=test(m); On remplace [a,b] par le segmet coupé en son milieu m if t then b:=m c'est le segment [a,m] si pour u1=m la suite u tend vers +infini, (car alors alpha<m) else a:=m fi; c'est le segment [m,b] si pour u1=m la suite u ne tend pas vers +infini (car alors alpha>=m) od; m,n; end: |
| > |
| > | u:=alpha(1/10):'alpha'=evalf(u[1]); 'n'=u[2]; |
| > |
| > | u:=alpha(1/100):'alpha'=evalf(u[1]); 'n'=u[2]; |
| > | u:=alpha(1/1000):'alpha'=evalf(u[1]); 'n'=u[2]; |
| > | u:=alpha(1/10000):'alpha'=evalf(u[1]); 'n'=u[2]; |
| > | Digits:=12: |
| > | u:=alpha(10^(-10)):'alpha'=evalf(u[1]); 'n'=u[2]; |
| > |
| > |
| > | with(plots): |
Warning, the name changecoords has been redefined
| > | e:=10^(-4):u:=perturbee(alpha(e)):n:=nops(u):plot([seq([k,u[k]],k=1..n)],0..n,0..e,style=point); |
![[Plot]](images/KM05_exo3_15.gif)
| > | e:=10^(-10):u:=perturbee(alpha(e)):n:=nops(u):plot([seq([k,u[k]],k=1..n)],0..n,0..e,style=point); |
![[Plot]](images/KM05_exo3_16.gif)
| > | e:=10^(-15):u:=perturbee(alpha(e)):n:=nops(u):plot([seq([k,u[k]],k=1..n)],0..n,0..e,style=point); |
![[Plot]](images/KM05_exo3_17.gif)
| > | e:=10^(-20):u:=perturbee(alpha(e)):n:=nops(u):plot([seq([k,u[k]],k=1..n)],0..n,0..e,style=point); |
![[Plot]](images/KM05_exo3_18.gif)
| > |