Vandermondův determinant

Autor: Martin Všetička ©, 2008

Materiály týkající se Vandermondova determinantu:  
(1) http://www.kolej.mff.cuni.cz/~lmotm275/skripta/sbirka/html/node80.html
(2) http://en.wikipedia.org/wiki/Vandermonde_determinant

Skript slouží pro znázornění výpočtu Vandermondova determinantu a je určen pro studijní účely.

Vstupem skriptu je n-tice čísel (nebo proměnných):

VandermondDet[lambda_]:=Deploy[

n=Length[lambda];
matrix={};

For[i=1,i<=n,i++,

tmpRow={};
For[j=1,j<=n,j++,
AppendTo[tmpRow,((Part[lambda,j])^(i-1)) ];
];
 AppendTo[matrix,tmpRow] 
];
Print["Vypočítávaný determinant: \n\n",TraditionalForm[matrix]];
tmpN=n;
korekce="";
korekceNum=1;
For[j=1,j≤n-1,j++,  (* sloupce / columns*)

For[i=tmpN,i≥2,i--,(* radky / rows *)
  matrix[[i,All]]=Simplify[matrix[[i,All]]-matrix[[i-1,All]]*lambda[[j]]];
];
korekce=StringJoin[korekce,  " * (",ToString[matrix[[1,1]]],") * (-1)^(1 + 1)"];
korekceNum*=matrix[[1,1]];
 (* odstraneni prvniho radku / delete first row*)
Print["Rozvoj podle 1. sloupce: \n\n",TraditionalForm[matrix],"\n"];
matrix=Delete[matrix,1];
matrix=Transpose[matrix];
(*Print[j,". krok / step: ",TraditionalForm[matrix]];*)
matrix=Delete[matrix,1];
(*Print[j,". krok / step: ",TraditionalForm[matrix]];*)
matrix=Transpose[matrix];
If[j==n-1,Print["Máme determinant 1. stupně: \n\n",TraditionalForm[matrix],"\n"],
Print[j,".krok - nulujeme 1. sloupec: \n\n",TraditionalForm[matrix],"\n"]
];
tmpN--;
];

korekce=StringJoin[korekce,  " * (",ToString[matrix[[1,1]]],")"];
korekce=StringDrop[korekce,3];
korekceNum*=matrix[[1,1]];
Print["\nHodnota determinantu je: ",korekce];
Print["\nHodnota determinantu - zjednodušený výraz: ",korekceNum];

];

VandermondDet[{λ1,λ2,λ3}];