Carte mentale

Le cours
Les codes Python
Le code qui suit regroupe les principales fonctions (mais pas toutes) décrites dans le chapitre 5.
from math import sqrt
from scipy.integrate import quad
import numpy as np
def f(x):
return x ** 2 - 2
def fprime(x):
return 2 * x
#Dichotomie
def dichotomie(f,a,b,epsilon):
fa,fb = f(a), f(b)
assert fa*fb < 0 and epsilon > 0
while (b-a) > 2 * epsilon:
m = (a + b) / 2
fm = f(m)
if fa * fm < 0:
b = m
else:
a = m
return (a + b) / 2
#Newton
def newton1(f,fprime,u0,n):
#n est le nombre d'iterations souhaité
u = u0
for i in range(n):
u = u - f(u) / fprime(u)
return u
def newton2(f,fprime,u0,epsilon):
u = u0
v = u - f(u) / fprime(u)
while(abs(u-v) > epsilon):
u,v = v,v - f(v) / fprime(v)
return v
def newton3(f,fprime,u0,residu=1):
u = u0
while residu > 1e-10:
eq = f(u)
deq = fprime(u)
uold = u
u = u - eq / deq
residu = abs(u - uold)
return u
# Calcul intégral avec scipy
#Fonction à intégrer
def g(x):
return np.cos(x)
#Calcul de l'integrale
res, err = quad(g,0,np.pi)
print ('I=',res)
def integrale(f, a, b, n):
somme = 0
h = float(b-a) / n
x = a
for i in range(0, n + 1):
somme += f(x) * h
x += h
return somme
#Méthode des rectangles
def rectangles(f,a,b,n):
dx = (b - a) / n
A = 0
for i in range(n):
A = A + dx * f(a + dx * i)
return A
#Méthode des trapèzes
def trapezes(f,a,b,n):
dx = (b - a) / n
A = 0
for i in range(n):
A = A + dx * (f(a + dx * i)+f(b+ dx * i))/2
return A
#methode d'Euler
import matplotlib.pyplot as plt
def F(t,y):
return (5-y)/0.001
def euler(F,a,b,y0,pas):
y = y0
t = a
liste_y = [y0]
liste_t = [a]
while t + pas <= b:
y = y + pas*F(t,y)
liste_y.append(y)
t = t + pas
liste_t.append(t)
return liste_y,liste_t
# je prends G et H pour ne pas interférer avec F de la fonction euler deja écrite
def G(t,x,y):
return x*(3-2*y)
def H(t,x,y):
return y*(x-4)
def euler2(G,H,a,b,x0,y0,pas) :
t=a
x=x0
y=y0
y=y0
listeT=[a]
listeX=[x0]
listeY=[y0]
while t + pas <= b:
x = x + pas*G(t,x,y)
listeX.append(x)
y = y + pas*H(t,x,y)
listeY.append(y)
t = t + pas
listeT.append(t)
return listeX,listeY,listeT
#importer un fichier CSV avec le module CSV
import csv
#ouverture du fichier csv ou txt, changer le delimiter
def lecture_fichier(fichier):
fichier_ouvert = open(fichier, mode='r')
table = list(csv.reader(fichier_ouvert,delimiter=" "))
fichier_ouvert.close()
return table
def exporter(tableau,fichier):
file = open(fichier, "w",newline='')
writer = csv.writer(file)
writer.writerows(tableau)
fich=lecture_fichier('cP.txt')
temp=[float(elm[0]) for elm in fich]
CpR_exp=[float(elm[1]) for elm in fich]
lX,lY,lT = euler2(G,H,0,10,5,3,0.01)
#plt.plot(lT,lX,'+r')
#plt.plot(lT,lY)
#plt.plot(lX,lY)
plt.show()
ly,lt = euler(F,0,0.01,0,0.0005)
plt.plot(lt,ly)
plt.show()