05.11.2009, 16:27
|
#1
|
Я тут новенький
Регистрация: 24.11.2008
Пол: M
Провайдер: ВТ
Сообщений: 20
Поблагодарил: 0
Поблагодарили 0 раз в 0 сообщениях
Открыли хайд
: 0 в этом сообщении 0 Всего
|
Эйлер мод2. помогите с паскалем плиз!
имеется метод Эйлера 2 мод. в мадкаде
и на паскале(кажется простой Эйлер)
Спойлер:
Код:
Program Difur;
var
t,I,U:array[1..1000] of real;
j,n:integer;
fit,fit1,fut,fut1,h,R1,R2,R3,R4,R5,R6,f,fi,E0,L,c,w,t0,t1,t2,Et,E1t,Et1,E1t1,A,B,D,G:real;
P,O,K,M:text;
begin
assign(P,'c:\N.txt');
rewrite(P);
assign(O,'c:\time.txt');
rewrite(O);
assign(K,'c:\I.txt');
rewrite(K);
assign(M,'c:\U.txt');
rewrite(M);
R1:=30;R2:=25;R3:=50;
R4:=1.88;R5:=15;R6:=50;
f:=30;fi:=3*pi/5;E0:=15;L:=5.57/1000;
c:=20/1000000;
w:=2*pi*f;
t0:=0;
t1:=0.01;
t2:=0.02;
write('n=');
read(n);
writeln(P,'n=',n);
h:=(t2-t0)/n;
I[1]:=0;
U[1]:=0;
t[1]:=0;
A:=(R4+(R1*R2)/(R1+R2)+R3*(R5+R6)/(R3+R5+R6));
B:=(R5+R6)/(R3+R5+R6);
D:=R2/(R1+R2);
G:=1/(R3+R5+R6);
for j:=1 to n do
begin
t[j+1]:=t[j]+h;
Et:=E0+E0*sin(w*t[j]+fi);
if t[j]<t1 then E1t:=Et
else E1t:=0;
{тут}
fIt:=(1/L)*(E1t*d-I[j]*a-U[j]*b);
fUt:=(1/c)*(I[j]*b-U[j]*g);
fIt1:=(1/L)*(E1t*d-(I[j])*a-(U[j])*b);
fUt1:=(1/c)*((I[j])*b-(U[j])*g);
I[j+1]:=I[j]+(h/2)*(fIt+fIt1);
U[j+1]:=U[j]+(h/2)*(fUt+fUt1);
{тут}
end;
writeln(P,'N',j:3);
writeln(O,'t');
writeln(K,'I');
writeln(M,'U');
for j:=1 to n+1 do
begin
writeln(P,'',j:3);
writeln(O,'',t[j]:6:5);
writeln(K,'',I[j]:6:5);
writeln(M,'',U[j]:6:5);
end;
close(M);
close(K);
close(O);
close(P);
end.
ни как не получается переправить паскаль чтобы значения совпадали, помогите плиз!!!
|
|
|