Условие:
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, TAGraph,
TASeries;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Chart1: TChart;
Chart1LineSeries1: TLineSeries;
Chart1LineSeries2: TLineSeries;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
public
end;
const N=16;
Lx=0.1;
lamda=46;
ro=7800;
c=460;
T0=30;
h=Lx/(N-1);
var
Form1: TForm1;
type tvector=array [1..n] of real;
var i:integer;
x,T,T1,alf,bet:tvector;
ai,bi,ci,fi:real;
time,tend,T1,T2,dt:real;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.Button2Click(Sender: TObject);
begin
Halt;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
tend:=STRtoFLOAT(Edit1.Text);
T1:=STRtoFLOAT(Edit2.Text);
T2:=STRtoFLOAT(Edit3.Text);
dt:=tend/100;
x[1]:=0;
for i:=1 to n-1 do
x[i+1]:=x[i]+h;
for i:=1 to N do
T[i]:=T0;
time:=0;
repeat
time:=time+dt;
for i:=1 to N do
T1[i]:=T[i];
alf[1]:=0.0;
bet[1]:=T1;
for i:=2 to N-1 do
begin
ai:=lamda/h/h;
bi:=2lamda/h/h+roc/dt;
ci:=lamda/h/h;
fi:=-rocT1[i]/dt;
alf[i]:=ai/(bi-ci*alf[i-1]);
bet[i]:=(cibet[i-1]-fi)/(bi-cialf[i-1]);
end;
T[N]:=T2;
for i:=N-1 downto 1 do
T[i]:=alf[i]*T[i+1]+bet[i];
until (time>=tend);
Chart1LineSeries1.Clear();
Chart1LineSeries1.AddXY(0,T0);
Chart1LineSeries1.AddXY(Lx,T0);
Chart1LineSeries2.Clear();
for i:=1 to N do
Chart1LineSeries2.AddXY(x[i],T[i]);
end; чему равна конечная температура?
