Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 30.09.2012
Сообщений: 13
1

Решение уравнения

08.10.2012, 22:24. Показов 966. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задание: написать программу для решения СЛАУ методом Гаусса. Алгоритм вроде работает, но не могу понять, если a[i,j]=0 то выбивает ошибку. Помогите!!!
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
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    StringGrid1: TStringGrid;
    Label1: TLabel;
    Label2: TLabel;
    StringGrid2: TStringGrid;
    Label3: TLabel;
    StringGrid3: TStringGrid;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
const n=3;
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
var i,j,k:byte;
    a,a1:array[1..n,1..n] of real;
    b,b1,x,y,m:array[1..n] of real;
    h,g:real;
begin
//исходная матрица коэффициентов
 
for i:=1 to n do
for j:=1 to n do
a[i,j]:=Random(100);
a1:=a; //запомним ее для проверки, первуая изменится
//то же свободные члены
 
for j:=1 to n do
b[j]:=Random(100);
b1:=b;
for i:=1 to n do
for j:=1 to n do
StringGrid1.Cells[j-1,i-1]:=FloattostrF(a[i,j],ffFixed,0,2);
for i:=0 to n-1 do
 begin
  StringGrid2.Cells[0,i]:='X'+inttostr(i+1)+'=';
  StringGrid1.Cells[n,i]:=FloattostrF(b[i+1],ffFixed,0,2);
 end;
{приведение матрицы к треугольному виду}
for k:=1 to n do
 begin
  for j:=k+1 to n do
   begin
    h:=a[j,k]/a[k,k];
    for i:=k to n do
    a[j,i]:=a[j,i]-h*a[k,i];
    b[j]:=b[j]-h*b[k];
   end;
 end;
{вычисление корней}
for k:=n downto 1 do
 begin
  h:=0;
  for j:=k+1 to n do
   begin
    g:=a[k,j]*x[j];
    h:=h+g;
   end;
  x[k]:=(b[k]-h)/a[k,k];
 end;
 
for i:=1 to n do
StringGrid2.Cells[1,i-1]:=FloattostrF(x[i],ffFixed,0,2);
//проверка
for i:=1 to n do
 begin
  y[i]:=0;
  for j:=1 to n do
  y[i]:=y[i]+a1[i,j]* x[j];
 end;
for i:=1 to n do
m[i]:=abs(b1[i]-y[i]); //невязка, у меня все по нолям
for i:=1 to n do
StringGrid3.Cells[0,i-1]:=FloattostrF(m[i],ffFixed,0,6);
end;
 
end.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.10.2012, 22:24
Ответы с готовыми решениями:

Решение уравнения 2x-ln(y)
Добрый день, помогите пожалуйста, не могу сделать программу решения уравнения 2x-ln(y). Выдает: ...

Решение уравнения
Помогите Пожалуйста нужно решить уравнение Вида 2*b+c=0 ТО есть написать программу рассчитывающую...

Решение биквадратного уравнения
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics,...

Решение квадратного уравнения
Помогите люди решить простю и срочную задачку решение квадратного уравнения, чтобы также и при х=0...

4
angstrom
09.10.2012, 00:17 2
Ошибка простая
Delphi
1
2
3
  a[i,j]:=Random(100);
...
  b[j]:=Random(100);
генерятся числа в диапазоне 0..99. Потом делишь, а когда попадается 0, сам понимаешь что произойдёт при делении на него.

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
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids;
 
type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    StringGrid2: TStringGrid;
    StringGrid3: TStringGrid;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
const
  n = 3;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
var
  I, J, K : Integer;
  a, a1    : array[1..n, 1..n] of Single;
  b, b1,
  x, y, m  : array[1..n] of Single;
  h, g     : Single;
begin
  //исходная матрица коэффициентов
  for I := 1 to n do
    for J := 1 to n do
      a[I, J] := Random(100) + 1;
 
  a1 := a;                              // запомним ее для проверки, первуая изменится
                                        // то же свободные члены
 
  for J := 1 to n do
    b[J] := Random(100) + 1;
 
  b1 := b;
 
  for I := 1 to n do
    for J := 1 to n do
      StringGrid1.Cells[J - 1, I - 1] := Format('%.2f', [a[I, J]]);
 
  for I := 0 to n - 1 do
  begin
    StringGrid2.Cells[0, I] := 'X' + IntToStr(I + 1) + '=';
    StringGrid2.Cells[1, I] := Format('%.2f', [b[I + 1]]);
  end;
 
  { приведение матрицы к треугольному виду }
  for K := 1 to n do
  begin
    for J := k + 1 to n do
    begin
      h := a[J, K] / a[K, K];
      for I := K to n do
        a[J, I] := a[J, I] - H * a[K, I];
      b[J] := b[J] - H * b[K];
    end;
  end;
 
  { вычисление корней }
  for K := n downto 1 do
  begin
    H := 0;
    for J := k + 1 to n do
    begin
      g := a[K, J] * x[J];
      h := h + g;
    end;
    x[K] := (b[K] - H) / a[K, K];
  end;
 
  for I := 1 to n do
    StringGrid2.Cells[1, I - 1] := Format('%.2f', [x[I]]);
 
  // проверка
  for I := 1 to n do
  begin
    y[I] := 0;
    for J := 1 to n do
      y[I] := y[I] + a1[I, J] * x[J];
  end;
 
  for I := 1 to n do
    m[I] := abs(b1[I] - y[I]);                  // невязка, у меня все по нолям
 
  for I := 1 to n do
    StringGrid3.Cells[0, I - 1] := Format('%.6f', [m[I]]);
end;
 
end.
0 / 0 / 0
Регистрация: 30.09.2012
Сообщений: 13
09.10.2012, 19:54  [ТС] 3
Да, но когда 0 он же должен перекидывать строку вверх, и не делить на него. + не создается сетка для матрицы более 5х5.
0
0 / 0 / 0
Регистрация: 30.09.2012
Сообщений: 13
11.10.2012, 23:12  [ТС] 4
Объясните, почему когда я CONST меняю, то сетка на разбивается на n строк и столбцов?
0
 Аватар для Одиночка
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
12.10.2012, 07:20 5
Нужно вставить определение размерности грида:
Delphi
1
2
StringGrid1.RowCount:=n;
StringGrid1.ColCount:=n;
0
12.10.2012, 07:20
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.10.2012, 07:20
Помогаю со студенческими работами здесь

Решение квадратного уравнения
Приложение работает, но выдает неправильные корни. Помогите найти ошибку, пожалуйста. procedure...

Решение квадратного уравнения
нужно написать программу через VCL Forms Application . форм я заполнил (Tedit, Tlabel...)....

Решение тригонометрического уравнения
Необходимо решить уравнение любым методом: x*ctgx+a=0 пределов на х не...

Решение уравнения вида ax^4+bx^2+c=0
Помогите пожалуйста сного:-[ Даны вещественные числа a, b, c(a≠0). Решить уравнение вида...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Как обучить нейросеть создания картинок на Python
bytestream 24.01.2025
В эпоху цифровых технологий искусственный интеллект становится неотъемлемой частью творческого процесса. Особое место в этой области занимает разработка и обучение нейронных сетей для создания. . .
Как обучить нейросеть генерации текста на Python
bytestream 24.01.2025
В современном мире искусственный интеллект и машинное обучение становятся неотъемлемой частью многих технологических решений. Одной из наиболее интересных и востребованных задач в этой области. . .
Машинное обучение на Python
bytestream 24.01.2025
Введение в машинное обучение на Python Машинное обучение представляет собой одну из наиболее динамично развивающихся областей информационных технологий, которая позволяет компьютерным системам. . .
Как удалить вирус-майнер с компьютера
hw_wired 24.01.2025
Вирусы-майнеры стали одной из наиболее серьезных угроз для пользователей компьютеров. Эти вредоносные программы тайно используют вычислительные ресурсы зараженного устройства для добычи криптовалюты. . .
Что такое веб-сервер, для чего он нужен и как работает
bytestream 24.01.2025
В современную эпоху цифровых технологий веб-сервер является фундаментальным компонентом интернет-инфраструктуры, обеспечивающим функционирование множества онлайн-сервисов и веб-сайтов. Этот. . .
Как в цикле for перебрать все элементы в словаре в Python
bytestream 24.01.2025
Словари в Python представляют собой мощные структуры данных, которые позволяют хранить информацию в формате ключ-значение. Эта особенность делает их незаменимыми при работе с данными, где требуется. . .
Как отменить rebase в Git
hw_wired 24.01.2025
Git rebase представляет собой мощный инструмент для управления историей коммитов в системе контроля версий Git. Этот механизм позволяет разработчикам изменять последовательность, комбинировать или. . .
Как поменять цвет input placeholder с помощью CSS
bytestream 24.01.2025
В веб-разработке оформление элементов пользовательского интерфейса играет ключевую роль в создании привлекательного и интуитивно понятного дизайна. Особое внимание уделяется формам ввода данных, где. . .
Как перебрать все значения в перечислении (enum) в C#
bytestream 24.01.2025
Перечисление (enum) в языке программирования C# представляет собой специальный тип данных, который позволяет определить набор именованных констант. Этот мощный инструмент особенно полезен, когда. . .
Как обойтись без проверки на null, чтобы избежать NullPointerExce­ption в Java
bytestream 24.01.2025
NullPointerException (NPE) является одним из самых распространенных исключений в Java, создающих серьезные проблемы при разработке программного обеспечения. Данное исключение возникает при попытке. . .
Что лучше использовать в href ссылок в JavaScript: "#" или "javascript:voi­­d(0)­"
bytestream 24.01.2025
При разработке веб-приложений важную роль играет правильное использование HTML-ссылок в сочетании с JavaScript. Одним из ключевых аспектов является выбор корректного значения атрибута href для. . .
Как узнать индекс элемента списка по его значению в Python
hw_wired 24.01.2025
При работе с коллекциями данных в Python часто возникает необходимость не только манипулировать элементами списка, но и определять их точное местоположение. Индекс элемента представляет собой. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru