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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.12.2011, 14:53   #1
phasha
Форумчанин
 
Регистрация: 24.03.2011
Сообщений: 130
Злость метод гаусса в обьектном

доброго времени суток всем! не могу разобраться с ошибкой в самом методе.расписал все понятно думаю с кодом проблем не возникнетвторая работа.rar подскажите как исправить ошибку?
phasha вне форума Ответить с цитированием
Старый 06.12.2011, 14:55   #2
phasha
Форумчанин
 
Регистрация: 24.03.2011
Сообщений: 130
По умолчанию

правда не рискнул сразу выводить в стрингрид3 иксы а так,сообщеницем))
phasha вне форума Ответить с цитированием
Старый 06.12.2011, 15:49   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,544
По умолчанию

Цитата:
Код:
For schet:=k+1 to n do
begin
  vectorB[schet]:=vectorB[schet]-matritsa[schet,k]*H[k];
Нумерация массива начинается с нуля и заканчивается на n-1

Цитата:
Код:
   begin
     n:=i;
     SetLength(h,i);
     SetLength(c,i,i);
     for k:=1 to n-1 do
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 06.12.2011, 16:07   #4
phasha
Форумчанин
 
Регистрация: 24.03.2011
Сообщений: 130
По умолчанию

исправил,теперь выскакивает ошибка
Код:
     C[k,j]:=matritsa[k,j]/matritsa[k,k];
и текст о функции проверки,почему ему не нравится переменная l и k?даже когда поменял их на инные все та же песня((
phasha вне форума Ответить с цитированием
Старый 06.12.2011, 17:39   #5
phasha
Форумчанин
 
Регистрация: 24.03.2011
Сообщений: 130
По умолчанию

жаль.........
phasha вне форума Ответить с цитированием
Старый 06.12.2011, 18:37   #6
phasha
Форумчанин
 
Регистрация: 24.03.2011
Сообщений: 130
По умолчанию

Код:
unit kursach;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids, Buttons,gauss;
  type  matrix=array of array of Real;
   type vector=array of Real;
type
  TForm1 = class(TForm)
    strngrd1: TStringGrid;
    btn1: TButton;
    edt1: TEdit;
    edt2: TEdit;
    lbl1: TLabel;
    lbl2: TLabel;
    lbl3: TLabel;
    lbl4: TLabel;
    strngrd2: TStringGrid;
    lbl5: TLabel;
    btn2: TButton;
    strngrd3: TStringGrid;
    lbl6: TLabel;
    btn3: TButton;
    rb1: TRadioButton;
    rb2: TRadioButton;
    rb3: TRadioButton;

    procedure btn1Click(Sender: TObject);
    procedure btn3Click(Sender: TObject);
    procedure btn2Click(Sender: TObject);
 //type   a=array of array of Real;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btn1Click(Sender: TObject);
var i,j:Integer;
begin
  if (edt1.Text='')or(edt2.Text='')
    then          begin
       edt1.Text:='1';edt2.Text:='1';
  end;
TryStrToInt(edt1.Text,i);
TryStrToInt(edt2.Text,j);
strngrd1.ColCount:=i;
strngrd1.RowCount:=j;
strngrd2.rowCount:=j;
strngrd3.RowCount:=j;
end;


procedure TForm1.btn3Click(Sender: TObject);
begin
Close;
end;



procedure TForm1.btn2Click(Sender: TObject);
       const Eps=1e-9;
    var
    max,maxb:Real;
   a:matrix;
   b,x:vector;

 sti,stj , n, i,j,m,k,l,j1:Integer;
               V,S:Real;
               Log:Boolean;
                  C:Matrix;
                  H:Vector;
begin
   


     if rb1.Checked=true then begin
     ShowMessage('Âû èñïîëüçóåòå ìåòîä:'+#13+'Ãàóññà');
       //ìåòîä ãàóññà îïèñàííûé â gauss

         if (edt1.Text='')or(edt2.Text='')
    then          begin
       edt1.Text:='1';edt2.Text:='1';
  end;    max:=0;       maxb:=0;
    trystrtoint(edt1.text, sti);
    trystrtoint(edt1.text, stj);
     SetLength (a,sti,stj);
     SetLength(b,stj);
     SetLength(x,stj);
     SetLength(c,sti,stj);
     SetLength(h,sti);
      for i:=1 to N do
           for j:=1 to N do
               A[i,j]:=strToFloat(strngrd1.Cells[j-1,i-1]);
 // ôîðìèðîâàíèå âåêòîðà Â
              for i:=1 to N do
                 B[i]:=strToFloat(strngrd2.Cells[0,i-1]);
 // ñòàðò ìåòîäà Ãàóññà
  for k:=1 to n-1 do
   Begin
 // ïðîâåðêà ýëåìåíòà A[k,k] íà ðàâåíñòâî 0
  if ABS(A[k,k])<Eps then
     begin
          Log:=True;
    for m:=k+1 to n do
      if (abs(A[m,k])>Eps)and Log then  begin
 // ïåðåñòàíîâêà k-îé è m-îé ñòðîêè ìàòðèöû À
          for l:=1 to n do   begin
  v:=A[k,l]; A[k,l]:=A[m,l]; A[m,l]:=V  ;
                                     end;
 // ïåðåñòàíîâêà ýëåìåíòîâ âåêòîðà Â
     V:=B[k];B[k]:=B[m];B[m]:=V;
                      Log:=False;                    end;
      end; {if ABS(A[k,k])<eps}
 // ôîðìèðîâàíèå ìàòðèöû À òðåóãîëüíîãî âèäà
         H[k]:=B[k]/A[k,k];
           For i:=k+1 to n do
   begin
  B[i]:=B[i]-A[i,k]*H[k];
  For j1:=k to n do begin
       J:=N-J1+K;
      C[k,j]:=A[k,j]/A[k,k];
      A[i,j]:=A[i,j]-A[i,k]*C[k,j];
                          end;
 end;
    End;{for k:=1 to n1 do}
//  ïîëó÷åíèÿ âåêòîðà Õ ÷åðåç îáðàòíûé õîä
   X[n]:=B[n]/(A[n,n]);
   m:=n-1;
Repeat
   S:=0;
     For l:=m to n-1 do
       S:=S+C[m,l+1]*X[l+1];
   X[m]:=H[m]-S;
  m:=m-1
Until m=0;
 // ïå÷àòü âåêòîðà Õ
 for i:=1 to n do
  strngrd3.Cells[0,i-1]:=FloatTostr(X[i]);




     end
     else if rb2.Checked=True then begin
     ShowMessage('Âû èñïîëüçóåòå ìåòîä:'+#13+'ïîêîîðäèíàòíîãî ñïóñêà');
       //ìåòîä ïîêîîðäèíàòíîãî ñïóñêà îïèñàííûé â spusk

     end
     else if rb3.Checked=True then begin
     ShowMessage('Âû èñïîëüçóåòå ìåòîä:'+#13+'çîëîòîãî ñå÷åíèÿ');
       //ìåòîä çîëîòîãî ñå÷åíèÿ îïèñàííûé â sechenie

     end;
      ShowMessage('ïðîâåðêà:'+#13+inttostr(j*i)+' ýëåìåíòîâ ìàòðèöû À'+#13+'èõ ñóììà='+FloatToStr(max)+#13+inttostr(j)+' ýëåìåíòîâ ìàòðèöû Â'+#13+'èõ ñóììà='+floattostr(maxb));

  end;



end.
забил все в один модуль.выходит ошибка на обратном ходу нахождения неизвестных(((

Последний раз редактировалось phasha; 06.12.2011 в 18:40. Причина: не обращайте внимания на show message и комментарии
phasha вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
метод гаусса jennis Помощь студентам 1 30.10.2010 15:51
метод Гаусса на C/C++ Passadobl Фриланс 4 21.10.2010 16:54
Метод Гаусса в С++. marko) Общие вопросы C/C++ 1 22.03.2010 16:49
Безумно сложные задачки!!!! Метод Гаусса, итераций, метод половинного деления, задача Коши и т.д. Хомяк!!!!! Помощь студентам 4 08.07.2009 10:08