24.04.2011, 21:46 | #1 (permalink) |
Новичок
Регистрация: 24.04.2011
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Определитель матрицы. Помогите найти в чем ошибка
1. В 1-ом столбце ищем максимальный по модулю эл-т и запоминаем номер строки 2. Если этот эл-т равен 0, то и определитель равен нулю 3. Если номер строки не равен 1, то меняем эту строку с 1-ой и умножаем определитель на -1 4. Делим 1 строку на эл-т [1;1] и умножаем определитель на эл-т [1;1] 5. Из j-ого столбца (от 2 до размерности) вычитаем 1-ый столбец, умноженный на [1;j] Все это делаем (размерность матрицы-1) раз умножаем определитель на последний эл-т в матрице. Я составила вот такую программу: Type mas = array [1..10, 1..10] of real; Var n: Integer; d: real; a: mas; Procedure vvod (Var A: Integer); Var rk: Integer; begin {$I-} repeat Writeln ('Vvedite razmernost matrici'); Readln (a); rk:=ioresult; if (rk<>0) or (A<=0) or (A>10) then Writeln ('error') until (rk=0) and (A>0) and (A<=10); {$I+} end; Procedure Zap (Var m: mas; n: integer); Var i, j: Integer; begin Writeln('Vvedite elementi matrici postrochno'); For i:=1 to n do for j:=1 to n do Read (m[i,j]); end; Procedure deter ( var a: mas; n: integer; var det: real); Var i, k, j, c: integer; max, b: real; begin det:=1; j:=1; k:=1; While (j<=n) do begin max:=a[1,j]; for i := (j+1) to n do if (abs(a[i, j])>abs (max)) then begin max:=a[i, j]; k:=i end; if max=0 then det:=0 else begin if (k<>j) then begin det:=det*(-1); for i:=j to n do begin b:=a[j, i]; a[j, i]:=a[k, i]; a[k, i]:=b end; end; for i:=j to n do a[j, i]:= a[j, i]/a[j, j]; det:= det*a[j, j]; for i:=j+1 to n do begin for c:=1 to n do a[c, i]:= a[c, i] - a[c, j]*a[i, j]; end; end; j:=j+1; end; det:=det*a[n, n]; end; Procedure Vivod (m: mas; n: integer); Var i, j: Integer; begin For i:=1 to n do begin for j:=1 to n do Write (m[i, j]:7:3, ' '); Writeln; end; end; begin vvod (n); Zap (a, n); Vivod (a, n); Readln; deter (a, n, d); Readln; Writeln ('Opredelitel matrici ', d:5:3); Readln; end. С 5-ым шагом выходит как-то не получается. Помогите найти в чем ошибка |
24.04.2011, 21:46 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Как вы уже поняли - это темы которые имеют сходства с вашей Помогите найти схему Помогите найти программу для изменения формата видео Помогите найти Помогите найти ошибку Определитель матрицы с помощью рекурсии. Delphi Помогите найти |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Метки |
матрица, определитель, паскаль |
|
|