Exercice 5
| > | restart:Digits:=30:with(plots):with(plottools): |
| > | fI:=t->4/(1+t^2):aI:=0:bI:=1:NI:=20: |
| > | fJ:=t->exp(-t*t):aJ:=-10:bJ:=10:NJ:=20: |
| > |
Question a)
| > | Trapeze:=proc(f,a,b,N)
local i,S; S:=0; for i from 1 to N-1 do S:=S+f(a+i*(b-a)/N); od; S:=(S+(f(a)+f(b))/2)*(b-a)/N; end: |
| > |
| > | Question b) |
Calcul approché de I avec 20 Rectangles où
| > | I=Int(fI(t),t=aI..bI); |
| > | I_(approché):=evalf(Trapeze(fI,aI,bI,NI)); |
| > | erreur:=evalf(abs(I_(approché)-Pi)); |
| > |
Calcul approché de J avec 20 Rectangles où
| > | J=(Int(fJ(t),t=aJ..bJ))**2; |
| > | J_(approché):=evalf((Trapeze(fJ,aJ,bJ,NJ))**2); |
| > | erreur:=evalf(abs(J_(approché)-Pi)); |
| > |
| > | Question c) |
| > | Points_T:=proc(f,a,b,N)
local i,S; S:=NULL; for i from 1 to N do S:=S,[i/N,Trapeze(f,a,b,i)]; od; [S]; end; |
| > |
| > | plot(Points_T(fI,aI,bI,50)); Tracé des points obtenus pour le calcul approché de I |
![[Plot]](images/exo5_8.gif)
| > | plot(Points_T(fJ,aJ,bJ,50)); Tracé des points obtenus pour le calcul approché de J |
![[Plot]](images/exo5_9.gif)
| > |
| > | Question d) |
| > | Suite_T:=proc(f,a,b,N)
local i,S,suite,delta; delta:=(b-a)/N;S:=NULL; for i from 0 to N-1 do S:=S,polygon([[a+i*delta,0],[a+(i+1)*delta,0],[a+(i+1)*delta,f(a+(i+1)*delta)],[a+i*delta,f(a+i*delta)]],color=magenta,thickness=2); od; S; end: |
| > |
Tracé des rectangels correspondant à l'intégrale I
| > | TI:=Suite_T(fI,aI,bI,NI):GI:=plot(fI,aI..bI,color=black,thickness=3): |
| > | plots[display](TI,GI); |
![[Plot]](images/exo5_10.gif)
Tracé des rectangels correspondant à l'intégrale J
| > | TJ:=Suite_T(fJ,aJ,bJ,NJ):GJ:=plot(fJ,aJ..bJ,color=black,thickness=3): |
| > | plots[display](TJ,GJ); |
![[Plot]](images/exo5_11.gif)
| > |
Une petite animation
| > |
| > | Anim_T:=proc(t) plots[display](GI,Suite_T(fI,aI,bI,trunc(t))); end: |
| > | animate(Anim_T,[t],t=1..NI, frames=50); |
![[Plot]](images/exo5_12.gif)
| > |
| > |
Exercice 5b)
La procédure Dichot renvoie la N-ieme valeur de la suite (D_n) définie par recurrence par:
| > | D[n]=D[n-1]+Sum(f(a+(2*k-1)*(b-a)/2^n),k=1..2^(n-1)); |
| > |
| > | Dichot:=proc(f,a,b,N) options remember;
local i,S; if N=0 then S:=0; else S:=Dichot(f,a,b,N-1); for i from 1 to 2^(N-1) do S:=S+f(a+(2*i-1)*(b-a)/2^N); od;fi; S; end: |
| > |
On en déduit grâce à D_n la valeur de T_2^n par la relation
| > | T[n]=((b-a)/2**n)*((f(a)+f(b))/2+D[n]); |
| > | T_dichot:=proc(f,a,b,N)
local i,T; T:=NULL; for i from 0 to N do T:=T,(b-a)*((f(a)+f(b))/2+Dichot(f,a,b,i))/2^i; od; T; end: |
| > |
Valeurs successives T1 , T2 , T4 , ..., T_1024 pour l'intégrale I
| > | Sol:=evalf(T_dichot(fI,aI,bI,10)): for i from 1 to 10 do T[2**i]=Sol[i]; od; |
| > | 'erreur'=evalf(abs(Sol[10]-Pi));erreur commise pour T_1024 |
| > |
Valeurs successives T1^2, T2^2, T4^2, ..., T_1024^2 pour l'intégrale de J
| > | Sol:=evalf(map(x->x**2,[T_dichot(fJ,aJ,bJ,10)])): for i from 1 to 10 do T[2**i]**2=Sol[i]; od; |
| > | 'erreur'=evalf(abs(Sol[10]-Pi));erreur commise pour T_1024 |
| > |