Aire sous une courbe (1)

On considère dans cet exercice la fonction \(f\) définie sur \(\left[0~;~1\right]\) par \(f(x)=x^2\). On appelle \(C_f\) sa représentation graphique dans un repère orthonormé.

On cherche à calculer une valeur approchée de l'aire du domaine situé entre :

  • l'axe des abscisses ;
  • la courbe \(C_f\) ;
  • les droites d'équations \(x=0\) et \(x=1\).

Ce domaine est colorié ci-dessous (à gauche).

Il est possible de calculer cette valeur approchée en utilisant la méthode des rectangles 1 suivante :

  • on découpe l'intervalle \(\left[0~;~1\right]\) en \(n>0\) subdivisions régulières. Chaque subdivision a une largeur de \(\dfrac1n\) ;
  • il est possible de numéroter chaque subdivision avec un entier \(0 \leqslant k < n\) ;
  • dans la \(k\)-ième subdivision, on dessine le rectangle de largeur \(\dfrac{1}{n}\) et de hauteur \(\left(k\times \dfrac{1}{n}\right)^2\) ;
  • la somme des aires de tous les rectangles donne une valeur approchée (par défaut) de l'aire du domaine étudié.

La figure de droite illustre cette méthode dans le cas \(n=4\). La valeur approchée obtenue vaut alors :

\[0^2\times0,25+0,25^2\times0,25+0,5^2\times0,25+0,75^2\times0,25=0,21875\]

Il est clair que plus le nombre de subdivisions est important, plus la valeur calculée est proche de la valeur exacte de l'aire cherchée.

Écrire la fonction aire qui prend en paramètre un entier n strictement positif et renvoie la valeur approchée renvoyée par la méthode des rectangles décrite utilisant \(n\) rectangles.

assert ?

Le mot clé assert est utilisé en Python afin de vérifier que des propositions sont vraies.

Ainsi, l'instruction assert 3 + 5*7 == 38 permet de vérifier que l'expression 3 + 5*7 est bien évaluée à 38.

Si c'est le cas, le programme continue de se dérouler normalement. Dans le cas contraire, le programme est interrompu et une erreur est signalée.

Comparaison de nombres flottants

Lorsqu'on écrit a = x ou x est un nombre réel, la valeur de a enregistrée en machine est une valeur approchée de x (quelques fois la valeur exacte). Cette valeur approchée a la forme d'un nombre flottant (le type float en Python). En conséquence, alors que des calculs et des comparaisons peuvent être effectués de manière exacte sur des réels, ils ne le sont que de manière approchée sur leur représentation en machine. On peut donc obtenir par exemple, avec a = x et b = y, l'expression a == b évaluée à True alors que x et y sont différents.

C'est pourquoi les tests ne vérifient pas l'égalité des résultats et des valeurs attendues mais leur proximité.

Ainsi, on peut vérifier que \(\sqrt{2} \approx 1,414214\) en faisantassert abs(1.414214 - sqrt(2)) < 1e-6. Ce test vérifie que les deux valeurs sont proches à \(10^{-6}\) près.

Exemples
>>> aire(1)
0.0
>>> aire(2)
0.125
>>> aire(4)
0.21875

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 10/10

.128013:,CLknàSA{vsuO8;y7e[62-0w]r5_p»ag)R1Iiè}/é=m«hb.4x+*oPdt c(E^3qlf050%0t0(0G0M0:0m0)0*0:0G0m0m0R010(0M0E010406050m0n0S0S0G0B0r040i0#0:0n150#0g0)020G0S0E0q0)0J0t1f0B0/0n0t0m050P1c1e1g1i1a0E041G1N051Q0P1Q1S1N1a0%0M0l0}0 11130U0M0H0U0:1*0U0(18050^0V0:0t1#1012011)1+1-1+0(1?1^1;0(0V0#0%1i1=0B1O0(0U0}1l0m0E0G0g130w011`1%010;0`0t0g1t0t1;2i2k2p1|2s1^2v0S2x040a0)0$0B0#0E0#0m0M1o1q0?2g0B0B0t0*2S1G2z0g1O0P2e2(0(2c2b2d0%2B131-0g2u2P1;1Y1!0~1{2=0M2@0g281Z1;0E2X1O2$2(391b2j1q2}2q320B1f0:180K2#3d193c2A3f1|3h3j180w3n2k3p2$2;013u0G3k040.3y2%1a3B3s133E3G0X3J3A3d3C3P180C3S3L3U3N3D0#3i3F180v3Z3q3e1$3t3(3v040s3S1P371G2{2+0%2/3C0*282H0=1Z1O360t383o3_420?4a3r3:130f180?0;3_3M4h010z180)4n3#4p0g0;180_2X4u4g2~0117040+4C3/4E0g180g4J3C4G0I0b3Z0)4V4t4o4L180m0#1e0t3S4X4v4E0#180R4)3.3C0S0M180y4U4W4;3$4M040 0B0H0t0n0B4:4Y2q4-044/1H3o4*4D2q4?3l564+58180P5j5f3t4N4`4V4|4p4j040;3(5o4K3g180f5A3C0#4r04305F4}0V180B2k524P3$4G4I5c3z5u4Z044O5W2%5Y2q4R4T5$194W5.5e5B5q040Y5L4p595b395:3V5D5^4,180!605C4 1g52545s5/5(5=4#4%641|5`6g3O4!4$2G6j01590Z6o4~5@5,6c13590!636v571|5h043x5,5}3$6y6s185068555,065.6w015w2X0(545#5|6T4~6e6n6Q1G4d493`6,0P3}1G0(3 6;2-2)27292+0G1@6.3}1M4f5;132X0S0D0;0G0f0t0D0U0.181y1A1C1E0)5+3b1T3p1N0L0:0)1E0(0)2O110M6~0)2U360Q0m2u0(0t0B7A0M0;0;0Q752G0g7u0 0)5y0g2Z0M1p4t6+044A4(0P7!7k1P3p2{3C1~1,1.1:723C2D2u2w182J0i0*0B167u0$0r2e1p3_48723a4b7!6T5w4l5S4p5I4t6B5k3t4y7#0M4B8j5p135U8f5Z6Z4b6C8s184S6a6#6l6f6H6T6i8G8y016E4_6Q6S8K6t6o8I6!8K8M4)5/6I4p0*0K18030)6}0m0*0M111_0%0n2g300)300;0W0)0H0G0n0*0U8/8;2X2Z5Q1^8@0g2R0M3F8C8Q4k6u8U8k6x4.6o6E3m8J9h6p5m6L5!8X6T8#8%0)6N537I0?0|930^0g0H1^1F8O4{8K5w5y6P9g8r3D5 9n9Q5H185K9T733D5N045P9F7%3b8K8t8q9Z4~8w5X9+8A7l3o6R8Y8Z5Z6%9)5d8H9j9Y5~049}8S186ra24}189f8x9o6y6A9*9o6E6G9P9Z6Ka94w9e6a8P9o8Rao615a9rac3z9{5l04a8ala30%az3Kas9Q6V0@6Y9ra56)7(432(873|46712L7D7F0Q1_2u0)7G3i7j1f2e0Qa-0M7i0m0c0}0@7G7T3=0n960?0l0M7F7*7n1X1Z3C1g2R0Ua-0t0Y18090u0j0D2l091^0;0(0+090%0;5P0*0y0g097 210I0-0w09152G0|bCbc0(0k0%0O0Y0Zbk0tbmbobqbs0Kbvbx1/bzbBbD7jbG0YbIbKbMbObQbpbr0G0*0wbV7;bYbC0MbE0)b$b(bLbN0%0#0(0mbNblbnb-bs0k0g0x0K0Ob=bybAb^b`b|bJbL090AaW0l7o040e3(0m7iaB1|b82ebbbd04090+bv0I4)7G0g2:0l7H0|6Tcyba0G7GcBcDbN8^0(0r09cG6H0*a_1_9}a)2ucKcM9x007$7A8;c01f301_0Q6X1Y0Q8`0o1q32a`c$221_c:0hc.0_2U0%000n2@4X2,1p0H5J7Q0Q0H5P1^2#dg9F04b31W452|4pcPcAbebg0R09300(0D0y0-0K0)0YcgcSb}0Ycmcocq0e0G0)0l3F9z7s0Yb/a`2Ud3a`dEdldna%0m7ucO7 czcRbcbebRb.8#0.cZ3S0W7+710,4x30a@0`7sd.7v2P2Q7zd%3F0*a}7H0)dd1_dW1^548)0E360#8 a$4t1z042j7Ibc0*0N9Iev7A1_0:c/8o1_8 7Hesa%1q0T7A0Q0*3F2k7u0F9xdUeldY3099dXeE7ZaT6u7)5+du7-3$7/201/2y9o7^2F2H7|7~802K830U856vaV7m3b8b9L4kbP8u2q8hfb8l4zeI0Dex0Dez1Efe8z4Hfn9R9s9-4Q9?9cat8E6(aF6Ja1fA4p8W9J5t9d5?a6axav5g4@049mfDaw5nfM5=9:2%9K9o9v048(8*8,8.c;e9dE0)eP0%eR3Fet0Ffw9Q4~aHfK5{9 8VfOfQf}ae9qfU6kfs5|cw13f!8(9yen9B0)9D95fmfGg86U189N9r5Eg46p5I9XfR3g9#9%5Rft5T185Vahf^5rgz4p5*arfYgEa46m9~aAa0fLgu6dgNfKaEg1gLaI7?fB046zfqajfKaggX9.aqgjaKg-fJgq8Tg,a3gZgk6q9rf`gj8c5OaN0BfWds8DgM8F391aaS4e6-2(701R040dc%0)c)cI2:0t0:968}7xdVc-d:b9dzcCd_bTd|c!5|1C2k2:hvd=cSd^cFcHc+ht0BcN8Kdyd?cT0+cV4xcXd}5,d b4hge22s0ga@7S0Bdla}cy0Qe(7S1c0V2{8-7X1q0E7H2G7u2U2Q1u1-2seh96eS0:ef7ra(782Z3(8-eU7v1g9x7jgchP8`0$ijbc1z0E1^a@2u422X7A2k0|i710gkhShJhy2l0XhZ5|e-7,b63$iFd@cC0ub+bndH0w0Z0y0c0w0CbAiY0ci$iXiZ0si*bwb?ch1EiZi#0Ri?0K0pi-dQ6/aXdv7.1.e=7=6Te_7`2I0)7}7 0E81f0f23bf44b6vf79o8dfagG4Efdjo3g8m7$fq9,gDg;h46TgIg fIaQgS9igRg^3$fFh9g:g_f{9kfO8NjLgKg;g~jF9pjHgPf~5ig?g3jW9/f@9Z9M5zgq4~gpjW9Vdj6sgw5QgO5%9=fpjrfVjvfvg/jTa3jEjI5_fCk69|gUj$aDayfqafg(fOak5dgkgadK6z0w7s7uit0n0|0Yko0)0!7AgZ9_8Yh6g`gQf|jZfxg=j;a7g}kAjM3$aM6Xh3aPkbkKg$kM8X9`9u8$f#0)7Y0Sa}15itb1c.2u7E0SeceFdUc)0G36kz3-hb6.aVi~cpha0?0^0`0m04.

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 10/10

.128013:,CLknàSA{vsuO8;y7e[62-0w]r5_p»ag)R1Iiè}/é=m«hb.4x+*oPdt c(E^3qlf050%0t0(0G0M0:0m0)0*0:0G0m0m0R010(0M0E010406050m0n0S0S0G0B0r040i0#0:0n150#0g0)020G0S0E0q0)0J0t1f0B0/0n0t0m050P1c1e1g1i1a0E041G1N051Q0P1Q1S1N1a0%0M0l0}0 11130U0M0H0U0:1*0U0(18050^0V0:0t1#1012011)1+1-1+0(1?1^1;0(0V0#0%1i1=0B1O0(0U0}1l0m0E0G0g130w011`1%010;0`0t0g1t0t1;2i2k2p1|2s1^2v0S2x040a0)0$0B0#0E0#0m0M1o1q0?2g0B0B0t0*2S1G2z0g1O0P2e2(0(2c2b2d0%2B131-0g2u2P1;1Y1!0~1{2=0M2@0g281Z1;0E2X1O2$2(391b2j1q2}2q320B1f0:180K2#3d193c2A3f1|3h3j180w3n2k3p2$2;013u0G3k040.3y2%1a3B3s133E3G0X3J3A3d3C3P180C3S3L3U3N3D0#3i3F180v3Z3q3e1$3t3(3v040s3S1P371G2{2+0%2/3C0*282H0=1Z1O360t383o3_420?4a3r3:130f180?0;3_3M4h010z180)4n3#4p0g0;180_2X4u4g2~0117040+4C3/4E0g180g4J3C4G0I0b3Z0)4V4t4o4L180m0#1e0t3S4X4v4E0#180R4)3.3C0S0M180y4U4W4;3$4M040 0B0H0t0n0B4:4Y2q4-044/1H3o4*4D2q4?3l564+58180P5j5f3t4N4`4V4|4p4j040;3(5o4K3g180f5A3C0#4r04305F4}0V180B2k524P3$4G4I5c3z5u4Z044O5W2%5Y2q4R4T5$194W5.5e5B5q040Y5L4p595b395:3V5D5^4,180!605C4 1g52545s5/5(5=4#4%641|5`6g3O4!4$2G6j01590Z6o4~5@5,6c13590!636v571|5h043x5,5}3$6y6s185068555,065.6w015w2X0(545#5|6T4~6e6n6Q1G4d493`6,0P3}1G0(3 6;2-2)27292+0G1@6.3}1M4f5;132X0S0D0;0G0f0t0D0U0.181y1A1C1E0)5+3b1T3p1N0L0:0)1E0(0)2O110M6~0)2U360Q0m2u0(0t0B7A0M0;0;0Q752G0g7u0 0)5y0g2Z0M1p4t6+044A4(0P7!7k1P3p2{3C1~1,1.1:723C2D2u2w182J0i0*0B167u0$0r2e1p3_48723a4b7!6T5w4l5S4p5I4t6B5k3t4y7#0M4B8j5p135U8f5Z6Z4b6C8s184S6a6#6l6f6H6T6i8G8y016E4_6Q6S8K6t6o8I6!8K8M4)5/6I4p0*0K18030)6}0m0*0M111_0%0n2g300)300;0W0)0H0G0n0*0U8/8;2X2Z5Q1^8@0g2R0M3F8C8Q4k6u8U8k6x4.6o6E3m8J9h6p5m6L5!8X6T8#8%0)6N537I0?0|930^0g0H1^1F8O4{8K5w5y6P9g8r3D5 9n9Q5H185K9T733D5N045P9F7%3b8K8t8q9Z4~8w5X9+8A7l3o6R8Y8Z5Z6%9)5d8H9j9Y5~049}8S186ra24}189f8x9o6y6A9*9o6E6G9P9Z6Ka94w9e6a8P9o8Rao615a9rac3z9{5l04a8ala30%az3Kas9Q6V0@6Y9ra56)7(432(873|46712L7D7F0Q1_2u0)7G3i7j1f2e0Qa-0M7i0m0c0}0@7G7T3=0n960?0l0M7F7*7n1X1Z3C1g2R0Ua-0t0Y18090u0j0D2l091^0;0(0+090%0;5P0*0y0g097 210I0-0w09152G0|bCbc0(0k0%0O0Y0Zbk0tbmbobqbs0Kbvbx1/bzbBbD7jbG0YbIbKbMbObQbpbr0G0*0wbV7;bYbC0MbE0)b$b(bLbN0%0#0(0mbNblbnb-bs0k0g0x0K0Ob=bybAb^b`b|bJbL090AaW0l7o040e3(0m7iaB1|b82ebbbd04090+bv0I4)7G0g2:0l7H0|6Tcyba0G7GcBcDbN8^0(0r09cG6H0*a_1_9}a)2ucKcM9x007$7A8;c01f301_0Q6X1Y0Q8`0o1q32a`c$221_c:0hc.0_2U0%000n2@4X2,1p0H5J7Q0Q0H5P1^2#dg9F04b31W452|4pcPcAbebg0R09300(0D0y0-0K0)0YcgcSb}0Ycmcocq0e0G0)0l3F9z7s0Yb/a`2Ud3a`dEdldna%0m7ucO7 czcRbcbebRb.8#0.cZ3S0W7+1a0U2c717q7sd.7v2P2Q7zd%3F0*a}7H0)dd1_dW1^548)0E360#8 a$4t1z042j7Ibc0*0N9Ieu7A1_0:c/8o1_8 7Hera%1q0T7A0Q0*3F2k7u0F9xdUekdY3099dXeD7ZaT6u7)5+du7-3$7/201/2y9o7^2F2H7|7~802K830U856vaV7m3b8b9L4kbP8u2q8hfa8l4zeH0Dew0Dey1Efd8z4Hfm9R9s9-4Q9?9cat8E6(aF6Ja1fz4p8W9J5t9d5?a6axav5g4@049mfCaw5nfL5=9:2%9K9o9v048(8*8,8.c;e8dE0)eO0%eQ3Fes0Ffv9Q4~aHfJ5{9 8VfNfPf|ae9qfT6kfr5|cw13fZ8(9yem9B0)9D95flfFg76U189N9r5Eg36p5I9XfQ3g9#9%5Rfs5T185Vahf@5rgy4p5*arfXgDa46m9~aAa0fKgt6dgMfJaEg0gKaI7?fA046zfpajfJaggW9.aqgiaKg,fIgp8Tg+a3gYgj6q9rf_gi8c5OaN0BfVds8DgL8F391aaS4e6-2(701R040dc%0)c)cI2:0t0:968}7xdVc-d:b9dzcCd_bTd|c!5|1C2k2:hud=cSd^cFcHc+hs0BcN8Kdyd?cT0+cV4xcXd}5,d b405e2cq0,4x30a@7S0Bdla}cy0Qe%7S1c0V2{8-7X1q0E7H2G7u2U2Q1u1-2seg96eR0:ee7ra(782Z3(8-eT7v1g9x7jgbhO8`0$ikbc1z0E1^a@2u422X7A2k0|i810gjhRhIhx2l0XhY5|e,7,b63$iGd@cC0ub+bndH0w0Z0y0c0w0CbAiZ0ci%iYi!0si+bwb?ch1Ei!i$0Ri@0K0pi.dQ6/aXdv7.1.e;7=6Te^7`2I0)7}7 0E81e f13bf34b6vf69o8df9gF4Efcjp3g8m7$fp9,gCg:h36TgHg~fHaQgR9igQg@3$fEh8g/g^f`9kfN8NjMgJg:g}jG9pjIgOf}5ig=g2jX9/f?9Z9M5zgp4~gojX9Vdj6sgv5QgN5%9=fojsfUjwfug.jUa3jFjJ5_fBk79|gTj%aDayfpafg%fNak5dgjg9dK6z0w7s7uiu0n0|0Ykp0)0!7AgY9_8Yh5g_gPf{j!fwg;j=a7g|kBjN3$aM6Xh2aPkckLg#kN8X9`9u8$f!0)7Y0Sa}15iub1c.2u7E0SebeEdUc)0G36kA3-ha6.aVi cph90?0^0`0m04.

  1. On propose ici une version simplifiée de cette méthode qui considère des rectangles ayant tous la même largeur.