Всем доброе время суток!!! Меня зовут Руслан и мне очень нужна ваша помощь. Пожалуйста помогите написать две проги:
1) Составить программу для вычисления ранга матрицы
2) Составить программу для вычисления обратной матрицы
Заранее всех благодарю. Желательно побольше
Чуть не забыл для Турбо Паскаля 7.0
Алгоритмы в студию! Не все помнят, как вычисляется ранг и обратная матрица, еще с первого курса
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Короче говоря, тут надо писать функцию нахождения определителя матрицы
|А|=(Сумма по к от 1 до n) (-1)^(k+1)*A[1,k]*Mk,
где Mk -- определитель матрицы порядка n-1, полученной из матрицы A вычеркиванием первой строки и столбца с номером k.
То есть в одну и ту же процедуру передаются массивы разных форматов. А поскольку Паскаль не может адекватно работать с динамическими массивами, задача вполне тянет на курсовой. Причем, имхо, не для первого курса.
В общем, решить, в принципе, можно, но сложно, долго и лениво
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Ранг матрицы препод у меня принял, теперь осталось только написать прогу для вычисления обратной матрицы.
Ранг матрицы:
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(' ');
Интересный и короткий алгоритм есть на http://algolib.narod.ru/Math/ObrMatrix.html описание похожего или этого алгоритма есть в книге Кнут "Исскуство программирования" т1 2,2,6 (осевые преобразования) он работает но есть проблема когда на диагонали нули. Я ещё разбираюсь