Régression Polynomiale de degré 3

  Information

Cette fonction permet de calculer l'équation de régression polynomiale de degré 3 d'un nuage de points

Auteur : Pierre-Louis Bescond
  code source classé dans  Mathématiques

 
 01    
 02    
 03    
 04    
 05    
 06    
 07    
 08    
 09    
 10    
 11    
 12    
 13    
 14    
 15    
 16    
 17    
 18    
 19    
 20    
 21    
 22    
 23    
 24    
 25    
 26    
 27    
 28    
 29    
 30    
 31    
 32    
 33    
 34    
 35    
 36    
 37    
 38    
 39    
 40    
 41    
 42    
 43    
 44    
 45    
 46    
 47    
 48    
 49    
 50    
 51    
 52    
 53    
 54    
 55    
 56    
 57    
 58    
 59    
 60    
 61    
 62    
 63    
 64    
 65    
 66    
 67    
 68    
 69    
 70    
 71    
 72    
 73    
 74    
 75    
 76    
 77    
 78    
 79    
 80    
 81    
 82    
 83    
 84    
 85    
 86    
 87    
 88    
 89    
 90    
 91    
 92    
 93    
 94    
 95    
 96    
 97    
 98    
 99    
 100    
 101    
 102    
 103    
 104    
 105    
 106    
 107    
 108    
 109    
 110    
 111    
 112    
 113    
 114    
 115    
 116    
 117    
 118    
 119    
 120    
 121    
 122    
 123    
 124    
 125    
 126    
 127    
 128    
 129    
 130    
 131    
 132    
 133    
 134    
 135    
 136    
 137    
 138    
 139    
 140    
 141    
 142    
 143    
 144    
 145    
 146    
 147    
 148    
 149    
 150    
 151    
 152    
 153    
 154    
 155    
 156    
 157    
 158    
 159    
 160    
 161    
 162    
 163    
 164    
 165    
 166    
 167    
 168    
 169    
 170    
 171    
 172    
 173    
 174    
 175    
 176    
 177    
 178    
 179    
 180    
 181    
 182    
 183    
 184    
 185    
 186    
 187    
 188    
 189    
 190    
 191    
 192    
 193    
 194    
 195    
 196    
 197    
 198    
 199    
 200    
 201    
 202    
 203    
 204    
 205    
 206    
 207    
 208    
 209    
 210    
 211    
 212    
 213    
 214    
 215    
 216    
 217    
 218    
 219    
 220    
 221    
 222    
 223    
 224    
 225    
 226    
 227    
 228    
 229    
 230    
                               
<?php
/*---------------------------------------------------------------*/
/*
    Titre : Régression Polynomiale de degré 3                                                                             
                                                                                                                          
    URL   : https://phpsources.net/code_s.php?id=889
    Date édition     : 14 Fév 2019                                                                                        
*/
/*---------------------------------------------------------------*/


function regression_poly_3($x $y){ 
 // Les abscisses et ordonnées sont envoyées 
 // sous forme de 2 tableaux 
  
 // $x[]=0; 
 // $x[]=1; 
 // $x[]=2; 
 // $x[]=3; 
 // $x[]=4; 
 // $x[]=5; 
  
 // $y[]=0; 
 // $y[]=2; 
 // $y[]=4; 
 // $y[]=5; 
 // $y[]=4; 
 // $y[]=6; 
  
  
 // Cette fonction requiert les fonctions suivantes : 
 // (disponibles sur nexen.net ) 
  
 // Calcul d'une matrice mineure de Pierre Beaumadier 
 // minor_matrix($m, $i, $j) 
  
 function minor_matrix($m$i$j){ 
 if (!(is_array($m))) 
  return ("Veuillez passer une matrice"); 
  $nbl sizeof($m); 
  if ($nbl 1
  return ("Veuillez passer une vraie matrice"); 
  $nbc sizeof($m[0]); 
  for ($cpt 1$cpt $nbl$cpt++) 
  if (sizeof($m[$cpt]) != $nbc
  return ("Veuillez passer une vraie matrice"); 
  if ($nbl == 1
  return ("Veuillez passer une matrice de taille >= 2"); 
  if (($i 1) || ($j 1) || ($i $nbl) || ($j $nbc)) 
  return ("Veuillez passer des valeurs correctes pour les 2 et 3e parametres");
  $ret array(); 
  for ($cptl 0$a 0$cptl $nbl$cptl++) 
  { 
  for ($cptc 0$b 0$cptc $nbc$cptc++) 
  { 
   if (($cptl != $i 1) && ($cptc != $j 1)) 
   $ret[$a][$b] = $m[$cptl][$cptc]; 
   if ($cptc != $j 1
   $b++; 
  } 
  if ($cptl != $i 1
   $a++; 
  } 
  return ($ret); 
 } 
  
 // Calcul du déterminant d'une matrice de Pierre Beaumadier 
 // det_matrix($m) 
  
 function det_matrix($m){ 
 if (!(is_array($m))) 
  return ("Veuillez passer une matrice"); 
  $nbl sizeof($m); 
  if ($nbl 1
  return ("Veuillez passer une vraie matrice"); 
  $nbc sizeof($m[0]); 
  for ($i 1$i $nbl$i++) 
  if (sizeof($m[$i]) != $nbc
  return ("Veuillez passer une vraie matrice"); 
  if ($nbl == 1
  return $m[0][0]; 
  if ($nbl == 2
  return ($m[0][0]*$m[1][1] - $m[1][0]*$m[0][1]); 
  if ($nbl == 3
  return ($m[0][0]*$m[1][1]*$m[2][2] + $m[0][1]*$m[1][2]*$m[2][0] + $m[0][2]*$m[
1][0]*$m[2][1] - $m[0][1]*$m[1][0]*$m[2][2] - $m[0][0]*$m[1][2]*$m[2][1] - $m[0]
[2]*$m[1][1]*$m[2][0]);
  $det 0
  for ($i 0$i $nbl$i++) 
  $det += pow(-1$i+1) * $m[$i][0] * det_matrix(minor_matrix($m$i 11));
  return (-$det); // La version originale renvoie +$det 
 
  
 //Fonction qui permet d'afficher correctement 
 //le signe des coefficients de la régression 
  
 function signe($nbr){ 
  
 $tmp=explode('-'$nbr); 
  
   if(empty($tmp[1])){ 
   
   $end "+".number_format($nbr3', '' '); 
   return $end 
   
   }else{ 
   
   $end number_format($nbr3', '' '); 
   return $end 
   } 
  
 } 
  
 echo "<font color=\"#666666\" size=\"1\" face=\"Tahoma\">"
  
 //Nombre d'éléments 
  
 $nbx=count($x); 
  
 //Calcul des Ex... 
  
 $i=0
  
 while($i<$nbx){ 
   
   $Ex1+=$x[$i]; 
   $Ey1+=$y[$i]; 
   
   $Ex2+=pow($x[$i], 2); 
   $Ex3+=pow($x[$i], 3); 
   $Ex4+=pow($x[$i], 4); 
   $Ex5+=pow($x[$i], 5); 
   $Ex6+=pow($x[$i], 6); 
   
  $Ex1y1+=$x[$i]*$y[$i]; 
  $Ex2y1+=pow($x[$i], 2)*$y[$i]; 
  $Ex3y1+=pow($x[$i], 3)*$y[$i]; 
  $Ex4y1+=pow($x[$i], 4)*$y[$i]; 
   
   $i++; 
 } 
  
 echo "<b>Calculs Prélimminaires des Sommes</b><br>"
 echo "<br>"
 echo "N = ".$nbx."<br><br>"
 echo "Ex1 : ".$Ex1."<br>"
 echo "Ey1 : ".$Ey1."<br><br>"
 echo "Ex2 : ".$Ex2."<br>"
 echo "Ex3 : ".$Ex3."<br>"
 echo "Ex4 : ".$Ex4."<br>"
 echo "Ex5 : ".$Ex5."<br>"
 echo "Ex6 : ".$Ex6."<br>"
 echo "Ex1y1 : ".$Ex1y1."<br>"
 echo "Ex2y1 : ".$Ex2y1."<br>"
 echo "Ex3y1 : ".$Ex3y1."<br>"
  
 // Construction des matrices 
  
 // Matrice Principale 
  
 $mp[0][0]=$Ex6$mp[1][0]=$Ex5$mp[2][0]=$Ex4$mp[3][0]=$Ex3
 $mp[0][1]=$Ex5$mp[1][1]=$Ex4$mp[2][1]=$Ex3$mp[3][1]=$Ex2
 $mp[0][2]=$Ex4$mp[1][2]=$Ex3$mp[2][2]=$Ex2$mp[3][2]=$Ex1
 $mp[0][3]=$Ex3$mp[1][3]=$Ex2$mp[2][3]=$Ex1$mp[3][3]=$nbx
  
 // Matrice 1 
  
 $m1[0][0]=$Ex3y1$m1[1][0]=$Ex5$m1[2][0]=$Ex4$m1[3][0]=$Ex3
 $m1[0][1]=$Ex2y1$m1[1][1]=$Ex4$m1[2][1]=$Ex3$m1[3][1]=$Ex2
 $m1[0][2]=$Ex1y1$m1[1][2]=$Ex3$m1[2][2]=$Ex2$m1[3][2]=$Ex1
 $m1[0][3]=$Ey1$m1[1][3]=$Ex2$m1[2][3]=$Ex1$m1[3][3]=$nbx
  
 // Matrice 2 
  
 $m2[0][0]=$Ex6$m2[1][0]=$Ex3y1$m2[2][0]=$Ex4$m2[3][0]=$Ex3
 $m2[0][1]=$Ex5$m2[1][1]=$Ex2y1$m2[2][1]=$Ex3$m2[3][1]=$Ex2
 $m2[0][2]=$Ex4$m2[1][2]=$Ex1y1$m2[2][2]=$Ex2$m2[3][2]=$Ex1
 $m2[0][3]=$Ex3$m2[1][3]=$Ey1$m2[2][3]=$Ex1$m2[3][3]=$nbx
  
 // Matrice 3 
  
 $m3[0][0]=$Ex6$m3[1][0]=$Ex5$m3[2][0]=$Ex3y1$m3[3][0]=$Ex3
 $m3[0][1]=$Ex5$m3[1][1]=$Ex4$m3[2][1]=$Ex2y1$m3[3][1]=$Ex2
 $m3[0][2]=$Ex4$m3[1][2]=$Ex3$m3[2][2]=$Ex1y1$m3[3][2]=$Ex1
 $m3[0][3]=$Ex3$m3[1][3]=$Ex2$m3[2][3]=$Ey1$m3[3][3]=$nbx
  
 // Matrice 4 
  
 $m4[0][0]=$Ex6$m4[1][0]=$Ex5$m4[2][0]=$Ex4$m4[3][0]=$Ex3y1
 $m4[0][1]=$Ex5$m4[1][1]=$Ex4$m4[2][1]=$Ex3$m4[3][1]=$Ex2y1
 $m4[0][2]=$Ex4$m4[1][2]=$Ex3$m4[2][2]=$Ex2$m4[3][2]=$Ex1y1
 $m4[0][3]=$Ex3$m4[1][3]=$Ex2$m4[2][3]=$Ex1$m4[3][3]=$Ey1
  
 echo "<br>"
 echo "<b>Régression polynomiale de degré 3</b><br>"
 echo "<br>"
 echo "Det Mp : ".$det_mp det_matrix($mp); 
 echo "<br>"
 echo "Det M1 : ".$det_m1 det_matrix($m1); 
 echo "<br>"
 echo "Det M2 : ".$det_m2 det_matrix($m2); 
 echo "<br>"
 echo "Det M3 : ".$det_m3 det_matrix($m3); 
 echo "<br>"
 echo "Det M4 : ".$det_m4 det_matrix($m4); 
 echo "<br>"
  
 // Calculs des coefficients de l'équation 
  
 echo "<br>"
 echo "a3 : ".$a3[3] = $det_m1/$det_mp
 echo "<br>"
 echo "a2 : ".$a3[2] = $det_m2/$det_mp
 echo "<br>"
 echo "a1 : ".$a3[1] = $det_m3/$det_mp
 echo "<br>"
 echo "a0 : ".$a3[0] = $det_m4/$det_mp
 echo "<br><br>"
  
 // Affichage de l'équation 
  
 echo "<b>Y = ".signe($a3[3])." X³ ".signe($a3[2])." X²".signe($a3[1])." X".
signe($a3[0])."</b></font>";
  
   return $a3 
}

 ?>

          Fonctions du code - Doc officielle PHP

   php.net   Description Versions PHP OUTIL
   array Crée un tableau PHP 4, PHP 5, PHP 7, PHP 8
   count Compte le nombre d'éléments d'un tableau ou le nombre de propriétés d'un objet PHP 4, PHP 5, PHP 7, PHP 8
   echo Affiche une chaîne de caractères PHP 4, PHP 5, PHP 7, PHP 8
   empty Détermine si une variable contient une valeur non nulle PHP 4, PHP 5, PHP 7, PHP 8
   explode Coupe une chaîne en segments PHP 4, PHP 5, PHP 7, PHP 8
   is_array Détermine si une variable est un tableau PHP 4, PHP 5, PHP 7, PHP 8
   number_format Formate un nombre pour l'affichage PHP 4, PHP 5, PHP 7, PHP 8
   pow Expression exponentielle PHP 4, PHP 5, PHP 7, PHP 8
   return Retourne le controle du programme au module appelant. PHP 4, PHP 5, PHP 7, PHP 8
   sizeof Alias de count() PHP 4, PHP 5, PHP 7, PHP 8

   Dites merci aux auteurs pour leurs travail, ça ne coûte rien et ça fait toujours plaisir wink

 Autres snippets qui pourraient vous intéressez

Régression Polynomiale de degré 4 - PHP Sources

Compatibilité : PHP 5, PHP 7

Cette fonction permet de calculer l'équation de régression polynomiale de degré 4 d'un nuage de points.

Présentation de PHP

PHP débutant et initié 50 Tutoriel

Présentation de MySQL

  14 Fév 2019

1 768 Vues
Compatibilité
PHP 5, 7 et 8+
46 codes

Catégorie :  Mathématiques

Affiche la série de Fibonacci
Affiche les nombres premiers compris entre 0 à $n
Affiche toute les racines carrés à partir d'un entier
Améliore la fonction PHP Floor () avec Précision
Arrondi au multiple supérieur
Arrondi un nombre entier et décimal
Calcul de l'équation de la droite de régression linéaire
Calcul des modules et arguments d'un nombre complexe, saisi arithmétiquement
Calcul du nombre Pi à l'infini
Calcul du triangle de pascal
Calcul l'hypoténuse de 2 nombres
Calcul la distance entre 2 points en km
Calcul la factorielle de manière récursive
Calcul la liste des nombres premiers
Calcul la puissance d'un nombre
Calcul la racine carré d'un nombre
Calcul le carré d'un nombre entier ou décimal
Calcul le carré, cube et racine carrée via un formulaire
Calcul le cube d'un nombre
Calcul le PGCD de 2 entiers
Calcul le PPCM de 2 entiers
Calcul le sinus en radian
Calcul les diviseurs d'un entier
Calcul les pourcentages
Calcul les taux d'intéret en PHP
Calcul si deux nombres sont premiers entre eux
Calculs sur 1 Triangle avec le théorème de Pythagore
Conversion binaire <-> décimal ET hexadécimal <-> décimal
Conversion de coordonnées cartésiennes en polaire
Conversion de coordonnées polaires en cartésiennes
Distance en mètre entre deux points avec coordonnées GPS
Divise 2 nombres avec $a et $b en paramètre
Division avec calcul du reste
Division euclidienne avec Quotient et Reste dans un tableau
Elever $x à  la puissance $y
Fonction récursive calculant la factorielle d'un nombre.
Fractionne en PHP 1 nombre en dividende et quotient
Liste des nombres parfaits
Max2scale ext PHP
Passe 1 entier base 10 en base 2
Régression Polynomiale de degré 3
Régression Polynomiale de degré 4
Trouve une distance euclidienne en PHP
Vérifie la parité d'un nombre
Vérifie si un entier est pair ou impair avec le modulo
Vérifie si un nombre est multiple d'un autre