q1 := a b + b c + a c var1 := [a, b, c] aa := 0 l := b + c i := 2 aa := 0 aa := 1 l1 := c li := c liste := [[1/4, a + b + 2 c], [-1/4, a - b]] 2 q1 := -c var1 := [c] aa := -1 l := 0 liste := [[1/4, a + b + 2 c], [-1/4, a - b], [-1, c]] q1 := 0 var1 := [] |
Gauss:=proc(quad,variable)
local q,var,liste,i,a,l; q:=quad;var:=variable;liste:=[]; while var<>[] do a:=diff(q,var[1],var[1])/2;l:=eval(diff(q,var[1]),var[1]=0); if a=0 and l=0 then var:=subsop(1=NULL,var);next end if; if a<>0 then liste:=[op(liste),[a,var[1]+l/(2*a)]];q:=eval(q,var[1]=0)-l^2/(4*a);var:=subsop(1=NULL,var);next end if; i:=2;while eval(diff(l,var[i]),var[i]=0)=0 do i:=i+1 end do; a:=diff(q,var[i],var[i])/2; if a<>0 then liste:=[op(liste),[a,var[i]+l/(2*a)]];q:=eval(q,var[i]=0)-l^2/(4*a);var:=subsop(i=NULL,var);next end if; a:=diff(q,var[1],var[i]);l1:=eval(diff(q,var[1]),[var[1]=0,var[i]=0]);li:=eval(diff(q,var[i]),[var[1]=0,var[i]=0]); liste:=[op(liste),[a/4,var[1]+var[i]+(l1+li)/a],[-a/4,var[1]-var[i]+(li-l1)/a]]; q:=eval(q,[var[1]=0,var[i]=0])-l1*li/a; var:=subsop(1=NULL,i=NULL,var) end do; q:=add(liste[i,1]*liste[i,2]^2,i=1..nops(liste)); [liste,q] end proc; |