Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.10.2010, 00:03   #1
1mposs1ble
Пользователь
 
Регистрация: 24.03.2010
Сообщений: 12
По умолчанию metod gaussa

Ребят подмогите плиз.....
в общем требуется решить систему линейных уравнений методом гаусса, используя прямой ход метода гаусса найти LU разложения матр. системы, с помощью полученной матрицы найти определитель матрицы системы.
ПРоблема заключается в следующем: не получается сделать так, чтобы выводилось решение ввиде 2х матриц L и U и определителью.
вот собственно код(рабочий):


PHP код:
unit Unit3;
 
interface
 
uses
  Windows
MessagesSysUtilsVariantsClassesGraphicsControlsForms,
  
DialogsGridsStdCtrls;
 
const 
MaxDimension 10;
 
type
 
  Vector 
= array[1..MaxDimensionof Double;
  
Matrix = array[1..MaxDimensionof Vector;
 
  
TForm3 = class(TForm)
    
Label1TLabel;
    
Edit1TEdit;
    
StringGrid1TStringGrid;
    
StringGrid2TStringGrid;
    
Button1TButton;
    
Label2TLabel;
    
Label3TLabel;
    
ListBox1TListBox;
    
procedure Edit1Change(SenderTObject);
    
procedure Button1Click(SenderTObject);
    
procedure FormCreate(SenderTObject);
  private
    { Private 
declarations }
  public
    { Public 
declarations }
  
end;
 
var
  
Form3TForm3;
 
implementation
 
{$R *.dfm}
 
procedure TForm3.Button1Click(SenderTObject);
  var 
aMatrix;
      
b,xVector;
      
hDouble;
      
i,j,k,n:integer;
begin
  
//Ввод данных
  //Размерность системы
  
:= StrToIntDef(TextStringGrid1.ColCount);
  
//Коэффициенты
  
for := 0 to n do
    for 
:= 0 to n do
      
a[11] := StrToFloatDef(StringGrid1.Cells[ji], 0);
  
//Правая часть уравнения
  
for := 0 to n do b[1] := StrToFloatDef(StringGrid2.Cells[0i], 0);
  
//Прямой ход - исключение переменных
  
for i:=1 to n-do
    for 
j:=i+1 to n do
    
begin
      a
[j,i]:=-a[j,i]/a[i,i];
      for 
k:=i+1 to n do
        
a[j,k]:=a[j,k]+a[j,i]*a[i,k];
        
b[j]:=b[j]+a[j,i]*b[i]
    
end;
    
x[n]:=b[n]/a[n,n];
    
//Обратный ход - нахождение корней
    
for i:=n-1 downto 1 do
    
begin
      h
:=b[i];
      for 
j:=i+1 to n do h:=h-x[j]*a[i,j];
      
x[i]:=h/a[i,i]
    
end;
    
//Вывод результата
    
for i:=1 to n do ListBox1.Items.Append('x(' IntToStr(i) + ')=' FloatToStr(x[i]));
end;
 
procedure TForm3.Edit1Change(SenderTObject);
begin
  with StringGrid1
Edit1 do
  
begin
    ColCount 
:= StrToIntDef(Text3);
    
RowCount := StrToIntDef(Text3);
  
end;
  
with StringGrid2Edit1 do
    
RowCount := StrToIntDef(Text3)
end;
 
procedure TForm3.FormCreate(SenderTObject);
  var 
ijinteger;
begin
  
//Заполнить коэф уравнения
  
Randomize;
  for 
:= 0 to StrToIntDef(TextStringGrid1.ColCount) - do
    for 
:= 0 to StrToIntDef(TextStringGrid1.RowCount) - do
      
StringGrid1.Cells[IJ] := IntToStr(Random(100));
  for 
:= 0 to StrToIntDef(TextStringGrid2.RowCount) - do
    
StringGrid2.Cells[0I] := IntToStr(Random(100))
end;
 
end
1mposs1ble вне форума Ответить с цитированием
Старый 17.10.2010, 09:59   #2
1mposs1ble
Пользователь
 
Регистрация: 24.03.2010
Сообщений: 12
По умолчанию

ппц форум программистов...никто не может сказать, что сделать...

Последний раз редактировалось 1mposs1ble; 17.10.2010 в 20:32.
1mposs1ble вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц