|
DataMuseum.dkPresents historical artifacts from the history of: RegneCentralen GIER Computer |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RegneCentralen GIER Computer Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 8129 (0x1fc1) Description: Bits:30000653 P14 Types: 8-hole paper tape Notes: Gier Text, Has10
Program P14 - ALGOL4 - 30-5-1967 Jens Thyge Kristensenbegin _____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 tabelSide |); write(|dd|,side); write(| dd|,d1); > < > < >writetext(|< - |); write(|dd|,d2); writetext(|< - |); write(|dddd|,d3); < > < > < > < >writetext(|< Jens Thyge Kristensen|); < >writecr; writecr; nlin:= nlin+5end 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 Estimeredei x[i] y[i] x - x[i] y-værdier|); >writecr; writecr; nlin:= nlin+10end 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 Estimeredei x[i] y[i] x - x[i] y-mærke |); >writecr; writecr; nlin:= nlin+6end 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 dwritecr; nlin:= nlin+1;10 -d|,a[i]); write(| -d.ddd ddd10 -d|,p[i]); < > < >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 dddudvalgt ud fra antagelsen om, at px afviger mindre end error fra saavel det foregaaende som det efterfølgende estimat for y,10 -d|,px); writetext(|< < > <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 dwritecr; nlin:= nlin+1;10 -d|,a[i]); write(| -d.ddd ddd10 -d|,p[i]); < > < >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; ___[ s t o p ]