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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.05.2012, 21:16   #1
Helene Lee
Новичок
Джуниор
 
Регистрация: 27.05.2012
Сообщений: 1
По умолчанию Разностное решение уравнения теплопроводности.Явный метод(Delphi)

Здравствуйте. Помогите пожалуйста. Нужно немного доделать и ,если не сложно, подписать что в какой строке делается. Сама разобраться не могу.
Теория, исходные данные и код в архиве. Заранее большое спасибо.


Код:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, TeeProcs, TeEngine, Chart, Series, Spin;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    Chart1: TChart;
    Chart2: TChart;
    RadioGroup2: TRadioGroup;
    Series1: TLineSeries;
    Series2: TLineSeries;
    SpinEdit1: TSpinEdit;
    Timer1: TTimer;
    Chart3: TChart;
    Series3: TLineSeries;
    CheckBox1: TCheckBox;
    procedure Button1Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure RadioGroup2Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure SpinEdit1Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
 const k=1;
 
var
  Form1: TForm1;
  mas,mas1:array of array of extended;
  hxx,htt,resx,rest:array of extended;
  hx,ht:extended;
  n,t,nmin,tmin:integer;
 
implementation
 
{$R *.dfm}
 
function f(x1:extended):extended;
begin
  result:=0;
end;
 
procedure obnul(t1,x1:integer);
var i:integer;
begin
  setlength(mas,t1+1,x1+1);
  hx:=1/x1;
  ht:=10/t1;
  for i:=0 to x1 do mas[0,i]:=1;
  for i:=1 to t1 do mas[i,0]:=exp(10*i*ht);
  for i:=1 to t1 do mas[i,x1]:=exp(i*ht);
  end;
 
procedure Yavn;
var i,j:integer;
begin
 form1.series2.Clear;
 form1.series3.Clear;
 if form1.CheckBox1.Checked then
  begin
   n:=20;
   t:=20;
  end                       else
  begin;
   n:=20;
   t:=200;
  end;
 obnul(t,n);
 setlength(mas1,t+1,n+1);
 for i:=1 to t do
  for j:=1 to n-1 do
   mas[i,j]:=mas[i-1,j]+ht*(k*(mas[i-1,j-1]-2*mas[i-1,j]+mas[i-1,j+1])/sqr(hx)+f(j*hx));
 for i:=0 to t do
  for j:=0 to n do mas1[i,j]:=mas[i,j];
 nmin:=n;
 tmin:=t;
end;
 
 
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
  series1.Clear;
  series2.Clear;
  series3.Clear;
  yavn;
  RadioGroup2Click(Sender);
  for i:=1 to high(hxx) do Series2.AddXY(ln(hxx[i]),ln(abs((resx[i]-resx[i-1])/resx[i])));
  for i:=1 to high(htt) do Series3.AddXY(ln(htt[i]),ln(abs((rest[i]-rest[i-1])/rest[i])));
end;
 
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  finalize(mas);
  finalize(mas1);
  finalize(hxx);
  finalize(htt);
  finalize(resx);
  finalize(rest);
end;
 
procedure TForm1.RadioGroup2Click(Sender: TObject);
var i,r:integer;
begin
  hx:=1/nmin;
  ht:=10/tmin;
  series1.Clear;
  case RadioGroup2.ItemIndex of
   0:begin
       for i:=0 to nmin do
         begin
           series1.AddXY(i*hx,mas1[round(tmin/2),i]);
         end;
     end;
   1:begin
       for i:=0 to tmin do series1.AddXY(i*ht,mas1[i,round(n/2)]);
     end;
   2:begin
       SpinEdit1.MaxValue:=tmin;
       SpinEdit1.MinValue:=0;
       timer1.Enabled:=true;
     end;
  end;
end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if SpinEdit1.Value<SpinEdit1.MaxValue
    then
      begin
        SpinEdit1.Value:=SpinEdit1.Value+1;
      end
    else
      timer1.Enabled:=false;
end;
 
 
procedure TForm1.SpinEdit1Change(Sender: TObject);
var i,r:integer;
begin
try
  series1.Clear;
  ht:=10/tmin;
  r:=SpinEdit1.Value;
  for i:=0 to nmin do series1.AddXY(i*ht,mas1[r,i]);
except showmessage('Неправильно задан слой');
end;
end;
 
end.
Вложения
Тип файла: rar 1.rar (122.8 Кб, 18 просмотров)
Helene Lee вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
решение уравнения Артл Помощь студентам 1 20.05.2011 03:48
Решение уравнения Killep Помощь студентам 1 18.05.2011 22:59
Решение уравнения Патагон3000 Помощь студентам 0 04.03.2010 19:22
Решения одномерного дифференциального уравнения теплопроводности в частных производных (delphi) Denzloy Помощь студентам 1 27.01.2009 14:51
Решение уравнения Datrav Паскаль, Turbo Pascal, PascalABC.NET 2 06.06.2008 08:23