Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

#26 Re : Programmation » Droites tangentes à une courbe » 01-07-2014 10:51:46

Bonjour yoshi,

geo.png

Je vous montre ma démarche pour trouver la fonction paramétrée qui modélise un cercle, un demi cercle, un quart de cercle...



Soit [tex]C[/tex] un point appartenant à un cercle.
Soit [tex]x_c[/tex] et [tex]y_c[/tex] les projetés du point [tex]C[/tex] sur les axes [tex]x, y[/tex].
Soit [tex]r[/tex] l'hypoténuse du triangle [tex]FCx_c[/tex].
Soit [tex]\alpha[/tex] un angle du triangle [tex]FCx_c[/tex].



On sait que, d'après les rapports trigonométriques, nous avons
[tex]cos \alpha = \frac{x_c}{r}[/tex]

d'où
[tex]x_c = cos \alpha \times r[/tex]



En outre,
[tex]sin \alpha = \frac{y_c}{r}[/tex]

d'où
[tex]y_c = sin \alpha \times r[/tex]



Pour tracer un cercle, un demi cercle, voire un quart de cercle, il me suffit de calculer les points de coordonnées [tex](x, y)[/tex] tels que [tex]x = cos \alpha \times r[/tex] et [tex]y = sin \alpha \times r[/tex] en faisant varier la valeur de l'angle [tex]\alpha[/tex] ! Génial !

Par exemple, pour tracer un demi-cercle, [tex]\alpha[/tex] prendra successivement les valeurs tel que [tex]0 ≤ \alpha ≤ 180°[/tex] !

Pour calculer les points [tex]E[/tex] milieux de [tex][Cx_c][/tex], il suffit de leur donner les coordonnées suivantes, [tex](x, y = \frac{sin\alpha \times r}{2})[/tex] !

Tout à l'heure, j'écrirai le programme.

Au revoir.

#27 Re : Programmation » Droites tangentes à une courbe » 30-06-2014 19:46:40

Bonsoir tout le monde,

yoshi a écrit :

Que penses-tu de OM ? (pas le club !).

Ce que je pense de [tex]OM[/tex] ? Eh bien, étant donné que ce triangle [tex]POS[/tex] est rectangle en [tex]O[/tex], j'en déduis que [tex]OM[/tex], qui est la médiane de ce triangle, car étant la droite passant par le sommet [tex]O[/tex] du triangle et coupant l'hypothénuse en son milieu, est égale à la moitié de l'hypoténuse, d'où la relation suivante [tex]OM = \frac{1}{2} PS[/tex] !

Et cet arc de cercle, ce quart de cercle a pour rayon la longueur [tex]OM[/tex] !

yoshi a écrit :

Tout comme, en 4e, j'ai appris à calculer une racine carrée à la main

Cela devait être une tâche longue et laborieuse... Mais bien sûr vous n'aviez pas la chance de disposer de calculatrices qui évitent de passer du temps sur ces petits calculs pour se focaliser sur le sujet d'un exercice.

yoshi a écrit :

C'est en faisant des bêtises qu'on apprend : vois-tu, il est très rare qu'un programme informatique fonctionne du premier coup.

C'est bien vrai ! Et l'on est très content lorsque l'on y parvient ! Il faut persévérer.

yoshi a écrit :

Pour le tracé des courbes, on peut installer dans Python, une bibliothèque additionnelle : matplotlib. C'est un plus compliqué que turtle, bien plus puissant et nécessite de connaître quand même correctement Python...

Je vais chercher de ce côté là aussi... Mais il faut que je poursuive à bien maîtriser ce langage... Le module turtle est vraiment bien pour se familiariser avec la programmation informatique...

Au revoir ! Merci pour vos conseils avisés !

#28 Re : Programmation » Droites tangentes à une courbe » 30-06-2014 18:22:57

Bonjour,

Yoshi, j'ai trouvé ! C'est génial ! J'ai persévéré !

Le code et l'image que j'ai annotée afin qu'elle nous soit plus exploitable

La figure me laisse penser qu'il s'agisse d'un quart de cercle

curve.png

from turtle import goto
from math import sqrt

def courbe(longueur):
    for i in range(longueur):
        goto((sqrt(i*(-i + 2*longueur)))/2, (longueur - i)/2)

courbe(500)

Le calcul de [tex]a[/tex] dans mon programme est compliqué, peut-on le simplifier, confère le message du dessus ? Non, je ne crois pas, j'ai bien un produit, autant le conserver.

J'ai commencé ton second problème sur Geogebra et cela m'a l'air très intéressant [tex](sa[/tex] [tex]seconde[/tex] [tex]partie[/tex] [tex]en[/tex] [tex]particulier)[/tex]. Je vais chercher et je ne me découragerais pas.

À bientôt ! Et merci Yoshi !

#29 Re : Programmation » Droites tangentes à une courbe » 30-06-2014 17:21:35

Bonjour,

totomm a écrit :

Attention jeune et fougueux lambda : La facilité fait écrire des âneries.

Je m'en suis rendu compte et j'ai supprimé mon message tellement j'étais horrifié !

yoshi a écrit :

Là, j'enfonce des portes ouvertes...

(Sourire !) Bon, on arrête le massacre.

ou encore

yoshi a écrit :

Si tu regarde le triangle SOP de près, tu verras qu'on y procède autrement pour trouver la nature de la courbe. Mon sujet était de tracer cette courbe.

[tex]Mea[/tex] [tex]culpa ![/tex]

Moralité : je me suis lancé dans ton problème trop rapidement, j'en suis conscient. Je retiens la leçon.
Je reformule donc le problème que tu m'as donné


dessin.png
J'ai même fait un dessin ! Un bon croquis vaut mieux qu'un long discours, n'est-ce pas ?


Soit [tex]l[/tex] la longueur de l'échelle (longueur fixée)
Soit [tex]x[/tex] la longueur qui nous indique de combien descend l'échelle sur l'axe des [tex]y[/tex] (longueur fixée).
Soit [tex]a[/tex] la longueur qui nous indique de combien "glisse" l'échelle sur l'axe des [tex]x[/tex] (longueur à déterminer).


Il ne m'a pas échappé que pour déterminer [tex]a[/tex] en fonction des autres longueurs, je n'ai qu'une toute simple application du fameux théorème de Pythagore.


D'où la relation suivante
[tex](l - x)^2 + a^2 = l^2[/tex]

En isolant [tex]a[/tex] on obtient
[tex]a^2 = x(-x + 2l)[/tex]


La prochaine fois je reformulerai le problème au lieu de me lancer tête baissée !

Merci yoshi.

#30 Re : Programmation » Droites tangentes à une courbe » 30-06-2014 13:30:04

Bonjour yoshi,

yoshi a écrit :

Tiens je te propose deux exercices de 4e.
1.     Une échelle de 400 pieds est posée verticalement contre un mur perpendiculaire à un sol bien plat.
        On la suppose sans épaisseur pour les besoins du problème.
        Si elle se met à glisser contre le mur, le pied restant en contact avec le sol, son sommet avec le mur,
        quelle est la courbe décrite par un nœud rouge fixé en son milieu ? Peux-tu la matérialiser avec turtle ?

Je me suis lancé dans le premier exercice et que vois-je ?

exercice.png

from turtle import speed, goto, dot, penup, pendown, color

speed(0)
color('#c080ff')

def cordes(longueur, nombreCordes):
    pas = float(longueur)/nombreCordes
    for i in range(0, nombreCordes + 1):
        penup()
        goto(longueur - pas*i, 0)
        pendown()
        goto(0, pas*i)
        goto((longueur - pas*i)/2, (pas*i)/2)
        dot(5, '#c000c0')

cordes(500, 20)

À première vue, on dirait que cet ensemble de points rouges forment la droite tangente du point au [tex]"milieu"[/tex] de la courbe.
Tout à l'heure, je me plongerai de nouveau dans le second exercice que tu as eu la gentillesse de me donner. Ça se corse.

Merci yoshi pour ce partage.

Au revoir.

#31 Re : Programmation » Droites tangentes à une courbe » 30-06-2014 11:02:38

Bonjour totomm,

totomm a écrit :

Surtout rappelle-toi que lorsque l'on prend h petit (tout petit puisqu'on le fait tendre vers zéro) alors tout ce qui est en h² est vraiment encore plus petit et on "simplifie" en le supprimant froidement des développements...

Ah oui ! C'est en rapport avec ce que j'ai vu concernant les rapports de réduction, lorsque [tex]k< 1[/tex], et qu'on le multiplie par lui-même, c'est-à-dire un nombre inférieur à un, alors [tex]k^2[/tex] est bien plus petit que [tex]k[/tex] !

totomm a écrit :

Je me risque même à dire : On reconnait une parabole.

Une parabole, ce n'est pas la représentation graphique de la fonction [tex]i(x) = x^2[/tex] ???
Dans ce cas, [tex]f(x)=x−2√x+1[/tex] où [tex]f(x)=y[/tex] n'est pas une parabole.

totomm a écrit :

Pour tout ce qui est géométrie, je te conseille GeoGebra (logiciel libre et gratuit)

En effet, c'est un très bon logiciel de géométrie dynamique.

Je viens de voir un article sur L’art de tendre des fils (sic) qui traite de ces enveloppes, rendez-vous ici ! C'est super !

J'ai généralisé le problème en écrivant un programme qui prend en compte l'angle que forment les deux segments de l'enveloppe

curve8.png
curve6.png
curve9.png
Voici le programme Python

from turtle import Turtle, speed

speed(0)

def parabole(longueur, angle, nombreCordes):

    a, b, c = Turtle(), Turtle(), Turtle()
    a.hideturtle()
    b.hideturtle()
    c.hideturtle()

    pas = longueur/nombreCordes
    angleAlpha = 90 - angle/2

    a.left(angleAlpha)
    a.forward(longueur)
    b.left(angleAlpha + angle)

    for i in range(nombreCordes):

        a.forward(-pas)
        coordonneesPointA = a.pos()

        b.forward(pas)
        coordonneesPointB = b.pos()

        c.goto(coordonneesPointA)
        c.pendown()
        c.goto(coordonneesPointB)
        c.penup()

parabole(500, 60, 50)

Au revoir.

#32 Re : Programmation » Droites tangentes à une courbe » 29-06-2014 15:48:29

Bonjour,

totomm a écrit :

La courbe a alors pour équation paramétrée : [tex]x = \frac {m^2} {a}[/tex] et [tex]y = \frac {(m−a)^2}{a}[/tex]

Totomm, j'ai décidé de suivre tes indications afin de retrouver l'équation paramétrée. J'essaye de rédiger le plus clairement possible.

Soit [tex]l[/tex] un paramètre fixé, la longueur du segment [tex][AB][/tex].
Soit [tex]n[/tex] le nombre de droites tangentes à la courbe.
Soit [tex]m[/tex] un paramètre dont les valeurs qu'on lui donne doivent être comprises entre [tex]0[/tex] et [tex]l[/tex], donc [tex]0 ≤ m ≤ l[/tex].
En outre, [tex]m_i = i \times h[/tex] avec [tex]h = \frac {l}{n}[/tex].
Soit le point [tex]A(m ; 0)[/tex] et le point [tex]B(0 ; l - m)[/tex].




Écrivons l'équation de la droite [tex](AB)[/tex] en fonction de [tex]m[/tex],

La droite [tex](AB)[/tex] passe par l'ordonnée à l'origine [tex]b(0 ; l - m)[/tex], donc la fonction qui modélise cette droite est une fonction affine.
Donc, [tex]y = ax + b[/tex], puis [tex]y = ax + l - m[/tex].

Exprimons en fonction de [tex]m[/tex] le coefficient directeur de la droite [tex](AB)[/tex], soit [tex]a[/tex],
[tex]a = - \frac {l - m}{m}[/tex]

Ainsi,
[tex]y = - \frac{l - m}{m}x + l - m[/tex]

Écrivons l'équation de la droite [tex](A'B')[/tex] en fonction de [tex]m[/tex],
en augmentant [tex]m[/tex] de [tex]h[/tex], pour dessiner la droite qui succède à [tex](AB)[/tex]

[tex]y' = - \frac{l - (m + h)}{m + h}x + l - (m + h)[/tex]




Déterminons le point d'intersection des deux droites [tex](AB)[/tex] et [tex](A'B')[/tex].
On obtiens [tex]y = y'[/tex], d'où

[tex] - \frac{l - m}{m}x + l - m = - \frac{l - (m + h)}{m + h}x + l - (m + h)[/tex]

[tex]x \Bigg{(}  - \frac{( l - m)(m + h)}{m(m + h)} + \frac{m(l - m - h)}{m(m + h)} \Bigg{)} = - h[/tex]

... Après s'être bien amusé à tout développer (sourire), on factorise par [tex]x[/tex]
[tex]x \Bigg{(}  \frac{-lh}{m^2 + hm} \Bigg{)} = -h[/tex]

... Au final on obtient effectivement
[tex]x = \frac{m^2 + h}{l}[/tex]

En faisant tendre [tex]h[/tex] vers [tex]0[/tex], il devient négligeable donc,
[tex]x = \frac{m^2}{l}[/tex]




Maintenant, substituons [tex]x[/tex] dans l'équation
[tex]y = - \frac{(l - m)m^2}{ml} + l - m[/tex]

[tex]y = - \frac{(l - m)m^2}{ml} + \frac{(l - m)ml}{ml}[/tex]

[tex]y = \frac{(l - m)(m(-m + l))}{ml}[/tex]

d'où
[tex]y = \frac{(l -m)^2}{l}[/tex]

totomm a écrit :

Le point d'intersection est alors le point de contact avec [tex](AB)[/tex] de la courbe  [tex]"[/tex]enveloppe de [tex](AB)"[/tex].

Donc, les points d'intersections de coordonnées [tex](x, y)[/tex] où [tex]x = \frac{m^2}{l}[/tex] et [tex]y = \frac{(l -m)^2}{l}[/tex] appartiennent à la fameuse courbe !

Merci totomm pour tes indications. Je me suis trompé à certains moments mais on m'a un peu guidé lorsque je développais alors qu'il était plus judicieux de factoriser... Ce fut vraiment laborieux. Mais cela m'a permis de bien m'entraîner à développer et factoriser !

Au revoir !

#33 Re : Programmation » Droites tangentes à une courbe » 28-06-2014 16:35:42

Je tiens à te remercier totomm !

Je viens de comprendre à peu près ce qu'est ta fonction paramétrée, et en quoi elle m'est utile. J'en ai déduit que pour tracer sa représentation graphique, il faut calculer à chaque fois la position d'un point de coordonnées [tex](x, y)[/tex] tel que
[tex]x = \frac{m^2}{a}[/tex] et [tex]y = \frac{(m - a)^2}{a}[/tex], pour toute valeur de [tex]m[/tex] !

Voici ce que j'obtiens
curve.png

La fonction paramétrée implémentée par mes propres soins

from turtle import goto, forward, left, speed

speed(0)

def courbe(longueur, nombreCordes):
    pas = longueur/nombreCordes
    for i in range(nombreCordes):
        x = pow(i*pas, 2)/longueur
        y = pow(i*pas - longueur, 2)/longueur
        goto(x, y)
courbe(300, 300)

Cependant, je m'attendais à te voir écrire une fonction telle que je les ai vues en troisième, tel que [tex]i(n) = y[/tex] par exemple, car j'ignorais jusque là ce qu'étaient les fonctions paramétrées. En outre, je viens de découvrir la fonction non paramétrée qui modélise cette courbe, [tex]f(x) = x - 2 \sqrt{x} + 1[/tex] ! Super !

Au revoir !

#34 Programmation » Droites tangentes à une courbe » 28-06-2014 12:10:48

lambda
Réponses : 21

Bonjour,

Ayant à maintes reprises visité votre site, et apprécié l'ambiance de votre forum, regorgeant de sujets intéressants, j'ai fait le choix de m'y inscrire. Je viens d'achever mon année de troisième et j'entrerai bientôt au lycée !

Depuis deux semaines, je me suis initié à la programmation informatique afin de profiter de la puissance des ordinateurs pour m'amuser à réaliser des figures géométriques à l'aide du module turtle. J'ai fais le choix d'apprendre le langage de programmation Python car c'est un langage simple, à la syntaxe claire.

Voici la figure que j'obtiens,
une figure que je m'amusais à reproduire lorsque j'étais plus jeune sans savoir ce qu'elle représentait !
courbe

Je vous présente mon programme.
Le paramètre [tex]longueur[/tex] désigne la taille des deux segments alignés aux axes [tex]x, y[/tex] (la taille de la figure) tandis que le paramètre [tex]nombreCordes[/tex] indique le nombre de droites tangentes à cette courbe. La courbe étant constituée d'une infinité de tangentes, le paramètre [tex]nombreCordes[/tex] doit tendre vers l'infini si l'on souhaite représenter fidèlement la courbe.

from turtle import goto, penup, pendown

speed(0)

def cordes(longueur, nombreCordes):
    pas = float(longueur)/nombreCordes
    for i in range(0, nombreCordes + 1):
        penup()
        goto(longueur - pas*i, 0)
        pendown()
        goto(0, pas*i)

Je l'ai fait tout seul donc c'est vraiment gratifiant d'avoir su parvenir à décomposer un problème en une suite d'instructions par soi-même.

Seulement, un problème persiste et la tâche s'annonce vraiment très ardue. Je souhaite en effet en déduire la fonction dont la représentation graphique soit cet ensemble infini de points appartenant à cette courbe. Je fais appel à vos connaissances et à votre professionnalisme pour me partager cette fonction.

Je vous remercie pour toute recherche, toute tentative de réponse à mon problème !
Je vous souhaite une agréable journée !

Pied de page des forums