Scripts Python pour les maths et les sciences pour l’ingénieur



Une activité ludique pour montrer qu’un nombre proche de 0 à la puissance n devient négligeable par-rapport à ce même nombre porté à la puissance n+1. On voit aussi la rapidité avec laquelle un nombre proche de 0 devient un terme infinitésimal quand il est porté à la puissance n.


print('Calcul de 0.13^i pour i entier de 1 à 50')
print('-----')
for i in range(51):
print("pour i=", i, "on obtient", 0.13**i)

Développement limité de la fonction 1/(1+x) en x=-1


import math
x=0.002
print('Pour x=',x,', 1/(1+x) a pour valeur',1/(1+x))
print('----')
print('Calcul du DL de 1/(1+x)')
dl=1
for i in range(1,10):
dl=dl+((-1)**(i))*x**(i)
print('ordre',i,'valeur du DL',dl)

Etude d’une suite arithmético-géométrique


#On étudie ici la suite un+1=1/3.un+4 et de premier terme uo=1
un=1
n=30
for i in range(0,n):
print('Pour n=',i,'Un vaut',un)
i=i+1
un=1/3*un+4

Série de terme général 1/(n²-1)


#On étudie ici la de terme général 1/(n²-1)
#cette série converge vers 3/4
un=0
n=30
for i in range(2,n):
print('Pour n=',i,'Somme des Un vaut',un)
un=un+1/(i**2-1)

La série de terme général 1/n est appelée la série harmonique. Elle ne converge pas.


# Série harmonique
s=0
n=200
print('valeur initiale de s : s=',s)
for i in range(0,n-1):
print('Pour n=',i,'s vaut',s)
i=i+1
s=s+1/i

Série harmonique alternée, elle converge !


# Série harmonique alternée
s=0
n=50
print('valeur initiale de s : s=',s)
for i in range(0,n+1):
i=i+1
s=s+((-1)**(i-1))/i
print('Pour n=',i,'s vaut',s)

Factorielle sur Python


import math
math.factorial(3)

Série de terme général (n²+1)/n!


import numpy as np
import math
un=0
n=11
for i in range(1,n):
un=un+(i*i+1)/math.factorial(i)
print('Pour n=',i,'Somme des Un vaut',un)
print('')
print('3e-1=',3*np.exp(1)-1)

Série de terme général ln(cos(1/2**n))


import math
import numpy as np
un=0
n=11
for i in range(1,n):
un=un+np.log(np.cos(1/2**i))
print('Pour n=',i,'Somme des Un vaut',un)
print('')
print('ln(sin2)/2',0.5*np.log(np.sin(2)))

Opérations sur les matrices : définition d’une matrice, multiplication par un scalaire, transposée, inverse d’une matrice, produit de deux matrices


#Commandes de base pour la manipulation des matrices
import numpy as np
from scipy import linalg
# Définition d'une matrice 2x2
A = np.array([(1,2),(3,4)])
print('Matrice A=')
print(A)
print('')
# chaque terme est multiplié par 3
print('produit de A par le réel 3 : 3A')
print(3*A)
print('')
# chaque terme est additionné à 10
print('A+10')
print(A+10)
print('')
# transposée
print('Transposée de A')
print(A.T)
print('')
#calcul de l'inverse de A
iA = linalg.inv(A)
print("Inverse de A")
print(iA)
print('Produit de A par son inverse : A.inv(A)')
print(A.dot(iA))
print('')
import numpy as np
from scipy import linalg
# Produit de deux matrices A et B
A = np.array([(1,2),(3,4)])
B = np.array([(5,-3),(2,0)])
# Calcul de C=A.B
C=A.dot(B)
print('Matrice A=')
print(A)
print('Matrice B=')
print(B)
print('')
print("C=A.B")
print(C)

import numpy as np
from scipy import linalg
# On veut résoudre le système A.X=B. On sait que la solution est X=inv(A).B avec inv(A) matrice inverse de A.
# Définition de la matrice du système
A = np.array([(1,2,3),(3,2,-3),(2,-1,-1)])
print('matrice du système linéaire')
print(A)
print('')
# Calcul du déterminant
detA=linalg.det(A)
print('determinant de A =',detA)
print('')
# Définition du second membre
B = np.array([(4),(8),(15)])
print('second membre =',B)
print('')
# Inverse de la matrice A
iA = linalg.inv(A)
print('inverse de A')
print(iA)
print('')
# Calcul de X
X=iA.dot(B)
print('solution X =',X)
print('')

Tracé de la fonction f(x,y)=x²+y²


import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d # Fonction pour la 3D
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter
import numpy as np
# Tableau pour les 3 axes
#X, Y, Z = axes3d.get_test_data(0.05)
x = np.linspace(-1, 1, 51)
y = np.linspace(-1, 1, 41)
X, Y = np.meshgrid(x, y)
Z = X**2+Y**2
# Tracé du résultat en 3D
fig = plt.figure(figsize=(10,10))
ax = plt.axes(projection='3d')
ax.plot_surface(X, Y, Z, cmap=cm.coolwarm, linewidth=0) # Tracé d'une surface
plt.title("Tracé d'une surface")
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
plt.tight_layout()
plt.show()
import numpy as np
import math
T1=20;T2=12;L=5;H=4
def temperature(x, y, n):
total = 0
for i in range(1, n+1):
terme = 2/np.pi*(T2-T1)*(((-1)**(i+1)+1)/i)*math.sin(i*x*np.pi/L)*(math.sinh(i*np.pi*y/L)/math.sinh(i*np.pi*H/L))
total += terme
return total
T=temperature(0, 0, 6)+T1
print('Pour x=0 et y=0, on a T=',T,'°C')
T=temperature(L, 0, 6)+T1
print('Pour x=L et y=0, on a T=',T,'°C')
T=temperature(0, H, 6)+T1
print('Pour x=0 et y=H, on a T=',T,'°C')
T=temperature(L, H, 50)+T1
print('Pour x=L et y=H, on a T=',T,'°C')
T=temperature(L/2, H, 250)+T1
print('Pour x=L/2 et y=H, on a T=',T,'°C')
T=temperature(L/2, H/2, 20)+T1
print('Au centre de la plaque, on a T=',T,'°C')
x=0.5
y=3.5
T=temperature(x, y, 50)+T1
print('En x=',x,'et y=',y,', on a T=',T,'°C')