• Aucun résultat trouvé

le corrigé

N/A
N/A
Protected

Academic year: 2021

Partager "le corrigé"

Copied!
3
0
0

Texte intégral

(1)

corrigé

informatique

Algèbre

import numpy as np

import numpy.linalg as alg import matplotlib.pyplot as plt

from numpy.polynomial import Polynomial

Exercice 1 def A(n): A = np.zeros((n, n)) for i in range(1, n): A[i, i − 1] = 1 for i in range(n): A[i, n − 1] = 1 / n return A def charpoly(n): return np.poly(A(n))

Le script qui suit permet de conjecturer que

χ

n= Xn−1

n n−1 X k=0 Xk: for n in range(2, 9): print(charpoly(n))

Pour afficher les modules des racines de

χ

n, le plus simple est de se souvenir qu’il s’agit des valeurs propres de An: for n in range(2, 9):

for z in alg.eigvals(A(n)): print(abs(z), end=" ") print()

On observe que 1 est valeur propre de Anet que les autres valeurs propres ont un module strictement inférieur à 1.

Exercice 2

def ecart(a, b):

M = np.array([[3 * a − 2 * b, −6 * a + 6 * b + 3], [a − b, −2 * a + 3 * b + 1]]) v1, v2 = alg.eigvals(M)

e = abs(v1 − v2) return round(e, 2)

import numpy.random as rd def hasard(p): s = 0 for _ in range(500): a, b = rd.geometric(p, 2) if ecart(a, b) >= 1e−1: s += 1 return s

Pour les tracés demandés, on réalise le script suivant :

(2)

X, Y = [], [] for k in range(1, 100): p = k / 100 X.append(p) Y.append(hasard(p) / 500) plt.plot(X, Y) P = np.linspace(0, 1, 256) F = [(2 − 2 * p + p ** 2) / (2 − p) for p in P] plt.plot(P, F) plt.grid() plt.show() 0.0 0.2 0.4 0.6 0.8 1.0 0.800 0.825 0.850 0.875 0.900 0.925 0.950 0.975 1.000

Ceci laisse conjecturer que P(λ1, λ2) =

2 − 2p + p2

2 − p . Exercice 3

def A(n, a):

M = np.zeros((n, n)) for i in range(n − 1):

M[i, i + 1] = 1 / a M[i + 1, i] = a return M

On réalise le script suivant :

for n in range(3, 9):

for a in (−2, −1, 1, 2, 3):

print(alg.eigvals(A(n, a)).round(2))

qui permet de conjecturer que la matrice An,apossède n valeurs propres distinctes et indépendantes de a. En particulier, on

peut penser que cette matrice est diagonalisable. On calcule les polynômes P1, . . . , P8à l’aide du script :

p = [None] * 9

p[1] = Polynomial([0, 1]) p[2] = Polynomial([−1, 0, 1]) for n in range(3, 9):

p[n] = p[1] * p[n − 1] − p[n − 2]

Le script suivant permet de conjecturer que les racines de Pnsont les valeurs propres de An,a, autrement dit que Pnest le

polynôme caractéristique de cette matrice :

(3)

for n in range(3, 9):

print(p[n].roots().round(2))

Exercice 4 On utilise la fonctionquaddu modulescipy.integratepour calculer des intégrales.

from scipy.integrate import quad

On commence par définir le produit scalaire :

def scal(P, Q): def f(t):

return P(t) * Q(t) return quad(f, −1, 1)[0]

puis on applique le procédé de Schmidt :

E = [Polynomial(1 / np.sqrt(2))] # on définit E[0]

for k in range(1, 6):

B = Polynomial([0] * k + [1]) # B = X^k

U = B

for i in range(k):

U = U − scal(E[i], B) * E[i] # U = X^k − son projeté orthogonal

E.append(U / np.sqrt(scal(U, U))) # on normalise U

Il reste à faire le tracé :

X = np.linspace(−1, 1, 256) for k in range(6): Y = [E[k](x) for x in X] plt.plot(X, Y) plt.show() 1.00 0.75 0.50 0.25 0.00 0.25 0.50 0.75 1.00 2 1 0 1 2

On constate que kEiksemble toujours être atteinte en ±1.

Références

Documents relatifs

L'étude des principales propriétés des matrices positives a été entreprise au début du siècle (Frobenius [5], Perron [14]), puis complétée et élargie dans le cadre plus

Le résultat devra dépendre des matrices D et

Par contre, si l’on dispose d’une base d’un espace vectoriel, tout vecteur de cet espace vectoriel se décompose de manière unique sur cette base.. On doit donc obtenir un

[r]

Trouver la matrice de passage entre la base canonique et une base propre qu’on

On suppose que A et B ont chacune une seule

Calculatrice autorisée (Les 4 exercices sont indépendants. Un soin tout particulier sera apporté à la rédaction des réponses)?. Exercice 1

D´eterminer les valeurs du coefficient a pour lesquelles la matrice A est diagonalisable.. On se propose de montrer que f A