Cette classe permet de calculer le Barycentre d'une suite de n vecteurs pondérés.
Le Barycentre est notamment utilisé dans le e-commerce pour proposer à un client des produits en relation avec les produit qu'il vient de visiter.
Source / Exemple :
<?php
/**
- Calculate the Barycenter of a list of vectors
*
- @author Saifeddine sassi
- @version 1
- /
class Barycentre {
private $vecteurArray = null; // Array of vectors
private $nbrVectors = 0; // Number of vectors
private $nbrCoord = 0; // Number of coordinates
private $coord = 0; // Sum of vectors Coordinate
private $weights = 0; // Array of weights
private $G = null; // Result vector
/**
- Init vars
- @param Array $vectors
- @param Array $weights
- /
function __construct($vectors, $weights) {
$this->vecteurArray = $vectors;
$this->nbrVectors = count($vectors);
$this->nbrCoord = count($vectors[0]);
$this->weights = $weights;
}
/**
- Calculate the Barycentre of a list of vectors
-
- @return array $G
- /
public function getBarycentre(){
for($c=0; $c<$this->nbrCoord; $c++){
$this->coord = 0;
for($v = 0; $v < $this->nbrVectors; $v++){
$this->coord = $this->calcul($v,$c);
}
$this->G[] = $this->coord / array_sum($this->weights);
}
return $this->G;
}
/**
- Calculte the sum of coordinates
-
- @param int $v
- @param int $c
- @return int
- /
private function calcul($v,$c){
return ($this->coord+($this->vecteurArray[$v][$c]*$this->weights[$v]));
}
}
// How to use:
// Note: The vectors can have n coordinates
$vectors = array(
array(0,2,1),
array(2,1,2),
array(4,2,1)
);
$weights = array(1,2,1);
$b = new Barycentre($vectors, $weights);
print_r($b->getBarycentre());
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.