У вас вопросы?
У нас ответы:) SamZan.net

ЛАБОРАТОРНАЯ РАБОТА 3 Алгебра матриц

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

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

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

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

от 25%

Подписываем

договор

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

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

ЛАБОРАТОРНАЯ РАБОТА №3 «Алгебра матриц».

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

Задание. Обратить матрицу методом разбиения ее на произведение двух треугольных матриц.

Вариант 8.

При разбиении матрицы А на две треугольные, используются следующие формулы:

M=1..n.

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

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

Матрица A-1:


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. Подари Рождество детям Место проведения акции- ТЦ КоронаУручье Дата- 21 декабря 2013 Продукты питания
2. КонсультантПлюс
3. Прикладное программное обеспечение. Создание презентаций MS PowerPoint
4. Правовой режим земель охраняемых территорий
5. Аттестация и лицензирование аудиторской деятельности
6. Лизинг
7. варианты нормы акцентуации характера выступают наиболее ярко так как черты характера еще не сглажены и н
8. Воспаление самого аппендикса не производит заметные симптомы хотя оно начинает заболевание
9. РЕФЕРАТ дисертації на здобуття наукового ступеня кандидата педагогічних наук9
10. расчетные сопротивления бетона осевому сжатию соответственно для предельных состояний первой и второй гру