exo3.mw

Exercice 3

> 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)

> Rectangle_d:=proc(f,a,b,N)
local i,S;

S:=0;

for i from 1 to N do

S:=S+f(a+i*(b-a)/N);

od;

S:=S*(b-a)/N;

end:

>

> Question b)

Calcul approché de I avec 20 Rectangles

> I=Int(fI(t),t=aI..bI);

I = Int(4/(1+t^2), t = 0 .. 1)

> I_(approché):=evalf(Rectangle_d(fI,aI,bI,NI));

I_(approché) := 3.09117598695412846344704074009

> erreur:=evalf(abs(I_(approché)-Pi));

erreur := 0.5041666663566477501560264319e-1

>

Calcul approché de J avec 20 Rectangles

> J=(Int(fJ(t),t=aJ..bJ))**2;

J = (Int(exp(-t^2), t = -10 .. 10))^2

> J_(approché):=evalf((Rectangle_d(fJ,aJ,bJ,NJ))**2);

J_(approché) := 3.14224265993564633914314598537

> erreur:=evalf(abs(J_(approché)-Pi));

erreur := 0.65000634585310068050260209e-3

>

> Question c)

> Points_Rd:=proc(f,a,b,N)
local i,S;

S:=NULL;

for i from 1 to N do S:=S,[i/N,Rectangle_d(f,a,b,i)]; od;

[S];

end;

>

Points_Rd := proc (f, a, b, N) local i, S; S := NULL; for i to N do S := S, [i/N, Rectangle_d(f, a, b, i)] end do; [S] end proc

> plot(Points_Rg(fI,aI,bI,50)); Tracé des points obtenus pour le calcul approché de I

[Plot]

> plot(Points_Rg(fJ,aJ,bJ,50)); Tracé des points obtenus pour le calcul approché de J

[Plot]

>

> Question d)

> Suite_Rd:=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+1)*delta)]],color=pink,thickness=2);

od;

S;

end:

>

Tracé des rectangels correspondant à l'intégrale I

> RdI:=Suite_Rd(fI,aI,bI,NI):GI:=plot(fI,aI..bI,color=black,thickness=3):

> plots[display](RdI,GI);

[Plot]

Tracé des rectangels correspondant à l'intégrale J

> RdJ:=Suite_Rd(fJ,aJ,bJ,NJ):GJ:=plot(fJ,aJ..bJ,color=black,thickness=3):

> plots[display](RdJ,GJ);

[Plot]

>

Une petite animation

>

> Anim_Rd:=proc(t) plots[display](GI,Suite_Rd(fI,aI,bI,trunc(t))); end:

> animate(Anim_Rd,[t],t=1..NI, frames=50);

[Plot]

>

>