Skip to content

Instantly share code, notes, and snippets.

@jaysn
Last active August 29, 2015 14:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jaysn/3413e50ab9ffdca1ee60 to your computer and use it in GitHub Desktop.
Save jaysn/3413e50ab9ffdca1ee60 to your computer and use it in GitHub Desktop.
Funktion zur Bildung eines Skalarproduktes von 2 Vektoren (dargestellt als Arrays)
<?php
/** anpassen unterschiedlich dimensionierter vektoren/arrays **/
function vektor_anpassung_ref( &$aV1, &$aV2 ) {
$nLim1 = count( $aV1 );
$nLim2 = count( $aV2 );
if( $nLim1 > $nLim2 ) {
// |v1| > |v2| - erweitere v2 mit null-werten zur dimension von v1
$aV2 = array_pad( $aV2, $nLim1, 0 );
return $nLim1;
}
elseif( $nLim1 < $nLim2 ) {
// |v1| < |v2| - erweitere v1 mit null-werten zur dimension von v2
$aV1 = array_pad( $aV1, $nLim2, 0 );
return $nLim2;
}
// |v1| == |v2| - keine anpassung erforderlich
return $nLim1;
}
/** Liefert das Skalarprodukt 2er Vektoren.
function skalarprodukt( $aV1, $aV2 ) {
/*
$nLim1 = count( $aV1 );
$nLim2 = count( $aV2 );
$nLim = ( $nLim1 > $nLim2 )? $nLim1 : $nLim2;
*/
$nSkalar = null;
$nLim = vektor_anpassung_ref( $aV1, $aV2 );
for( $idx=0; $idx < $nLim; $idx++ ) {
$nProdukt = ( $aV1[ $idx ] * $aV2[ $idx ] );
$nSkalar+= $nProdukt;
}
return $nSkalar;
}
/* man könnte das Ganze noch in Richtung Typen ergänzen, oder selber aufpassen */
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment