Руководство к решению задач по механике твердого деформируемого тела матричными методами. Бундаев В.В. - 23 стр.

UptoLike

Составители: 

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