39 lines
1 KiB
Text
39 lines
1 KiB
Text
|
|
include c:\cxpl\codes; \intrinsic 'code' declarations
|
|||
|
|
|
|||
|
|
proc Euler(Step); \Display cooling temperatures using Euler's method
|
|||
|
|
int Step;
|
|||
|
|
int Time; real Temp;
|
|||
|
|
[Text(0, "Step "); IntOut(0, Step); Text(0, " ");
|
|||
|
|
Time:= 0; Temp:= 100.0;
|
|||
|
|
repeat if rem(Time/10) = 0 then RlOut(0, Temp);
|
|||
|
|
Temp:= Temp + float(Step) * (-0.07*(Temp-20.0));
|
|||
|
|
Time:= Time + Step;
|
|||
|
|
until Time > 100;
|
|||
|
|
CrLf(0);
|
|||
|
|
];
|
|||
|
|
|
|||
|
|
real Time, Temp;
|
|||
|
|
[Format(6,0); \display time heading
|
|||
|
|
Text(0, "Time ");
|
|||
|
|
Time:= 0.0;
|
|||
|
|
while Time <= 100.1 do \(.1 avoids possible rounding error)
|
|||
|
|
[RlOut(0, Time);
|
|||
|
|
Time:= Time + 10.0;
|
|||
|
|
];
|
|||
|
|
CrLf(0);
|
|||
|
|
|
|||
|
|
Format(3,2); \display cooling temps using differential eqn.
|
|||
|
|
Text(0, "Dif eq "); \ dTemp(time)/dtime = -k*Temp
|
|||
|
|
Time:= 0.0;
|
|||
|
|
while Time <= 100.1 do
|
|||
|
|
[Temp:= 20.0 + (100.0-20.0) * Exp(-0.07*Time);
|
|||
|
|
RlOut(0, Temp);
|
|||
|
|
Time:= Time + 10.0;
|
|||
|
|
];
|
|||
|
|
CrLf(0);
|
|||
|
|
|
|||
|
|
Euler(2); \display cooling temps for various time steps
|
|||
|
|
Euler(5);
|
|||
|
|
Euler(10);
|
|||
|
|
]
|