compléter et programmer un algorithme en python

Aide au niveau seconde.
nelcar
Membre
Messages : 3
Inscription : 24 avril 2019, 15:08

compléter et programmer un algorithme en python

Message par nelcar » 24 avril 2019, 18:29

Bonjour,
voilà mon exercice :
On considère la fonction f définie sur [0;100].
On admet que la fonction f est croissante sur [0;100].
1) quel est le maximum de f sur l'intervalle de [0;100] ?
j'ai trouvé 1 000 300 je doute fortement
2) compléter l'algorithme ci-dessous pour qu'après exécution, la variable N contienne le plus petit entier naturel n tel que f(n) >=15000
N 0
Y 200
tant que..... j'ai mis y<=15000
N ..... j'ai mis N + 1
y N**3+N+200
Fin tant que
3) programmer une fonction en langage Python retournant le plus petit entier nautrel n tel que f(n) >=15000. Déterminer cette valeur
j'ai fait
def f():
n=0
y=200
while y<=15000:
n=n+1
y=n**3+n+200
return(n)
dans la console j'ai trouvé 25

MERCI

Thomas
Membre
Messages : 1
Inscription : 10 avril 2020, 20:35

Re: compléter et programmer un algorithme en python

Message par Thomas » 10 avril 2020, 20:55

Bonjour,

Il manque très certainement des données dans ton problème, notamment $f$ que tu n'as pas recopié. Avec la suite je souhaite conjecturer que pour tout $x \in [0,100]$, $f(x)=x^3+x+200$.
  1. Comme $f$ est croissante sur $[0,100]$ son maximum sur $[0,100]$ est donné par $f(100)=1 000 300$.
  2. Remarque : Cette question montre que la valeur $1 000 300> 15000$ n'est pas absurde pour $f(100)$, $f$ étant définie sur $[0,100]$, donc tout va bien !
    Ton algorithme est illisible, où sont les indentations ? J'en propose un autre (j'espère que ça va t'aider).

    Code : Tout sélectionner

    N=0 #On a vérifié pour tout entier (nombre sans virgule) entre 0 et ?
    while((N**3+N+200)<15000): #Tant que f(N)<15000, ce n'est pas bon.
    	N=N+1
    print(N) #Si on est ici c'est qu'on a eu un N tel que f(N)>=15000. Comme f est croissante et que ceux d'avant ne marchaient pas, c'est bien le plus petit N.
    
  3. Ton programme n'est pas bon. Il faut remplacer

    Code : Tout sélectionner

    while y<=15000:
    par

    Code : Tout sélectionner

    while y<15000:
    . En effet, si $y=15000$ alors il faut arrêter l'algorithme car on a $y=f(N) \geq 15000$ et le $N$ est donc bon. Pour le reste ta syntaxe (hors indentation est bonne). Je le recopie en propre :

    Code : Tout sélectionner

    def f():
    	n=0
    	y=200
    	while y<15000:
    		n=n+1
    		y=n**3+n+200
    	return(n)
    
    Je trouve aussi 25. Là encore ça se vérifie :
    • $f(24)=14 048<15000$
    • $f(25)=15 850\geq 15000$
    Donc le plus petit $N\in \mathbb{N}$ tel que $f(N)\geq 15000$ est bien $25$.
Bonne soirée et pense bien à indenter (sinon c'est illisible) et ça aurait été sympa de rappeler $f$...

Répondre