ВУЗ:
Составители:
45
( 0, 0, 0, 0, 0,-1,-1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0),
( 0, 0, 0, 0, 0, 0, 0,-1,-1, 0, 1, 1, 0, 0, 0, 0, 0),
( 0, 0, 0, 0, 0, 0, 0, 0, 0,-1,-1, 0, 1, 1, 0, 0, 0),
( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,-1,-1, 0, 1, 1, 0),
( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,-1,-1, 0, 1),
( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,-1,-1));
(* Задание значений вектора координат узлов *)
kc:mas6=((0.0, 4.0),
(0.0, 0.0),
(3.0, 4.0),
(3.0, 0.0),
(6.0, 4.0),
(6.0, 0.0),
(9.0, 4.0),
(9.0, 0.0),
(12.0, 4.0),
(12.0, 0.0));
(* Задание значений вектора внешней нагрузки *)
kp:mas8=(0,0,0,0,0,0,0,0,0,0,0,0,0,-8,0,0,0,0,0,0);
(* Номера уравнений, которые нужно удалить *)
kn:mas9=(3,4,20);
procedure gauss;
const n=nel; {число линейных уравнений}
var l:integer; r:real;
begin{1}
(*ввод матриц a,a1,b,x *)
a:=sp; b:=q; a1:=a; x:=b;
l:=0;
(*прямой ход метода Гаусса *)
for i:=1 to n do
(* поиск главного элемента в i-ом столбце *)
begin{2}
k:=i;
r:=abs(a1[i,i]);
for j:=i+1 to n do
46
begin{3}
if abs(a1[j,i])>r then
begin{4}
k:=j;
r:=abs(a1[j,i])
end{4}
end;{3}
if r<>0 then
begin{5}
if k<>i then
begin{6}
(* перестановка i-го и k-го уравнений *)
r:=x[k];
x[k]:=x[i];
x[i]:=r;
for j:=i to n do
begin{7}
r:=a1[k,j];
a1[k,j]:=a1[i,j];
a1[i,j]:=r
end{7}
end;{6}
(* исключение i-го неизвестного *)
r:=a1[i,i];
x[i]:=x[i]/r;
for j:=i to n do
a1[i,j]:=a1[i,j]/r;
for k:=i+1 to n do
begin{8}
r:=a1[k,i];
x[k]:=x[k]-r*x[i];
for j:=i to n do
a1[k,j]:=a1[k,j]-r*a1[i,j]
end{8}
end{5}
else
45 46
( 0, 0, 0, 0, 0,-1,-1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0), begin{3}
( 0, 0, 0, 0, 0, 0, 0,-1,-1, 0, 1, 1, 0, 0, 0, 0, 0), if abs(a1[j,i])>r then
( 0, 0, 0, 0, 0, 0, 0, 0, 0,-1,-1, 0, 1, 1, 0, 0, 0), begin{4}
( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,-1,-1, 0, 1, 1, 0), k:=j;
( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,-1,-1, 0, 1), r:=abs(a1[j,i])
( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,-1,-1)); end{4}
(* Задание значений вектора координат узлов *) end;{3}
kc:mas6=((0.0, 4.0), if r<>0 then
(0.0, 0.0), begin{5}
(3.0, 4.0), if k<>i then
(3.0, 0.0), begin{6}
(6.0, 4.0), (* перестановка i-го и k-го уравнений *)
(6.0, 0.0), r:=x[k];
(9.0, 4.0), x[k]:=x[i];
(9.0, 0.0), x[i]:=r;
(12.0, 4.0), for j:=i to n do
(12.0, 0.0)); begin{7}
(* Задание значений вектора внешней нагрузки *) r:=a1[k,j];
kp:mas8=(0,0,0,0,0,0,0,0,0,0,0,0,0,-8,0,0,0,0,0,0); a1[k,j]:=a1[i,j];
(* Номера уравнений, которые нужно удалить *) a1[i,j]:=r
kn:mas9=(3,4,20); end{7}
end;{6}
procedure gauss; (* исключение i-го неизвестного *)
const n=nel; {число линейных уравнений} r:=a1[i,i];
var l:integer; r:real; x[i]:=x[i]/r;
begin{1} for j:=i to n do
(*ввод матриц a,a1,b,x *) a1[i,j]:=a1[i,j]/r;
a:=sp; b:=q; a1:=a; x:=b; for k:=i+1 to n do
l:=0; begin{8}
(*прямой ход метода Гаусса *) r:=a1[k,i];
for i:=1 to n do x[k]:=x[k]-r*x[i];
(* поиск главного элемента в i-ом столбце *) for j:=i to n do
begin{2} a1[k,j]:=a1[k,j]-r*a1[i,j]
k:=i; end{8}
r:=abs(a1[i,i]); end{5}
for j:=i+1 to n do else
Страницы
- « первая
- ‹ предыдущая
- …
- 21
- 22
- 23
- 24
- 25
- …
- следующая ›
- последняя »
