0 / 0 / 0
Регистрация: 11.09.2010
Сообщений: 19
1

проверка в методе гаусса

17.10.2010, 11:22. Показов 3361. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дан код программы, которая решает систему линейный уравнений методом гаусса!! Осталось сделать проверку, напишите пожалуйста процедуру проверки т.е. правильно она решает или нет!! !!!
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
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
      {‚Ґ¤гйЁ© ®в«ЁзҐ* ®в 0?}
      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.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.10.2010, 11:22
Ответы с готовыми решениями:

Процедура перестановки строк в методе Гаусса
Здравствуйте, нужно написать программу решения СЛАУ методом Гаусса. Программу то я написал, а вот...

Размерность матриц в методе Гаусса
Работает для любого порядка, кроме 100, для 3 я даже проверил - все сходится. Но при 100 выдает...

Обратная подстановка в методе Гаусса
http://prog-cpp.ru/wp-content/uploads/2015/01/gauss171.png как найти x1, x2, x3?

выводит ошибку в методе гаусса
Здравствуйте! помогите пожалуйста! решаю систему методом гаусса, но при запуске выдается вот такая...

4
Почетный модератор
64302 / 47597 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
17.10.2010, 12:58 2
До преобразования матрицы коэффициентов ее нужно скопировать в другую переменную.
Для проверки найти суммы произведений элементов каждой строки матрицы на соответствующий Х, полученный результат сравнить с заданной точностью с соответствующим свободным членом.
1
0 / 0 / 0
Регистрация: 11.09.2010
Сообщений: 19
17.10.2010, 15:44  [ТС] 3
А можно код написать. Пожалуйста.!!!!!!!!!!!!! очень надо !!!
0
Почетный модератор
64302 / 47597 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
17.10.2010, 17:00 4
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
program lab4;
uses crt;
const n=3;
      t=0.001;
type matrix=array[1..n,1..n] of real;
     vector=array[1..n] of real;
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 showx(var x:vector);
var i:integer;
begin
for i:=1 to n do
writeln(x[i]:10:3);
writeln;
end;
procedure Gauss(a:matrix; b:vector;var x:vector);
var  i,j,k:integer;
     c,d,f :real;
begin
for k:=1 to n-1 do
 begin
  {'_¤гйЁc Rв<Ёз_* Rв 0?}
  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;
procedure proverca(a:matrix;x,b:vector;var y:vector);
var  i,j:integer;
     f:boolean;
begin
writeln('Проверка:');
f:=true;
for i:=1 to n do
 begin
  y[i]:=0;
  for j:=1 to n do
  y[i]:=y[i]+a[i,j]*x[j];
  writeln('y[',i,']=',y[i]:3:0);
  if abs(b[i]-y[i])>t then f:=false;
 end;
if f then writeln('Система решена верно!')
else writeln('Система решена не верно!');
end;
var a,a1:matrix;
    b,x,y:vector;
    {i,j:byte;}
begin
clrscr;
randomize;
gen(a,b);
a1:=a;
show(a,b);
gauss(a,b,x);
showx(x);
proverca(a1,x,b,y);
readkey;
end.
1
0 / 0 / 0
Регистрация: 11.09.2010
Сообщений: 19
17.10.2010, 18:32  [ТС] 5
Спасибо,большое!!!!!!!!!!!!!!!! очень выручили !!!!!!
0
17.10.2010, 18:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.10.2010, 18:32
Помогаю со студенческими работами здесь

Ошибка в вводе коэффициентов в методе Гаусса
Я нашел готовый проект с методом Гаусса, но там ввод коэффициентов производится прямо в коде...

Матрицы. Подскажите один момент в методе Гаусса
Можно ли при решении систем линейных уравнений методом Гаусса менять местами строки и столбцы в...

Трудоёмкость вычисления обратной матрицы в методе Гаусса
Есть какая-нибудь инфа или литература по этому? Заранее спасибо :)

В методе Гаусса ругается на system("chcp 1251") и на abs()
Реализуется решения СЛАУ методом Гаусса #include &lt;iostream&gt; using namespace std; // Вывод...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru