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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.10.2011, 12:17   #1
ivan.tiran
Форумчанин
 
Аватар для ivan.tiran
 
Регистрация: 24.08.2011
Сообщений: 138
По умолчанию Обратная матрица

Пишу прогу по созданию обратной матрицы. За основу взял матрицу третьего порядка (потом переделаю под цикл). Появилась проблема, почему-то в конце b[i,j] выпадает таким же, как я задал в начальном цикле. В чём проблема?
Код:
		program prog;
		uses crt;
		var
		a:array[1..10,1..10] of real;
    b:array[1..10,1..10] of real;
		i,j,n:integer;
		BEGIN
  write('Vvedite razmernost kvadratnoy matrici:');
		read(n);
		        for i:=1 to n do
		        for j:=1 to n do
		        if i=j then
		        b[i,j]:=1
		        else
		        b[i,j]:=0;

		
		
            for i:=1 to n do
		        for j:=1 to n do
		        begin
		        writeln('Vvedite a[',i,',',j,']');
		        read(a[i,j]);
            end;
    

		a[1,1]:=a[1,1]/a[1,1];
		a[1,2]:=a[1,2]/a[1,1];
		a[1,3]:=a[1,3]/a[1,1];
		b[1,1]:=b[1,1]/a[1,1];
		b[1,2]:=b[1,2]/a[1,1];
		b[1,3]:=b[1,3]/a[1,1];


		a[2,1]:=a[2,1]-a[1,1]*a[2,1];
		a[2,2]:=a[2,2]-a[1,2]*a[2,1];
		a[2,3]:=a[2,3]-a[1,3]*a[2,1];
		b[2,1]:=b[2,1]-b[1,1]*a[2,1];
		b[2,2]:=b[2,2]-b[1,2]*a[2,1];
		b[2,3]:=b[2,3]-b[1,3]*a[2,1];

		a[3,1]:=a[3,1]-a[1,1]*a[3,1];
		a[3,2]:=a[3,2]-a[1,2]*a[3,1];
		a[3,3]:=a[3,3]-a[1,3]*a[3,1];
		b[3,1]:=b[3,1]-b[1,1]*a[3,1];
		b[3,2]:=b[3,2]-b[1,2]*a[3,1];
		b[3,3]:=b[3,3]-b[1,3]*a[3,1];

		a[2,1]:=a[2,1]/a[2,2];
		a[2,2]:=a[2,2]/a[2,2];
		a[2,3]:=a[2,3]/a[2,2];
		b[2,1]:=b[2,1]/a[2,2];
		b[2,2]:=b[2,2]/a[2,2];
		b[2,3]:=b[2,3]/a[2,2];

		a[3,1]:=a[3,1]-a[2,1]*a[3,2];
		a[3,2]:=a[3,2]-a[2,2]*a[3,2];
		a[3,3]:=a[3,3]-a[2,3]*a[3,2];
		b[3,1]:=b[3,1]-b[2,1]*a[3,2];
		b[3,2]:=b[3,2]-b[2,2]*a[3,2];
		b[3,3]:=b[3,3]-b[2,3]*a[3,2];

		a[3,1]:=a[3,1]/a[3,3];
		a[3,2]:=a[3,2]/a[3,3];
		a[3,3]:=a[3,3]/a[3,3];
		b[3,1]:=b[3,1]/a[3,3];
		b[3,2]:=b[3,2]/a[3,3];
		b[3,3]:=b[3,3]/a[3,3];

		a[2,1]:=a[2,1]-a[3,1]*a[2,3];
		a[2,2]:=a[2,2]-a[3,2]*a[2,3];
		a[2,3]:=a[2,3]-a[3,3]*a[2,3];
		b[2,1]:=b[2,1]-b[3,1]*a[2,3];
		b[2,2]:=b[2,2]-b[3,2]*a[2,3];
		b[2,3]:=b[2,3]-b[3,3]*a[2,3];

		a[1,1]:=a[1,1]-a[3,1]*a[1,3];
		a[1,2]:=a[1,2]-a[3,2]*a[1,3];
		a[1,3]:=a[1,3]-a[3,3]*a[1,3];
		b[1,1]:=b[1,1]-b[3,1]*a[1,3];
		b[1,2]:=b[1,2]-b[3,2]*a[1,3];
		b[1,3]:=b[1,3]-b[3,3]*a[1,3];

		a[1,1]:=a[1,1]-a[2,1]*a[1,2];
		a[1,2]:=a[1,2]-a[2,2]*a[1,2];
		a[1,3]:=a[1,3]-a[2,3]*a[1,2];
		b[1,1]:=b[1,1]-b[2,1]*a[1,2];
		b[1,2]:=b[1,2]-b[2,2]*a[1,2];
		b[1,3]:=b[1,3]-b[2,3]*a[1,2];

                             for i:=1 to n do
		                         for j:=1 to n do
                             writeln('b[',i,',',j,']=',b[i,j]);

  END.
Наверняка какая-нибудь ерунда, которую я в очередной раз не заметил)))

Последний раз редактировалось ivan.tiran; 04.10.2011 в 12:28.
ivan.tiran вне форума Ответить с цитированием
Старый 04.10.2011, 13:43   #2
ivan.tiran
Форумчанин
 
Аватар для ivan.tiran
 
Регистрация: 24.08.2011
Сообщений: 138
По умолчанию

Кажется, уже разобрался сам, я просто изменяю a, а потом только делю b на а.
ivan.tiran вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обратная матрица kati412 Помощь студентам 0 09.04.2011 18:29
Обратная матрица ВасяСВВ Общие вопросы C/C++ 1 30.03.2011 20:52
Обратная матрица helena91 Паскаль, Turbo Pascal, PascalABC.NET 0 22.03.2011 01:27
Обратная матрица tural Помощь студентам 0 18.11.2010 18:32
Обратная матрица Nox_uf Помощь студентам 1 23.09.2009 16:11