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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.02.2010, 09:33   #1
Серг87
Новичок
Джуниор
 
Регистрация: 08.02.2010
Сообщений: 1
По умолчанию Пргограмма реализации метода эйлера

Всем доброго дня!
В общих словах последовательность действий я представляю так: Произвести линейный расчет методом эйлера. (это получилось)
Значения элементов массива при i=n, необходимо записать в переменную((строки98-99), и затем произвести расчет заново, используя значения этих переменных, и вывести решения на график.
Что-то у меня это не выходит. При повторном расчете решение на график не выводится
Что я делаю не так?
Код:
procedure TForm1.EilerSolve(Task: TKoshiTask; Solve: TSolve);
var
  I,k: Integer;
  h:real;
  X1N,X2N:real;
  begin
   Solve.N := Task.N;
   Solve.X1[0] :=Task.X10;
   Solve.X2[0]:= Task.X20;
   Solve.Y1[0]:=Task.Y10;//tASK. УСТАНОВИТЬ НАЧАЛЬНЫЕ ЗНАЧЕНИЯ
   Solve.Y2[0] :=Task.Y20;
   h:=(Task.t1-Task.t)/Solve.N;
  for I := 1 to Task.N do
   begin
    Solve.X1[I]:=Solve.X1[I - 1]+h*solve.Y1[I - 1];
    Solve.Y1[I]:=Solve.Y1[I - 1]+h*(-task.R11*solve.X1[I - 1]-Task.R12*Solve.X2[I - 1])/Task.Inr;
    Solve.X2[I]:=Solve.X2[I - 1]+h*solve.Y2[I - 1];
    Solve.Y2[I]:=Solve.Y2[I - 1]+h*(-task.R21*solve.X1[I - 1]-Task.R22*Solve.X2[I - 1])/Task.m;
    task.t:=task.t+h;
   { ListBox1.Items.Add(FormatFloat('x1(0.###)= ',task.t)+FormatFloat('0.### ',Solve.X1[I]));
    ListBox2.Items.Add(FormatFloat('x2(0.###)= ',task.t)+FormatFloat('0.###',Solve.X2[I]));
    Series1.AddXY(task.t,Solve.X1[I]);
    Series2.AddXY(task.t,Solve.X2[I]);}
       end;
       Solve.X1[task.N]:=X1N;
       Solve.X2[task.N]:=X2N ; 
         for k := 1 to Task.N do
  Solve.X1[k]:=Solve.X1[k - 1]+h*solve.Y1[k - 1];
    Solve.Y1[k]:=Solve.Y1[k - 1]+h*(- ((-task.R11/20*X1N)*sqr(Solve.X1[k-1])
      +task.R11*Solve.X1[k-1])- ((-task.R12/20*X2N)*sqr(Solve.X2[k])  +task.R12*Solve.X2[k]))/Task.Inr;
    Solve.X2[k]:=Solve.X2[k - 1]+h*solve.Y2[k - 1];
     Solve.Y2[k]:=Solve.Y2[k - 1]+h*(- ((-task.R21/20*X1N)*sqr(Solve.X1[k-1])
      +task.R21*Solve.X1[k-1])- ((-task.R22/20*X2N)*sqr(Solve.X2[k])  +task.R22*Solve.X2[k]))/Task.m;
     task.t:=task.t+h;
    ListBox1.Items.Add(FormatFloat('x1(0.##)= ',task.t)+FormatFloat('0.## ',Solve.X1[k]));
    ListBox2.Items.Add(FormatFloat('x2(0.##)= ',task.t)+FormatFloat('0.##',Solve.X2[k]));
    Series1.AddXY(task.t,Solve.X1[k]);
    Series2.AddXY(task.t,Solve.X2[k]);
   end;
  procedure TForm1.Button1Click(Sender: TObject);
begin
  FTask.N := StrToInt(self.EditN.Text);
  FTask.R11:=StrToInt(self.Edit1.Text);
   FTask.R12:=StrToInt(self.Edit2.Text);
   FTask.R21:=StrToInt(self.Edit3.Text);
    FTask.R22:=StrToInt(self.Edit4.Text);
    FTask.t:=StrToInt(self.Edit5.Text);
    FTask.t1:=StrToInt(self.Edit6.Text);
     FTask.Inr:=StrToInt(self.Edit7.Text);
      FTask.m:=StrToInt(self.Edit8.Text);
      FTask.X10:=StrToInt(self.Edit9.Text);
       FTask.X20:=StrToInt(self.Edit10.Text);
        FTask.Y10:=StrToInt(self.Edit11.Text);
         FTask.Y20:=StrToInt(self.Edit12.Text);
         Series1.Clear; ListBox1.Clear;
            Series2.Clear; ListBox2.Clear;
    EilerSolve (FTask,FSolve);

    end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  FSolve := TSolve.Create;
  FTask := TKoshiTask.Create;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
FSolve.Destroy;
  FTask.Destroy;
end;

end.
На всякий случай прикладываю исходники

Цитата:
Что я делаю не так?
Первое и главное - не читаете общие правила форума и правила разделов, куда пишете:
У нас принято оформлять код специальным тэгом - при помощи кнопочки "#".
Только...
И не значком #.
И не РНР-кодом.
И не значком цитаты.
И не собственными "ручками".
Рекомендую. Помимо общих правил форума есть и дополнения к ним в каждом разделе...
Модератор

П.7 правил - и тема улетает к студентам.
Вложения
Тип файла: rar эйлер3.rar (3.6 Кб, 9 просмотров)

Последний раз редактировалось mihali4; 08.02.2010 в 13:07.
Серг87 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Формула Эйлера Европеец Общие вопросы C/C++ 2 13.11.2009 12:07
треугольник Бернулли — Эйлера Alex26RusLink Общие вопросы C/C++ 2 13.10.2009 14:27
Круги Эйлера NecRomant Общие вопросы Delphi 2 17.12.2008 15:07