ピボット選択

program p_bot(input,output); const n=3; type matrix=array[1..n,1..n] of real; {n$B9T(Bn$BNs$N9TNs$r:n@.(B} vector=array[1..n] of real; {n$BNs$r:n@.(B} var a : matrix; b : vector; box_a:array[1..n] of real; box_b:array[1..n] of real; m,i,j:integer; L:real; procedure pbot_2(I,J:integer); begin for i:=J to n do begin box_a[i]:=a[J,i]; a[J,i]:=a[I,i]; a[I,i]:=box_a[i]; end; box_b[J]:=b[J]; b[J]:=b[I]; b[I]:=box_b[J]; end; { pbot_2 } procedure pbot_1(var a:matrix; n:integer); begin for j:=1 to n-1 do begin i:=j; L:=abs(a[j,j]); while (i<=n) do begin if (L<abs(a[i,j])) then begin L:=abs(a[i,j]); m:=i; end; i:=i+1; end; pbot_2(m,j); writeln(L:5:0,m,j); end; end; { pbot_1 } procedure pbot(var a:matrix; var b:vector); var i,j,I:integer; L:real; begin for j:=1 to n-1 do begin i:=j; L:=abs(a[j,j]); while (i<=n) do begin if (L<abs(a[i,j])) then begin L:=abs(a[i,j]); I:=i; end; i:=i+1; end; for i:=j to n do begin box_a[i]:=a[j,i]; a[j,i]:=a[I,i]; a[I,i]:=box_a[i] end; box_b[j]:=b[j]; b[j]:=b[I]; b[I]:=box_b[j]; writeln(L:5:0,I,j); end; end; { pbot_1 } procedure make_matrix(var a : matrix); begin a[1,1] := 1; a[1,2] := -2; a[1,3] :=-1; a[2,1] := 2; a[2,2] := -4; a[2,3] := 0; a[3,1] := -1; a[3,2] := 1; a[3,3] := 5 end; { make_matrix } procedure make_vector(var b : vector); begin b[1] := -6; b[2] := -6; b[3] := 16; end; { make_vector } begin make_matrix(a); make_vector(b); pbot(a,b); end.


Last modified: 2000$BG/(B1$B7n(B20$BF|(B 13:51