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

#1 25-11-2019 20:46:20

Cyril25715
Invité

Besoin d'aide sur l'utilisation de python

Bonjour je reviens vers vous car j'ai un problème sur python. En effet dans le programme suivant, la fonction doit être fausse et il faudrait afficher il n'y a pas de solutions. x appartient à l'ensemble des réels compris entre 0 et 8. Malheureusement je n'arrive pas à contourner le print (lunule()) car sinon le programme ne s'active pas et la console m'affiche en permanence 0,1. LIEN
https://imageshack.com/i/popx7V9rj
Auriez vous une solution ? Merci d'avance

#2 25-11-2019 22:25:30

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 947

Re : Besoin d'aide sur l'utilisation de python

Bonsoir,

Si je savais exactement ce que tu veux ce serait plus simple...

Bon, déjà qu'est-ce que tu veux dire par
while a!=6*pi and x:

Pourquoi ce and x ?
Pour moi, le fautif c'est lui.
Il faut écrire and x <8...

Ensuite que veux-tu dire par programme suivant ?
Parce que le 6*pi me laisse à penser que ton 6*pi c'est $\dfrac 3 4\times 8\pi$
Si c'est bien cela, alors je t'ai pourtant écrit que dans ma façon de calculer cette aire, a n'était pas l'aire de la lunule mais la somme des aires des demi-disques orange.
Et que donc pour une lunule dont l'aire serait les 3/4 du demi-disque de diamètre [AB], l'aire a vaudrait 1/4 de 8pi donc 2pi.
Donc ta boucle while doit être définie par :

while a!=pi*2 and x<8:

Il faut modifier aussi la fin (après le return x):

x=lunule()
if x >8:
    print ("Pas de x tel que l'aire de la lunule soit les 3/4 de celle du demi-disque de diamètre [AB]")
else :
    print ("L'aire de la lunule est égale à celle du demi-disque de diamètre [AB] pour x =",round(x,1))

Je récupère la valeur de  x renvoyée par return x.
Puis,
si x est >8, il n'y a donc pas de solution
sinon on affiche x = 4.0

Revu ainsi, le même programme traite le cas ou l'aire de la lunule est la moitié de celle du demi-disque et le cas ou l'on cherche x pour que l'aire de la lunule vaille  les  3/4...

D'autre part, je m'aperçois que selon ta formule tu calcules
$2\pi x$ ça c'est la longueur du cercle de diamètre [AM]
$2\pi x^2/8$ que je décompose :
--> $\pi x^2$, qui est le quadruple de l'aire du disque (pas demi, disque complet) de diamètre [AM]
--> $2\pi x^2$, qui est donc l'octuple de l'aire du disque (pas demi, disque complet) de diamètre [AM]
--> $2\pi x^2/8$, qui est donc finalement l'aire du disque (pas demi, disque complet) de diamètre [AM]

Et le a que tu calcules n'a aucun sens : tu cherche la différence entre une longueur et une aire... autant essayer de chercher la différence entre la quantité d'assiettes posées sur une able et la quantité d'eau totale contenue dans des verres posés sur cette table !

A quoi joues-tu ?
Quel rapport avec la lunule ?
Si c'est toujours le même exercice mais avec 3/4 au lieu de la moitié, ton a correspondant à $6\pi$ est :
$a=8\times\pi-\pi\times\left(\dfrac{x^2}{8}+\dfrac{(8-x)^2}{8}\right)$

L'aire d'un disque est $\pi R^2$
Ici x est un diamètre, le rayon est donc $\dfrac{x}{2}$ et l'aire du disque : $\pi\times \dfrax{x^2}{4}$
Et comme on veut le  demi-disque de diamètre x :
$\pi\times \dfrac{x^2}{8}$

Pour le demi-disque de diamètre [MB] : $MB=8-x$ rayon $\dfrac{8-x}{2}$
Aire du disque : $\pi\times \dfrac{(8-x)^2}{4}$.
Et l'aire du demi-disque
$\pi\times $\dfrac{(8-x)^2}{8}$

L'aire du demi-disque de diamètre AB=8 est $\dfrac{\pi \times 16}{2} =8\pi$

L'aire a est donc la différence entre l'aire ci-dessus et la somme des aires précédentes (dans ma formule de la somme, j'ai mis $\pi$ en facteur, j'aurais pu factoriser par $\pi$, toute la formule...).

J'espère que demain, tu m'auras expliqué ce que tu cherches vraiment...

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#3 26-11-2019 06:59:25

Cyril25718
Invité

Re : Besoin d'aide sur l'utilisation de python

Bonjour, désolé de t'avoir dérangé, enfait la formule que je trouve c'est le développement de la fonction et  je l'ai simplifié(parce que dans la question 1 il fallait exprimé l'aire de la partie rose en fonction de M ducoup j'ai fait ça), je sais pas si le fait de simplifier la fonction change l'algorithme. Après vu que j'ai vu que l'aire de la partie orange est égale à la rose en 4, j'ai essayé de calculer les 2 aires pour les x inverses en prenant 4 pour milieu et j'ai trouver les mêmes resultats donc je pense que c'est bon. Autrement pour le x apres le ! = 6pi c'est une erreur je l' avait enlevé après. Et sinon merci d'avoir répondu à mes question après le return x j'avais beau cherché je ne trouvais pas comment le faire.

#4 26-11-2019 09:27:22

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 947

Re : Besoin d'aide sur l'utilisation de python

Bonjour,

Pa de dérangement...
Simplement, j'ai été surpris par ton a, je n'avais pas vu que tu avais simplifié ^_^

Si c'est ta fonction qui gère l'affichage, pas besoin d'écrire print (lunule()), juste lunule() comme si tu appelais ton chien :
<< Médor, viens ici ! >>


from math import pi
     
def lunule():
    x=0
    a=0
    while a !=pi*2 and x<8:
        x=x+0.1
        a=(x**2/8+(8-x)**2/8)*pi
    if x >8:
        print ("Pas de x tel que l'aire de la lunule soit les 3/4 de celle du demi-disque de diamètre [AB]")
    else :
        print ("L'aire de la lunule est égale à celle du demi-disque de diamètre [AB] pour x =",round(x,1))  
    return

lunule()
 

Résultats
Si je laisse $\pi\times 2$ dans le while :


Pas de x tel que l'aire de la lunule soit les 3/4 de celle du demi-disque de diamètre [AB]
 

Si je remplace  $\pi\times 2$ dans le while par $\pi \times 4$:

L'aire de la lunule est égale à celle du demi-disque de diamètre [AB] pour x = 4.0

Oui, on peut simplifier a, mais tant qu'à simplifier, autant le faire "proprement", jusqu'au bout...
L'aire rose est égale  à :
aire demi-disque de diamètre [AB] - somme des aires orange,
soit
$a=8\pi-\pi\left(\dfrac{ x^2}{8}+\dfrac{(8-x)^2}{8}\right)$
Que je commence par écrire :
$a=\pi\left[8-\left(\dfrac{ x^2}{8}+\dfrac{(8-x)^2}{8}\right)\right]$
je simplifie ma parenthèse :
$a=\pi\left[8-\left(\dfrac{ x^2+(8-x)^2}{8}\right)\right]$
je développe et réduis le numérateur de la fraction :
$a=\pi\left[8-\left(\dfrac{ x^2+64-16x+x^2}{8}\right)\right]$

$a=\pi\left[8-\left(\dfrac{2 x^2-16x+64}{8}\right)\right]$

$a=\pi\left(\dfrac{64}{8}-\dfrac{2 x^2-16x+64}{8}\right)$

$a=\pi\left(\dfrac{64- 2x^2+16x-64}{8}\right)$

$a=\pi\left(\dfrac{16x- 2x^2}{8}\right)$

$a=\pi\left(\dfrac{16x- 2x^2}{8}\right)$

je simplifie la fraction :
$a=\pi\left(\dfrac{8x- x^2}{4}\right)$

Soit en Python

a=pi*(8-x**2)/4

Maintenant, soit tu veux gérer l'affichage dans la fonction :


from math import pi

def lunule():
    x=0
    a=0
    while a !=pi*6 and x<8:
        x=x+0.1
        a=pi*(8*x-x**2)/4 # /!\ a est ici l'aire rose
    if x >8:
        print ("Pas de x tel que l'aire de la lunule soit les 3/4 de celle du demi-disque de diamètre [AB]")
    else :
        print ("L'aire de la lunule est égale à celle du demi-disque de diamètre [AB] pour x =",round(x,1))  
    return

lunule()
 

mais dans ce cas, le x de return x ne sert à rien (on peut le laisser quand même)

Soit tu gères l'affichage à l'extérieur :


from math import pi

def lunule():
    x=0
    a=0
    while a !=pi*6 and x<8:
        x=x+0.1
        a=pi*(8*x-x**2)/4 # /!\ a est ici l'aire rose
    return x

x=lunule()
if x >8:
    print ("Pas de x tel que l'aire de la lunule soit les 3/4 de celle du demi-disque de diamètre [AB]")
else :
    print ("L'aire de la lunule est égale à celle du demi-disque de diamètre [AB] pour x =",round(x,1))
 

Et là, le x de return x est absolument nécessaire...

Donc, là, je répète : - pour être conforme à la première question - j'ai refait les calculs pour que a soit bien l'aire de la lunule et les ai simplifiés...
Par conséquent, tu dois bien boucler  avec a!=pi*6...

N-B :
Programmatiquement parlant, dans ton exo, tu peux supprimer tous les $\pi$ dans le code : ça ne changera pas les réponses.
En effet,
tu compares pi*(8*x-x**2)/4 avec pi*6 ou pi*4
Et ça changerait quoi de comparer
(8*x-x**2)/4  avec 6 ou 4 ?
Rien... du moment que la réponse attendue est la valeur de x, par contre si tu veux afficher la valeur de l'aire rose, il faut bien laisser le $\pi$

D'ailleurs, si on cherche à résoudre mathématiquement l'équation $\pi\left(\dfrac{8x-x^2}{4}\right)=4\pi$  (question 4 de l'exercice)
On simplifie par $\pi$ :
$\dfrac{8x-x^2}{4}=4$ (1)
$\iff$
$8x-x^2=16$
$\iff$
$x^2-8x+16=0$
$\iff$
$(x-4)^2=0$
Et tu retrouves bien x=4

Je repars de (1) et pour le cas aire =3/4, je remplace le 4 du 2e membre par 6 :
$\dfrac{8x-x^2}{4}=6$ (1)
$\iff$
$8x-x^2=24$
$\iff$
$x^2-8x+24=0$
Maintenant
* Soit tu sais calculer le discriminant et tu constates que $\Delta<0$...
* Soit (niveau 2nde), tu passes par la forme canonique :
   $x^2-8x+24=(x-4)^2-16+24=(x-4)^2+8$
   Et on constate que l'équation ci-dessous n'a pas de solution :
   $(x-4)^2+8=0$
   En effet cette équation équivaut à :
   $(x-4)^2=-8$
   Un carré n'est jamais négatif : pas de solution.

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#5 26-11-2019 17:45:55

Cyril257
Invité

Re : Besoin d'aide sur l'utilisation de python

Salut, merci pour tous les conseils ça m'a bien aidé en plus ils m'ont donné pleins d'infos sur le langage python qui m'aideront sûrement à l'avenir(avec la réforme la programmation est très présente dans le programme de maths). Après pour les équations mathématiques j'avais utilisé le discriminant(c'était justement la question 4 et j'avais trouvé les mêmes résultats que dans les programmes). Et sinon désolé pour le a j'aurai dû prévenir c'est de ma faute. Encore une fois je ne saurais comment te remercier pour tout le temps que tu as pris afin de me répondre.

@+

#6 27-11-2019 21:31:42

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 947

Re : Besoin d'aide sur l'utilisation de python

Bonjour,

Ta satisfaction fait chaud au cœur...
J'ai été prof de maths, même retraité, dans ma tête je le suis encore : mon plaisir est d'aider qui veut bien se casser la tête...
C'est encore plus vrai avec Python auquel je dirais que 80 % de ceux qui sont chargés de vous en inculquer les rudiments, en savent un peu plus que vous parce qu'ils n'ont pas été formés (et ils en sont les premiers ennuyés) et qu'ils ont quelques séances d'avance et des corrigés à leur disposition.

J'ai décidé, moi qui ai appris Python en autodidacte (je ne sais pas tout : Python est tellement vaste), d'essayer de rédiger un "tuto" (interactif, puisque je réponds aux questions) à ma façon.
Si tu as du temps et que tu souhaites en savoir plus sur le minimum à savoir et comprendre pour voler ensuite de tes propres ailes...
Tu le trouverais ici http://www.bibmath.net/forums/viewtopic.php?id=11934

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

Pied de page des forums