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

⟦92303ea5a⟧ Bits:30000653 P14, 8-hole paper tape

    Length: 8129 (0x1fc1)
    Description: Bits:30000653 P14
    Types: 8-hole paper tape
    Notes: Gier Text, Has10

GIER Text (HTML)

Program  P14   - ALGOL4 -         30-5-1967         Jens Thyge Kristensen
begin _____
integer antal,by,d1,d2,d3,maxantal,maxlin,N,nlin,side; _______
boolean boole,B1; _______
comment _______
Programmet foretager en Aitken-interpolation i en given tabel, hvorved findes approximationer til f og f-mærke i mellemliggende punkter, hvor f er en funktion, der tilfredsstiller den givne tabel. Det antages, at x-erne i ta- bellen alle er indbyrdes forskellige. PAPIRFORMAT: A4-høj med 60 linier per side, første linie bør staa 5 linier under sidens overkant, og med margin paa 10 bogstaver. INPUT: Inputstrimlen skal indeholde antallet af tabeller maxantal , og derefter for hver tabel antallet N af tabelværdier i den givne tabel, værdierne x[1], y[1], x[2], y[2], ... , x[N], y[N] , den relative ubestemt- hed epsilon paa y-erne, antallet maxint af de x-værdier for hvilke tilsvarende y og y-mærke søges, og til sidst x-værdierne. OUTPUT: Den givne tabel, og for hver x-værdi de fundne approximationer til y og y-mærke . KRYDSFELTET: 0 0 0 x 0 x 0 0 0 0 x 0 0 0 0 0 ;
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); maxantal:= read integer; antal:= side:= 0; maxlin:= 60; START: N:= read integer;
begin _____
integer i,int,j,k,maxint; _______
real a1,delta,eks,epsilon,error,error50,p1,p2,px,x1; ____
array a,p,x,y[0:N]; _____
procedure TEXT; _________
begin writetext(|< _____ <
Aitken-interpolation i given tabel
Side |); write(|dd|,side); write(| dd|,d1); > < > < >
writetext(|< - |); write(|dd|,d2); writetext(|< - |); write(|dddd|,d3); < > < > < > < >
writetext(|< Jens Thyge Kristensen|); < >
writecr; writecr; nlin:= nlin+5
end TEXT; ___
procedure ordning; _________
begin _____
integer imin; real min; _______ ____
for i:= 1 step 1 until N do ___ ____ _____ __
begin _____
min:= a[i]; imin:= i;
for j:= i+1 step 1 until N do ___ ____ _____ __
if a[j]<min then begin min:= a[j]; imin:= j end j; __ ____ _____ ___
if imin>i then __ ____
begin a[0]:= a[imin]; x[0]:= x[imin]; y[0]:= y[imin]; _____
a[imin]:= a[i]; x[imin]:= x[i]; y[imin]:= y[i];
a[i]:= a[0]; x[i]:= x[0]; y[i]:= y[0] end; ___
end i; ___
end ordning; ___
procedure tabely0; _________
begin writetext(|< _____ <
Der antages en relativ fejl paa y-værdierne, epsilon = |); >
write(|d.d10-dd|,epsilon); writecr; writecr; writecr; writetext(|< < > <
y-værdien svarende til x = |); write(|-d.ddd ddd10-d|,eks); > < >
writetext(|< søges|); writecr; writecr; writetext(|< < > <
Nr Den foreliggende tabel Differensen Estimerede
i x[i] y[i] x - x[i] y-værdier|); >
writecr; writecr; nlin:= nlin+10
end tabely0; ___
procedure tabely1; _________
begin writetext(|< _____ <
y-mærke-værdien svarende til x = |); write(|-d.ddd ddd10-d|,eks); > < >
writetext(|< søges|); writecr; writecr; writetext(|< < > <
Nr Den foreliggende tabel Differensen Estimerede
i x[i] y[i] x - x[i] y-mærke |); >
writecr; writecr; nlin:= nlin+6
end tabely1; ___
for i:= 1 step 1 until N do ___ ____ _____ __
begin x[i]:= read real; y[i]:= read real end; _____ ___
epsilon:= read real; maxint:= read integer; int:= 0; NYINT: eks:= read real; writechar(65); nlin:= 0; side:= side+1; TEXT;
for i:= 1 step 1 until N do a[i]:= abs(x[i]-eks); ___ ____ _____ __
ordning; B1:= boole:= true; p1:= error:= 0; ____
for i:= 1 step 1 until N do ___ ____ _____ __
begin a[i]:= eks-x[i]; delta:= epsilon⨯abs(y[i]); p[i]:= y[i]; _____
if delta>error then error:= delta end; __ ____ ___
error:= 3⨯error/2; error50:= error⨯50;
for i:= 2 step 1 until N do ___ ____ _____ __
begin p2:= p1; x1:= x[i-1]; a1:= a[i-1]; p1:= p[i-1]; _____
for j:= i step 1 until N do p[j]:= (a1⨯p[j]-a[j]⨯p1)/(x[j]-x1); ___ ____ _____ __
if boole then begin tabely0; boole:= false end; __ ____ _____ _____ ___
if i=2 then begin __ ____ _____
write(| dd|,i-1); write(| -d.ddd ddd10-d|,x[i-1],y[i-1]); < > < >
write(| -d.ddd d10-d|,a[i-1]); write(| -d.ddd ddd10-d|,p[i-1]); < > < >
writecr; nlin:= nlin+1 end i=2; ___
write(| dd|,i); write(| -d.ddd ddd10-d|,x[i],y[i]); < > < >
write(| -d.ddd d10-d|,a[i]); write(| -d.ddd ddd10-d|,p[i]); < > < >
writecr; nlin:= nlin+1;
if nlin_maxlin then begin writechar(65); nlin:= 0; __ > ____ _____
side:= side+1; TEXT; boole:= true end; ____ ___
if B1 then __ ____
begin _____
if abs(p2-p1)<error ∧ abs(p[i]-p1)<error then __ ____
begin px:= p1; B1:= false end _____ _____ ___
else px:= p[i] end B1; ____ ___
end i; ___
writecr; writecr; nlin:= nlin+2;
if nlin>maxlin-6 then __ ____
begin writechar(65); nlin:= 0; side:= side+1; TEXT end; _____ ___
writetext(|< <
Ved beregningen af y-mærke benyttes y-værdien px = |); >
write(| -d.ddd ddd10-d|,px); writetext(|< < > <
udvalgt ud fra antagelsen om, at px afviger mindre end error fra saavel det foregaaende som det efterfølgende estimat for y,
error = |); >
write(| d.d10-dd|,error); writecr; writecr; nlin:= nlin+6; < >
boole:= true; k:= 2; ____
if nlin>maxlin-15 then __ ____
begin writechar(65); nlin:= 0; side:= side+1; TEXT end; _____ ___
for i:= 1 step 1 until N do ___ ____ _____ __
if abs(a[i])>error50 then p[i]:= (px-y[i])/a[i] else k:= k+1; __ ____ ____
for i:= k step 1 until N do ___ ____ _____ __
begin _____
x1:= x[i-1]; a1:= a[i-1]; p1:= p[i-1];
for j:= i step 1 until N do p[j]:= (a1⨯p[j]-a[j]⨯p1)/(x[j]-x1); ___ ____ _____ __
if boole then __ ____
begin tabely1; boole:= false end; _____ _____ ___
if i=k then __ ____
begin _____
write(| dd|,i-1); write(| -d.ddd ddd10-d|,x[i-1],y[i-1]); < > < >
write(| -d.ddd d10-d|,a[i-1]); write(| -d.ddd ddd10-d|,p[i-1]); < > < >
writecr; nlin:= nlin+1 end i=k; ___
write(| dd|,i); write(| -d.ddd ddd10-d|,x[i],y[i]); < > < >
write(| -d.ddd d10-d|,a[i]); write(| -d.ddd ddd10-d|,p[i]); < > < >
writecr; nlin:= nlin+1;
if nlin_maxlin then __ > ____
begin writechar(65); nlin:= 0; _____
side:= side+1; TEXT; boole:= true end; ____ ___
end i; ___
int:= int+1;
if int<maxint then go to NYINT else antal:= antal+1; __ ____ __ __ ____
if antal<maxantal then goto START; __ ____ ____
end; ___
end Program P14; ___
[stop]