|
Вопрос # 4 657/ вопрос открыт / |
|
Здравствуйте, эксперты! помогите пожалуйста с заданием. В программе
решается система линейных уравнений методом гаусса. Надо тока сделать
проверку(процедуру написать) , т.е. правильно ли мы решили. Там нужно копировать не измененную матрицу .т.е. те элементы которые нужны для проверки.И
умножить их на наши результаты. Точно незнаю как сделаь проверку. Может другие элементы умножить.
Приложение: Переключить в обычный режим- program lab4;
- uses crt;
- const n=3;
- type matrix=array[1..n,1..n] of real;
- vector=array[1..n] of real;
- var a:matrix;
- b,x:vector;
-
- procedure gen(var m:matrix; var v:vector);
- var i,j:integer;
- begin
- for i:=1 to n do begin
- for j:=1 to n do m[i,j]:=random(10);
- v[i]:=random(10);
- end;
- end;
-
- procedure show(var a:matrix; var b:vector);
- var i,j:integer;
- begin
- for i:=1 to n do begin
- for j:=1 to n do write(a[i,j]:3:0);
- writeln(b[i]:3:0);
- end;
- writeln;
- end;
- procedure proverca(x:vector);
- var i,k:integer;
- begin
- for j:=1 to n do
- x[j]:=x[i]*a[k,k];
- write();
-
- end;
-
-
- procedure showx(x:vector);
- var i:integer;
- begin
- for i:=1 to n do writeln(x[i]:10:3);
- writeln;
- end;
-
- procedure Gauss(var a:matrix; var b,x:vector);
- var i,j,k:integer; c,d,f :real;
- begin
- for k:=1 to n-1 do begin
-
- if a[k,k]=0 then
- for i:=k+1 to n do
- if a[i,k]<>0 then begin
- for j:=1 to n do begin c:=a[k,j]; a[k,j]:=a[i,j]; a[i,j]:=c; end;
- c:=b[k]; b[k]:=b[i]; b[i]:=c;
- break;
- end;
- for i:=k+1 to n do begin
- c:=-a[i,k]/a[k,k];
- for j:=1 to n do a[i,j]:=a[i,j]+c*a[k,j];
- b[i]:=b[i]+c*b[k];
- end;
- end;
- for k:=n downto 2 do
- for i:=k-1 downto 1 do begin
- c:=-a[i,k]/a[k,k];
- for j:=1 to n do a[i,j]:=a[i,j]+c*a[k,j];
- b[i]:=b[i]+c*b[k];
- end;
- for k:=1 to n do x[k]:=b[k]/a[k,k];
-
-
- end;
-
- begin
- clrscr;
- randomize;
- gen(a,b);
- show(a,b);
- gauss(a,b,x);
- showx(x);
- readkey ;
- end.
-
 |
Вопрос задал: Джон (статус: Посетитель)
Вопрос отправлен: 14 октября 2010, 17:19
Состояние вопроса: открыт, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 3; последнее сообщение — 15 октября 2010, 18:43; участников в обсуждении: 2.
|
min@y™ (статус: Доктор наук), 14 октября 2010, 18:21 [#1]:
Чего конкретно не получается?
Допустим, ты получил корни системы x[1]...x[n]. Тебе их тупо надо умножить на строки исходной матрицы коэффициентов, после чего сложить и получить некую величину, близкую к нулю.
В чём проблема-то?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Джон (статус: Посетитель), 15 октября 2010, 18:19 [#2]:
Ну надо же сделать. А я не знаю как сделать!! помогите написать процедуру проверки.пож!!!
|
|
min@y™ (статус: Доктор наук), 15 октября 2010, 18:43 [#3]:
Цитата (Джон):
Ну надо же сделать. А я не знаю как сделать!! помогите написать процедуру проверки.пож!!!
Я уж хотел повторно спросить "что не получается", но...
Остальной код писал не ты, да? Признайся...
Так бы и сказал: "напишите за меня лабу". Грустно...
Но возможно.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|