Уважаемые программисты просьба помочь, вообщем ситуация заключается в следующем, вот программа по численному решению системы методом Рунге-Кутта, программа работает, но загвоздка возникла в следущем, не могу считать значения функций и шага в отдельные массивы, делфи выдает ошибку непонятную, я даже потом решил считывать отдельноо из каждого файла но увы косяки с функцией strtofloat
код:
const
k=1;T=10;g=1;
var
k11,k12,k21,k22,k31,k32,k41,k42,z,dz,y,dy,dt,lin:real;
f,yt,zt,lint:text;
n,i,j:integer;
zm,ym,linm:array[1..250] of real; //extended for strtofloat
begin
assign(f,'lab1.dat');rewrite(f);
assign(yt,'yt.dat');rewrite(yt);
assign(zt,'zt.dat');rewrite(zt);
assign(lint,'lint.dat');rewrite(lint);
dt:=0.001;lin:=0;
i:=1;
while lin<200 do begin
k11:=z*dt;
k12:=(k*g/(T*T)-y/(T*T))*dt;
k21:=(z+k12/2)*dt;
k22:=(k*g/(T*T)-(y+k11/2)/(T*T))*dt;
k31:=(z+k22/2)*dt;
k32:=(k*g/(T*T)-(y+k21/2)/(T*T))*dt;
k41:=(z+k32)*dt;
k42:=(k*g/(T*T)-(y+k31)/(T*T))*dt;
dy:=(k11+2*k21+2*k31+k41)/6;
dz:=(k12+2*k22+2*k32+k42)/6;
y:=y+dy;
z:=z+dz;
if n mod 800=0 then
begin
writeln(f,'при шаге=',lin:6:3,' функции y=',y:9:6,'; z=',z:9:6);
writeln(lint,lin:6:3);writeln(yt,y:9:6); writeln(zt,z:9:6);
linm[i]:=lin; ym[i]:=y; zm[i]:=z;// вот в этой строке вся загвоздка
end;
lin:=lin+dt;
n:=n+1;
i:=i+1;
end;
close(f);
close(zt);
close(yt);
close(lint);
{assign(yt,'yt.dat'); reset(yt);
assign(zt,'zt.dat'); reset(zt);
assign(lint,'lint.dat'); reset(lint);
While not eof(yt) do
begin
read(yt,tempstring);
u:=strtofloat(tempstring);
end;
close(zt);
close(yt);
close(lint);}
end.
|