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

Решение СЛАУ Методом Гаусса из файла.

07.06.2011, 22:34. Показов 3179. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток!
Нужно написать программу решения СЛАУ Методом Гаусса, но только чтобы данные брались из текстового файла... Помогите кто сможет!)
Я в интернете (в том числе и на этом сайте) видел код программы, но везде данные надо самому вписывать... а тут такая задача... Сам попробывал отредактировать... не получилось =(
+ как должен выглядеть вид матрицы в файле?! Думаю, найдется человек который сможет мне в этом помочь!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.06.2011, 22:34
Ответы с готовыми решениями:

Решение СЛАУ методом Гаусса
Решить задание методом Гауса и сложить, и наладить програму на языке Pascal которая реализует...

Вычисление СЛАУ методом Гаусса и методом Крамера
Я совсем начинающий программист, студент, но я после продолжительного ковыряния в данном коде ...

Решение СЛАУ методои Гаусса
Здравстуйте! Необходимо составить программу, решающую систему линейных алгебраических уравнений...

Решить СЛАУ методом Жордана-Гаусса
Привет! Такое вот задание дали: решить СЛАУ методом Жордана-Гаусса. Система следующая 4x1 - x2 +...

8
Почетный модератор
64303 / 47598 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
08.06.2011, 12:17 2
Цитата Сообщение от Dc1 Посмотреть сообщение
как должен выглядеть вид матрицы в файле?!
Код
3
1.23 -2.35 1.36
-0.2 -1.23 5.23
5.23 11.26 0.23
14.0 12.62 15.8
Добавлено через 7 минут
Первая строка порядок системы
следующие 3 строки, матрица коэффициентов
последняя строка - свободные члены.
Как читать.
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
uses crt;
var f:text;
    a:array[1..20,1..20] of real;
    b:array[1..20] of real;
    n,i,j:byte;
    nf,s:string;
begin
clrscr;
write('Имя файла для чтения: ');
readln(nf);
nf:=nf+'.txt';
assign(f,nf);
{$I-} reset(f);  {$I+}
if IOResult <> 0 then
 begin
  writeLn('Файл ',nf,' не найден!');
  writeLn('Работа программы завершена. Нажмите ENTER');
  readln;
  exit;
 end;
read(f,n);
for i:=1 to n do
for j:=1 to n do
read(f,a[i,j]);
for i:=1 to n do
read(f,b[i]);
close(f);
writeln('Расширенная матрица:');
for i:=1 to n do
 begin
  for j:=1 to n do
  write(a[i,j]:6:2);
  writeln(b[i]:8:2);
 end;
readln
end.
1
0 / 0 / 0
Регистрация: 07.06.2011
Сообщений: 8
08.06.2011, 15:15  [ТС] 3
Вот я попробывал дальше вставить метод Гаусса и что у меня получилось....
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
uses crt;
var f:text;
    a:array[1..20,1..20] of real;
    b:array[1..20] of real;
    x:array[1..20] of real;
    n,i,j:byte;
    nf:string;
    k,r,s:integer;
    max,c,M:real;
begin
clrscr;
write('Имя файла для чтения: ');
readln(nf);
nf:=nf+'.txt';
assign(f,nf);
reset(f);
if 0 <> 0 then
 begin
  writeLn('Файл ',nf,' не найден!');
  writeLn('Работа программы завершена. Нажмите ENTER');
  readln;
  exit;
 end;
read(f,n);
for i:=1 to n do
for j:=1 to n do
read(f,a[i,j]);
for i:=1 to n do
read(f,b[i]);
close(f);
writeln('Расширенная матрица:');
for i:=1 to n do
 begin
  for j:=1 to n do
  write(a[i,j]:6:2);
  writeln(b[i]:8:2);
 end;
 for k:=1 to n do
    begin
      max:=abs(a[k,k]);
      r:=k;
      for i:=k+1 to n do
        if abs(a[i,k])>max then
          begin
            max:=abs(a[i,k]);
            r:=i;
          end;
      for j:=1 to n do
        begin
          c:=a[k,j];
          a[k,j]:=a[r,j];
          a[r,j]:=c;
        end;
      c:=b[k];
      b[k]:=b[r];
      b[r]:=c;
      for i:=k+1 to n do
        begin
          M:=a[i,k]/a[k,k];
          for j:=k to n do
            begin
              a[i,j]:=a[i,j]-a[k,j]*M;
            end;
          b[i]:=b[i]-b[k]*M;
        end;
    end;
  Writeln('Ступенчатый вид системы:');
  Writeln;
  for i:=1 to n do
    begin
      for j:=1 to n do
          Write(a[i,j]:5:1,' ');
          Write('|');
          Writeln(b[i]:5:1);
          Writeln;
    end;
  Writeln('Otvet:');
  Writeln;
  if a[n,n]=0 then
      if b[n]=0 then
        Writeln('Уравнение имеет бесконечное множество решений')
      else
        Writeln('Уравнение не имеет решения')
  else
    begin
      for i:=n downto 1 do
        begin
          s:=0;
          for j:=i+1 to n do
            begin
              s:=s+a[i,j]*x[j];
            end;
          x[i]:=(b[i]-s)/a[i,i];
        end;
      for i:=1 to n do
        Writeln('x[',i,']=',x[i]:5:1);
    end;
readln
end.
Если стереть
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
else
    begin
      for i:=n downto 1 do
        begin
          s:=0;
          for j:=i+1 to n do
            begin
              s:=s+a[i,j]*x[j];
            end;
          x[i]:=(b[i]-s)/a[i,i];
        end;
      for i:=1 to n do
        Writeln('x[',i,']=',x[i]:5:1);
    end;
Он мне находит ступенчатый вид, но ответ не выдает. Я наверно такую белеберду наделал?)

и + мне ошибку пишет когда было
Pascal
1
if IOResult <> 0 then
А так спасибо большое Puporev! Что хоть что-то есть))
и мне бы желательно разжевать что было в изначальном коде))) буду признателен очень.
0
Почетный модератор
64303 / 47598 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
08.06.2011, 15:16 4
Цитата Сообщение от Dc1 Посмотреть сообщение
+ мне ошибку пишет когда было
Код Pascal
1
if IOResult <> 0 then
Так это для Турбо Паскаля, если в АВС пишешь, там по другому...
0
0 / 0 / 0
Регистрация: 07.06.2011
Сообщений: 8
08.06.2011, 15:24  [ТС] 5
мне нужно для Turbo Pascal! только вот у меня Win 7 ... есть ли для win 7 Turbo Pascal? Щас поищу..
0
Почетный модератор
64303 / 47598 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
08.06.2011, 15:26 6
Скачать Паскаль
ShoolPack
1
0 / 0 / 0
Регистрация: 07.06.2011
Сообщений: 8
08.06.2011, 16:56  [ТС] 7
Puporev, ты не смотрел мой код? Не знаешь как мне помочь?
0
Почетный модератор
64303 / 47598 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
08.06.2011, 16:59 8
Нет, не смотрел и не хочу... Я этого Гаусса уже не знаю сколько раз выкладывал в разном виде, аж тошнит.
0
0 / 0 / 0
Регистрация: 07.06.2011
Сообщений: 8
16.06.2011, 12:00  [ТС] 9
Puporev, Не мог бы ты описать строки в коде? что для чего служит? или кто нибудь другой может знает?
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
uses crt;
var f:text;
    a:array[1..20,1..20] of real;
    b:array[1..20] of real;
    n,i,j:byte;
    nf,s:string;
begin
clrscr;
write('Имя файла для чтения: ');
readln(nf);
nf:=nf+'.txt';
assign(f,nf);
{$I-} reset(f);  {$I+}
if IOResult <> 0 then
 begin
  writeLn('Файл ',nf,' не найден!');
  writeLn('Работа программы завершена. Нажмите ENTER');
  readln;
  exit;
 end;
read(f,n);
for i:=1 to n do
for j:=1 to n do
read(f,a[i,j]);
for i:=1 to n do
read(f,b[i]);
close(f);
writeln('Расширенная матрица:');
for i:=1 to n do
 begin
  for j:=1 to n do
  write(a[i,j]:6:2);
  writeln(b[i]:8:2);
 end;
readln
end.
0
16.06.2011, 12:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.06.2011, 12:00
Помогаю со студенческими работами здесь

Решение СЛАУ система решений алгебраических уравненийметодм гаусса
Program Gauss; uses crt; const e=0.000001; const f=4; type yy=array of real; tt=array of real;...

Решение СЛАУ методом прогонки
Метод прогонки

Решение СЛАУ методом Зейделя
const n=4; eps=0.0001; type matrix=array of real; mas=array of real; var a:matrix; ...

Решение СЛАУ методом Крамера
Нужна помощь! (исходная матрица должна быть размера 5x4)


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

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

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