![]() |
Модераторы: volvo877, Snowy, MetalFan |
![]() ![]() ![]() |
|
Ura20007 |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 248 Регистрация: 22.4.2007 Репутация: нет Всего: 1 |
Ребятки помогите доделать програмку.Нужно дописать нахождение определителя матрицы.
Код программы прикрепил Это сообщение отредактировал(а) Ura20007 - 22.11.2007, 16:17 Присоединённый файл ( Кол-во скачиваний: 10 ) ![]() |
|||
|
||||
Ofer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 293 Регистрация: 15.10.2006 Где: КривбаСС Репутация: нет Всего: 5 |
Когда-то в инсте решал определитель методом Гауса. Кидаю этот метод, может он тебе поможет. Переделать под нужный размер матрицы не сложно.
Надеюсь это тебе пригодится ![]() |
|||
|
||||
primax |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 29.12.2006 Где: НТУУ-КПИ.Киев Репутация: нет Всего: нет |
Никогда не сталкивался с такими заданиями) хотя по курсу вышки помню только метод разложения строки на арифмитические дополнения. Можно написать рекурсивный алгоритм для поиска определителя и он будет фактически для любой размерности
![]() Но это наверна не рационально) П.С. Не читал код метода Гаусса (2 ночи всетаки), но эт случаем не треугольный метод (когда над\под главной диагональю одни нули)? Потомучто других методов для поиска детерминанта из вышки не помню. Это сообщение отредактировал(а) primax - 25.11.2007, 03:01 |
|||
|
||||
Ofer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 293 Регистрация: 15.10.2006 Где: КривбаСС Репутация: нет Всего: 5 |
primax, это так и есть. Формируется треугольник из нулей под главной диагональю. Определитель можно еще найти понижением порядка, рекурентных соотношений, методом квадратных корней, присоедененной матрицы, методом елементарных преобразований......
![]() Гауса и два последних наиболее простые. ИМХО |
|||
|
||||
BSE |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 25.11.2007 Репутация: нет Всего: нет |
var F, G: Text;
I, J: Longint; N: Byte; Matrix, Buff: Array[1..100, 1..100] of Integer; function PlusMin(I: Longint): Longint; begin if I mod 2= 0 then PlusMin:= -1 else PlusMin:= 1; end; function Summ(Y: Byte): Longint; var I, M, J, X1, X2: Byte; Summ2: Longint; begin if (N- Y)= 1 then begin X1:=0; for I:= 1 to N do if Buff[I, N-1]=1 then if X1=0 then X1:= I else begin X2:= I; break; end; Summ:= Matrix[X1, N-1]*Matrix[X2, N]- Matrix[X1, N]*Matrix[X2, N-1]; end else begin Summ2:=0; J:= 0; for I:=1 to N do begin if Buff[I, Y]<> 0 then begin Inc(J); for M:= Y+1 to N do Buff[I, M]:=0; Summ2:= Summ2+PlusMin(J)* Matrix[I, Y]* Summ(Y+1); for M:= Y+1 to N do Buff[I, M]:=1; end; end; Summ:= Summ2; end; end; begin Assign(F, 'InPut.txt'); Assign(G, 'OutPut.txt'); Reset(F); Rewrite(G); Read(F, N); for I:=1 to N do for J:=1 to N do begin Read(F, Matrix[I, J]); Buff[I, J]:= 1; end; Write(G, Summ(1)); Close(F); Close(G); end. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi" | |
|
Запрещается! 1. Обсуждать и делится взломанными компонентами или программным обеспечением 2. Публиковать ссылки на варез 3. Оффтопить
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |