![](/logo_grey.gif)
Последние записи
- Сравнение языков на массивах. Часть 2
- wprintf как напечатать кириллицу
- Взаимодействие через командную строку
- Сравнение языков на массивах. Часть 1
- Сравнение языков по скорости
- Чтение огромных xml-файлов
- Как в Python+Selenium webdriver открыть новую вкладку в уже открытом браузере?
- Lazarus, проверка существования строки таблице
- BASM и record, обращение к полям записи
- Web PHP Framework Symfony
![](http://programmersclub.ru/slurm3.jpg)
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
![](http://programmersclub.ru/katajpg.jpg)
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
24th
Май
Исходник нахождения обратной матрицы
Posted by Chas under Delphi, Исходники
У меня есть готовая процедура по нахождению обратной матрицы.
Но в ней не учтено то, что определитель может равняться нулю.
HollyWar
Вот полный код, если нужно
unit Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Spin, Grids;
type
TForm1 = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
StringGrid1: TStringGrid;
Label1: TLabel;
SpinEdit1: TSpinEdit;
Button1: TButton;
Button2: TButton;
StringGrid2: TStringGrid;
Splitter1: TSplitter;
Button3: TButton;
procedure Button3Click(Sender: TObject);
procedure SpinEdit1Change(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
kol: integer;
obr: array[0..300, 0..300] of real;
implementation
{$R *.dfm}
procedure Obratis;
var k, i, j: integer;
b: array[0..300, 0..300] of real;
begin
for k:=0 to kol - 1 do
begin
for i:=0 to kol - 1 do
for j:=0 to kol - 1 do
begin
if (i=k) and (j=k) then
b[i,j] := 1/obr[i,j];
if (i=k) and (j<>k) then
b[i,j] := -obr[i,j]/obr[k,k];
if (i<>k) and (j=k) then
b[i,j] := obr[i,k]/obr[k,k];
if (i<>k) and (j<>k) then
b[i,j] := obr[i,j] - obr[k,j] * obr[i,k]/obr[k,k];
end;
for i:= 0 to kol - 1 do
for j:= 0 to kol - 1 do obr[i, j]:= b[i, j];
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
form1.Close;
end;
procedure TForm1.SpinEdit1Change(Sender: TObject);
begin
kol:= SpinEdit1.Value;
StringGrid1.ColCount:= kol;
StringGrid1.RowCount:= kol;
StringGrid2.ColCount:= kol;
StringGrid2.RowCount:= kol;
end;
procedure TForm1.Button1Click(Sender: TObject);
var i, j: integer;
begin
randomize;
for i:= 0 to kol - 1 do
for j:= 0 to kol - 1 do
StringGrid1.Cells[i, j]:= IntToStr(random(200) - 100);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
kol:= 1;
end;
procedure TForm1.Button2Click(Sender: TObject);
var i, j: integer;
i1, j1: integer;
begin
i1:= 1;
j1:= 1;
try
for i:= 0 to kol - 1 do
for j:= 0 to kol - 1 do
begin
i1:= i;
j1:= j;
obr[i, j]:= StrToFloat(StringGrid1.Cells[j, i]);
end;
except
ShowMessage('Ошибка при вводе числа в столбце ' + IntToStr(j1 + 1) + ' строке ' + IntToStr(i1 + 1) + '!');
exit;
end;
Obratis;
for i:= 0 to kol - 1 do
for j:= 0 to kol - 1 do
StringGrid2.Cells[i, j]:= FloatToStr(Round(1000*obr[j, i])/1000);
end;
end.
Вот сам проект
![]() |
ObrMatrix.rar (207.7 Кб) |
Похожие статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
![пеллетные котлы](http://programmersclub.ru/respective.jpg)
пеллетные котлы
![пеллетный котел](http://programmersclub.ru/emtas.jpg)
Пеллетный котел Emtas
![форум программистов](http://programmersclub.ru/banf336х280.gif)
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)