Текущий архив: 2002.04.18;
Скачать: CL | DM;
Вниз
Опять к вопросу об алгоритме Найти похожие ветки
← →
Pinochet (2002-04-06 10:14) [0]На прошлых выходных я уже задавал этот вопрос:
мне нужно написать алгоритм вычисления детерминанта для данной матрицы(матрица может быть любого порядка, правило треугольника не поможет). Тогда мне предложили использовать метод Гаусса.
Порывшись в литературе я нашел, что метод Гаусса используется для решения систем линейных уравнений, и его смысл заключается в приведении матрицы коэффициентов к треугольному виду. Причем здесь вычесление детерминанта!?
...Или я в чем-то ошибаюсь!
← →
MBo (2002-04-06 10:17) [1]http://www.srcc.msu.su/num_anal/lib_na/cat/cat5.htm
← →
MBo (2002-04-06 10:19) [2]а приведение к треугольному виду позволяет вычислить определитель как произведение элементов главной диагонали, т.к. все остальные слагаемые будут равны 0
← →
Pat (2002-04-06 10:20) [3]Когда-то писал на Паскале...разберешься...
function opr:real;
var
l,count,y,z,i,j,n1:integer;
x,k,p:real;
begin {function opr}
n1:=n;
p:=1;count:=0;
while n>1 do
begin{while}
if a[1,1]=0 then
begin
p:=-p;
for j:=1 to n do
if a[1,j]=0 then inc(count)
else count:=0; { исключение }
if count=n then { деления }
begin { на 0 }
n:=1;
a[1,1]:=0;
break; {выход из while"a}
end;
for j:=n downto 2 do
if a[1,j]<>0 then l:=j;
for i:=1 to n do
begin
x:=a[i,l];
a[i,l]:=a[i,1];
a[i,1]:=x;
end;
end;
p:=p*a[1,1];
x:=a[1,1]; {элемент [1,1]=1}
for i:=1 to n do
a[i,1]:=a[i,1]/x;
for j:=2 to n do {получаем 0 и 1}
begin
k:=a[1,j];
for i:=1 to n do
a[i,j]:=a[i,j]-a[i,1]*k;
end;
for i:=2 to n do {понижение порядка}
for j:=2 to n do
a[i-1,j-1]:=a[i,j];
dec(n);
end;{while}
opr:=p*a[1,1]; {определитель}
n:=n1;
for i:=1 to n do
for j:=1 to n do
a[i,j]:=b[i,j];
end;{function opr}
Страницы: 1 вся ветка
Текущий архив: 2002.04.18;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.006 c