FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 2015
-
21 sept. 2006 à 20:09
Greg -
30 avril 2019 à 15:15
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Dans la fonction GetOpt() (ligne 193) il ne faut pas initialiser $tOpt = "" (string) mais en tant que tableau : $tOpt = array(); (ou écriture raccourcie []).
RaftY
Messages postés56Date d'inscriptionmardi 5 mars 2002StatutMembreDernière intervention12 août 2010 14 oct. 2008 à 18:48
Pas de quoi pour les réponses, je suis un peu au calme ajr.
Mais pour compléter, j'ai trouver ceci toujours écrit en VB, CAML et PHP. Très impressionnant, seulement tu ne règles pas le degré de la courbe. mais fonctionne super bien
Pour en revenir au langage de prog, chacun a ces habitudes et chaque langage a ces propres facilités et domaine d'activité privilégié. On ne refera pas le monde, mais n'oublions jamais, que la plupart des nouveau langage s'appuie sur des sources C, des OS écrit en C voir en ASM. Ne pas oublié les bases.
Ensuite, pourquoi pas intégrer dans le lib standard du PHP, car vraisemblablement PHP est peu utiliser pour faire ceci. Je pense que lib PECL comme pear, se contruisent des outils simples pour l'instant qui sont beaucoup utilisés. De plus, les connaissances mathématiques nécessaire à ce genre de prog ne sont pas anodine, et que les mathématiciens préfèrent des langage comme CAML ou mathlab pour exprimer leur bib, plutot que PHP qui reste un très bon langage, mais usage quasi exclusif pour le WEB. Il est passé depuis peu comme un langage important. Il faut laisser le temps à la communauté de s'habituer et d'œuvrer vers son nouveau status.
A plus
madvic
Messages postés21Date d'inscriptionvendredi 3 janvier 2003StatutMembreDernière intervention 9 juin 2018 14 oct. 2008 à 14:06
Merci bcp pour ton travail et ta réponse.
Mais pq autant de langage de programmation ? Autant tous mettre en php (ca m'arrange ;-) )
Je trouve tout de même étrange que ces fonction ne soit pas intégré dans les bibliothèque des langages de prog.
Enfin, ca viendra...
madvic
Messages postés21Date d'inscriptionvendredi 3 janvier 2003StatutMembreDernière intervention 9 juin 2018 13 oct. 2008 à 14:46
Bonjour,
Y'a t-il un moyen de resortir l'equation de la droite obtenue ?
Et est ce difficile de faire la même chose pour une courbe ?
merci
RaftY
Messages postés56Date d'inscriptionmardi 5 mars 2002StatutMembreDernière intervention12 août 2010 3 sept. 2008 à 10:04
Merci MYMY1592 pour la découverte du bug, correction faite.
Mymy1592
Messages postés1Date d'inscriptionsamedi 30 août 2008StatutMembreDernière intervention30 août 2008 30 août 2008 à 17:29
Bonjour,
Il y a un petit bug qui gène dans le calcul de l'écart type
ligne 112 :
$sumY2+=$yVal=$yVal;
A remplacer par :
$sumY2+=$yVal*$yVal;
En tout cas, merci RaftY pour ce code ! :)
RaftY
Messages postés56Date d'inscriptionmardi 5 mars 2002StatutMembreDernière intervention12 août 2010 22 sept. 2006 à 09:33
Merci pour ces petites corrections. Juste pour info, effectivement, le code original que j'ai écrit était en C++ et j'utilisé plusieurs constructeurs au lieu de 1 seul dispo en PHP, la méthode Init à tout son sens dans ce cas.
Mais effectivement, l'erreur de typage est une très bonne remarque.
Pour les tableaux, que j'utilise souvent ici je pense qu'ils susciteraient des erreurs de lecture du code de fond. L'objectif n'est pas seulement de coder un objet mais bel et bien de coder une régression linéaire avec le maximum d'explication, car c'est un domaine pas facile à appréhender.
Si je devais changer le code pour des tableaux je ferai un tableau avec index indentifier ex : $tVar=array("SumX"=> $valX, "SumY"=>$valY ....)
Aucun intérêt ici.
Mais merci pour toutes ces remarques, c'est vraiment sympa.
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 21 sept. 2006 à 20:09
Alors, comme c'est objet, moi je regarde :p
Vala ce que j'en dis "à codement parler" =) :
function __construct($tDataY,$tDataX="") {
Ici, $tDataY est de type mixed, $tDataX de type string.
Typement parlant, y'a une ptite erreur pour $tDataX.
Si tu veux que $tDataX soit optionnel, alors tu dois déclarer ta méthode comme suit :
public function __construct($tDataY, $tDataX=NULL) {
Ce qui fait que pour vérifier ta variable tu fais : ( if ( isset($tDataX) ) ). Plus élégant et plus rapide.
Ta méthode init() ne sert à rien, elle substitue le constructeur et tu perds du temps à l'appeler car cette méthode n'est appelé qu'à ce moment la.
Voici la véritable méthode constructeur à faire :
public function __construct($tDataY,$tDataX=NULL) {
$this->tDonnees = $tDataY;
$this->tAbscisse = $tDataX;
$this->vNbElt = count($this->tDonnees); // Nombres d'éléments
//Mise en place des abscisses
if( isset($tDataX) ) {
for($i=0;$i<$this->vNbElt;$i++){
$this->tAbscisse[$i]=$i;
}
}
//parcours des donnees pour récupération formule nécessaire au calcul des éléments
$sumX=0; //somme des X
$sumY=0; //somme des Y
$sumX2=0; //somme des X²
$sumY2=0; //somme des y²
$sumXY=0; //somme des x*y
La ton objet est initialisé correctement :)
Et j'aurais pu mieux faire en utilisant des tableaux au lieu de 40 variables =)
Codement parlé, y'a encore un peu de boulot, mais sinon j'aime bien !
30 avril 2019 à 15:15
Dans la fonction GetOpt() (ligne 193) il ne faut pas initialiser $tOpt = "" (string) mais en tant que tableau : $tOpt = array(); (ou écriture raccourcie []).
14 oct. 2008 à 18:48
Mais pour compléter, j'ai trouver ceci toujours écrit en VB, CAML et PHP. Très impressionnant, seulement tu ne règles pas le degré de la courbe. mais fonctionne super bien
http://www.codyx.org/snippet_interpolation-polynomiale_549.aspx
Pour en revenir au langage de prog, chacun a ces habitudes et chaque langage a ces propres facilités et domaine d'activité privilégié. On ne refera pas le monde, mais n'oublions jamais, que la plupart des nouveau langage s'appuie sur des sources C, des OS écrit en C voir en ASM. Ne pas oublié les bases.
Ensuite, pourquoi pas intégrer dans le lib standard du PHP, car vraisemblablement PHP est peu utiliser pour faire ceci. Je pense que lib PECL comme pear, se contruisent des outils simples pour l'instant qui sont beaucoup utilisés. De plus, les connaissances mathématiques nécessaire à ce genre de prog ne sont pas anodine, et que les mathématiciens préfèrent des langage comme CAML ou mathlab pour exprimer leur bib, plutot que PHP qui reste un très bon langage, mais usage quasi exclusif pour le WEB. Il est passé depuis peu comme un langage important. Il faut laisser le temps à la communauté de s'habituer et d'œuvrer vers son nouveau status.
A plus
14 oct. 2008 à 14:06
Mais pq autant de langage de programmation ? Autant tous mettre en php (ca m'arrange ;-) )
Je trouve tout de même étrange que ces fonction ne soit pas intégré dans les bibliothèque des langages de prog.
Enfin, ca viendra...
13 oct. 2008 à 14:46
Y'a t-il un moyen de resortir l'equation de la droite obtenue ?
Et est ce difficile de faire la même chose pour une courbe ?
merci
3 sept. 2008 à 10:04
30 août 2008 à 17:29
Il y a un petit bug qui gène dans le calcul de l'écart type
ligne 112 :
$sumY2+=$yVal=$yVal;
A remplacer par :
$sumY2+=$yVal*$yVal;
En tout cas, merci RaftY pour ce code ! :)
22 sept. 2006 à 09:33
Mais effectivement, l'erreur de typage est une très bonne remarque.
Pour les tableaux, que j'utilise souvent ici je pense qu'ils susciteraient des erreurs de lecture du code de fond. L'objectif n'est pas seulement de coder un objet mais bel et bien de coder une régression linéaire avec le maximum d'explication, car c'est un domaine pas facile à appréhender.
Si je devais changer le code pour des tableaux je ferai un tableau avec index indentifier ex : $tVar=array("SumX"=> $valX, "SumY"=>$valY ....)
Aucun intérêt ici.
Mais merci pour toutes ces remarques, c'est vraiment sympa.
21 sept. 2006 à 20:09
Vala ce que j'en dis "à codement parler" =) :
function __construct($tDataY,$tDataX="") {
Ici, $tDataY est de type mixed, $tDataX de type string.
Typement parlant, y'a une ptite erreur pour $tDataX.
Si tu veux que $tDataX soit optionnel, alors tu dois déclarer ta méthode comme suit :
public function __construct($tDataY, $tDataX=NULL) {
Ce qui fait que pour vérifier ta variable tu fais : ( if ( isset($tDataX) ) ). Plus élégant et plus rapide.
Ta méthode init() ne sert à rien, elle substitue le constructeur et tu perds du temps à l'appeler car cette méthode n'est appelé qu'à ce moment la.
Voici la véritable méthode constructeur à faire :
public function __construct($tDataY,$tDataX=NULL) {
$this->tDonnees = $tDataY;
$this->tAbscisse = $tDataX;
$this->vNbElt = count($this->tDonnees); // Nombres d'éléments
//Mise en place des abscisses
if( isset($tDataX) ) {
for($i=0;$i<$this->vNbElt;$i++){
$this->tAbscisse[$i]=$i;
}
}
//parcours des donnees pour récupération formule nécessaire au calcul des éléments
$sumX=0; //somme des X
$sumY=0; //somme des Y
$sumX2=0; //somme des X²
$sumY2=0; //somme des y²
$sumXY=0; //somme des x*y
for($i=0;$i<$n;$i++)
{
$xVal=$this->tAbscisse[$i];
$yVal=$this->tDonnees[$i];
$sumX+=$xVal;
$sumY+=$yVal;
$sumX2+=$xVal*$xVal;
$sumY2+=$yVal=$yVal;
$sumXY+=$xVal*$yVal;
}
// etc...
}
La ton objet est initialisé correctement :)
Et j'aurais pu mieux faire en utilisant des tableaux au lieu de 40 variables =)
Codement parlé, y'a encore un peu de boulot, mais sinon j'aime bien !