Страница 1 из 2

Ранг матрицы и обратная матрица.

Добавлено: 15 апр 2007, 13:30
flay_er
:) Всем доброе время суток!!! Меня зовут Руслан и мне очень нужна ваша помощь. Пожалуйста помогите написать две проги:
1) Составить программу для вычисления ранга матрицы
2) Составить программу для вычисления обратной матрицы
Заранее всех благодарю. Желательно побольше ;)
Чуть не забыл для Турбо Паскаля 7.0

Re: Ранг матрицы и обратная матрица.

Добавлено: 16 апр 2007, 15:05
flay_er
Люди, ну пожалуйста, ну очень надо честно. От этого зависит буду ли я учиться на втором курсе. У нас декан строгач. Плиз!

Re: Ранг матрицы и обратная матрица.

Добавлено: 17 апр 2007, 10:05
Хыиуду
Алгоритмы в студию! Не все помнят, как вычисляется ранг и обратная матрица, еще с первого курса

Re: Ранг матрицы и обратная матрица.

Добавлено: 17 апр 2007, 16:41
flay_er
Хыиуду писал(а):Алгоритмы в студию! Не все помнят, как вычисляется ранг и обратная матрица, еще с первого курса
Ранг матрицы

Обратная матрица
И ещё раз заранее много спасибочки!

Re: Ранг матрицы и обратная матрица.

Добавлено: 18 апр 2007, 10:21
Хыиуду
Короче говоря, тут надо писать функцию нахождения определителя матрицы
|А|=(Сумма по к от 1 до n) (-1)^(k+1)*A[1,k]*Mk,
где Mk -- определитель матрицы порядка n-1, полученной из матрицы A вычеркиванием первой строки и столбца с номером k.
То есть в одну и ту же процедуру передаются массивы разных форматов. А поскольку Паскаль не может адекватно работать с динамическими массивами, задача вполне тянет на курсовой. Причем, имхо, не для первого курса.
В общем, решить, в принципе, можно, но сложно, долго и лениво

Re: Ранг матрицы и обратная матрица.

Добавлено: 18 апр 2007, 20:05
flay_er
Хыиуду, прошу напишите пожалуйста прогу или помогите. Очень надо чессно.

Re: Ранг матрицы и обратная матрица.

Добавлено: 22 апр 2007, 20:19
flay_er
Ранг матрицы препод у меня принял, теперь осталось только написать прогу для вычисления обратной матрицы.

Ранг матрицы:

const
p = 4;
q = 4;
var
min1, min2, min3, min4, min5, min6, min7, min8, min9, min10, min11, min12, min13, min14: integer;
i, j: integer;
a:array[1..4,1..4] of integer;
procedure OutMatrix(m : array[1..4,1..4] of integer); {Вывод матрицы}
BEGIN
writeln;
for j := 1 to p do
begin
for i := 1 to q do
write( m[i, j] : 7 );
writeln;
end;
end;
begin
for i:=1 to p do
for j:=1 to q do
begin
write('a[',i,', ',j,'] = '); read(a[i,j]);
end;
{Вывод исходных матриц}
writeln(' Матрица "a" ');
OutMatrix(a);
writeln(' ');

min1 := a[1, 1] * a[2, 2] - a[2, 1] * a[1, 2];
min2 := a[1, 2] * a[2, 3] - a[2, 2] * a[1, 3];
min3 := a[1, 3] * a[2, 4] - a[2, 3] * a[1, 4];
min4 := a[2, 1] * a[3, 2] - a[3, 1] * a[2 ,2];
min5 := a[2, 2] * a[3, 3] - a[3, 2] * a[2, 3];
min6 := a[2, 3] * a[3, 4] - a[3, 3] * a[3, 4];
min7 := a[3, 1] * a[4, 2] - a[4, 1] * a[3, 2];
min8 := a[3, 2] * a[4, 3] - a[4, 2] * a[4, 3];
min9 := a[3, 3] * a[3, 4] - a[4, 3] * a[4, 4];
min10 := a[1, 1] * a[2, 2] * a[3, 3] + a[1, 2] * a[2, 3] * a[3, 1] + a[2, 1] * a[1, 2] * a[3, 3] - a[1, 3] * a[2, 2] * a[3, 1] + a[2, 1] * a[1, 2] * a[3, 3] - a[2, 3] * a[3, 2] * a[1, 1];
min11 := a[1, 2] * a[2, 3] * a[3, 4] + a[1, 3] * a[2, 4] * a[3, 2] + a[2, 2] * a[1, 3] * a[3, 4] - a[1, 4] * a[2, 3] * a[3, 2] + a[2, 2] * a[1, 3] * a[3, 4] - a[2, 4] * a[3, 3] * a[1, 2];
min12 := a[2, 1] * a[3, 2] * a[4, 3] + a[2, 2] * a[3, 3] * a[4, 1] + a[3, 1] * a[2, 2] * a[4, 3] - a[2, 3] * a[3, 2] * a[4, 1] + a[3, 1] * a[2, 2] * a[4, 3] - a[3, 3] * a[4, 2] * a[2, 1];
min13 := a[2, 2] * a[3, 3] * a[4, 4] + a[2, 3] * a[3, 4] * a[4, 2] + a[3, 2] * a[2, 3] * a[4, 4] - a[2, 4] * a[3, 3] * a[4, 2] + a[3, 2] * a[2, 3] * a[4, 4] - a[3, 4] * a[4, 3] * a[2, 2];
min14 := a[1, 1] * ( a[2, 2] * a[3, 3] * a[4, 4] + a[2, 3] * a[3, 4] * a[4, 2] + a[2, 4] * a[3, 2] * a[4, 3] - a[2, 4] * a[3, 3] * a[4, 2] - a[2, 2] * a[3, 4] * a[4, 3] - a[2, 3] * a[3, 2] * a[4, 4] ) -
a[2, 1] * ( a[1, 2] * a[3, 3] * a[4, 4] + a[1, 3] * a[3, 4] * a[4, 2] + a[1, 4] * a[3, 2] * a[4, 3] - a[1, 4] * a[3, 3] * a[4, 2] - a[1, 2] * a[3, 4] * a[4, 3] - a[1, 3] * a[3, 2] * a[4, 4] ) +
a[3, 1] * ( a[1, 2] * a[2, 3] * a[4, 4] + a[1, 3] * a[2, 4] * a[4, 2] + a[1, 4] * a[2, 2] * a[4, 3] - a[1, 4] * a[2, 3] * a[4, 2] - a[1, 2] * a[2, 4] * a[4, 3] - a[4, 4] * a[2, 2] * a[1, 3] ) -
a[4, 1] * ( a[1, 2] * a[2, 3] * a[3, 4] + a[1, 3] * a[2, 4] * a[3, 2] + a[3, 3] * a[2, 2] * a[1, 4] - a[1, 4] * a[2, 3] * a[3, 2] - a[1, 2] * a[2, 4] * a[3, 3] - a[3, 4] * a[2, 2] * a[1, 3] );
writeln(' min1 = ', min1, ' min2 = ', min2, ' min3 = ', min3);
writeln(' min4 = ', min4, ' min5 = ', min5, ' min6 = ', min6);
writeln(' min7 = ', min7, ' min8 = ', min8, ' min9 = ', min9);
writeln(' min10 = ', min10, ' min11 = ', min11, ' min12 = ', min12);
writeln(' min13 = ', min13, ' min14 = ', min14);
writeln(' ');
if (min10=0) and (min11=0) and (min12=0) and (min13 = 0) then
begin
writeln('Ранг матрицы = 2'); writeln(' ');
end;
if min14 = 0 then
begin
writeln('Ранг матрицы = 3'); writeln(' ');
end
else
begin
writeln('Ранг матрицы = 4'); writeln(' ');
end;

END.

Re: Ранг матрицы и обратная матрица.

Добавлено: 22 апр 2007, 20:20
flay_er
Помогите только с обратной матрицей, плиз!!!!

Re: Ранг матрицы и обратная матрица.

Добавлено: 23 апр 2007, 16:52
flay_er
пожалуйста

Re: Ранг матрицы и обратная матрица.

Добавлено: 09 июн 2007, 20:03
PAn
Интересный и короткий алгоритм есть на http://algolib.narod.ru/Math/ObrMatrix.html описание похожего или этого алгоритма есть в книге Кнут "Исскуство программирования" т1 2,2,6 (осевые преобразования) он работает но есть проблема когда на диагонали нули. Я ещё разбираюсь