Calcul du barycentre

Contenu du snippet

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());

A voir également

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.