# -*- coding:utf-8 -*- __projet__ = "CoursS5" __nom_fichier__ = "11_interpolation" __author__ = "A-J. Tinet" __date__ = "décembre 2022" """ ======================================================================================================================== Ex. 11 - INTERPOLATION DANS UN TABLEAU INCOMPLET ======================================================================================================================== """ # Définition de fonctions def interpolation_lineaire(tableau): """ :param tableau: Liste de données, les données inconuues sont indiquées par une valeur négative :return: Tableau complété par interpolation linéaire """ imin = 0 nint = 0 for i in range(1,len(tableau)): if tableau[i] < 0: nint +=1 elif nint != 0: distance = (tableau[i] - tableau[imin])/(nint+1) for j in range(imin + 1, i): tableau[j] = tableau[imin] + (j - imin)*distance imin = i nint = 0 def interpolation_lineaire_while(tableau): i = 0 while i < len(tableau): # Pas de recherche en cours if tableau[i] >= 0: i += 1 continue # On commence une recherche j = i # On cherche la fin de la recherche while tableau[j] < 0: j += 1 # On complète les données manquantes (entre i-1 et j) distance = (tableau[j] - tableau[i-1]) / (j - i + 1) for k in range(i, j): tableau[k] = tableau[i-1] + (k - i + 1)*distance i = j+1 # Programme principal if __name__ == '__main__': tableau = [1,-10,-10,7,-10,12,-10,-10,-10,28] # [1,3,5,7,9.5,12,16,20,24,28) print(tableau) interpolation_lineaire(tableau) print(tableau) tableau = [1,-10,-10,7,-10,12,-10,-10,-10,28] # [1,3,5,7,9.5,12,16,20,24,28) print(tableau) interpolation_lineaire_while(tableau) print(tableau)