Parcours PYTHON en autonomie

Voici quelques vidéos afin de vous familiariser avec le langage PYTHON.
Le mieux est d'ouvrir le logiciel EduPYTHON ou le logiciel JUPYTER et de pratiquer en même temps que la vidéo

Utilisation de la console EDUPYTHON :


Les fonctions (en mode console EDUPYTHON) :


Les boucles


Présentation de JUPYTER :


Quelques exercices.

Le second degré

Il s'agit d'implémenter le cours sur les formules que vous connaissez sur le second degré. Vous pourrez structurer votre document avec de nombreuses fonctions. Reprenez le cours afin d'avoir toutes vos formules avec vous.

Par exemple :


# Une idée de représentation d'un polynôme.

def eval_p(p,x):
	return p[0]*x**2+p[1]*x+P[2]

# p[0] correspond à a, p[1] correspond à b, p[2] correspond à c.

p=(2,3,1)   # p(x)=2x²+3x+1, p est codé par ses coefficients

# Pour calculer p(4)

eval_p(p,4)

 

Ecrire une fonction delta avec comme arguments a,b,c et qui retourne le discriminant du pôlynome. Faire des tests avec des exxemples traités en cours.

Ecrire une fonction nombre_solutions avec comme arguments a,b,c et qui retourne le nombre de racines du polynôme. Faire des tests avec des exxemples traités en cours.

Ecrire une fonction racine avec comme arguments a,b,c et qui retourne les racines du polynôme. Faire des tests avec des exxemples traités en cours.

Essayer de construire un programme complet qui traite toutes les formules du cours.

Quelques aides :

from math import *
# Calcul de delta

def delta(a,b,c):
	return b**2-4*a*c

# calcul des racines

def racines(a,b,c) : 
	dis=delta(a,b,c)
	
	if dis < 0 : return None
	elif dis==0 : return -b/(2*a) # Attention aux parenthèses
	else : return ((-b-sqrt(dis))/(2*a),(-b+sqrt(dis))/(2*a)) # Attention aux parenthèses

 

Faire des tests avec votre programme.

print(racines(1,1,1)) print(racines(1,-2,1) print(racines(1-3,-4)

Suite définie par une expression explicite.

On souhaite calculer les termes de la suite $(u_n)$ définie par $u_n=4*n²+1$

from math import *

def u(n) :
	
	return 4*n**2+1 # n**2 signifie n²
	
# Afficher 1000 valeurs.

for i in range(1000):
	print("u(",i,")=",u(i))

Coder les différentes suites proposées ci-dessous :

Vous pouvez définir chaquue suite par une fonction différente dans le même programme python.

Suite définie par récurrence

On souhaite calculer les termes de la suite $(u_n)$ définie par $\left\{ \begin{array}{ll} u_{n+1} = 3u_n + 1\\ u_0=2 \end{array} \right.$

from math import *

def u(n) :
	u=2
	for i in range(n):
		u=3*u+1
	return u
	
# Afficher 1000 valeurs.

for i in range(1000):
	print("u(",i,")=",u(i))

# Vous pouvez créer une fonction affichage si vous voulez

def affichage(u,n):
	for i in range(n):
		print("u(",i,")=",u(i))
	return None
	
# Il faudra appeler la fonction affichage par affichage(u,100) dans la console, par exemple.

Faire des tests sur les premiers termes de la suite pour vérification.

Transformez votre code pour afficher les 1000 premiers termes de la suite $v_n$ définie par $\left\{ \begin{array}{ll} v_{n+1} = -v_n + 2\\ v_0=-1 \end{array} \right.$

Algorithme de seuil

On donne une suite $u_{n}$ définie par sa relation de récurrence :

$\left\{ \begin{array}{ll} u_{n+1} = 3u_n + 1\\ u_0=2 \end{array} \right.$

On cherche l'indice $n$ tel que $u_{n} \ge 300 $

On a l'algorithme en pseudocode suivant :

u ← 0 n ← 0 tant que u < 300 faire n ← n+1 u ← u+1

Cet algorithme donne le programme suivant :

from math import *
u=0
n=0
while u <300:
	n=n+1
	u=3*u+1

print(n, u)

Exécuter le programme en Python afin de trouver la valeur de $n$ cherchée.

Sur le même modèle, on cherche l'indice $n$ tel que $v_{n}<100 $ pour $v_{n}$ définie par :

$\left\{ \begin{array}{ll} v_{n+1} = 0.95u_n\\ u_0=200 \end{array} \right.$

Ecrire un programme python pour l'algorithme suivant :

u ← 300 n ← 0 tant que 0.9^n > 150 faire n ← n+1 afficher(n)

Que recherche cet algorithme ?



Vous pouvez transsformer votre programme Python en un ensemble de fonctions :

from math import *

def u(n):
	return ......... # A compléter
	
def seuil(u,s) :   # u est une suite et s est une valeur de seuil
	
	# A compléter
	
	return n

def affichage():
	s=float(input("Entrer votre valeur de seuil : "))
	n=seuil(u,s)
	print(n)
	return None



Algorithme de somme

Le but est de calculer la somme des termes d'une suite numérique.

On donne une suite $u_{n}$ définie par sa relation de récurrence :

$\left\{ \begin{array}{ll} u_{n+1} = 3u_n + 1\\ u_0=2 \end{array} \right.$

On considère l'algorithme suivant :

// u est définie à l'aide d'une fonction s ← 0 pour i ← 0 à n faire s=s+u(i) afficher(s)

Cela donne le programme suivant en langage Python :

from math import *

def u(n):
	u=2
	for i in range(i):
		u=3*u+1
	return u
	
s=0
n=5
for i in range(n+1): # Penser qu'il écrire n+1 pour aller jusqu'à n
	s=s+u(i)

print(n, s)


Tester ce code.

Transformer ce code pour que la somme devienne une fonction def somme(u,n) .

Les fonctions.

Un exemple de définition de fonctions avec Python

from math import * # Importation d'une bibliothèque pour faire de maths.


def f(x):
	return x**2+3*x+1
	
print(f(10)) # Une seule valeur.


# Plusieurs valeurs

for x in range(100): # range(100) génère une liste d'entiers de 0 à 99.
	print(f(x))
	


valeurs_x=[x for x in range(30)] # permet de créer une liste de 30 valeurs.
valeurs_f=[f(x) for x in range(30)] # permet de créer un tableau de valeurs .
# valeurs_f=[f(x) for x in valeurs_x] donne le même tableau de valeurs, à tester


Donner la tableau de valeurs de la fonction définie par $f(x)=x²+3x-1$ pour les valeurs de $x$ comprise entre 0 et 50 (avec un pas de 1)


from math import *
import numpy as np
lx=np.linspace(-10,10,100)


Dans la console, éditer les valeurs de lx. Que représente cette liste de valeurs ?

Compléter votre programme pour afficher la table des valeurs pour les valeurs de $x$ contenues dans lx

Tester le code suivant :

a=-30
b=50
n=1000
lx=np.linspace(a,b,n)
# Penser à afficher lx dans la console

Ecrire une fonction tableau_valeurs(f,a,b,n) qui affiche le tableau des $n$ valeurs comprises entre $a$ et $b$.

def tableau_valeurs(f,a,b,n) :
	lx =  # A compléter
	valeurs_f = # A compléter
	return lx,valeurs_f

Affichage des points

On peut facilement tracer les nuages de points correspondants, en utilisant les fonctions du module matplotlib.

On importe le sous-module pyplot de matplotlib qu’on renomme au passage plt

import matplotlib.pyplot as plt
(v_x, v_y) = tableau_valeurs(f ,-10,10,100)
plt.plot(v_x , v_y , ' . ' , color='red')
plt.show()


Faire des tests avec des fonctions utilisées en classe.

Calculer le nombre dérivé d'une fonction en utilisant la définition.

Rappel : $f'(a)=\lim \limits_{h \rightarrow 0} \frac{f(a+h)-f(a)}{h}$

Utiliser la fonction définie par $f(x)=2x²+3x-1$