PROGRAMMATION SCIENTIFIQUE EN C
Résolution de système d’équations non-linéaires (racines d’équations) Méthode de la bissection Analyse de la convergence de la méthode de bissection Exemple de recherche Recherche des zéros par la méthode de la bissection Recherche de plusieurs zéros
Méthodes de la bissection La méthode de la bissection permet la localisation d’une seule racine dans un intervalle donné Conditions requises La fonction f(x) est continue sur l’intervalle [a,b] SI f(a)f(b) < 0 => une racine dans l’intervalle Pour une précision équivalente, cette méthode est généralement plus rapide (convergence)
Méthodes de la bissection Étapes de la méthodes de bissection Pour un intervalle [a,b], calculer la position du cen-tre de l’intervalle par: c = 1/2(a+b) = a+(b-a)/2 Calculer f(a), f(b) et f(c) Calculer f(a)f(c) et f(c)f(b) Vérifier la convergence Si les critères de convergence sont satisfaits, afficher la valeur de la racine Sinon modifier les extrémités de l’intervalle, répéter les étapes précédentes
Méthodes de la bissection
Méthodes de la bissection La méthode de la bissection converge si une racine se trouve dans un intervalle donné et trouve une seule racine si le nombre de racines dans un inter-valle est impair
Méthodes de la bissection
Méthode de la bissection Algorithme de la bissection BISSEC(float a, float b, int nbiterMAX, float delta, float eps) u = f(a) v = f(b) e = b-a imprimer a,b,u,v SI u*v > 0 ALORS imprimer un message indiquant l’absence d’une racine SINON nbiter = 0 w = MAXFLOAT TANT QUE nbiter<nbiterMAX ET |e| > delta ET |w| > eps FAIRE e = e/2 c = a+e w = f(c) imprimer nbiter, c, w, e
Méthode de la bissection Algorithme de la bissection TANT QUE nbiter<nbiterMAX ET |e| > delta ET |w| > eps FAIRE e = e/2 c = a+e w = f(c) imprimer nbiter, c, w, e SI (u*w<0) ALORS b=c v=w SINON a=c u=w FIN SI nbiter++ FIN TANTQUE
Méthode de la bissection Cas ou les critères de convergence sont déficients Racines multiples (échec sur le critère |f(c)| < )
Méthode de la bissection Cas ou les critères de convergence sont déficients Discontinuité (échec sur le critère |b-a| < )
Analyse de la convergence Le critère de convergence peut être exprimé en valeur absolue par a = ck+1 - ck k étant le nombre d’itérations Il peut aussi être exprimé en pourcentage de l’erreur relative La précision réelle de la solution est donnée
Analyse de la convergence Exemple de convergence avec la fonction f(x) = 20 - x2 = 0 Avec comme solution ct = 4.4721359 sur l’intervalle [0,6]
Analyse de la convergence Exemple de convergence
Exemple de recherche Utilisation de la méthode de bissection
Exemple de recherche Utilisation de la méthode de bissection
Exemple de recherche Recherche de plusieurs zéros (exemple) Cherchons les valeurs et les vecteurs propres associés à une matrice A (ex: matrice de coefficients de corré-lation ou matrice variance-covariance) Si nous avons une matrice A de n x n nous pouvons écrire Où x est un vecteur propre de A et une valeur propre de A
Exemple de recherche Recherche de plusieurs zéros (exemple) Si nous avons une matrice A de n x n nous pouvons écrire Pour que soit une valeur propre il faut que la solution de la dernière équation soit non nulle. Pour que x soit non nulle il faut que
Exemple de recherche Recherche de plusieurs zéros (exemple) Si nous considérons un cas d’ordre 3, nous obtenons Le déterminant donne
Exemple de recherche Recherche de plusieurs zéros (exemple) Lorsque nous avons les valeurs propres, nous les substituons une à une dans (A-I) x = 0 pour trouver les vecteurs propres x
Exemple de recherche Recherche de plusieurs zéros (exemple) Les vecteurs propres désignent chacun des axes orthogonaux de variance maximale des données De plus, les valeurs propres donnent une mesure de la variabilité des données selon chaque axe Les vecteurs propres nous permettent alors par une transformation linéaire de passer d’un domaine où les données sont corrélées à un autre non corrélé
Exemple de recherche Recherche de plusieurs zéros (exemple) * * * * *
Exemple de recherche Système d’équations linéaires Ax = 0 : Si nous avons une matrice variance-covariance A de 2X2
Exemple de recherche Algorithme de résolution SVD: matrice A de NXN for(i=1;i<=N;i++) for(j=1;j<=N;j++) u[i][j] = a[i][j]; svdcmp(u,N,N,w,v); wmax = 0.0; for(j=1;j<=N;j++) if(w[j] > wmax) wmax = w[j]; wmin = wmax; // trouver la valeur propre min. dans w if((w[j] < wmin) && w[j] != 0.0) {wmin = w[j]; minPos = j;} for(j=1;j<=N;j++) x[j]=v[j][minPos]; // x contient un vecteur propre
Exemple de recherche Localiser des extremums de fonctions (ex: histogramme) Calcul de l’histogramme d’une image contenant deux objets principaux for(j=0;j<Hauteur;j++) for(i=0;i<Largeur;i++) h[I[j][i]]++; // comptage des pixels de chaque couleur Localisation des extremums Estimation de la dérivée première de la fonction h[] Détection des passages par zéro associés aux extremums Localiser les deux maximums associés à la moyenne de chaque distribution de couleur des deux objets Localiser ensuite le minimum entre ces deux maximums Segmenter l’image en deux régions distinctes en utilisant un seuil correspondant au minimum
Exemple de recherche Localisation des extremums Localiser des extremums de fonctions (ex: histogramme) Localisation des extremums Estimation de la dérivée première de la fonction h[]: Pour estimer la dérivée première d’une fonction, il faut convoluer la fonction avec un opérateur de dérivée première. Opération de convolution entre une fonction h() et un opérateur
Exemple de recherche DF/ 2 = 4 DF = 8+1 Où [0.5..(N-1)/8] Localiser des extremums de fonctions (ex: histogramme) Localisation des extremums Opérateur de dérivée première (forme mathématique) DF/ 2 = 4 DF = 8+1 Où [0.5..(N-1)/8] Où DF [5,7,9..N]
Exemple de recherche Localiser des extremums de fonctions (ex: histogramme) Segmenter l’image en deux régions distinctes en utilisant un seuil correspondant au minimum Après avoir détecté les deux maximums et le minimum entre ces deux maximums à partir de la fonction dérivée g(x) Segmentation de l’image avec le seuil S correspondant au minimum entre les deux maximums détectés à l’étape précédente. for(j=0;j<Hauteur;j++) for(i=0;i<Largeur;i++){ if( I[j][i] > seuil) I[j][i] = 255; else I[j][i] = 0; }
Exemple de recherche (Méthode de Otsu La méthode de Otsu permet de trouver un seuil optimal t pour segmenter une image dont l’histogramme est bimodal (2 régions) En minimisant la variance intra-classe Ou en maximisant la variance inter-classe ω est la probabilité d’occurrence d’une région, σ2 sa variance, µ sa moyenne
Exemple de recherche (Méthode de Otsu Exemple d’application de la méthode de Otsu (approche de minimisation de la variance intra-classe)
Exemple de recherche (Méthode de Otsu Exemple d’application de la méthode de Otsu (t=3)
Exemple de recherche (Méthode de Otsu Exemple d’application de la méthode de Otsu (t=3, variance intra-classe totale)
Exemple de recherche (Méthode de Otsu Exemple d’application de la méthode de Otsu (autres t)
Exemple de recherche (Méthode de Otsu Exemple d’application de la méthode de Otsu (résultat optimal, t = 3)
Exemple de recherche (Méthode de Otsu Méthode de Otsu (Approche de maximisation de la variance inter-classe)
Exemple de recherche (Méthode de Otsu Méthode de Otsu (Approche de maximisation de la variance inter-classe, programme)
Exemple de recherche (Méthode de Otsu Méthode de Otsu (Approche de maximisation de la variance inter-classe, exemples)