Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
1 / 1 / 0
Регистрация: 12.12.2011
Сообщений: 11
1

Заменить прямой метод Гаусса

06.03.2012, 17:30. Показов 1293. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В общем сложность такая. Сделал я программу нахождение корней по Гауссу, но сказали её переделать ток, что бы в прямом ходе обойтись без переприсваивания r:=a[j,k]
Вот сижу и голову ломаю, мож кто поможет, а???
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
const n=2;
type
Matr = array[1..n,1..n] of real;
Vect = array[1..n] of real;
var a:Matr;
    b,x,d,b2:Vect;
    a2:Matr;
    i,j,m,k,z,p:integer;
    max,r,g:real;
begin
     randomize;
     for i:=1 to n do
         begin
              for j:=1 to n do
              a[i,j]:=random;
              b[i]:=random;
         end;
         a2:=a;
         b2:=b;
         for k:=1 to n do
             begin {Прямой ход}
                  b[k]:=b[k]/a[k,k];
                  for j:=n downto k do a[k,j]:=a[k,j]/a[k,k];
                  for j:=k+1 to n do
                      begin
                           r:=a[j,k];
                           for i:=k to n do a[j,i]:=a[j,i]-r*a[k,i];
                               b[j]:=b[j]-r*b[k];
                      end;
                      end;
                      for i:=1 to n do
         begin
         write('b=',b[i] );
         writeln;
         for j:=1 to n do begin
         write(a[i,j]:2:1,'  ');
 
         end;
             end;
         for k:=n downto 1 do {обратный ход}
             begin
                  r:=0;
                  for j:=k+1 to n do
                      begin
                           g:=a[k,j]*x[j];
                           r:=r+g;
                      end;
                  x[k]:=(b[k]-r)/a[k,k];
             end;
         writeln('Korni:');
         for i:=1 to n do
             write('x[',i,']=',x[i]:3:2,' ');
         writeln;
         {погрешность}
         writeln;
         for i:=1 to n do
             begin
                  d[i]:=0;
             end;
         for i:=1 to n do
             begin
                  for j:=1 to n do
                      begin
                           d[i]:=d[i]+a2[i,j]*x[j];
                      end;
             end;
         max:=abs(d[1]-b2[1]);
         m:=1;
         for m:=2 to n do
             for m:=2 to n do
                 begin
                      if abs(d[i]-b2[i])>max then
                         begin
                              max:=abs(d[i]-b2[i]);
                              m:=i;
                         end;
                 end;
         writeln(max,' ',m);
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.03.2012, 17:30
Ответы с готовыми решениями:

Метод Гаусса для решения СЛАУ
Господа, начну с того, что у меня есть программа (основу, т.е. метод я брал здесь, моя работа...

Метод Гаусса
ПОМОГИТЕЕ пожалуйста разобраться с программой! Я новичок в этом деле. Нужно защитить программу в...

Метод Гаусса
Помогите плз, не знаю как решать задачи такого типа: Решить систему линейных алгебраических...

Метод Гаусса
Нужно запрограммировать метод Гаусса,я как только начинаю понимать-пытаюсь решить и тут же сразу...

2
Почетный модератор
64305 / 47600 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
06.03.2012, 21:16 2
Цитата Сообщение от Dino_Cavallone Посмотреть сообщение
Сделал я программу
Да нифига ты ее не сделал, иначе убрать одну строчку уж точно бы смог...
Pascal
1
2
3
4
5
6
7
8
9
10
for k:=1 to n do
 begin {Прямой ход}
   b[k]:=b[k]/a[k,k];
   for j:=n downto k do a[k,j]:=a[k,j]/a[k,k];
   for j:=k+1 to n do
    begin
     for i:=k to n do a[j,i]:=a[j,i]-a[j,k]*a[k,i];
     b[j]:=b[j]-r*b[k];
    end;
 end;
0
1 / 1 / 0
Регистрация: 12.12.2011
Сообщений: 11
07.03.2012, 07:43  [ТС] 3
-___- знаете, я тоже могу просто взять и подставить в место r то, что мы ему присваиваем, но дело в том, что он погрешность при проверке выдает огого какую. Если при нормальной работе программы она должна быть в -14 степени, то при этой замене она не то что в минусовой степени, она получается порой больше 500. Разве такое может быть?
0
07.03.2012, 07:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.03.2012, 07:43
Помогаю со студенческими работами здесь

Метод Гаусса
1. Нужно сделать вывод промежуточных матриц до вывода корней. uses crt; var a:arrayof real;...

СЛИ метод Гаусса
Всем привет, при выполнее кода с определенными значениями(1,2,3,4,5,6,7,8,9...) вализиет 200 ошибка...

Метод Гаусса для СЛАУ
Необходимо написать программу в pascal.Эта программа должна решать произвольную матрицу линейных...

Определитель матрицы. Метод Гаусса.
Помогите пожалуйста. Админ привет. это vanHalen с вашего бывшего форума. :-) Задание: Найдите...


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

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