Soluzione

Risolviamo il sistema lineare omogeneo, e per determinare una base del nucleo, assegnamo valori 0 e 1 ai parametri

> soluzioni := linsolve(A,vector(4,0));

> base := [
subs(_t[1]=1,_t[2]=0,evalm(soluzioni)),
subs(_t[1]=0,_t[2]=1,evalm(soluzioni))
];

questo poteva essere fatto con il comando kernel

> base:=kernel(A);

concludiamo l'esercizio come prima

> base_ortonormale:=GramSchmidt(base,'normalized');

Questa volta per applicare la formula della proiezione ortogonale usiamo il comando add , in modo da avere un comando valido anche per basi ortonormali con un numero diverso di elementi

> v := add(
dotprod(base_ortonormale[i],w)*base_ortonormale[i],
i=1..nops(base_ortonormale));

Ecco il risultato

> evalm(v);