7 - Coordinate rispetto a una base

Coordinate rispetto a una base

Per trovare le coordinate di un vettore rispetto a una base è sufficiente:

  1. trasformare la combinazione lineare del vettore rispetto alla base in un sistema lineare
  2. risolvere il sistema.

Esempio su spazio polinomiale

Considerando la base β={p1(x),p2(x),p3(x)}\beta=\{p_1(x),p_2(x),p_3(x)\} rispettivamente
p1(x)=2x+x2p_1(x)=2x+x^2
p2(x)=1x+2x2p_2(x)=1-x+2x^2
p3(x)=1+5xp_3(x)=1+5x
Calcolare le coordinate del polinomio p(x)=2+6x+13x2R2[x]p(x) = 2+6x+13x^2 \in \mathbb{R}_2[x] rispetto a β\beta.

import sympy as sp
import numpy as np
x,x2 = sp.symbols('x x2')
a1,a2,a3 = sp.symbols('a1 a2 a3')
symbolic_vars = [x, x2,a1,a2,a3]
p1 = 2*x+x**2
p2 = 1-x+2*x**2
p3 = 1+5*x
# si imposta la combinazione lineare
combinazione_lineare = a1*p1 + a2*p2 + a3*p3
comb2 = sp.expand(combinazione_lineare)
# polinomio raccolto sulle incognite dello spazio polinomiale
comb3 = sp.factor(comb2, x)
print(comb3)

a2 + a3 + x**2*(a1 + 2a2) + x(2a1 - a2 + 5a3)

Anche se in ordine sparso, si pongono le componenti 1,x,x21,x,x^2 uguali a quelle del polinomio di cui trovare le coordinate per creare il sistema lineare:
a2+a3=2a_2 + a_3 = 2
2a1a2+5a3=62a_1 - a_2 + 5a_3 = 6
a1+2a2=13a_1 + 2a_2 = 13

Si può risolvere il sistema con sympy.solve():

equations = [
    a2 + a3 - 2,
    2*a1 - a2 + 5*a3 - 6,
    a1 + 2*a2 - 13
]
sol = sp.solve(equations)
print(sol)

{a1: 7, a2: 3, a3: -1}

Quindi (7,3e1)(7,3 e -1) sono le coordinate di del polinomio p(x)p(x) rispetto alla base β\beta.

Riferimenti