Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
teaching:progappchim:polynomes-11 [2015/03/06 11:15] – villersd | teaching:progappchim:polynomes-11 [2017/02/24 11:58] (Version actuelle) – villersd | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Graphe d'une famille de polynômes orthogonaux ====== | ====== Graphe d'une famille de polynômes orthogonaux ====== | ||
- | Voici un programme permettant de visualiser les premiers [[http:// | + | Voici un programme permettant de visualiser les premiers [[wp>fr:Polynôme_de_Tchebychev|polynômes orthogonaux de Tchebyshev]] : |
- | <sxh python; title : polycheby.py> | + | <code python polycheby.py> |
- | # | + | #!/usr/bin/env python |
# -*- coding: utf-8 -*- | # -*- coding: utf-8 -*- | ||
- | """ | + | """ |
+ | graphes de Polynomes de Chebyschev | ||
""" | """ | ||
Ligne 11: | Ligne 12: | ||
def polyeval(x, | def polyeval(x, | ||
- | """ | + | """ |
+ | | ||
cf. http:// | cf. http:// | ||
""" | """ | ||
- | n=len(a)-1 # n = ordre du polynome | + | n = len(a)-1 # n = ordre du polynome |
- | p=0. | + | p = 0. |
for i in range(n, | for i in range(n, | ||
- | p=p*x+a[i] | + | p = p * x + a[i] |
return p | return p | ||
def polyscal(s, | def polyscal(s, | ||
- | """ | + | """ |
- | b=[] | + | |
+ | | ||
+ | b = [] | ||
for coef in a: | for coef in a: | ||
b.append(coef*s) | b.append(coef*s) | ||
Ligne 28: | Ligne 32: | ||
def polyshift(a): | def polyshift(a): | ||
- | """ | + | """ |
- | b=[0]+a | + | |
+ | | ||
+ | b = [0] + a # cela revient à " | ||
return b | return b | ||
def polyadd(a, | def polyadd(a, | ||
- | """ | ||
""" | """ | ||
- | r=a[:] # on travaille sur une copie de a pour ne pas le modifier | + | |
- | t=b[:] # idem pour b | + | """ |
- | g=[] # polynôme somme | + | |
- | n1=len(r) # ordre du premier polynôme | + | t = b[:] # idem pour b |
- | n2=len(t) # ordre du second polynôme | + | g = [] # polynôme somme |
- | if n1>n2: # premier polynôme de plus haut degré que le second | + | n1 = len(r) # ordre du premier polynôme |
+ | n2 = len(t) # ordre du second polynôme | ||
+ | if n1 > n2: # premier polynôme de plus haut degré que le second | ||
for i in range (n1-n2): | for i in range (n1-n2): | ||
t.append(0) | t.append(0) | ||
- | elif n1<n2: # second polynôme de plus haut degré que le premier | + | elif n1 < n2: # second polynôme de plus haut degré que le premier |
for i in range (n2-n1): | for i in range (n2-n1): | ||
| | ||
Ligne 52: | Ligne 59: | ||
def polycheby(nmax): | def polycheby(nmax): | ||
- | """ | + | """ |
+ | | ||
cf. http:// | cf. http:// | ||
""" | """ | ||
- | rep=[[1.], | + | rep = [[1.], [0.,1.]] # les deux premiers polynômes (degrés 0 et 1) pour l' |
if nmax < 1: # si nmax est inférieur au degré 1, on renvoie le polynôme de degré 0 | if nmax < 1: # si nmax est inférieur au degré 1, on renvoie le polynôme de degré 0 | ||
rep=[[1.]] | rep=[[1.]] | ||
Ligne 64: | Ligne 72: | ||
# utilisation des objets numpy | # utilisation des objets numpy | ||
- | x=arange(-1., | + | x = arange(-1., |
- | chebs=polycheby(10) | + | chebs = polycheby(10) |
- | print chebs | + | print(chebs) |
# création des graphes de tous ces polynomes | # création des graphes de tous ces polynomes | ||
for pol in chebs: | for pol in chebs: | ||
- | print pol | + | print(pol) |
plot(x, | plot(x, | ||
Ligne 78: | Ligne 86: | ||
legend() | legend() | ||
show() | show() | ||
- | </sxh> | + | </code> |
On obtient cette figure : | On obtient cette figure : | ||
- | À ce stade, il est utile de s' | + | À ce stade, il est utile de s' |
De plus, des modules de calcul scientifique utilisant les familles classiques de polynômes orthogonaux existent dans [[http:// | De plus, des modules de calcul scientifique utilisant les familles classiques de polynômes orthogonaux existent dans [[http:// | ||
[[polynomes-12|Suite à la page suivante !]] | [[polynomes-12|Suite à la page suivante !]] |