Консультация № 195739
27.05.2019, 23:51
0.00 руб.
0 2 1
Здравствуйте! У меня возникли сложности с таким вопросом:
Решение системы линейных алгебраических уравнений
методом Гаусса
Матрица А коэффициентов системы-
1,53 1,61 1,43
2,35 2,31 2,07
3,83 3,73 3,45
Столбец свободных членов b-
-5,13
-3,69
-5,98
в Delphi

Обсуждение

давно
Старший Модератор
31795
6196
31.05.2019, 23:00
общий
31.05.2019, 23:04
Адресаты:
Цитата: mustang289
в Delphi


Код написаный под PASCAL, глотают ВСЕ его потомки. Даже игрушка Pascal.ABC.


Правда иногда нужно указывать, что это { $APPTYPE CONSOLE }

Вот с визуаоьной частью, сложнее, тут A-возможностей ввода размера матрицы, от элементпрных:
[code lang=pascal] RadioButton1: TRadioButton;
ListBox1: TListBox;
ComboBox1: TComboBox;
MainMenu1: TMainMenu;[/code]
В-возможностей ввода коэфицихнтов при переменных:
[code lang=pascal]StringGrid1: TStringGrid;[/code]

до крутого Edit1: TEdit;, где Вы пишите "a + 2b = z | a + 4c + 2d = y | . . . | 6b + e = r ", и нажимаете <Enter>, программа сама посчитает количество переменных, создаст матрицу нужного размера, раставит коэфициэнты в нужных местах, выделит свободные члены, и посчитает результат.

С выводом, тоже можно свободно дойти до Z
Итого количество визуальных возможностей ввода-вывода = A*B*. . . *Y*Z.

Опредилитесь со своим заданием. Delphi, на столько многогранен, что возможно очень большое количество решений, и фантазировать нашим экспертам нет смысла.

Штатный прорицатель, не помню, толи пропил, толи разбил, толи продал, толи потерял , свой "магический шар"- короче нет его, и Ваши мысли нащи эксперты узнать не могут.

Но как бы Вы не крутились и не фантазировали, подпрограмма GAUS, или в Вашем другом вопросе CHOLETSY, останутся не изменными Во всех вариантах решения.

Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
31795
6196
06.06.2019, 18:59
общий
это ответ
Здравствуйте, mustang289!

[code lang=pascal h=300]const
n=3;
type
tMas=array[1..n,1..n+1]of real;
var
a:array[1..n,1..n]of real;
b:array[1..n]of real;
t:tMas;
i,j:integer;
procedure Gaus(var a:tMas;b,c:integer);
var
d,e:integer;
begin
if b<=c then
begin
e:=b;
while e<=c do
begin
d:=c+1;
while b<=d do
begin
a[e,d]:=a[e,d]/a[e,b];
dec(d);
end;
inc(e);
end;
e:=b+1;
while e<=c do
begin
for d:=b to c+1 do
a[e,d]:=a[e,d]-a[b,d];
inc(e);
end;
Gaus(a,b+1,c);
a[b,b]:=a[b,4];
e:=c;
while b<e do
begin
a[b,b]:=a[b,b]-a[e,e]*a[b,e];
dec(e);
end;
end;
end;
begin
for i:=1 to n do
begin
for j:=1 to n do
begin
write('a[',i,',',j,']:=');
readln(a[i,j]);
end;
write('b[',i,']:=');
readln(b[i]);
end;
{ a[1,1]:=1.53;a[1,2]:=1.61;a[1,3]:=1.43;b[1]:=-5.13;
a[2,1]:=2.35;a[2,2]:=2.31;a[2,3]:=2.07;b[2]:=-3.69;
a[3,1]:=3.83;a[3,2]:=3.73;a[3,3]:=3.45;b[3]:=-5.98;}
for i:=1 to n do
begin
for j:=1 to n do
t[i,j]:=a[i,j];
t[i,4]:=b[i];
end;
writeln('extenge matrix:');
for i:=1 to n do
begin
for j:=1 to n+1 do
write(t[i,j]:10:5);
writeln;
end;
Gaus(t,1,n);
writeln('roots:');
for i:=1 to n do
write(t[i,i]:10:5);
writeln;
writeln('check:');
for i:=1 to n do
begin
t[i,4]:=0;
for j:=1 to n do
begin
t[i,4]:=t[i,4]+a[i,j]*t[j,j];
write(a[i,j]*t[j,j]:10:5);
end;
writeln(t[i,4]:10:5,' = ',b[i]:10:5);
end;
readln;
end.[/code]
Удачи!
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа