Start · Sprachen · PHP · Referenz · stats_stat_innerproduct

stats_stat_innerproduct

Funktion

Berechnet das Skalarprodukt (inneres Produkt) zweier numerischer Vektoren und gibt das Ergebnis als Gleitkommazahl zurück.

Kategorie: math

Signatur

stats_stat_innerproduct(array $arr1, array $arr2): float|false

Beschreibung

Die Funktion stats_stat_innerproduct() ist Teil der PECL-Erweiterung stats und berechnet das Skalarprodukt (auch inneres Produkt oder Dot Product genannt) zweier Vektoren. Das Skalarprodukt ist die Summe der paarweise multiplizierten Elemente beider Vektoren: Σ (ai · bi).

Diese Operation ist grundlegend in der linearen Algebra und wird in der Praxis für Ähnlichkeitsberechnungen (z. B. Kosinus-Ähnlichkeit), Regressionsanalysen und maschinelles Lernen verwendet. Beide Arrays müssen dieselbe Anzahl numerischer Elemente enthalten, damit das Ergebnis korrekt berechnet werden kann.

Die Funktion gibt false zurück, wenn die Arrays unterschiedliche Längen haben oder andere Fehler auftreten. Sie setzt die installierte PECL-Erweiterung stats voraus, die nicht zum PHP-Standardlieferumfang gehört und separat installiert werden muss.

Parameter

Name Typ Default Beschreibung
$arr1 Pflicht array Der erste numerische Vektor als indiziertes Array. Alle Werte sollten numerisch sein.
$arr2 Pflicht array Der zweite numerische Vektor als indiziertes Array. Muss dieselbe Anzahl von Elementen wie arr1 besitzen.

Rückgabewert

Typ
float|false
Beschreibung
Gibt das Skalarprodukt als float zurück. Bei einem Fehler (z. B. unterschiedliche Array-Längen oder ungültige Eingaben) wird false zurückgegeben.

Beispiele

Einfaches Skalarprodukt zweier Vektoren

<?php
// Voraussetzung: PECL-Erweiterung 'stats' muss installiert sein
// php -m | grep stats

$vektor1 = [1, 2, 3];
$vektor2 = [4, 5, 6];

// Skalarprodukt: (1*4) + (2*5) + (3*6) = 4 + 10 + 18 = 32
$ergebnis = stats_stat_innerproduct($vektor1, $vektor2);

if ($ergebnis !== false) {
    echo 'Skalarprodukt: ' . $ergebnis;
} else {
    echo 'Fehler bei der Berechnung.';
}
Skalarprodukt: 32

Kosinus-Ähnlichkeit zweier Vektoren berechnen

<?php
// Kosinus-Ähnlichkeit = Skalarprodukt(a, b) / (|a| * |b|)
// Nützlich z. B. für Textähnlichkeit (TF-IDF-Vektoren)

function vektorBetrag(array $v): float {
    return sqrt(array_sum(array_map(fn($x) => $x ** 2, $v)));
}

$a = [1, 0, 1, 0, 1];
$b = [1, 1, 1, 0, 0];

$skalarprodukt = stats_stat_innerproduct($a, $b);
$betragA = vektorBetrag($a);
$betragB = vektorBetrag($b);

if ($skalarprodukt !== false && $betragA > 0 && $betragB > 0) {
    $kosinusAehnlichkeit = $skalarprodukt / ($betragA * $betragB);
    echo 'Kosinus-Ähnlichkeit: ' . round($kosinusAehnlichkeit, 4);
} else {
    echo 'Berechnung nicht möglich.';
}
Kosinus-Ähnlichkeit: 0.6667

// Wichtig · Fallstricke

PECL-Abhängigkeit: stats_stat_innerproduct() ist keine eingebaute PHP-Funktion. Sie erfordert die separate Installation der PECL-Erweiterung stats (z. B. via pecl install stats). Ohne diese Erweiterung führt der Aufruf zu einem fatalen Fehler.

Achten Sie darauf, dass beide Arrays dieselbe Anzahl von Elementen enthalten. Bei unterschiedlichen Längen wird false zurückgegeben. Nicht-numerische Array-Werte können zu unerwarteten Ergebnissen oder Fehlern führen.

Für reine PHP-Projekte ohne PECL kann das Skalarprodukt alternativ mit array_sum(array_map(fn($a, $b) => $a * $b, $arr1, $arr2)) berechnet werden.