Лабораторная работа

Лабораторная работа Лабораторные работы по вычислительной математике

Работа добавлена на сайт bukvasha.net: 2015-10-29

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 24.6.2025





ЛАБОРАТОРНАЯ РАБОТА №
4 «Методы решения систем линейных уравнений
».


Студента группы ПВ-22 Малютина Максима.


Задание. Решить систему по схеме Халецкого с точностью до 0,0001.
Вариант 8.
При разбиении матрицы А на две треугольные, используются следующие формулы:




M=1..n.

Получены следующие результаты:

Матрица T: Матрица R:


Матрица X:



program lab_3;

{ Лабораторная работа по вычмслительной математике N 3

  Нахождение матрицы, обратной данной }
const Sizem = 10; { максимальная размерность матрицы }
type mattype = array [1..Sizem,1..Sizem] of double;
{ процедура для вывода матрицы на экран }

procedure WriteMat (var m : mattype;n,n1 : byte);

var k,i : byte;

begin

     writeln;

     for k := 1 to n do

     begin

          for i := 1 to n1 do

              write(m[k,i] : 7:3,' ');

          writeln

     end;

end;
{ процедура ввода значений элементов матрицы }

procedure inputmat (var m : mattype; var n : byte);

var k,i : byte;

begin

     writeln;

     write ('Размер матрицы = ');

     readln(n);

     for k := 1 to n do

         for i := 1 to n do

             read (m[k,i]);

end;
{ процедура транспонирования матрицы }

procedure Transpose (var m : mattype;n : byte);

var k,i : byte;

    ttt : double;

begin

     for k := 1 to n do

         for i := k+1 to n do

         begin

              ttt := m[k,i];

              m[k,i] := m[i,k];

              m[i,k] := ttt;

         end;

end;
{ процедура умножения двух матриц (a*b=c) }

procedure MulMat (a : mattype; ma,na : byte;

                  b : mattype; mb,nb : byte;

                  var c : mattype; var mc,nc : byte);

var k,i,j : byte;

    s : double;

begin

     if na = nb then

     begin

          mc := ma;

          nc := nb;

          for k := 1 to mc do

               for j := 1 to nc do

               begin

                    s := 0;

                    for i := 1 to nc do

                         s := s+a[k,i]*b[i,j];

                    c[k,j] := s;

               end;

     end

     else

     begin

      writeln('Неправильный размер матрицы !');

          halt

     end;

end;
{ процедура получения двух треугольных матриц

  произведение которых равно матрице m }

procedure GetRnT (var m,r,t : mattype; n : byte);

var k,i,m1,l : byte;

begin

     for k := 1 to n do

         for i := 1 to n do

         begin

              if k=i then r[k,i] := 1

                     else r[k,i] := 0;

              t[k,i] := 0;

         end;
     for m1 := 1 to n do

     begin

          if m1 = 1 then

          begin

               for i := 1 to n do

                   t[i,1] := m[i,1];

               for i := 2 to n do

                   r[1,i] := m[1,i]/t[1,1];

          end

          else

          begin

               k := m1;

               for i := m1 to n do

               begin

                   t[i,k] := m[i,k];

                   for l := 1 to k-1 do

                       t[i,k] := t[i,k] - t[i,l]*r[l,k];

               end;

               i := m1;

               for k := i+1 to n do

               begin

                    r[i,k] := m[i,k];

                    for l := 1 to i-1 do

                        r[i,k] := r[i,k] - t[i,l]*r[l,k];

                    r[i,k] := r[i,k] / t[i,i];

               end;

          end;

     end;

end;
{ процедура обращения нижней треугольной матрицы }

procedure BackMat (var t : mattype; n : byte);

var i,k,l : byte;

    x : mattype;

begin

     for i := 1 to n do

         x[i,i] := 1/t[i,i];
     for k := 1 to n-1 do

          for i := k+1 to n do

          begin

               x[i,k] := 0;

               for l := k to i-1 do

                   x[i,k] := x[i,k] - t[i,l]*x[l,k];

               x[i,k] := x[i,k]/t[i,i];

          end;

     t := x

end;
var m,m1,r,t : mattype;

    n : byte;

{ ------------- основная программа ---------------- }

begin

     writeln ('Лабораторная работа N 2 ');

     InputMat(m,n);           { ввод матрицы m }

     GetRnT(m,r,t,n);{получение треугольных матриц t и r}

     Writeln('Матрица T: ');

     WriteMat(t,n,n);

     readln;

     Writeln('Матрица R: ');

     WriteMat(r,n,n);

     readln;        

     BackMat(t,n);   { обращение матрицы t }

     Transpose(r,n); { транспонирование матрицы r }

     BackMat(r,n);   {обращение матрицы r (транcпонир.)}

     Transpose(r,n);{транспонирование обращенной м-цы r }

     MulMat(r,n,n,t,n,n,m1,n,n);

     {получение матрицы,обратной матрице m}

     WriteMat (m1,n,n);{ печать обратной матрицы }

     readln;

     MulMat(m,n,n,m1,n,n,m,n,n); { Проверка вычислений }

     WriteMat(m,n,n);

     readln;

end.


1. Реферат Инвестиции 13
2. Реферат Ремонт монолитной штукатурки
3. Биография Александр Николаевич Островский биография писателя
4. Реферат на тему Censorship What Is Best For Our Children
5. Реферат на тему Російське право XI XV століть
6. Реферат Актуальные проблемы семейного воспитания
7. Реферат Социологические взгляды П.А. Сорокина о браке, семье, любви
8. Диплом Афористика Бернарда Шоу на прикладі пєси Пігмаліон 2
9. Реферат на тему Metal Gear Solid Walkthrough Essay Research Paper
10. Реферат Учет плательщиков налогов и налоговых поступлений