求线性代数中,行列式的算法!(100分)

  • 主题发起人 主题发起人 a2020a
  • 开始时间 开始时间
A

a2020a

Unregistered / Unconfirmed
GUEST, unregistred user!
求线性代数中,行列式的算法!
 
查查《计算方法》,写的很清楚,现在都忘了!
 
我才回答过一贴:
6. 计算行列式值
type
TArray=array[0..10,0..10] of do
uble;
function Matrix(n:integer;a:TArray):double;
const e=0.0000001;
var
i,j,k:integer;
d2,d3:double;
exch:boolean;
begin
result:=0;
for i:=0 to n-1 do
begin
exch:=true;
if abs(a[i,i])<e then
begin
exch:=false;
for j:=i+1 to n-1 do
if abs(a[j,i])>e then
begin
exch:=true;
for k:=i to n-1 do
begin
d2:=a[i,k];
a[i,k]:=a[j,k];
a[j,k]:=d2;
end;
break;
end;
if exch then
break;
end;
if not(exch) then
exit;
d2:=a[i,i];
for j:=i+1 to n-1 do
begin
d3:=a[j,i];
for k:=i to n-1 do
begin
a[j,k]:=a[j,k]-a[i,k]/d2*d3;
end;
end;
end;
result:=1;
for i:=0 to n-1 do
Result:=Result*a[i,i];
end;

procedure TForm1.Button2Click(Sender: TObject);
var
a:Tarray ;
d:double;
begin
a[0,0]:=0;
a[0,1]:=0;
a[1,0]:=0;
a[1,1]:=0;
showmessage(floattostr(Matrix(2,a)));
a[0,0]:=2;
a[0,1]:=3;
a[1,0]:=4;
a[1,1]:=5;
// -2
showmessage(floattostr(Matrix(2,a)));
end;
 
jsxjd,谢谢了,上面的abs是什么啊?
给点注释可以吗??我看不懂,。
 
abs:绝对值
 
上面的exch是用来干嘛的?可以给出源码吗?
 
后退
顶部