The Gramm-Schmidt ProcessWorksheet by Joyce Quella -Winona State University (jquella@winona.edu) Gill Tepper -Howard University (tgill@howard.edu) Marius Buliga -Univ. of Pittsburgh-Bradford (buliga@pitt.edu)restart: with(LinearAlgebra): with(plots): with(plottools):OutlineThe basic objectives are:1) Learn the basic mechanics of the Gramm-Schmidt process for sets of vectors in the Euclidean spaces R2 and R3. Visualize the initial set of vectors and the ortogonal/orthonormal sets.2) Write a Maple procedure that implements the Gramm-Schmidt process explored in Part 1 for larger sets of vectors from Rn . Run the procedure to check the results from Part 1.3) Implement the Gramm-Schmidt process for a non-Euclidean space.Gramm-Schmidt Process for Sets of Vectors in R2 and R3:We start with a nonorthogonal basis in R2: u1 := <1, 1>; u2 := <1, 3>;We apply the Gramm-Schmidt Process to orthogonalize this base:ogu1:=u1;
ogu2:=u2-DotProduct(u2,ogu1)/
DotProduct(ogu1,ogu1)*ogu1;It is easy to check that the two new vectors are orthogonal by computing their dot product:DotProduct(ogu1,ogu2);If we want to orthonormalize them, we have to divide each of them by their norm: onu1:=1/Norm(ogu1,2)*ogu1;
onu2:=1/Norm(ogu2,2)*ogu2;We'll plot the initial set of vectors {u1,u2} and the orthonormal set {onu1,onu2}. plu1 := plots[arrow](u1, shape=arrow,color=green,thickness=2):
plu2 := plots[arrow](u2, shape=arrow,color=green,thickness=2):
plonu1 := plots[arrow](onu1, shape=arrow,color=red,thickness=5):
plonu2 := plots[arrow](onu2, shape=arrow,color=red,thickness=5):
display(plu1,plu2,plonu1,plonu2, scaling=CONSTRAINED, axes=FRAMED);Note that onu1 is collinear with u1.Note that Maple has also the command GramSchmidt: GramSchmidt([u1,u2]);GramSchmidt([u1,u2],normalized);We try next an example in R3. We take an arbitrary base: v1 := <1, 1,1>; v2 := <-1, 3,2>; v3 := <-1, 0,5>;We apply the Gramm-Schmidt Process to orthogonalize this base:ogv1:=v1;
ogv2:=v2-DotProduct(v2,ogv1)/
DotProduct(ogv1,ogv1)*ogv1;
ogv3:=v3-DotProduct(v3,ogv1)/
DotProduct(ogv1,ogv1)*ogv1
-DotProduct(v3,ogv2)/
DotProduct(ogv2,ogv2)*ogv2;We check that the three new vectors are orthogonal by computing their dot product:DotProduct(ogv1,ogv2);
DotProduct(ogv1,ogv3);
DotProduct(ogv2,ogv3);We orthonormalize them: onv1:=1/Norm(ogv1,2)*ogv1;
onv2:=1/Norm(ogv2,2)*ogv2;
onv3:=1/Norm(ogv3,2)*ogv3;plv1 := plots[arrow](v1, shape=arrow,color=green,thickness=2):
plv2 := plots[arrow](v2, shape=arrow,color=green,thickness=2):
plv3 := plots[arrow](v3, shape=arrow,color=green,thickness=2):
plonv1 := plots[arrow](onv1, shape=arrow,color=red,thickness=5):
plonv2 := plots[arrow](onv2, shape=arrow,color=red,thickness=5):
plonv3 := plots[arrow](onv3, shape=arrow,color=red,thickness=5):
display(plv1,plv2,plv3,plonv1,plonv2,plonv3, scaling=CONSTRAINED, axes=normal);LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYnLUkjbWlHRiQ2OVEhRicvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GJy8lJXNpemVHUSMxMkYnLyUlYm9sZEdRJmZhbHNlRicvJSdpdGFsaWNHUSV0cnVlRicvJSp1bmRlcmxpbmVHRjcvJSpzdWJzY3JpcHRHRjcvJSxzdXBlcnNjcmlwdEdGNy8lK2ZvcmVncm91bmRHUShbMCwwLDBdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGOi8lKXJlYWRvbmx5R0Y3LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSkyRH5JbnB1dEYnLyUqbWF0aGNvbG9yR0ZDLyUvbWF0aGJhY2tncm91bmRHRkYvJStmb250ZmFtaWx5R0YxLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy8lKW1hdGhzaXplR0Y0LUYjNi0tRiw2OUYuRi9GMkY1RjhGO0Y9Rj9GQUZERkcvRkpGN0ZLRk1GT0ZRRlNGVUZYRlpGZm5GaG5GW28tSSdtc3BhY2VHRiQ2Ji8lJ2hlaWdodEdRJzAuMH5leEYnLyUmd2lkdGhHUScwLjV+ZW1GJy8lJmRlcHRoR0Znby8lKmxpbmVicmVha0dRJWF1dG9GJ0Zfb0Zib0Zfb0Zib0Zfb0Zib0Zfb0Zib0YrRl9vLUYjNi9GX29GYm9GX29GYm9GX29GYm9GX29GYm9GX29GYm9GX29GYm9GX29GKw==Exercises:1) Let {(-1,1,0,0),(1,-1,1,0),(0,0,1,2)} be a basis for a certain subspace of R4. Use the Gramm-Schmidt Process to find an orthonormal basis for this subspace. Demo: Gramm-Schmidt ProcessWe will try to write in this section a procedure that implements the Gramm-Schmidt Process for an arbitrary list of vectors from an Euclidean space. We'll use the program to check the work that we did for the first part. myGrammSchmidt := proc(basis::list,opt::string)
local i,j,length,temp,ogbasis,onbasis,answer:
length:=nops(basis):
ogbasis:=[basis[1]]:
for i from 2 to length do
temp := basis[i];
for j from 1 to i-1 do
temp:=temp-
DotProduct(basis[i],ogbasis[j])/
DotProduct(ogbasis[j],ogbasis[j])*
ogbasis[j]:
od:
ogbasis:=[op(ogbasis),temp]:
od:
onbasis:=[]:
for i from 1 to length do
temp:=1/Norm(ogbasis[i],2)*ogbasis[i]:
onbasis:=[op(onbasis),temp]:
od:
if opt="orthogonal" then
answer:=ogbasis;
fi:
if opt="normal" then
answer:=onbasis;
fi:
answer;
end proc:We check the procedure for the basis in R3 from part 1:l:=[v1,v2,v3];myGrammSchmidt(l,"orthogonal");myGrammSchmidt(l,"normal");Exercise:2) Use the procedure myGrammShmidt and Maple's command GramSchmidt( ) to check the answers from Exercise 1. Gramm-Schmidt Process for polynomials in LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEhRicvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GJy8lJXNpemVHUSMxMkYnLyUlYm9sZEdRJmZhbHNlRicvJSdpdGFsaWNHUSV0cnVlRicvJSp1bmRlcmxpbmVHRjcvJSpzdWJzY3JpcHRHRjcvJSxzdXBlcnNjcmlwdEdGNy8lK2ZvcmVncm91bmRHUShbMCwwLDBdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y3LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSpIZWFkaW5nfjFGJy8lKm1hdGhjb2xvckdGQy8lL21hdGhiYWNrZ3JvdW5kR0ZGLyUrZm9udGZhbWlseUdGMS8lLG1hdGh2YXJpYW50R1EnaXRhbGljRicvJSltYXRoc2l6ZUdGNC1JJW1zdWJHRiQ2Ji1GLDY5USJQRicvRjBRJlNlcmlmRicvRjNRIzE4RicvRjZGOkY4RjtGPUY/RkEvRkVGQ0ZHRklGS0ZNRk9GUUZTRlVGWC9GZW5GQy9GZ25GZG8vRmluUSxib2xkLWl0YWxpY0YnL0Zcb0Zmby1JI21uR0YkNjlRIjJGJ0Zjb0Zlb0Znby9GOUY3RjtGPUY/RkFGaG9GR0ZJRktGTUZPRlFGU0ZVRlhGaW9Gam8vRmluUSVib2xkRidGXXAvJS9zdWJzY3JpcHRzaGlmdEdRIjBGJy8lLHBsYWNlaG9sZGVyR0Y3Ris=:We'll try in this section to obtain an orthonormal basis for LUklbXN1Ykc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2OVEiUEYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSV0cnVlRicvJSdpdGFsaWNHRjcvJSp1bmRlcmxpbmVHUSZmYWxzZUYnLyUqc3Vic2NyaXB0R0Y8LyUsc3VwZXJzY3JpcHRHRjwvJStmb3JlZ3JvdW5kR1EoWzAsMCwwXUYnLyUrYmFja2dyb3VuZEdGQy8lJ29wYXF1ZUdGPC8lK2V4ZWN1dGFibGVHRjwvJSlyZWFkb25seUdGPC8lKWNvbXBvc2VkR0Y8LyUqY29udmVydGVkR0Y8LyUraW1zZWxlY3RlZEdGPC8lLHBsYWNlaG9sZGVyR0Y8LyUwZm9udF9zdHlsZV9uYW1lR1EoMkR+TWF0aEYnLyUqbWF0aGNvbG9yR0ZDLyUvbWF0aGJhY2tncm91bmRHRkMvJStmb250ZmFtaWx5R0YxLyUsbWF0aHZhcmlhbnRHUSxib2xkLWl0YWxpY0YnLyUpbWF0aHNpemVHRjQtSSNtbkdGJDY5USIyRidGL0YyL0Y2RjwvRjlGPEY6Rj1GP0ZBRkRGRkZIRkpGTEZORlBGUkZURldGWUZlbi9GaG5RJ25vcm1hbEYnRmpuLyUvc3Vic2NyaXB0c2hpZnRHUSIwRicvJSxwbGFjZWhvbGRlckdGPA==(the vector space of polynomials of degree less or equal than 2), where the inner product is defined by (LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYjLUkjbWlHRiQ2OFEicEYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EoWzAsMCwwXUYnLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GJy8lJ29wYXF1ZUdGNy8lK2V4ZWN1dGFibGVHRjcvJSlyZWFkb25seUdGNy8lKWNvbXBvc2VkR0Y3LyUqY29udmVydGVkR0Y3LyUraW1zZWxlY3RlZEdGNy8lLHBsYWNlaG9sZGVyR0Y3LyUqbWF0aGNvbG9yR0ZDLyUvbWF0aGJhY2tncm91bmRHRkYvJStmb250ZmFtaWx5R0YxLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy8lKW1hdGhzaXplR0Y0, LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYjLUkjbWlHRiQ2OFEicUYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EoWzAsMCwwXUYnLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GJy8lJ29wYXF1ZUdGNy8lK2V4ZWN1dGFibGVHRjcvJSlyZWFkb25seUdGNy8lKWNvbXBvc2VkR0Y3LyUqY29udmVydGVkR0Y3LyUraW1zZWxlY3RlZEdGNy8lLHBsYWNlaG9sZGVyR0Y3LyUqbWF0aGNvbG9yR0ZDLyUvbWF0aGJhY2tncm91bmRHRkYvJStmb250ZmFtaWx5R0YxLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy8lKW1hdGhzaXplR0Y0)= LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYrLUkobXN1YnN1cEdGJDYnLUkjbW9HRiQ2MlErJkludGVncmFsO0YnLyUlZm9ybUdRJ3ByZWZpeEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y3LyUnbHNwYWNlR1EkMGVtRicvJSdyc3BhY2VHRjwvJSlzdHJldGNoeUdRJXRydWVGJy8lKnN5bW1ldHJpY0dGNy8lKG1heHNpemVHUSlpbmZpbml0eUYnLyUobWluc2l6ZUdRIjFGJy8lKGxhcmdlb3BHRkEvJS5tb3ZhYmxlbGltaXRzR0Y3LyUnYWNjZW50R0Y3LyUlc2l6ZUdRIzEyRicvJStmb3JlZ3JvdW5kR1EoWzAsMCwwXUYnLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GJy1GIzYkLUYvNjJRKCZtaW51cztGJy9GM1EmaW5maXhGJ0Y1RjhGOkY9L0ZARjdGQkZERkcvRktGN0ZMRk5GUEZTRlYtSSNtbkdGJDY4RkkvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GJy8lJXNpemVHRlIvJSVib2xkR0Y3LyUnaXRhbGljR0Y3LyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR0ZVLyUrYmFja2dyb3VuZEdGWC8lJ29wYXF1ZUdGNy8lK2V4ZWN1dGFibGVHRjcvJSlyZWFkb25seUdGNy8lKWNvbXBvc2VkR0Y3LyUqY29udmVydGVkR0Y3LyUraW1zZWxlY3RlZEdGNy8lLHBsYWNlaG9sZGVyR0Y3LyUqbWF0aGNvbG9yR0ZVLyUvbWF0aGJhY2tncm91bmRHRlgvJStmb250ZmFtaWx5R0Zhby8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRicvJSltYXRoc2l6ZUdGUi1GIzYjRlxvLyUxc3VwZXJzY3JpcHRzaGlmdEdRIjBGJy8lL3N1YnNjcmlwdHNoaWZ0R0Zfci1JJ21zcGFjZUdGJDYmLyUnaGVpZ2h0R1EnMC4wfmV4RicvJSZ3aWR0aEdRJzAuNX5lbUYnLyUmZGVwdGhHRmdyLyUqbGluZWJyZWFrR1ElYXV0b0YnLUYjNiUtSSNtaUdGJDY4USJwRidGX29GYm9GZG8vRmdvRkFGaG9Gam9GXHBGXnBGYHBGYnBGZHBGZnBGaHBGanBGXHFGXnFGYHFGYnFGZHEvRmdxUSdpdGFsaWNGJ0ZpcS1GLzYyUTAmQXBwbHlGdW5jdGlvbjtGJ0ZobkY1RjhGOkY9RmpuRkJGREZHRltvRkxGTkZQRlNGVi1JKG1mZW5jZWRHRiQ2Iy1GIzYjLUZjczY4USJ4RidGX29GYm9GZG9GZnNGaG9Gam9GXHBGXnBGYHBGYnBGZHBGZnBGaHBGanBGXHFGXnFGYHFGYnFGZHFGZ3NGaXEtRiM2JS1GY3M2OFEicUYnRl9vRmJvRmRvRmZzRmhvRmpvRlxwRl5wRmBwRmJwRmRwRmZwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmdzRmlxRmlzRlx0LUYvNjJRMCZEaWZmZXJlbnRpYWxEO0YnRjJGNUY4RjpGPUZqbkZCRkRGR0Zbb0ZMRk5GUEZTRlYtRmNzNjhGY3RGX29GYm9GZG9GZnNGaG9Gam9GXHAvRl9wUSxbMjAwLDAsMjAwXUYnRmBwRmJwRmRwRmZwRmhwRmpwRlxxL0ZfcUZBL0ZhcUZfdUZicUZkcUZnc0ZpcS1GLzYyUSIuRidGaG5GNUY4RjpGPUZqbkZCRkRGR0Zbb0ZMRk5GUEZTRlYtRi82MlExJkludmlzaWJsZVRpbWVzO0YnL0YzUSFGJ0Y1RjhGOkY9RmpuRkJGREZHRltvRkxGTkZQRlNGVi9JK21zZW1hbnRpY3NHRiRRJGludEYnWe start with the initial basis {1, LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYjLUkjbWlHRiQ2OFEieEYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EoWzAsMCwwXUYnLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GJy8lJ29wYXF1ZUdGNy8lK2V4ZWN1dGFibGVHRjcvJSlyZWFkb25seUdGNy8lKWNvbXBvc2VkR0Y3LyUqY29udmVydGVkR0Y3LyUraW1zZWxlY3RlZEdGNy8lLHBsYWNlaG9sZGVyR0Y3LyUqbWF0aGNvbG9yR0ZDLyUvbWF0aGJhY2tncm91bmRHRkYvJStmb250ZmFtaWx5R0YxLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy8lKW1hdGhzaXplR0Y0, LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OFEhRicvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GJy8lJXNpemVHUSMxMkYnLyUlYm9sZEdRJmZhbHNlRicvJSdpdGFsaWNHUSV0cnVlRicvJSp1bmRlcmxpbmVHRjcvJSpzdWJzY3JpcHRHRjcvJSxzdXBlcnNjcmlwdEdGNy8lK2ZvcmVncm91bmRHUShbMCwwLDBdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y3LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJSptYXRoY29sb3JHRkMvJS9tYXRoYmFja2dyb3VuZEdGRi8lK2ZvbnRmYW1pbHlHRjEvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLyUpbWF0aHNpemVHRjQtSSVtc3VwR0YkNiUtRiw2OFEieEYnRi9GMkY1RjhGO0Y9Rj9GQUZERkdGSUZLRk1GT0ZRRlNGVUZXRllGZW5GaG4tRiM2Iy1JI21uR0YkNjhRIjJGJ0YvRjJGNS9GOUY3RjtGPUY/RkFGREZHRklGS0ZNRk9GUUZTRlVGV0ZZL0ZmblEnbm9ybWFsRidGaG4vJTFzdXBlcnNjcmlwdHNoaWZ0R1EiMEYnRis=}.p1:=x->1:
p2:=x->x:
p3:=x->x^2:We orthogonalize first this set:ogp1:=x->p1(x):
ogp2:=x->eval(p2(x)-int(p2(x)*ogp1(x),x=-1..1)/
int(ogp1(x)*ogp1(x),x=-1..1)*
ogp1(x)):
ogp3:=x->p3(x)-int(p3(x)*ogp1(x),x=-1..1)/
int(ogp1(x)*ogp1(x),x=-1..1)*
ogp1(x)
-int(p3(x)*ogp2(x),x=-1..1)/
int(ogp2(x)*ogp2(x),x=-1..1)*
ogp2(x):ogp1(x);
ogp2(x);
ogp3(x);We check that they are orthogonal with respect to this inner product:int(ogp1(x)*ogp2(x),x=-1..1);
int(ogp1(x)*ogp3(x),x=-1..1);
int(ogp2(x)*ogp3(x),x=-1..1);The last operation is orthonormalization:onp1:=x->1/sqrt(int(ogp1(x)*ogp1(x),x=-1..1))*ogp1(x):
onp2:=x->1/sqrt(int(ogp2(x)*ogp2(x),x=-1..1))*ogp2(x):
onp3:=x->1/sqrt(int(ogp3(x)*ogp3(x),x=-1..1))*ogp3(x):onp1(x);onp2(x);onp3(x);We check that these three vectors are orthonormal:int(onp1(x)*onp1(x),x=-1..1);
int(onp2(x)*onp2(x),x=-1..1);
int(onp3(x)*onp3(x),x=-1..1);Exercise:1) Find an orthonormal basis for LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEhRicvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GJy8lJXNpemVHUSMxMkYnLyUlYm9sZEdRJmZhbHNlRicvJSdpdGFsaWNHUSV0cnVlRicvJSp1bmRlcmxpbmVHRjcvJSpzdWJzY3JpcHRHRjcvJSxzdXBlcnNjcmlwdEdGNy8lK2ZvcmVncm91bmRHUShbMCwwLDBdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y3LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSVUZXh0RicvJSptYXRoY29sb3JHRkMvJS9tYXRoYmFja2dyb3VuZEdGRi8lK2ZvbnRmYW1pbHlHRjEvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLyUpbWF0aHNpemVHRjQtSSVtc3ViR0YkNiYtRiw2OVEiUEYnRi9GMkY1RjhGO0Y9Rj9GQS9GRUZDRkdGSUZLRk1GT0ZRRlNGVUZYL0ZlbkZDRmZuRmhuRltvLUYjNiMtSSNtbkdGJDY5USIzRidGL0YyRjUvRjlGN0Y7Rj1GP0ZBRmNvRkdGSUZLRk1GT0ZRRlNGVUZYRmRvRmZuL0ZpblEnbm9ybWFsRidGW28vJS9zdWJzY3JpcHRzaGlmdEdRIjBGJy8lLHBsYWNlaG9sZGVyR0Y3Ris= starting with the basis: {3, LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYjLUkjbWlHRiQ2OVEieEYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EoWzAsMCwwXUYnLyUrYmFja2dyb3VuZEdGQy8lJ29wYXF1ZUdGNy8lK2V4ZWN1dGFibGVHRjcvJSlyZWFkb25seUdGNy8lKWNvbXBvc2VkR0Y3LyUqY29udmVydGVkR0Y3LyUraW1zZWxlY3RlZEdGNy8lLHBsYWNlaG9sZGVyR0Y3LyUwZm9udF9zdHlsZV9uYW1lR1EoMkR+TWF0aEYnLyUqbWF0aGNvbG9yR0ZDLyUvbWF0aGJhY2tncm91bmRHRkMvJStmb250ZmFtaWx5R0YxLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy8lKW1hdGhzaXplR0Y0,LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2OVEhRicvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GJy8lJXNpemVHUSMxMkYnLyUlYm9sZEdRJmZhbHNlRicvJSdpdGFsaWNHUSV0cnVlRicvJSp1bmRlcmxpbmVHRjcvJSpzdWJzY3JpcHRHRjcvJSxzdXBlcnNjcmlwdEdGNy8lK2ZvcmVncm91bmRHUShbMCwwLDBdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y3LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSVUZXh0RicvJSptYXRoY29sb3JHRkMvJS9tYXRoYmFja2dyb3VuZEdGRi8lK2ZvbnRmYW1pbHlHRjEvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLyUpbWF0aHNpemVHRjQtSSVtc3VwR0YkNiUtRiM2JC1JI21vR0YkNjNRMSZJbnZpc2libGVUaW1lcztGJy8lJWZvcm1HRi4vJSZmZW5jZUdGNy8lKnNlcGFyYXRvckdGNy8lJ2xzcGFjZUdRJDBlbUYnLyUncnNwYWNlR0ZecC8lKXN0cmV0Y2h5R0Y3LyUqc3ltbWV0cmljR0Y3LyUobWF4c2l6ZUdRKWluZmluaXR5RicvJShtaW5zaXplR1EiMUYnLyUobGFyZ2VvcEdGNy8lLm1vdmFibGVsaW1pdHNHRjcvJSdhY2NlbnRHRjcvJTBmb250X3N0eWxlX25hbWVHRlcvJSVzaXplR0Y0LyUrZm9yZWdyb3VuZEdGQy8lK2JhY2tncm91bmRHRkMtRiw2OVEieEYnRi9GMkY1RjhGO0Y9Rj9GQS9GRUZDRkdGSUZLRk1GT0ZRRlNGVUZYL0ZlbkZDRmZuRmhuRltvLUYjNiMtSSNtbkdGJDY5USIyRidGL0YyRjUvRjlGN0Y7Rj1GP0ZBRlxyRkdGSUZLRk1GT0ZRRlNGVUZYRl1yRmZuL0ZpblEnbm9ybWFsRidGW28vJTFzdXBlcnNjcmlwdHNoaWZ0R1EiMEYnLUZjbzYzUSgmbWludXM7RidGZm9GaG9Gam9GXHBGX3BGYXBGY3BGZXBGaHBGW3FGXXFGX3FGYXFGY3FGZXFGZ3FGaXE=, LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2OVEhRicvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GJy8lJXNpemVHUSMxMkYnLyUlYm9sZEdRJmZhbHNlRicvJSdpdGFsaWNHUSV0cnVlRicvJSp1bmRlcmxpbmVHRjcvJSpzdWJzY3JpcHRHRjcvJSxzdXBlcnNjcmlwdEdGNy8lK2ZvcmVncm91bmRHUShbMCwwLDBdRicvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYnLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y3LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHUSVUZXh0RicvJSptYXRoY29sb3JHRkMvJS9tYXRoYmFja2dyb3VuZEdGRi8lK2ZvbnRmYW1pbHlHRjEvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLyUpbWF0aHNpemVHRjQtSSVtc3VwR0YkNiUtRiw2OVEieEYnRi9GMkY1RjhGO0Y9Rj9GQS9GRUZDRkdGSUZLRk1GT0ZRRlNGVUZYL0ZlbkZDRmZuRmhuRltvLUYjNiMtSSNtbkdGJDY5USIzRidGL0YyRjUvRjlGN0Y7Rj1GP0ZBRmNvRkdGSUZLRk1GT0ZRRlNGVUZYRmRvRmZuL0ZpblEnbm9ybWFsRidGW28vJTFzdXBlcnNjcmlwdHNoaWZ0R1EiMEYnRis=}. The inner product is defined by (LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYjLUkjbWlHRiQ2OVEicEYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR0Y3LyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EoWzAsMCwwXUYnLyUrYmFja2dyb3VuZEdGQi8lJ29wYXF1ZUdGNy8lK2V4ZWN1dGFibGVHRjcvJSlyZWFkb25seUdGNy8lKWNvbXBvc2VkR0Y3LyUqY29udmVydGVkR0Y3LyUraW1zZWxlY3RlZEdGNy8lLHBsYWNlaG9sZGVyR0Y3LyUwZm9udF9zdHlsZV9uYW1lR1EoMkR+TWF0aEYnLyUqbWF0aGNvbG9yR0ZCLyUvbWF0aGJhY2tncm91bmRHRkIvJStmb250ZmFtaWx5R0YxLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGJy8lKW1hdGhzaXplR0Y0, LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYjLUkjbWlHRiQ2OVEicUYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lJWJvbGRHUSZmYWxzZUYnLyUnaXRhbGljR0Y3LyUqdW5kZXJsaW5lR0Y3LyUqc3Vic2NyaXB0R0Y3LyUsc3VwZXJzY3JpcHRHRjcvJStmb3JlZ3JvdW5kR1EoWzAsMCwwXUYnLyUrYmFja2dyb3VuZEdGQi8lJ29wYXF1ZUdGNy8lK2V4ZWN1dGFibGVHRjcvJSlyZWFkb25seUdGNy8lKWNvbXBvc2VkR0Y3LyUqY29udmVydGVkR0Y3LyUraW1zZWxlY3RlZEdGNy8lLHBsYWNlaG9sZGVyR0Y3LyUwZm9udF9zdHlsZV9uYW1lR1EoMkR+TWF0aEYnLyUqbWF0aGNvbG9yR0ZCLyUvbWF0aGJhY2tncm91bmRHRkIvJStmb250ZmFtaWx5R0YxLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGJy8lKW1hdGhzaXplR0Y0)= LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYrLUkobXN1YnN1cEdGJDYnLUkjbW9HRiQ2M1ErJkludGVncmFsO0YnLyUlZm9ybUdRJ3ByZWZpeEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y3LyUnbHNwYWNlR1EkMGVtRicvJSdyc3BhY2VHRjwvJSlzdHJldGNoeUdRJXRydWVGJy8lKnN5bW1ldHJpY0dGNy8lKG1heHNpemVHUSlpbmZpbml0eUYnLyUobWluc2l6ZUdRIjFGJy8lKGxhcmdlb3BHRkEvJS5tb3ZhYmxlbGltaXRzR0Y3LyUnYWNjZW50R0Y3LyUwZm9udF9zdHlsZV9uYW1lR1EoMkR+TWF0aEYnLyUlc2l6ZUdRIzEyRicvJStmb3JlZ3JvdW5kR1EoWzAsMCwwXUYnLyUrYmFja2dyb3VuZEdGWC1GIzYkLUYvNjNRKCZtaW51cztGJy9GM1EmaW5maXhGJ0Y1RjhGOkY9L0ZARjdGQkZERkcvRktGN0ZMRk5GUEZTRlZGWS1JI21uR0YkNjlGSS8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYnLyUlc2l6ZUdGVS8lJWJvbGRHRjcvJSdpdGFsaWNHRjcvJSp1bmRlcmxpbmVHRjcvJSpzdWJzY3JpcHRHRjcvJSxzdXBlcnNjcmlwdEdGNy8lK2ZvcmVncm91bmRHRlgvJStiYWNrZ3JvdW5kR0ZYLyUnb3BhcXVlR0Y3LyUrZXhlY3V0YWJsZUdGNy8lKXJlYWRvbmx5R0Y3LyUpY29tcG9zZWRHRjcvJSpjb252ZXJ0ZWRHRjcvJStpbXNlbGVjdGVkR0Y3LyUscGxhY2Vob2xkZXJHRjcvJTBmb250X3N0eWxlX25hbWVHRlIvJSptYXRoY29sb3JHRlgvJS9tYXRoYmFja2dyb3VuZEdGWC8lK2ZvbnRmYW1pbHlHRmNvLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGJy8lKW1hdGhzaXplR0ZVLUYjNiNGXm8vJTFzdXBlcnNjcmlwdHNoaWZ0R1EiMEYnLyUvc3Vic2NyaXB0c2hpZnRHRmNyLUknbXNwYWNlR0YkNiYvJSdoZWlnaHRHUScwLjB+ZXhGJy8lJndpZHRoR1EnMC41fmVtRicvJSZkZXB0aEdGW3MvJSpsaW5lYnJlYWtHUSVhdXRvRictRiM2JS1JI21pR0YkNjlRInBGJ0Zhb0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZicEZkcEZmcEZocEZqcEZccUZecUZgcUZicUZkcUZmcUZocUZqcUZdci1GLzYzUTAmQXBwbHlGdW5jdGlvbjtGJ0ZqbkY1RjhGOkY9RlxvRkJGREZHRl1vRkxGTkZQRlNGVkZZLUkobWZlbmNlZEdGJDYjLUYjNiMtRmdzNjlRInhGJ0Zhb0Zkb0Zmb0Zob0Zqb0ZccEZecEZgcEZicEZkcEZmcEZocEZqcEZccUZecUZgcUZicUZkcUZmcUZocUZqcUZdci1GIzYlLUZnczY5USJxRidGYW9GZG9GZm9GaG9Gam9GXHBGXnBGYHBGYnBGZHBGZnBGaHBGanBGXHFGXnFGYHFGYnFGZHFGZnFGaHFGanFGXXJGanNGXXQtRi82M1EwJkRpZmZlcmVudGlhbEQ7RidGMkY1RjhGOkY9RlxvRkJGREZHRl1vRkxGTkZQRlNGVkZZRmJ0LUYvNjNRIi5GJ0ZqbkY1RjhGOkY9RlxvRkJGREZHRl1vRkxGTkZQRlNGVkZZLUYvNjNRMSZJbnZpc2libGVUaW1lcztGJy9GM1EhRidGNUY4RjpGPUZcb0ZCRkRGR0Zdb0ZMRk5GUEZTRlZGWS9JK21zZW1hbnRpY3NHRiRRJGludEYn