Prodotto scalare

\(\langle {\textbf v},{\textbf w} \rangle\) è una forma bilineare simmetrica. Proprietà:

  • linearità rispetto a prima/seconda componente: \(\langle \alpha {\textbf v}_1 + \beta {\textbf v}_2, {\textbf {\textbf v}} \rangle = \alpha \langle {\textbf v}_1, {\textbf v}\rangle + \beta \langle {\textbf v}_2, {\textbf v}\rangle\)
  • simmetria: \(\langle {\textbf v},{\textbf w}\rangle = \langle {\textbf w},{\textbf v}\rangle\)
  • se un componente è vettore nullo allora il prd. scalare risulta 0: \(\langle {\textbf v}, 0_V\rangle = 0\)

Tipici casi di prodotti scalari:

  • prodotto scalare canonico in \(\mathbb{R}^n\): \(\sum_{i=1}^nx_iy_i\) (alias *x y**)
  • prodotto scalare in spazio polinomiale: \(\langle p(x), q(x) \rangle = p(0)q(0) - p(1)q(1) + p(2)q(2)\)
  • prodotto scalare in spazio matriciale: \(\langle A,B \rangle = Tr(B^T A)\)

Vettori ortogonali (\(\perp\)) e base ortogonale

Se il prodotto scalare tra due vettori è nullo i vettori sono ortogonali tra loro: \({\textbf v} \perp {\textbf w} \iff \langle {\textbf v}, {\textbf w} \rangle = 0\) Una base di \(V\) costituita da vettori tra di loro a due a due ortogonali è una base ortogonale: \(\langle {\textbf v}_i, {\textbf v}_j \rangle = 0\) con \(i,j \in \{1,2,..,n\}\).

Esempi

Prodotto scalare \(\langle,\rangle: \mathbb{R}_2[x] \times \mathbb{R}_2[x] \to \mathbb{R}\) ortogonale

def p(x):
    return 1+x-2*x**2

def q(x):
    return 5-2*x

definizione = p(0)*q(0) - p(1)*q(1) + p(2)*q(2)
print(definizione)

0

Come da esercizio.

Prodotto scalare euclideo \(\to \mathbb{R}^3\) ortogonale

c1_es = [1,0,0]
c2_es = [0,1,0]

result = np.dot(c1_es, c2_es)
print(result)

c1_es = [1,0,0]
c2_es = [0,0,1]

result = np.dot(c1_es, c2_es)
print(result)

0 0

Come da esercizio.

Prodotto scalare tra matrici \(\langle,\rangle: Mat(2,2,\mathbb{R}) \times Mat(2,2,\mathbb{R}) \to \mathbb{R}\): verifica base ortogonale (tutti i prodotti scalari = 0)

"""base_ortogonale"""
A = sp.Matrix([[1,-1],[2,3]])
B = sp.Matrix([[0,-2],[-1,0]])
C = sp.Matrix([[-3,0],[0,1]])
D = sp.Matrix([[1,2],[-4,3]])

"""<A, B>"""
result = sp.Trace(B.T*A).simplify()
print(result)

"""<A, C>"""
result = sp.Trace(C.T*A).simplify()
print(result)

"""<A, D>"""
result = sp.Trace(D.T*A).simplify()
print(result)

"""<B, C>"""
result = sp.Trace(C.T*B).simplify()
print(result)

"""<B, D>"""
result = sp.Trace(D.T*B).simplify()
print(result)

"""<C, D>"""
result = sp.Trace(D.T*C).simplify()
print(result)

0 0 0 0 0 0

Come da esercizio.

Riferimenti

  • https://www.youmath.it/lezioni/algebra-lineare/applicazioni-lineari/3969-prodotto-scalare-qualsiasi.html