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

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

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

Delphi.int.ru Expert

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

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

#   

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


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

Подробнее »



Вопрос # 4 657

/ вопрос открыт /

Здравствуйте, эксперты! помогите пожалуйста с заданием. В программе
решается система линейных уравнений методом гаусса. Надо тока сделать
проверку(процедуру написать) , т.е. правильно ли мы решили. Там нужно копировать не измененную матрицу .т.е. те элементы которые нужны для проверки.И
умножить их на наши результаты. Точно незнаю как сделаь проверку. Может другие элементы умножить.

Приложение:
  1. program lab4;
  2. uses crt;
  3. const n=3;
  4. type matrix=array[1..n,1..n] of real;
  5. vector=array[1..n] of real;
  6. var a:matrix;
  7. b,x:vector;
  8.  
  9. procedure gen(var m:matrix; var v:vector);
  10. var i,j:integer;
  11. begin
  12. for i:=1 to n do begin
  13. for j:=1 to n do m[i,j]:=random(10);
  14. v[i]:=random(10);
  15. end;
  16. end;
  17.  
  18. procedure show(var a:matrix; var b:vector);
  19. var i,j:integer;
  20. begin
  21. for i:=1 to n do begin
  22. for j:=1 to n do write(a[i,j]:3:0);
  23. writeln(b[i]:3:0);
  24. end;
  25. writeln;
  26. end;
  27. procedure proverca(x:vector);
  28. var i,k:integer;
  29. begin
  30. for j:=1 to n do
  31. x[j]:=x[i]*a[k,k];
  32. write();
  33.  
  34. end;
  35.  
  36.  
  37. procedure showx(x:vector);
  38. var i:integer;
  39. begin
  40. for i:=1 to n do writeln(x[i]:10:3);
  41. writeln;
  42. end;
  43.  
  44. procedure Gauss(var a:matrix; var b,x:vector);
  45. var i,j,k:integer; c,d,f :real;
  46. begin
  47. for k:=1 to n-1 do begin
  48.  
  49. if a[k,k]=0 then
  50. for i:=k+1 to n do
  51. if a[i,k]<>0 then begin
  52. for j:=1 to n do begin c:=a[k,j]; a[k,j]:=a[i,j]; a[i,j]:=c; end;
  53. c:=b[k]; b[k]:=b[i]; b[i]:=c;
  54. break;
  55. end;
  56. for i:=k+1 to n do begin
  57. c:=-a[i,k]/a[k,k];
  58. for j:=1 to n do a[i,j]:=a[i,j]+c*a[k,j];
  59. b[i]:=b[i]+c*b[k];
  60. end;
  61. end;
  62. for k:=n downto 2 do
  63. for i:=k-1 downto 1 do begin
  64. c:=-a[i,k]/a[k,k];
  65. for j:=1 to n do a[i,j]:=a[i,j]+c*a[k,j];
  66. b[i]:=b[i]+c*b[k];
  67. end;
  68. for k:=1 to n do x[k]:=b[k]/a[k,k];
  69.  
  70.  
  71. end;
  72.  
  73. begin
  74. clrscr;
  75. randomize;
  76. gen(a,b);
  77. show(a,b);
  78. gauss(a,b,x);
  79. showx(x);
  80. readkey ;
  81. end.
  82.  


Джон Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Джон (статус: Посетитель)
Вопрос отправлен: 14 октября 2010, 17:19
Состояние вопроса: открыт, ответов: 0.


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

Всего сообщений: 3; последнее сообщение — 15 октября 2010, 18:43; участников в обсуждении: 2.
min@y™

min@y™ (статус: Доктор наук), 14 октября 2010, 18:21 [#1]:

Чего конкретно не получается?
Допустим, ты получил корни системы x[1]...x[n]. Тебе их тупо надо умножить на строки исходной матрицы коэффициентов, после чего сложить и получить некую величину, близкую к нулю.
В чём проблема-то?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Джон

Джон (статус: Посетитель), 15 октября 2010, 18:19 [#2]:

Ну надо же сделать. А я не знаю как сделать!! помогите написать процедуру проверки.пож!!!
min@y™

min@y™ (статус: Доктор наук), 15 октября 2010, 18:43 [#3]:

Цитата (Джон):

Ну надо же сделать. А я не знаю как сделать!! помогите написать процедуру проверки.пож!!!

Я уж хотел повторно спросить "что не получается", но...
Остальной код писал не ты, да? Признайся...
Так бы и сказал: "напишите за меня лабу". Грустно...
Но возможно.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

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

Версия движка: 2.6+ (26.01.2011)
Текущее время: 29 марта 2023, 01:06
Выполнено за 0.02 сек.
Рейтинг@Mail.ru