Задача 4. Привести квадратическую форму к каноническому виду методом Лагранжа:

> with(linalg):with(LinearAlgebra):

Warning, the previous binding of the name GramSchmidt has been removed and it now has an assigned value

Warning, the assigned name GramSchmidt now has a global binding

> with(student):

> A:=x[1]^2+8*x[2]^2+4*x[3]^2+4*x[1]*x[2]+4*x[1]*x[3]+12*x[2]*x[3];

A := x[1]^2+8*x[2]^2+4*x[3]^2+4*x[1]*x[2]+4*x[1]*x[...

> if (coeff(A,x[1]^2)=0 and coeff(A,x[2]^2)=0 and coeff(A,x[3]^2)=0) then A:=expand(subs(x[1]=x[1]+x[2],x[2]=x[1]-x[2],x[3]=x[3],A));fi;

> i:=1:A:=completesquare(A,[x[i],coeff(A,x[i])]);

A := (x[1]+2*x[2]+2*x[3])^2+4*x[2]^2+4*x[2]*x[3]

> A2:=A-op(A)[i]:
A:=op(A)[i]+(completesquare(A2,[x[2],coeff(A2,x[2])]));

A := (x[1]+2*x[2]+2*x[3])^2+4*(x[2]+1/2*x[3])^2-x[3...

> for i to nops(A) do
if (type(op([i,1],A),rational)) then
Y[i]:=op([i,2,1],A);A:=subs(op([i,2],A)=y[i]^2,A);
else Y[i]:=op([i,1],A);A:=subs(op(i,A)=y[i]^2,A);
fi;od;

> print(`Сделаем замену переменных:`);
for i to 3 do;
y[i]=Y[i]; od;

`Сделаем замену переменных:`

y[1] = x[1]+2*x[2]+2*x[3]

y[2] = x[2]+1/2*x[3]

y[3] = x[3]

> print(`И тогда канонический вид данной формы будет:`);
A;

`И тогда канонический вид данной формы будет:`

y[1]^2+4*y[2]^2-y[3]^2

> print(`Линейным преобразованием которого будет:`);
X:=solve({seq(y[i]=simplify(sqrt(Y[i]),assume=positive),i=1..3)},{x[1],x[2],x[3]}):
assign(X);х[1]=x[1];х[2]=x[2];х[3]=x[3];

`Линейным преобразованием которого будет:`

`х`[1] = -y[3]^2-2*y[2]^2+y[1]^2

`х`[2] = -1/2*y[3]^2+y[2]^2

`х`[3] = y[3]^2