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

Метод Гаусса с выбором главного элемента

20.05.2018, 21:34. Показов 644. Ответов 0
Метки нет (Все метки)

Здравствуйте. В программировании я очень слабый но это задание надо как-то сделать. Дословное имя "Системы уравнений. Выбор главного элемента и приведение матрицы к диогональному виду". Я нашел прогу с методом Гаусса с выбором главного элемента. У меня ошибка была в type slau и line , ну и еще я не понимаю как сделать TFORM.(change,forth,back). Исправьте пожалуйста где ошибки или объясните, ну или скиньте плиз если есть что-то похожее. Заранее благодарю)



Delphi
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
unit Unit1; // Метод Гаусса
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids;
 
type
    slau = array [0..15,0..15] of double;
    line = array [0..15] of double;
  TForm1 = class(TForm)
    Button1: TButton;               // если хотите, чтобы программа работала, не забудьте создать все необходимые объекты на форме 
    Roots: TStringGrid;
    StringGrid1: TStringGrid;
    Label1: TLabel;
    Label2: TLabel;
    StringGrid2: TStringGrid;
    Label3: TLabel;
    Label4: TLabel;
    StringGrid3: TStringGrid;
    StringGrid4: TStringGrid;
    Label5: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure change(step:integer);
    procedure forth(step:integer);
    procedure back();
  private
    { Private declarations }
  public
    { Public declarations }
  end;
const n=4;
var
  Form1: TForm1;
  a, a0: slau;
  b,b0,x : line;
implementation
 
{$R *.dfm}
procedure TForm1.change(step:integer);
var p,pp:integer;
    pmax, dop: double;
 
begin
 pp:=step;
 pmax:=a[step,step];
 for p:=(step+1) to n do           // поиск наибольшего в кусочке матрицы,
  if (a[p,step]>pmax) then      // начинающемся с числа [step,step]
   begin
    pmax:=a[p,step];
    pp:=p;
   end;
 for p:=step to n do              // замена строк
  begin
   dop:=a[step,p];
   a[step,p]:=a[pp,p];
   a[pp,p]:=dop;
  end;
dop:=b[step];                 // замена элемента в столбце свободных членов
b[step]:=b[pp];
b[pp]:=dop;
end;
 
procedure TForm1.forth(step:integer);  // прямой ход
var p,q:integer;
    mm: double;
 
begin
  for p:=(step+1) to n do
   begin
    mm:=a[p,step]/a[step,step];
    b[p]:=b[p]-mm*b[step];
     for q:=step to n do
      a[p,q]:=a[p,q]-mm*a[step,q];
   end;
end;
 
procedure TForm1.back();  // поиск корней (обратный ход)
var p,q :integer;
    sum: double;
begin
  for p:=n downto 0 do
   begin
    q:=p;
    sum:=0;
     while (q<n) do
      begin
       sum:=sum+a[p,q+1]*x[q+1];
       q:=q+1;
      end;
    x[p]:=(b[p]-sum)/a[p,p];
    Roots.Cells[p,0]:=FloatToStrF(x[p],ffGeneral,4,3);
end;
 
end;
procedure TForm1.Button1Click(Sender: TObject);
var k,i,j:integer;
    sum: double;
    text: string;
 
begin
 randomize;
  for i:=0 to n do             // заполнение массива
   begin
    for j:=0 to n do
     begin
      a[i,j]:=random(20);
      a0[i,j]:=a[i,j]
     end;
  b[i]:=random(20);
  b0[i]:=b[i];
end;
  for i:=0 to n do             // вывод первоначального массива
   begin
    for j:=0 to n do
     begin
      Str(a0[i,j]:5:2, text);
      StringGrid3.Cells[j,i]:= text;
     end;
    Str(b0[i]:5:2, text);
    StringGrid4.Cells[0,i]:=text;
   end;
  for k:=0 to (n-1) do         // пошаговое решение
   begin
    change(k);
    forth(k);
   end;
  for i:=0 to n do
   begin
    for j:=0 to n do
     begin
      Str(a[i,j]:5:2, text);
      StringGrid1.Cells[j,i]:=text;
     end;
    Str(b[i]:5:2, text);
    StringGrid2.Cells[0,i]:=text;
   end;
 
back();
 
sum:=0;                                  // проверка
for j:=0 to n do
  sum:=sum+a0[0,j]*x[j];
if (abs(sum-b0[0])<0.001) then
begin
  Label4.Visible:=true;
  Label4.Font.Color:=clBlue;
  Label4.Caption:=’Верное решение’;
end
else
begin
  Label4.Visible:=true;
  Label4.Font.Color:=clRed;
  Label4.Caption:=’Неверное решение’;
end;
end;
 
end.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.05.2018, 21:34
Ответы с готовыми решениями:

Метод Гаусса с частичным выбором главного элемента
Как написать прогамму методом Гаусса с частичным выбором главного элемента. Помогите пожалуйста...

Метод Гаусса с выбором главного элемента
Нужно написать программу, решающую СЛАУ методом Гаусса, так же надо учесть, что матрица может быть...

Метод Гаусса с выбором главного элемента
Ребят!помогите пожалуйста создать простенькую программу ,без замудрений . На Тему :Метод Гаусса с...

Метод Гаусса с выбором главного элемента
Нужен код Метода Гаусса с выбором главного элемента для C# Windows Forms. Количество неизвестных и...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.05.2018, 21:34

Метод Гаусса с постолбцовым выбором главного элемента
Доброго времени суток.Помогите реализовать в MathCAD Метод Гаусса с постолбцовым выбором главного...

СЛАУ, метод Гаусса с выбором главного элемента
Надо составить программу для решения слау. Метод решения: гаусс с выбором главного элемента. Надо...

Метод Гаусса с выбором главного элемента по строке
Метод Гаусса с выбором главного элемента по строке. Помогите разобраться в чем косяки программы....

Метод Гаусса с выбором главного элемента по столбцу
Ребят такая проблема возникла метод гаусса с выбором главного элемента по строке препод даа...


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

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

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