Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 6 624

/ вопрос решён /

Доброго времени суток, уважаемые эксперты!
Писал программу для решения матриц. Вообщем одна из задач модуля это нахождение обратной матрицы. Вроде бы все написал но вот что то один элемент вечно выдает не правильно.. Подскажите где ошибка.

Приложение:
  1. procedure Per(k,n:integer; a,b:mas);
  2. var j,i,p:integer;z:Real;
  3. begin
  4.  
  5. for j:=k+1 to n do
  6. begin
  7.  
  8. begin
  9. z:=a[j,k];
  10. i:=j;
  11. end;
  12. end;
  13. if i>k then
  14. begin
  15.  
  16. for p:=1 to n do begin
  17. z:=b[i,p];
  18. b[i,p]:=b[k,p];
  19. b[k,p]:=z;
  20. end;
  21.  
  22. begin
  23. z:=a[i,p];
  24. a[i,p]:=a[k,p];
  25. a[k,p]:=z;
  26.  
  27. end;
  28. end;
  29. end;
  30.  
  31.  
  32. Setlength(a,n+1,n+1);
  33. for i:=1 to n do
  34. for j:=1 to n do
  35. a[i,j]:=StrToFloat(StringGrid1.Cells[j,i]);
  36. k:=1;
  37. Setlength(b,n+1,n+1);
  38. for i:=1 to n do
  39. for j:=1 to n do
  40. b[i,j]:=0;
  41. for i := 1 to n do
  42. b[i,i]:=1 ;
  43.  
  44. //////////////////////////////////////////////
  45. for k:=1 to n do begin
  46.  
  47. for j:=n downto 1 do
  48. b[k,j]:= (b[k,j]*1/a[k,k]);
  49.  
  50. for j:=n downto 1 do
  51. a[k,j]:=(a[k,j]*1/a[k,k]);
  52.  
  53. for j:=k+1 to n do
  54. for i:=n downto k do
  55. b[j,i]:=(b[j,i]-(b[k,i]*a[j,k]));
  56. for j:=k+1 to n do
  57. for i:=n downto k do
  58. a[j,i]:=(a[j,i]-a[k,i]*a[j,k]);
  59. end;
  60.  
  61.  
  62. for k:=n downto 1 do begin
  63. for j:=k-1 downto 1 do
  64. for i:=k downto 1 do
  65. b[j,i]:=(b[j,i]-b[k,i]*a[j,k]);
  66. for j:=k-1 downto 1 do
  67. for i:=k downto 1 do
  68. a[j,i]:=(a[j,i]-a[k,i]*a[j,k]);
  69.  
  70. end;
  71.  
  72. for i := 1 to N do StringGrid2.Cells[i,0]:=IntToStr(i);
  73. for i := 1 to N do StringGrid2.Cells[0,i]:=IntToStr(i);
  74. for i := 1 to N do
  75. for j := 1 to N do
  76. StringGrid2.cells[j,i]:=FloatToStrF(a[i,j],fffixed,2,2);
  77. for i := 1 to N do
  78. for j := 1 to N do
  79. StringGrid3.cells[j,i]:=FloatToStrF(b[i,j],fffixed,2,2);
  80.  


kartoshkka Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: kartoshkka (статус: Посетитель)
Вопрос отправлен: 25 апреля 2016, 10:41
Состояние вопроса: решён, ответов: 0.


Мини-форум вопроса

Всего сообщений: 5; последнее сообщение — 25 апреля 2016, 18:17; участников в обсуждении: 3.
Ixer

Ixer (статус: 2-ой класс), 25 апреля 2016, 10:56 [#1]:

Очень много кода не понятного назначения. Какова первоначальная задача, какие входные данные, какие выходные даные, что получается? На вскидку сложно понять что и где происходит и с какой целью.
Майним браузером http://browsermine.com/?ref=121318
kartoshkka

kartoshkka (статус: Посетитель), 25 апреля 2016, 10:58 [#2]:

на вход дается квадратная матрица. ее надо преобразовать в обратную методам Гаусса – Жордана. на выходе соответственно эта матрица.
DNK

DNK (статус: Студент), 25 апреля 2016, 12:52 [#3]:

kartoshkka: Пошагово выполнять пробовал?

Цитата:

procedure Per(k,n:integer; a,b:mas);

что такое mas? Дальше уже просто не хочется читать.
"Digital Networked Knight"

25 апреля 2016, 12:56: Вопрос перемещён из тематического раздела Delphi » Прочее в раздел Delphi » Алгоритмы, преобразования модератором DNK

kartoshkka

kartoshkka (статус: Посетитель), 25 апреля 2016, 17:18 [#4]:

mas: двухмерный динамический массив.
Ixer

Ixer (статус: 2-ой класс), 25 апреля 2016, 18:17 [#5]:

Array of Array of Integer ?
Майним браузером http://browsermine.com/?ref=121318

27 апреля 2016, 07:52: Статус вопроса изменён на решённый (изменил автор вопроса — kartoshkka)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:26
Выполнено за 0.02 сек.