Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Работа для программиста > Фриланс
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.09.2020, 03:50   #1
Константин02
Новичок
Джуниор
 
Регистрация: 30.09.2020
Сообщений: 0
По умолчанию Нахождение обратной матрицы на PascalABC.NET

Здравствуйте. Имеется код на PascalABC.NET, который по заданной пользователем матрице находит обратную методом Гаусса-Жордана. Необходимо подробное объяснение принципа работы этой программы, конкретно описать, зачем нужна каждая строчка кода, а также откомментировать код.
Код:
const
  nmax = 10;

var
  A: array[1..nmax, 1..nmax] of Real;
  P: array[1..nmax] of Integer;
  i, j, k, b, n, t: Integer;
  e, s: Real;

label vyh;
begin
  WriteLn('программа обращения матрицы методом Гаусса-Жордана');
  WriteLn;
  Write('введите размерность матрицы А: n=');
  ReadLn(n);
  WriteLn('ввод матрицы А:');
  for i := 1 to n do for j := 1 to n do Read(A[i, j]); ReadLn; 
  for i := 1 to n do P[i] := i;  
  for k := 1 to n do
  begin//
    e := 0; b := 0;
    for i := k to n do
      if e < Abs(A[i, k]) then     
      begin
        e := Abs(A[i, k]); b := i;
      end;
    if e = 0 then
    begin
      WriteLn('матрица вырождена');
      goto vyh;
    end;
    if k < b then begin
      for j := 1 to n do
      begin// цикл 3 раза
        s := A[k, j]; A[k, j] := A[b, j]; A[b, j] := s;       
      end;
      t := P[k]; P[k] := P[b]; P[b] := t;                 
    end;
    A[k, k] := 1 / A[k, k];
    for j := 1 to n do
      if j <> k then begin
        s := A[k, j] * A[k, k];
        for i := 1 to n do
          if i <> k then
            A[i, j] := A[i, j] - A[i, k] * s;
        A[k, j] := s;
      end;
    for i := 1 to n do
      if i <> k then
        A[i, k] := -A[i, k] * A[k, k];
  end;
  
  for k := 1 to n do
    while k < P[k] do
    begin
      i := P[k];
      for j := 1 to n do
      begin
        s := A[j, k]; A[j, k] := A[j, i]; A[j, i] := s;
      end;
      t := P[i]; P[i] := P[k]; P[k] := t;
    end;
  WriteLn;
  WriteLn('Обратная матрица');
  for i := 1 to n do
  begin
    WriteLn; for j := 1 to n do Write(A[i, j]:10:5);
  end;
  vyh:
  ReadLn;
end.
Константин02 вне форума Ответить с цитированием
Старый 30.09.2020, 10:14   #2
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,537
По умолчанию

Цитата:
Сообщение от Константин02 Посмотреть сообщение
Код:
  ReadLn(n); // здесь ввели размерность матрицы
  WriteLn('ввод матрицы А:');
  for i := 1 to n do for j := 1 to n do Read(A[i, j]); ReadLn;  // здесь в цикле ввели матрицу
  for i := 1 to n do P[i] := i;  // заполнили массив P по порядку от 1 до n
  ................
Так что ли? Лошадиная работа....
digitalis вне форума Ответить с цитированием
Старый 02.10.2020, 11:38   #3
Larboss
Недо
Участник клуба
 
Регистрация: 11.08.2011
Сообщений: 1,394
По умолчанию

Каждую строку что-ли надо прокомментировать?

Пишите: larbossfreelance@yandex.ru Метка: freelance Указывайте ссылку на тему форума.
С помощью программирования можно разбогатеть и изменить мир к лучшему (с) Бьерн Страуструп
Larboss вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нахождение обратной матрицы Вероника92 Помощь студентам 0 21.03.2014 17:53
Нахождение обратной матрицы suslic3d Общие вопросы Delphi 0 11.12.2012 15:01
нахождение обратной матрицы и единичной матрицы размерностью N denisbrain Паскаль, Turbo Pascal, PascalABC.NET 0 17.05.2012 11:53
Нахождение обратной матрицы Linkfanka Помощь студентам 1 24.01.2012 08:23
Нахождение обратной матрицы произвольного размера Widow Maker Помощь студентам 0 10.05.2009 12:09