Inscription / Connexion Nouveau Sujet
Niveau terminale
Partager :

u appartient à un intervalle

Posté par
tetras
21-09-24 à 14:20

Bonjour
je sais faire un programme Python pour déterminer un seuil , à partir duquel u>4 par exemple
Mais je voudrais savoir comment déterminer le rang à partir duquel les termes un appartiennent à ]4-a;4+a[

je vais utiliser une fonction def intervalle(a)

voici ma suite u définie pour tout entier n
u=\frac{4n+1}{n+1}
while u<4-a
mais ici la contrainte est double à cause de la borne supérieure de l'encadrement

peut on s'en sortir avec une boucle while?

merci

Posté par
hekla
re : u appartient à un intervalle 21-09-24 à 14:46

Bonjour

Une simple remarque, je ne connais pas Python

u_n\in]4-\epsilon~;~4+\epsilon[ \iff \vert u_n-4\vert <\epsilon

Posté par
mathafou Moderateur
re : u appartient à un intervalle 21-09-24 à 15:08

bonjour,

c'est le plus élégant !

mais aussi, histoire de répondre à "j'ai deux conditions dans mon while" (qui pourrait donc se généraliser à d'autres cas de figure)

u_n \in\; ]4-a;4+a[ \iff u_n > 4-a\; ET\;  u_n < 4+a

pour utiliser un while, on veut faire :
while (tant que) "c'est faux" (tant que on est en dehors de l'intervalle)

quelle est la négation de "u_n > 4-a ET u_n < 4+a" ?
rappel : la négation de "A et B" est "non A ou non B"
(et python c'est en anglais : "and" pour "et" et "or" pour "ou")

Posté par
tetras
re : u appartient à un intervalle 21-09-24 à 17:46

Merci
J'ai revu le lien entre, intervalle, distance et valeur absolue.
Mathafou : la négation est :

Tant que u4-a
ET u4+a
On peut mettre deux conditions dans un programme tant que si j'ai bien compris

Posté par
mathafou Moderateur
re : u appartient à un intervalle 22-09-24 à 11:59


relis ce que j'ai écrit : la négation d'une proposition i "et" est le OU des négations
en dehors de l'intervale, c'est avant OU après.

n = 0
u = ...
while u <= 4-a or u >= 4+a :
    n= n+1
    u = ...


ici c'est de peu d'intérêt car avec abs() c'est bien plus clair et efficace.
mais dans d'autres cas on peut mettre une proposition composée avec des and et des or dans un if ou un while etc. (des not, xor )

Posté par
tetras
re : u appartient à un intervalle 22-09-24 à 15:51

Merci

J'ai essayé ceci
from math import *
n=0
u=(4n+1)/(n+1)
     while abs(u-4)<.1:
         n=n+1
         u=(4n+1)/(n+1)
print (n)

Mais j'ai le msg suivant :invalid syntax for integer with base 10


Posté par
sanantonio312
re : u appartient à un intervalle 22-09-24 à 16:14

Bonjour,
Il y a au moins une erreur: 4n n'est pas compris par Python
Tu dois écrire 4*n

Posté par
tetras
re : u appartient à un intervalle 22-09-24 à 16:53

Ok merci j'ai corrigé
Il y avait une autre erreur
abs(u-4)>0.1
Le programme affiche 30
Par contre si je le teste avec e =. 000001
J'ai le message suivant : line 6
KeyboardInterrupt

La ligne 6 correspond à u=(4*n+1)/(n+1)

Posté par
sanantonio312
re : u appartient à un intervalle 22-09-24 à 16:57

Je n'ai pas ce problème.
J'obtiens :
n= 3000000
pour u=3.9999990000003334

Posté par
sanantonio312
re : u appartient à un intervalle 22-09-24 à 16:58

as-tu essayé avec des valeurs intermédiaires?

Posté par
tetras
re : u appartient à un intervalle 22-09-24 à 20:39

Bizarre avec abs(u-4)>.001
Le programme fonctionne n=2999

Posté par
sanantonio312
re : u appartient à un intervalle 22-09-24 à 21:10

Moi aussi

Posté par
candide2
re : u appartient à un intervalle 23-09-24 à 10:52

Bonjour,

Un peu hors sujet ... quoique.

"mais ici la contrainte est double à cause de la borne supérieure de l'encadrement "

Ecrire un programme (Python ou autre) ne doit pas empêcher de réfléchir avant de se lancer dans la rédaction de l'algo.

Dans le cas de l'exercice avec : u(n) = (4n+1)/(n+1), on a :

u(n) = (4n+4-3)/(n+1)
u(n) = 4 - 3/(n+1)

Et donc u(n) < 4 quelle que soit la valeur de n.
Il est donc inutile (durée de déroulement de l'algo, utilisation non nécessaire de mémoires, ...) de tester pour u(n) > 4.

Cela n'empêche pas de réfléchir dans un cadre plus général, où il serait impératif de tester pour les 2 "cotés" d'un intervalle ... mais ce n'est pas le cas (ou devrait ne pas être le cas) avec l'exemple proposé.


  

  

Posté par
mathafou Moderateur
re : u appartient à un intervalle 23-09-24 à 11:05

pour info

Citation :
line 6
KeyboardInterrupt
ça veut dire que on a tapé une touche du claver (keyboard) pendant l'exécution du programme dans le but de l'arrêter (interrupt) prématurément.

cela peut être involontaire : la touche qui a servi à lancer l'exécution a "rebondi" (ou on a laissé le doigt trop longtemps dessus et le gestionnaire clavier à créé une répétition de touche)
ou .. le chat s'est couché sur le clavier à ce moment.

il n'y a aucune explication autre à ce "keyboard interrupt"
on peut imaginer le rebond de la touche de lancement se produisant après un temps t (en millisecondes...)
si a est assez grand le programme se termine naturellement avant et donc aucun effet visible.
si a est assez petit, le programme dure plus longtemps et du coup le rebond se produit pendant que le programme tourne encore.

Posté par
tetras
re : u appartient à un intervalle 23-09-24 à 11:53

Merci c'était moi le chat.
Mon programme fonctionne avec 10^-6
Il fallait juste être patient

Posté par
tetras
re : u appartient à un intervalle 23-09-24 à 21:15

j'ai essayé de modifier le programme

from math import *
def seuil (a)
n=0
u=(4n+1)/(n+1)
     while abs(u-4)>a
         n=n+1
         u=(4*n+1)/(n+1)
print (n)

j'ai le message suivant : invalid syntax

et si je tape seuil(30)
'seuil' is not defined

Posté par
tetras
re : u appartient à un intervalle 23-09-24 à 21:41

merci beaucoup mathafou avec la bonne indentation et les : il fonctionne egalement

Posté par
tetras
re : u appartient à un intervalle 24-09-24 à 11:43

je reviens sur mon programme

n = 0
u = ...
while u <= 4-a or u >= 4+a :
    n= n+1
    u = ...

il faut au préalable demander à l'utilisateur de choisir une valeur de a
comment faire si je ne veux pas créer une fonction
j'ai essayé avec
a=input()

je n'arrive pas à utiliser cette fonction input même pour un programme tout simple

pouvez vous m'aider?
merci

Posté par
mathafou Moderateur
re : u appartient à un intervalle 24-09-24 à 12:15

ce que tu tapes en réponse à input est une suite de caractères
il faut dire que (convertir en) c'est un nombre en virgule flottante

a = float(input())

Posté par
tetras
re : u appartient à un intervalle 24-09-24 à 12:39

a = float(input())
n=0
u=2
while (u<a):
    n=n+1
    u=4*u
return n

j'ai encore le message "return outside function
j'ai pourtant les : après while

Posté par
mathafou Moderateur
re : u appartient à un intervalle 24-09-24 à 13:03

bein oui puisque tu n'as pas de fonction (def) !

si tu veux avoir le résultat ce n'est par return, c'est print(n)

Posté par
tetras
re : u appartient à un intervalle 24-09-24 à 13:23

merci

Posté par
tetras
re : u appartient à un intervalle 24-09-24 à 16:04

lorsque j'exécute le programme je n'ai pas de message d'erreur
cependant il ne me demande pas d'entrer une valeur pour a.
et donc rien ne se passe
juste from seuil import

Posté par
mathafou Moderateur
re : u appartient à un intervalle 24-09-24 à 16:42

from seuil ???

avec rigoureusement rien d'autre que

a = float(input())
n=0
u=2
while (u < a):
n=n+1
u=4*u
print(n)

chaque fois que tu lances ce programme il te demande la valeur
avec un Python en ligne https://www.online-python.com/
il est en attente de valeur sans rien dire :
1000 <---- ce que j'ai tapé dans la fenetre d'interface
5 <--- ce qu'il a répondu
** Process exited - Return Code: 0 **
Press Enter to exit terminal

avec un autre Python (edu python sur mon PC)
il ouvre une fenètre :
u appartient à un intervalle

mieux serait qu'il dise ce qu'il demande au lieu d'une demande "anonyme"

a = float(input("valeur de a ?"))
ce qui donne sur www.online-python.com :

valeur de a ?
1000 <--- ce que j'ai tapé
5

et sur edu python :

u appartient à un intervalle

Posté par
tetras
re : u appartient à un intervalle 24-09-24 à 16:49

merci beaucoooooup pour ta patience

Posté par
tetras
re : u appartient à un intervalle 25-09-24 à 08:06

Le programme doit déterminer le rang à partir duquel les termes un appartiennent à ]4-a;4+a[
J'ai testé le programme avec a=0.1
Il affiche n=30
Or u30 =3,9.
Or l'intervalle est ouvert.

J'avais écrit dans mon programme
while (abs(u-4)a) :
   n=n+1
  u=(4*n+1)/(n+1)

Il devrait donc afficher n=31 !?

Posté par
mathafou Moderateur
re : u appartient à un intervalle 25-09-24 à 09:21

(4*30+1)/(30+1) = 121/31 3.9032258... > 3.9



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1719 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !