Calcolare Prodotto Scalare Tra 2 Vettori

Calcolatore Prodotto Scalare tra Vettori

Calcola facilmente il prodotto scalare (dot product) tra due vettori in qualsiasi dimensione. Inserisci le componenti e ottieni il risultato con visualizzazione grafica.

Vettore A

Vettore B

Risultato:

0

Guida Completa al Prodotto Scalare tra Vettori

Il prodotto scalare (o dot product) è un’operazione fondamentale nell’algebra lineare con applicazioni in fisica, ingegneria, computer grafica e machine learning. Questa guida approfondita ti spiegherà tutto ciò che devi sapere sul calcolo del prodotto scalare tra due vettori.

Cos’è il Prodotto Scalare?

Il prodotto scalare è un’operazione che prende due vettori di uguale dimensione e restituisce un singolo numero (scalare). A differenza del prodotto vettoriale, il risultato non è un vettore ma uno scalare.

Matematicamente, per due vettori a = [a₁, a₂, …, aₙ] e b = [b₁, b₂, …, bₙ], il prodotto scalare è definito come:

a · b = a₁b₁ + a₂b₂ + … + aₙbₙ = Σ(aᵢbᵢ) per i = 1 a n

Proprietà Fondamentali del Prodotto Scalare

  • Commutatività: a · b = b · a
  • Distributività: a · (b + c) = a · b + a · c
  • Associatività con moltiplicazione scalare: (k a) · b = k (a · b) = a · (k b)
  • Relazione con la norma: a · a = ||a||²
  • Ortogonalità: a · b = 0 se e solo se a e b sono ortogonali (perpendicolari)

Formula del Prodotto Scalare in Termini di Angolo

Il prodotto scalare può anche essere espresso usando l’angolo θ tra i due vettori:

a · b = ||a|| ||b|| cosθ

Dove ||a|| e ||b|| rappresentano le norme (lunghezze) dei vettori a e b rispettivamente.

Applicazioni Pratiche del Prodotto Scalare

  1. Fisica: Calcolo del lavoro (L = F · d), dove F è la forza e d è lo spostamento
  2. Computer Grafica: Illuminazione (modello di illuminazione di Phong), ray tracing
  3. Machine Learning: Similarità tra vettori (cosine similarity), reti neurali
  4. Elaborazione Segnali: Filtri, correlazione tra segnali
  5. Geometria: Proiezioni ortogonali, calcolo di angoli tra vettori

Calcolo del Prodotto Scalare: Esempi Pratici

Esempio 1: Vettori in 2D

Dati i vettori a = [3, 4] e b = [1, 2]:

a · b = (3)(1) + (4)(2) = 3 + 8 = 11

Esempio 2: Vettori in 3D

Dati i vettori a = [1, 3, -5] e b = [4, -2, -1]:

a · b = (1)(4) + (3)(-2) + (-5)(-1) = 4 – 6 + 5 = 3

Esempio 3: Vettori Ortogonali

Dati i vettori a = [1, 0, 0] e b = [0, 1, 0] (ortogonali tra loro):

a · b = (1)(0) + (0)(1) + (0)(0) = 0

Il risultato 0 conferma che i vettori sono ortogonali.

Relazione tra Prodotto Scalare e Angolo tra Vettori

Una delle proprietà più importanti del prodotto scalare è la sua relazione con l’angolo tra due vettori. Possiamo usare il prodotto scalare per:

  1. Determinare se due vettori sono ortogonali (prodotto scalare = 0)
  2. Calcolare l’angolo tra due vettori usando la formula:

    cosθ = (a · b) / (||a|| ||b||)

    Dove θ è l’angolo tra i vettori a e b.
  3. Trovare la proiezione di un vettore su un altro
Confronto tra Prodotto Scalare e Prodotto Vettoriale
Caratteristica Prodotto Scalare Prodotto Vettoriale
Tipo di risultato Scalare (numero) Vettore
Dimensione vettori Qualsiasi (stessa dimensione) Solo 3D
Commutatività a · b = b · a a × b = – (b × a)
Applicazioni tipiche Proiezioni, angoli, lavoro Aree, momenti, rotazioni
Ortogonalità a · b = 0 se ortogonali a × b è ortogonale sia ad a che a b

Algoritmo per il Calcolo del Prodotto Scalare

Ecco i passaggi per calcolare manualmente il prodotto scalare:

  1. Verificare che i due vettori abbiano la stessa dimensione
  2. Moltiplicare le componenti corrispondenti dei due vettori
  3. Sommare tutti i prodotti ottenuti
  4. Il risultato è il prodotto scalare

Per vettori di dimensione n, il prodotto scalare richiede n moltiplicazioni e n-1 addizioni.

Complessità Computazionale

L’algoritmo naive per il calcolo del prodotto scalare ha una complessità O(n), dove n è la dimensione dei vettori. Questo perché:

  • Ogni componente richiede 1 moltiplicazione
  • Ogni componente (eccetto l’ultima) richiede 1 addizione
  • Totale operazioni: 2n – 1 ≈ O(n)

Implementazione in Diversi Linguaggi di Programmazione

Python (con NumPy)

import numpy as np

a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
dot_product = np.dot(a, b)
# oppure: dot_product = a @ b
print(dot_product)  # Output: 32
            

JavaScript

function dotProduct(a, b) {
    if (a.length !== b.length) throw new Error("Vectors must be same length");
    return a.reduce((sum, val, i) => sum + val * b[i], 0);
}

const a = [1, 2, 3];
const b = [4, 5, 6];
console.log(dotProduct(a, b));  // Output: 32
            

C++

#include <iostream>
#include <vector>

double dotProduct(const std::vector<double>& a, const std::vector<double>& b) {
    if (a.size() != b.size()) throw std::invalid_argument("Vectors must be same size");
    double result = 0.0;
    for (size_t i = 0; i < a.size(); ++i) {
        result += a[i] * b[i];
    }
    return result;
}

int main() {
    std::vector<double> a = {1, 2, 3};
    std::vector<double> b = {4, 5, 6};
    std::cout << dotProduct(a, b) << std::endl;  // Output: 32
    return 0;
}
            

Errori Comuni nel Calcolo del Prodotto Scalare

  1. Dimensione diversa dei vettori: Il prodotto scalare è definito solo per vettori della stessa dimensione. Tentare di calcolarlo con vettori di dimensioni diverse porterà a risultati errati o errori.
  2. Confondere con il prodotto vettoriale: Il prodotto scalare restituisce uno scalare, mentre il prodotto vettoriale restituisce un vettore (solo in 3D).
  3. Dimenticare di sommare tutti i prodotti: È facile dimenticare di sommare tutti i prodotti delle componenti corrispondenti.
  4. Errori di segno: Particolare attenzione va posta ai segni delle componenti negative.
  5. Normalizzazione errata: Quando si usa il prodotto scalare per calcolare angoli, è essenziale normalizzare correttamente i vettori.

Applicazioni Avanzate del Prodotto Scalare

Machine Learning: Similarità tra Vettori

Nel machine learning, il prodotto scalare è alla base del concetto di similarità coseno, una metrica che misura quanto due vettori sono simili indipendentemente dalla loro magnitudine:

similarità coseno = (a · b) / (||a|| ||b||)

Questa misura è ampiamente usata in:

  • Sistemi di raccomandazione (es: “utenti che hanno apprezzato X hanno anche apprezzato Y”)
  • Elaborazione del linguaggio naturale (similarità tra documenti o parole)
  • Riconoscimento di immagini (similarità tra feature vectors)
Confronto tra Metriche di Similarità Vettoriale
Metrica Formula Range Invarianza alla Scala Applicazioni Tipiche
Similarità Coseno (a·b)/(|a||b|) [-1, 1] Testo, raccomandazioni
Prodotto Scalare a·b (-∞, ∞) No Reti neurali, attention
Distanza Euclidea ||a-b|| [0, ∞) No Clustering, k-NN
Correlazione di Pearson cov(a,b)/(σ_aσ_b) [-1, 1] Analisi statistica

Computer Grafica: Illuminazione

Nel rendering 3D, il prodotto scalare è fondamentale per calcolare:

  • Illuminazione diffusa (Lambertian reflectance):
    I_diffuse = I_light * (n · l)
    dove n è la normale alla superficie e l è la direzione della luce
  • Specular highlights (Phong reflection):
    I_specular = I_light * (v · r)^p
    dove v è la direzione della vista, r è la direzione della luce riflessa, e p è il coefficiente di lucidità
  • Shadow mapping: Per determinare se un punto è in ombra
  • Environment mapping: Per riflessi realistici

Fisica: Lavoro e Energia

In fisica, il lavoro compiuto da una forza è definito come il prodotto scalare tra la forza e lo spostamento:

L = F · d = ||F|| ||d|| cosθ

Dove:

  • L è il lavoro
  • F è il vettore forza
  • d è il vettore spostamento
  • θ è l’angolo tra forza e spostamento

Questa formula spiega perché:

  • Non si compie lavoro quando la forza è perpendicolare allo spostamento (cos90° = 0)
  • Il lavoro è massimo quando forza e spostamento sono nella stessa direzione (cos0° = 1)
  • Il lavoro può essere negativo quando la forza si oppone allo spostamento (cos180° = -1)

Estensioni del Concetto di Prodotto Scalare

Prodotto Scalare in Spazi Astratti

Il concetto di prodotto scalare può essere esteso a spazi più astratti come:

  • Spazi di funzioni: Il prodotto scalare tra due funzioni f(x) e g(x) su un intervallo [a,b] è definito come:
    〈f,g〉 = ∫[a,b] f(x)g(x)dx
  • Spazi di Hilbert: Spazi infinito-dimensionali con prodotto scalare, fondamentali in meccanica quantistica
  • Spazi di sequenze: Per sequenze infinite {aₙ} e {bₙ}, il prodotto scalare è Σ aₙ bₙ (se la serie converge)

Prodotti Scalari Pesati

In alcuni contesti, si usa un prodotto scalare pesato dove ogni componente ha un peso diverso:

a · b = Σ wᵢ aᵢ bᵢ

Dove wᵢ sono i pesi. Questo è utile in:

  • Analisi statistica (covarianza pesata)
  • Elaborazione di immagini (filtri con pesi diversi per diversi pixel)
  • Ottimizzazione (dove alcune dimensioni sono più importanti di altre)

Prodotto Scalare Complesso

Per vettori con componenti complesse, il prodotto scalare è definito come:

a · b = Σ aᵢ bᵢ*

Dove bᵢ* è il complesso coniugato di bᵢ. Questo assicura che:

  • Il prodotto scalare di un vettore con sé stesso sia reale e non negativo
  • La norma sia sempre un numero reale non negativo

Leave a Reply

Your email address will not be published. Required fields are marked *