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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.12.2009, 13:33   #1
PuHrBuH
Новичок
Джуниор
 
Регистрация: 15.12.2009
Сообщений: 2
Восклицание Метод Гаусса, вывести все этапы преобразования!

Помогите вывести все этапы преобразования матрицы, в поле StringGrid. Так же на форме должна быть кнопка, при нажатии на которую, отображается следующий этап преобразования.

Код:
unit gauss;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids, ExtCtrls;

  const Max = 10;

type
    Vector = array[1..Max] of Double;
    Matrix = array[1..Max] of Vector;
    TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    StringGrid2: TStringGrid;
    LabeledEdit1: TLabeledEdit;
    Button1: TButton;
    Button2: TButton;
    Memo1: TMemo;
    Button3: TButton;
    Panel1: TPanel;
    procedure LabeledEdit1Change(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


procedure TForm1.LabeledEdit1Change(Sender: TObject);
begin
  with StringGrid1, labelededit1 do
  begin
    ColCount := StrToIntDef(Text, 3);
    RowCount := StrToIntDef(Text, 3);
  end;
  with StringGrid2, labelededit1 do
    RowCount := StrToIntDef(Text, 3)
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
 memo1.Clear;
end;

procedure TForm1.Button1Click(Sender: TObject);
  var a: Matrix;
      b,x: Vector;
      h: Double;
      i,j,k,n:integer;
begin
  n := StrToIntDef(Text, StringGrid1.ColCount);
  for j := 0 to n - 1 do
    for i := 0 to n - 1 do
      a[i + 1, j + 1] := StrToFloatDef(StringGrid1.Cells[j, i], 0);
  for I := 0 to n - 1 do b[i + 1] := StrToFloatDef(StringGrid2.Cells[0, i], 0);
  //Прямой ход
  for i:=1 to n-1 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;
Memo1.Lines.Add('Решение:');
Memo1.Lines.Add('--------------------------------------------------------');
    for i:=1 to n do
    memo1.lines.add('x(' + IntToStr(i) + ')=' + FloatToStr(x[i]));
Memo1.Lines.Add('--------------------------------------------------------');
end;

end.

Последний раз редактировалось Stilet; 15.12.2009 в 14:49.
PuHrBuH вне форума Ответить с цитированием
Старый 17.12.2009, 11:13   #2
PuHrBuH
Новичок
Джуниор
 
Регистрация: 15.12.2009
Сообщений: 2
По умолчанию

HELP me please...
PuHrBuH вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Безумно сложные задачки!!!! Метод Гаусса, итераций, метод половинного деления, задача Коши и т.д. Хомяк!!!!! Помощь студентам 4 08.07.2009 10:08
Help!!! Метод Гаусса Надя Microsoft Office Excel 7 07.05.2008 00:45
Метод Гаусса mEka Общие вопросы Delphi 4 09.01.2008 16:16