Fonctions affines

Cette page regroupe différents exercices simples sur les fonctions affines. On rappelle qu'une fonction affine est une fonction définie pour tout nombre réel \(x\) par :

\[f(x) = ax + b\]

Les exercices sont tous indépendants et peuvent être traités dans un ordre quelconque.

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.

Définir la fonction

Le code contenu dans l'éditeur ci-dessous définit la fonction \(f:x\mapsto 5x-9\).

Ajouter en dessous le code définissant la fonction \(g:x\mapsto -3x+7\).

Exemples
>>> g(0)  # quelle est l'image de 0 par g: x ↦ -3x + 7 ?
7
>>> g(10)  # quelle est l'image de 10 par g: x ↦ -3x  + 7 ?
-23

###(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

.128013benvi3motxPhklpwf(: cga=ryS*-u/7)2s1+d050M0c0j0x0f0o0J0u0v0o0x0J0J0y010j0f0p010406050J0E0h0h0x0z0A040B0i0o0E0%0i0d050F0.0:0=0@0,0p040517101a0F170,0M0f0e0V0X0Z0#0m0f0w0m0o1o0m0j0*050Q0b0o0c1j0Y0!011n1p1r1p0j1x1z1v0j0z180j0m0V0`0J0p0x0d0#0I011B1l010r0S0c0d0x0h0c1v1U1W1#1D1(1z1+1-0*0a0u0l0z0i0p0i0J0f0}0d0u0O1S0z0z0c0v25101:0d180F1Q2i1N1P1O1w0M1=0#1r0d1*221v1g1i0W1C2s0f2u0d0i2y1v0p2b182g2i2M0-1V262A1$2F0z0;0o0*0K2f2Q0+2P1;2S1D2U2W0*0I2!1W2i2J0c2i2y2l0M1P2q2)0#0v2G1.182^192K2%2h2/372 0O2L2Q2r010n0*0O0r383c2(1k1D0q0*0u3k363e0d0r0*0w3s2g3e0)040s3z3d2}010d0*0k3F3m2B013C0H0t3k060u3V3r3A3H3g042b0j0E0z0 112#3X3G3n0#0i0*0D3M2R3/010h0f0*0g3k3-3N1$3;040C3 3t3H3J043L3+2:403^3O430L463Y3_3{0*0G3T103a2?1b350F332j2`102m4z0x1y4s4v1h2$4v0P0R0T04.
Sens de variations

Écrire la fonction variations qui prend en paramètres le coefficient directeur a et l'ordonnée à l'origine b d'une fonction affine \(f\) et renvoie :

  • 'strictement croissante' si la fonction \(f\) est strictement croissante ;
  • 'constante' si la fonction \(f\) est constante ;
  • 'strictement décroissante' si la fonction \(f\) est strictement décroissante.

On garantit que les paramètres a et b sont des entiers.

Exemples
>>> variations(4, -8)  # comment varie f: x ↦ 4x - 8 ?
'strictement croissante'
>>> variations(-2, 15)  # comment varie g: x ↦ -2x + 15 ?
'strictement décroissante'

###(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

.128013beqn,4évi3mo5t;Phklpwf(: cga=ry0S6u/72)s1d050Q0c0o0C0j0t0O0z0A0t0C0O0O0D010o0j0u010406050O0J0l0l0C0E0F040H0m0t0J0+0m0e050K0=0@0_0{0:0u04051b141e0K1b0:0Q0j0i0Z0#0%0)0r0j0B0r0t1s0r0o0.050U0b0t0c1n0$0(011r1t1v1t0o1B1D1z0o0E1c0o0r0Z0~0O0u0C0e0)0M011F1p010w0W0c0e0C0l0c1z1Y1!1)1H1,1D1/1;0.0a0z0q0E0m0u0m0O0j110e0z0S1W0E0E0c0A29141@0e1c0K1U2m1R1T1S1A0Q1_0)1v0e1.261z1k1m0!1G2w0j2y0e0m2C1z0u2f1c2k2m2Q0;1Z2a2E1*2J0E0^0t0.0P2j2U0/2T1^2W1H2Y2!0.0M2(1!2*2k2v012/0C2#040k2?2l0:2_2-0)2|2~0g312^2U2`370.0n3a333c352{0m2Z2}0.0I3h2+2V1o2.3m2:040L3a1f2O142C2p0Q1T2u3k0A2K1=1c3E1d3C2S152)053K0S2P3j3u0)0s0.0S0w3A343Z010v0.0z3)3Y2F2{0w0.0i0_0j0C290O3:2,3+0-040x3 3t3=0e0.0C452`420f3a3/3*470.0b4b3k420N0y3h0z4r4g3;1*3#040j3(3S2@4t404i044a4A2l4C461*0m0.020B0o0p4f3s2`0l0j0.0G4l410.4p4H0/4s4)4J2`4w2f0o0J0E134%4+3k0O1%04020d0J0m4Q0O1R0j2h0c1;0e0o0Z230j0%1!0o0c4|4~4Q4q4s4T3k4w0c1v4z2Q4@3+484F4S4h4L0.0D0D5w4u1H4V4X4Z3=424$2Q064*5k5x1H4-0T4:4=5r5l3+4_4N4}4 0p3K0e515d5f5!5i4%5M5O5D3!0.5o0O0c5H1*5J5j5N5W3=5R4/4;5C4D1*5Y4{5,0p510E535e56580Q0h0A5a5c575+5h4R5.143V0c2m2N6t3D1l3F2p2s2n0C1C6w0K3E0:6G0T0V0X04.
Antécédent de \(0\)

On considère dans cette question des fonctions affines de coefficient directeur non nul.

Écrire la fonction antecedent_zero qui prend en paramètres le coefficient directeur a et l'ordonnée à l'origine b d'une fonction affine et renvoie la valeur de l'antécédent de \(0\).

Exemples
>>> antecedent_zero(4, -8)  # quel est l'antécédent de 0 par f: x ↦ 4x - 8 ?
2.0
>>> antecedent_zero(-2, 15)  # quel est l'antécédent de 0 par g: x ↦ -2x + 15 ?
7.5

###(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

.128013ben,vimo_tPhklpwf(: cga=ryzS-u/)2s1d050K0c0k0x0g0o0I0u0v0o0x0I0I0y010k0g0p010406050I0E0h0h0x0z0A040C0i0o0E0#0i0d050F0,0.0:0=0*0p0405150~180F150*0K0g0f0T0V0X0Z0m0g0w0m0o1m0m0k0(050O0b0o0c1h0W0Y011l1n1p1n0k1v1x1t0k0z160k0m0T0^0I0p0x0d0Z0H011z1j010r0Q0c0d0x0h0c1t1S1U1Z1B1$1x1)1+0(0a0u0l0z0i0p0i0I0g0{0d0u0M1Q0z0z0c0v230~1.0d160F1O2g1L1N1M1u0K1:0Z1p0d1(201t1e1g0U1A2q0g2s0d0i2w1t0p29162e2g2K0+1T242y1!2D0z0/0o0(0J2d2O0)2N1/2Q1B2S2U0(0H2Y1U2g2H0c2g2w2j0K1N2o2%0Z0v2E1,162?172I2#2f2-352}0M2J2O2p010n0(0M0r363a2$1i1B0q0(0u3i343c0d0r0(1U0k2a0c0M0d0k0j0B0c1}3q2e3c0%040s3H3b2{010d3v3N3k2z013K0e3i3p3I3P3R040b3T2P3l0Z3K0G0t3i060u3?3!3O3,3d0(290k0E0z0}0 2Z3^3U1!0i0(0D3*3s0(3)422.443+3V47040F3Z3r3$3S4e2f0*0F382;19330F312h2^0~2k4C0x1w4v4y1f2!4y0N0P0R04.
Antécédent de \(y\)

On considère dans cette question des fonctions affines de coefficient directeur non nul.

Écrire la fonction antecedent qui prend en paramètres le coefficient directeur a et l'ordonnée à l'origine b d'une fonction affine \(f\) ainsi qu'un nombre y et renvoie la valeur de l'antécédent de \(y\) par \(f\).

Exemples
>>> antecedent(4, -8, 5)  # quel est l'antécédent de 5 par f: x ↦ 4x - 8 ?
3.25
>>> antecedent(-2, 15, 5)  # quel est l'antécédent de 5 par g: x ↦ -2x + 15 ?
5.0

###(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

.128013ben,vimotPhklpwf(: cga=ryS-u/)2s1d050I0c0j0w0g0n0G0t0u0n0w0G0G0x010j0g0o010406050G0C0h0h0w0y0z040A0i0n0C0Z0i0d050D0*0,0.0:0(0o0405130|160D130(0I0g0f0R0T0V0X0l0g0v0l0n1k0l0j0$050M0b0n0c1f0U0W011j1l1n1l0j1t1v1r0j0y140j0l0R0?0G0o0w0d0X0F011x1h010q0O0c0d0w0h0c1r1Q1S1X1z1!1v1%1)0$0a0t0k0y0i0o0i0G0g0_0d0t0K1O0y0y0c0u210|1,0d140D1M2e1J1L1K1s0I1.0X1n0d1$1~1r1c1e0S1y2o0g2q0d0i2u1r0o27142c2e2I0)1R222w1Y2B0y0-0n0$0H2b2M0%2L1-2O1z2Q2S0$0F2W1S2e2F0c2e2u2h0I1L2m2#0X0u2C1*142;152G2Z2d2+332{0K2H2M2n010m0$0K0q34382!1g1z0p0$0t3g323a0d0q0$1S0j280c0K0d0j3o2c3a0#040r3B392_010d3t3H3i2x013E0e3g3n3C3J3L040b3N2N3j0X3R3T3p3W0$0z3!3D0$0E0s3g060t3^3U3I3$3b0$270j0C0y0{0}2X3`3O1Y3E3G442,3*3|3X3-4b2d463#3P0i0$0B3)3V4e0$3Z4h3h4k483:4p3{4l0$0D4z472$3M4u0(0D362/17310D2 2f2?0|2i4T0w1u4M4P1d2Y4P0L0N0P04.
Coefficient directeur

On considère dans cette question une fonction affine dont la représentation graphique \(C_f\) passe par deux points \(A\,(x_A\,;\,y_A)\) et \(B\,(x_B\,;\,y_B)\).

Écrire la fonction coefficient_directeur qui prend en paramètres les coordonnées x_A, y_A, x_B et y_B des points \(A\) et \(B\) et renvoie le coefficient directeur de \(f\).

On garantit que les abscisses \(x_A\) et \(x_B\) des deux points sont différentes.

Exemples
>>> coefficient_directeur(1, 4, 9, 10)  # C_f passe par A (1 ; 4) et B (9 ; 10)
0.75
>>> coefficient_directeur(3, 15, -2, 15)  # C_f passe par A (3 ; 15) et B (-2 ; 15)
0.0

###(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

.128013ben,4vi3mo_txPhklpwf(: cga=ryS-u/2)AsB1d050O0c0m0A0h0r0L0x0y0r0A0L0L0B010m0h0s010406050L0G0j0j0A0C0D040E0k0r0G0)0k0d050H0:0=0@0_0.0s040519121c0H190.0O0h0g0X0Z0#0%0p0h0z0p0r1q0p0m0,050S0b0r0c1l0!0$011p1r1t1r0m1z1B1x0m0C1a0m0p0X0|0L0s0A0d0%0I011D1n010u0U0c0d0A0j0c1x1W1Y1%1F1*1B1-1/0,0a0x0o0C0k0s0k0L0h0 0d0x0Q1U0C0C0c0y27121=0d1a0H1S2k1P1R1Q1y0O1@0%1t0d1,241x1i1k0Y1E2u0h2w0d0k2A1x0s2d1a2i2k2O0/1X282C1(2H0C0?0r0,0N2h2S0-2R1?2U1F2W2Y0,0I2$1Y2(2i2t012-0A2Z040i2;2j0.2@2+0%2`2|0f2 2k2L0c2k2A2n0O1R2s33010y2I1:1a3d1b2M2)2j38053k0Q2N2S2^0q0,0Q0u3t321m1F0t0,0x3E3y3i0d0u0,3k0c0u1*0y0h1,0m0l1i2d2f0c0G0C3L2*3G0%0+040v3*2T3,2_0,0n0l0K3;2^3.0e383K3F2D3@040D3`3|3i3~403r2^0d3^0l0M483?4a132%413M3?4e454g4i433.0J0w38060x4A4n3+434q0Q0r0S0l0D4b421(0k0,0B4L4o4E0,464h4l2=4C3=434O040F4R4D2V4U474X304B4Z4d3B0c4H0A0l0n4)4!4N4P4|4=043_4W2O4;3i4$4(4.04564p4f3{5a4z4B4c3i3A042d0m3(115a5c4T044G4I4K5r5j3?4$0H503N4?4^4`4y123v3b1d3q0H3o2l3f122o5S0A1A5L5O1j2(5O0R0T0V04.
Ordonnée à l'origine

On considère dans cette question une fonction affine dont la représentation graphique \(C_f\) passe par deux points \(A\,(x_A\,;\,y_A)\) et \(B\,(x_B\,;\,y_B)\).

Écrire la fonction ordonnee_origine qui prend en paramètres les coordonnées x_A, y_A, x_B et y_B des points \(A\) et \(B\) et renvoie l'ordonnée à l'origine de \(f\).

On garantit que les abscisses \(x_A\) et \(x_B\) des deux points sont différentes.

La fonction coefficient_directeur de la question précédente est déjà chargée dans l'éditeur. Vous pouvez l'utiliser.

Exemples
>>> ordonnee_origine(1, 4, 9, 10)  # C_f passe par A (1 ; 4) et B (9 ; 10)
3.25
>>> ordonnee_origine(3, 15, -2, 15)  # C_f passe par A (3 ; 15) et B (-2 ; 15)
15.0

###(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

.128013ben,vi3mo_txPhklpwf(: cga=ryS*-u/2)AsB1d050O0c0l0z0g0q0L0w0x0q0z0L0L0A010l0g0r010406050L0G0i0i0z0B0C040D0j0q0G0)0j0d050H0:0=0@0_0.0r040519121c0H190.0O0g0f0X0Z0#0%0o0g0y0o0q1q0o0l0,050S0b0q0c1l0!0$011p1r1t1r0l1z1B1x0l0B1a0l0o0X0|0L0r0z0d0%0I011D1n010t0U0c0d0z0i0c1x1W1Y1%1F1*1B1-1/0,0a0w0n0B0j0r0j0L0g0 0d0w0Q1U0B0B0c0x27121=0d1a0H1S2k1P1R1Q1y0O1@0%1t0d1,241x1i1k0Y1E2u0g2w0d0j2A1x0r2d1a2i2k2O0/1X282C1(2H0B0?0q0,0N2h2S0-2R1?2U1F2W2Y0,0I2$1Y2(2i2t012-0z2Z040h2;2j1d2M122A2n0O1R2s2+0%0x2I1:1a341b322Q132%053b0Q2N2S2^0p0,0Q0t2 3o2*1m1F0s0,0w3v2)2T3y0%0d0t0,0j0B0O102w0c0k3L1q2F0c3D2@39010+040u3W3p3Y0d0,0m0k0K3%3x2D3Z0,0e3v3C3X3G2_0,0C3-3/3F3;3!3@3j2=3_3(3{3*043,0M402^433^3E2^4a3~4d45303`420,0J0v3v060w4w473:2V0,0z4h4p1(0j0,0A4D483;4a3b0c0t1*0x0g1,0l0k1i2d2f0c0G0B4e3Y3!3$4n3w414A4b3 4*4i4%3?4J4z2,3}4/2Q4E1F4g4*4y4,4_4.4m4|4K1(4 2O514j4`553k4}0%3!0J4u4x5b3Y3r042d0l4!11504;494`3.5u5g014G040F4@523H3+4{2%5m3{5C0E5F5c044C4*0.0H3m0c2k2L5X331j352n2q2l0z1A5!0H345U0Q0S0U0L04.