DataMuseum.dk

Presents historical artifacts from the history of:

RegneCentralen GIER Computer

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about RegneCentralen GIER Computer

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦ff1df4d6b⟧ Bits:30000655 P15 1. del, 8-hole paper tape

    Length: 6224 (0x1850)
    Description: Bits:30000655 P15 1. del
    Types: 8-hole paper tape
    Notes: Gier Text, Has10

GIER Text (HTML)

Program  P15   - ALGOL 4 -        22-5-1967        Jens Thyge Kristensen
begin _____
integer by,d1,d2,d3,del,i,j,maxdel,maxlin,n,n0,nlin,nm1,p,side,to; _______
real c,epsilon,error,h,h0,k1,k2,k3,k4,m,x,x0,x1,xb,xb1,xm,xs,xs1, ____
y,y0,y1,yb,ym;
boolean boole; _______
comment _______
Programmet løser differentialligningen dy/dx = f(x,y,c) med givne begyn- delsesbetingelser (xb,yb) fra xb til slutværdien xs ved anvendelse af en fjerde ordens Runge-Kutta-formel: y[n+1] = y[n] + (k1+2(k2+k3)+k4)/6 , hvor k1 = h⨯f(x[n],y[n],c) , k2 = h⨯f(x[n]+h/2,y[n]+k1/2,c) , k3 = h⨯f(x[n]+h/2,y[n]+k2/2,c) , og k4 = h⨯f(x[n]+h,y[n]+k3,c). h = x[n+1] - x[n] , og c er en arbitrær konstant. PAPIRFORMAT: A4-høj med 60 linier per side, første linie sættes 5 linier under papirets overkant og med margin paa 10 bogstaver. INPUTSTRIMMEL: For hver funktion, der ønskes behandlet, anføres begyndelses- værdierne xb, yb , slutværdi xs , hvortil der integreres (der kræves
xb | xs), antallet n0 af x,y-sæt, der ønskes beregnet per enhedsinterval =
i x, relativ tolerence epsilon , og parameteren c . OUTPUT: Tabel over sammenhørende værdier af x og y = y(x,c) i inter- vallet mellem xb og xs , samt antallet af skridt benyttet ved integra- tion af differentialligningen mellem to paa hinanden følgende x-værdier i tabellen. KRYDSFELTET: 0 0 0 x 0 x 0 0 0 0 x 0 0 0 0 0 ;
procedure RK(f,S); _________
real f; string S; ____ ______
begin _____
procedure text; _________
begin writetext(|< _____ <
Runge-Kutta-metode af fjerde orden til integration af differential- ligningen dy/dx = f(x,y,c)
Side |); write(|dd|,side); write(| dd|,d1); > < > < >
writetext(|< - |); write(|dd|,d2); writetext(|< - |); < > < > < >
write(|dddd|,d3); writetext(|< Jens Thyge Kristensen|); < > < >
writecr; writecr; writecr; nlin:= nlin+7
end text; ___
xb:= read real; yb:= read real; xs:= read real; n0:= read integer; epsilon:= read real; c:= read real; h0:= 1/n0;
if xb<xs then __ ____
begin xb1:= entier(xb⨯n0)+1; _____
if abs(xb1-xb⨯n0)<1/to then xb1:= xb1+1; xs1:= entier(xs⨯n0); __ ____
if abs(xs1-xs⨯n0)<1/to then xs1:= xs1-1 end __ ____ ___
else ____
begin xb1:= entier(xb⨯n0); h0:= -h0; _____
if abs(xb1-xb⨯n0)<1/to then xb1:= xb1-1; xs1:= entier(xs⨯n0)+1; __ ____
if abs(xs1-xs⨯n0)<1/to then xs1:= xs1+1 end; __ ____ ___
n:= abs(xs1-xb1)+1; nm1:= n-1; xb1:= xb1/n0; xs1:= xs1/n0; error:= epsilon/(n+1); x0:= xm:= xb; y0:= ym:= yb;
for i:= 0 step 1 until n do ___ ____ _____ __
begin _____
x1:= if i>0 ∧ i<n then (xb1⨯(nm1-i)+xs1⨯i)/nm1 else if i=0 then xb1 else xs; __ ____ ____ __ ____ ____
h:= if i=0 ∨ i=n then x1-x0 else h0; m:= (x0+x1)/to; __ ____ ____
x:= x0; y:= y0; k1:= f⨯h; x:= m; y:= y0+k1/to; k2:= f⨯h; y:= y0+k2/to; k3:= f⨯h; x:= x1; y:= y0+k3; k4:= f⨯h; y1:= y0 + (k1+to⨯(k2+k3)+k4)/6; p:= to; del:= 1; h:= h/p; INDDEL:
for j:= 1 step 1 until p do ___ ____ _____ __
begin _____
x0:= if j<p then (xb⨯(p-j)+x1⨯j)/p else x1; m:= (x0+xm)/to; __ ____ ____
x:= xm; y:= ym; k1:= f⨯h; x:= m; y:= ym+k1/to; k2:= f⨯h; y:= ym+k2/to; k3:= f⨯h; x:= x0; y:= ym+k3; k4:= f⨯h; ym:= ym + (k1+to⨯(k2+k3)+k4)/6; xm:= x0
end j; ___
if abs(y1-ym)>error⨯abs(y1) then __ ____
begin xm:= xb; y1:= ym; del:= del+1; h:= h/to; _____
if del_maxdel then __ < ____
begin p:= p+p; ym:= y0; go to INDDEL end; end; _____ __ __ ___ ___
if boole then __ ____
begin text; writetext(|< _____ <
Den givne funktion er |); writecr; writetext(S); writetext(|< , hvo > <
r
c = |); write(|-d.ddd ddd10-d|,c); writecr; writetext(|< > < > <
Ved integrationen er i hele x-intervallet den relative tolerence
paa y = y(x,c) mindre end epsilon = |); write(|d.d10-dd|,epsilon); > < >
writecr; writecr; writecr; writetext(|< <
Abscisse Ordinat Antal delskridt mellem forrige
x y = y(x,c) og nærværende abscisse, p|); >
writecr; writecr; nlin:= nlin+13; boole:= false end; _____ ___
if i=0 then __ ____
begin write(| -d.ddd ddd10-d|,xb,yb); writecr; nlin:= nlin+1 end; _____ < > ___
write(| -d.ddd ddd10-d|,x1,ym); write(| dd|,p); < > < >
writecr; nlin:= nlin+1;
if nlin_maxlin then __ > ____
begin nlin:= 0; writechar(65); side:= side+1; boole:= true end; _____ ____ ___
y0:= ym; xb:= xm:= x1;
if del>maxdel then begin writetext(|< __ ____ _____ <
Antallet af delskridt blev desværre lig med|); write(| dd|,p); > < >
go to UD end; __ __ ___
end i; ___
UD:
end procedure RK; ___ _________
select(40); by:= select(17); writetext(|< <
INDLÆG datastrimmel og skriv dato, maaned, aar her : |); >
d1:= read integer; d2:= read integer; d3:= read integer; select(by); side:= 0; maxlin:= 60; to:= 2;
copyt< ____
[stop]