|
|
DataMuseum.dkPresents historical artifacts from the history of: MIKADOS |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about MIKADOS Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 19168 (0x4ae0)
Notes: Mikados TextFile, Mikados_K
Names: »AEDITFIL«
└─⟦d32d3be74⟧ Bits:30005367 WordWork v.2.5 Dansk Funk.Taster (21.01.1982
└─⟦this⟧ »AEDITFIL«
est Miefddf=::0=::0øolffsgAnne ==== ss yHHHHHH gfff $ ffffføol=::0fddfMieAnnePhilå$ldes til gruppestyrelsesmøde0 ( Onsdag d.3. nov. kl 19.30( % hos Per, Lupinvej 28.% 5 Det er vigtigt at vi ser så mange som muligt,53 undskyld det korte varsel; men vi skal have34 skub i planerne for årets juletombola og det43 kræver lynsnar handling hvis det skal kunne3 lykkes. På dagsordenen iøvrigt: 0 Initiativer for at skaffe ledere0 Økonomi$ Materielanskaffelser$ / Planlægning af vinterens møder./ ( På forhåbentlig snarligt gensyn.( 5 Spejderhilsen5s. He has also stumb-=<led upon a reference to the work you did with Iain Watson on<="Symmetric multistep methods for periodic initial value prob-=;lems (rep. no.12,1975) and I would ask if you could send me;=a copy of this report.Any more recent work on periodic i.v.p.=would be of interest too. > Zahari asked me to thank you for the rewiev in Zentralblat>1on our paper about the generalised Adams methods.1 = On the home front everything is fine, we got a boy Morten=:last winter, he is 14 months old now and he has speeded up:=our daily routine quite a lot.Ulla and Lise finds it is great=>fun having a little brother, and that helps a very great deal.>=We will all go together to the meeting in Oberwolfach while I=!have to go to Scotland on my own.! > I heard from John that he was going to Dundee for his sab-><batical, that sounds very interesting I wish I could go too.<<Right now I have a lot to do here, budgets are cut now again<:and lots of fighting goes on about what is left. I do hope:$you can avoid that sort of problems.$ * Please give my regards to those I know* $ best wishes$gem filenCC QUIT -- "" -- eller PF15 => gem ikke filenCB QQUIT -- "" -- hvis filen er ændret => - " - .B CMed kommandoen USE PASCALW definerer du , at du vilC>bruge PASCAL som sprog. Du kan oversætte og køre programmet i >BTESTFIL ved at skrive COMPILE TESTFIL. Under oversættelsen genere-BAres filerne TESTFIL LISTING og TESTFIL DIAGS, der indeholder hen-A>holdsvis en udskrift af programmet og fejlmeldingerne. Prøv at>\f
kigge i dem.\f
CDu kan afsende et job til 'den gamle' maskine (IBM3033) med komman-C8doen SUBMIT fn ft NEUMVS1, eller hvis filtypen er JOB - 8ASUBMIT fn NEUMVS1. Filen skal indeholde et komplet job med styre-AAkort (*** i password-feltet udløser et prompt for det 'rigtige').A :Hvis du gerne vil se dine resultater på tryk kan du skrive:BPRINT TESTFIL LISTING og de skulle så gerne komme ud på printeren.B >Når du er færdig skriver du LOGOFF og ENTER 2 gange for at få >2VM-billedet frem igen. Husk at rydde op efter dig!2oteringen foretages umiddelbart før hvert;#iteration i Householders algoritme.#= I udskriften i bilag 6 ses hvordan pivoteringen virker. Der=>er ingen nuller i de udlæste matricer, fordi disse aldrig bli->>ver sat, algoritmen "husker" at elementerne under hoveddiago- >"nalen er nuller uden at sætte dem." .PAGEler, som rapporten her byg-><ger over. Derimod har man ingen chance for at ødelægge andre<=filer end dem med matricer fordi filerne har et særligt mærke=>(D). De første Demomatricer, testeksemplets matricer A og B er>>gemt i filerne "TEST1A" og "TEST1B", hvorfra de direkte kan >;hentes vha aktion 4. Hvis man under indtastningen har lavet;<en mindre fejl behøver man ikke at indtaste hele matricen på<<ny, man kan rette enkelte elementer i en eksisterende matrix<=vha faciliteten "RETTELSE", aktion 2. Denne facilitet starter=>med element 1.1, hvis værdi udlæses. Man har så følgende mu- > ligheder: ) H) Gå til næste søjle i matricen.)) N) Gå til næste række i matricen.)$ R) Ret det aktuelle element.$0 A) Adder værdi til det aktuelle element.0 E) Stop rettelsen.>Hvis man forsøger at gå ud over matricens kanter stopper ret- >telsen af sig selv. > Udskriften af "TEST1A" og "TEST1B" ser ud som øverste del af>>bilag 6. Dernæst kan man benytte aktion 12, og hvis man svarer>>"Y" på spørgsmålet om udskrift af mellemresultater kommer det >>til at se ud som bilag 6. Her er der så mulighed for at udlæ- >>se, hvordan algoritmen har omformet C og D (kopierne af A og B>=se blg. 6). Man fortsætter med aktion 14, Backsubstitution og=<aktion 16, hvorefter man til slut kan udskrive resultaterne,<5dvs matricerne X,Y,R,N,V og C (også vist på bilag 6).5> Man er så tilbage, hvor man startede, man kan evt gemme >>resultaterne vha aktion 8, hvorved man vil være istand til at >>vidreforarbejde dem en anden dag ved at hente dem frem igen >\rvha aktion 4.\r"USER I/O ERROR 06 NEAR LINE 1044".==II) "TILFIL" lagrer en given matrix under dens navn i en per-=manent fil på en diskette.> Den permanente filstruktur ses på diagram 6.6.1 på næste si->de. !6.7 POSTSTRUKTURMANIPOLATION.!> For at muliggøre flytning af datastrukturer (kun hovederne >>ændres, igen en fordel ved at bruge pointere) er der et par >>procedurer, der henholdesvis flytter til og fra systemets fas->>te matricer (A,B,C,C m.m.). De hedder "MVALGON" og "MVALGOFF".> &6.8 OVERORDNET STYRING AF PROGRAM.&> For lave en flexibel styring, der let lader sig vidreudbygge>>er programmet principielt opbygget som en tilstandsmaskine, >=hvorfor en anden logik i styringen lader sig implementere ved=>blot at ændre på tilstands og aktionstabellerne, der initieres>>i proceduren "TABELINITIERING". Dette vil være aktuelt ved ud->bygning med andre faciliteter.= En liste over valgmulighederne under den interaktive kørsel=>udskrives af proceduren "MENU". Hvis man vælger en ulovlig ak->>tion køres proceduren "FEJLVALG", der giver en fejlmelding og >udskriver de legale valg.? Selve tilstandsmaskinen udgør det meste af "MAIN", dvs ?Bhovedkroppen. De 3 små procedurer "RESIBERE", "CASE12" og "MA- B=INUDSKRIFT" hører egentlig til som dele af hovedkroppen, men =@denne bliver i så fald for stor for operativsystemet (error @253).> På disketten ligger 2 systemer. Diskettnes indhold er komen->>teret i bilag 4. For det første ligger der et system med nav- >>net "LLSSYSTT". Dette er beregnet til at teste dele af system->>et med, deraf det sidste "T" i navnet. Det er en stærkt redu- >>ceret udgave, som dermed bliver mere håndterlig under oversæt->
telse m.m.
> I det følgende vil jeg imidlertid holde mig til den mest >>brugervenlige version, "LLS". I denne er en del af funktioner->>ne forlods koblet sammen, således at en uhensigtsmæssig kørsel>>forhindres, og således at systemet er mere umiddelbart at an- >=vende. Sammenknytningen er sket vha en tilstandsmaskine med 3=>tilstande. Tilstandsmaskinen i LLS beskrives dels i brugervej->>ledningen (anvendelse), dels i bilag 5, hvor diagrammer mm >findes. 6.9 DATABEHANDLING.D);$' MVALGOFF(VHEAD,VHEAD,SUCCES);'$ SLETMATRIX(STE,STH,NHEAD);$' MVALGOFF(NHEAD,NHEAD,SUCCES);' HEAD:=NIL;4 ADDITION(STE,STH,SUCCES,VHEAD,NHEAD,HEAD);4! VHEAD:=NIL; NHEAD:=NIL;!" WRITELN('Resultatet ?');"4 MVALGON(STE,STH,AHEAD,BHEAD,HEAD,SUCCES) 4 END; 18 : BEGIN> WRITELN('I aktion 18 er matricerne V og N ', > 'reseverede !'); > WRITELN('De to operander til subtraktionen ?'); >$ SLETMATRIX(STE,STH,VHEAD);$' MVALGOFF(VHEAD,VHEAD,SUCCES);'$ SLETMATRIX(STE,STH,NHEAD);$' MVALGOFF(NHEAD,NHEAD,SUCCES);' HEAD:=NIL;7 SUBTRAKTION(STE,STH,SUCCES,VHEAD,NHEAD,HEAD);7! VHEAD:=NIL; NHEAD:=NIL;!" WRITELN('Resultatet ?');"3 MVALGON(STE,STH,AHEAD,BHEAD,HEAD,SUCCES) 3 END; 19 : BEGIN> WRITELN('I aktion 19 er matricerne V og N ', > 'reseverede !'); ; WRITELN('De to faktorer til multiplikationen ?');;$ SLETMATRIX(STE,STH,VHEAD);$> MVALGOFF(VHEAD,VHEAD,SUCCES); >$ SLETMATRIX(STE,STH,NHEAD);$' MVALGOFF(NHEAD,NHEAD,SUCCES);' HEAD:=NIL;3 MATMULT(STE,STH,SUCCES,VHEAD,NHEAD,HEAD);3! VHEAD:=NIL; NHEAD:=NIL;!" WRITELN('Resultatet ?');"3 MVALGON(STE,STH,AHEAD,BHEAD,HEAD,SUCCES) 3 END; 20 : ; (* EXIT *) END; (* END CASE *) MAINUDSKRIFT(SUCCES);UNTIL AKTION = 20; n er et positivt heltal. *)GVAR I , X , Y , TALAFSTAND , TALFORØG , ANTALTEGN , TEGNBREDDE , HALVTEGNBREDDE: INTEGER;! TEGN : ZSTRING10;! #PROCEDURE INITTAL (BSTART: REAL ;## BINTVL: REAL ;## PINTVL: INTEGER;#% N : INTEGER );%BEGIN) WHILE (BINTVL - TRUNC (BINTVL) <> 0) OR)- (BSTART - TRUNC (BSTART) <> 0) DO- BEGIN BSTART:= 10 * BSTART; BINTVL:= 10 * BINTVL; END; TAL:= TRUNC (BSTART); TALFORØG:= TRUNC (BINTVL); 9 WHILE (TALFORØG MOD 10 = 0) AND (TAL MOD 10 = 0) DO9 BEGIN TAL:= TAL DIV 10; TALFORØG:= TALFORØG DIV 10; END; TALFORØG:= TALFORØG * N; TALAFSTAND:= PINTVL * N;END; (* INITTAL *) PROCEDURE TALIARRAY;;(* Indgang: TAL = Tallet der skal udskrives.;F Udgang : ANTALTEGN = Antallet af cifre i TAL + 1 (max 10).F> TEGN (1) = Mindstbetydende ciffer i TAL.>\r .\r\r .\r= TEGN (ANTALTEGN) = "-" hvis TAL < 0 ellers " ".=H TAL = Det næste tal der skal udskrives. *)HVAR T: INTEGER;BEGIN ANTALTEGN:= 1; T:= ABS (TAL); REPEAT CASE T MOD 10 OF! 0: TEGN (ANTALTEGN):= '0';!! 1: TEGN (ANTALTEGN):= '1';!! 2: TEGN (ANTALTEGN):= '2';!! 3: TEGN (ANTALTEGN):= '3';!! 4: TEGN (ANTALTEGN):= '4';!! 5: TEGN (ANTALTEGN):= '5';!! 6: TEGN (ANTALTEGN):= '6';!! 7: TEGN (ANTALTEGN):= '7';!! 8: TEGN (ANTALTEGN):= '8';!! 9: TEGN (ANTALTEGN):= '9';! END; T:= T DIV 10; ANTALTEGN:= ANTALTEGN + 1;+ UNTIL (T = 0) OR (ANTALTEGN = MAXTEGN);+( IF TAL < 0 THEN TEGN (ANTALTEGN):= '-'() ELSE TEGN (ANTALTEGN):= ' ';) TAL:= TAL + TALFORØG;END; (* TALIARRAY *) "PROCEDURE SKRIVTAL (X,Y: INTEGER);"<(* Udskriver tallet svarende til indholdet i arrayet TEGN.<J Hvis den vandrette akse peger mod højre, vil tallet stå til højre forJ% punktet (X,Y), ellers til venstre. %* Al skrivning foregår via ud-bufferen.* @ Indgang: X,Y = Absolutte "Printer-koordinater".@; TEGN (1) = Det mindstbetydende ciffer.;L TEGN (ANTALTEGN) = Fortegnet. *)LVAR I: INTEGER;BEGIN ZPSTREG (ZABS, X, Y, ' ');1 IF ZSP = ' ' THEN FOR I:= ANTALTEGN DOWNTO 1 DO1 BEGIN& ZPUT (TEGN (I));&8 ZPSTREG (ZREL, XSTEP, YSTEP, ' ');8 END- ELSE FOR I:= 1 TO ANTALTEGN DO- BEGIN& ZPUT (TEGN (I));&7 ZPSTREG (ZREL, XSTEP,YSTEP, ' ');7 END;END; (* SKRIVTAL *) BEGIN( IF ZGRAFIK = ZGROV THEN TEGNBREDDE:= 6(* ELSE TEGNBREDDE:= 12;*$ HALVTEGNBREDDE:= TEGNBREDDE DIV 2;$ IF ZXLODRET THEN BEGIN XSTEP:= 0;( YSTEP:= TEGNBREDDE;( END ELSE BEGIN( XSTEP:= TEGNBREDDE;( YSTEP:= 0; END;& ZABSPKOORD (XVÆRDI, YVÆRDI, X0, Y0);&WRITELN ('Y0 = ',Y0); (* Tegn x-akse *) ZPSTREG (ZABS, 0, Y0, ' '); FOR I:= 1 TO XANTALINTV DO BEGIN ZPSTREG (ZREL, 0, 1, ' '); ZPSTREG (ZREL, 0,-2, '.'); ZPSTREG (ZREL, 0, 1, ' '); - ZPSTREG (ZREL, ZXAKSE.P.INTVL, 0, '.');- END; (* Tegn x-aksespids *) ZPSTREG (ZREL, -4, 4, '.'); ZPSTREG (ZREL, 0, -8, ' '); ZPSTREG (ZREL, 4, 4, '.'); WRITELN ('X0 = ',X0); (* Tegn y-akse *) ZPSTREG (ZABS, X0, 0, ' '); FOR I:= 1 TO YANTALINTV DO BEGIN ! ZPSTREG (ZREL, 1, 0, ' ');!! ZPSTREG (ZREL, -2, 0, '.');!! ZPSTREG (ZREL, 1, 0, ' ');!. ZPSTREG (ZREL, 0, ZYAKSE.P.INTVL, '.');. END; (* Tegn y-aksespids *); ZPSTREG (ZREL, 4, -4, '.'); ZPSTREG (ZREL, -8, 0, ' '); ZPSTREG (ZREL, 4, 4, '.'); . (* Bestem hvor x-akseværdierne skal stå *). IF ZXLODRET THEN BEGIN X:= -2;+ Y:= Y0 + XTALPOSITION;+ END ELSE BEGIN X:= 0;/ Y:= Y0 - 2 + XTALPOSITION;/ END;/ (* X-akseværdierne beregnes og udskrives *)/9 WITH ZXAKSE DO INITTAL (B.START, B.INTVL, P.INTVL, NX);9 I:= 0; REPEAT TALIARRAY; IF ZXLODRET1 THEN IF XTALPOSITION > 0 THEN SKRIVTAL (X, Y)1M ELSE SKRIVTAL (X, Y - TEGNBREDDE*(ANTALTEGN-1))M4 ELSE SKRIVTAL (X - HALVTEGNBREDDE*ANTALTEGN, Y);4 X:= X + TALAFSTAND; I:= I + NX; UNTIL I >= XANTALINTV;. (* Bestem hvor y-akseværdierne skal stå *). IF ZXLODRET THEN BEGIN/ X:= X0 - 2 + YTALPOSITION;/ Y:= 0; END ELSE BEGIN+ X:= X0 + YTALPOSITION;+ Y:= -2; END;/ (* Y-akseværdierne beregnes og udskrives *)/9 WITH ZYAKSE DO INITTAL (B.START, B.INTVL, P.INTVL, NY);9 I:= 0; REPEAT TALIARRAY; IF ZXLODRET3 THEN SKRIVTAL (X, Y - HALVTEGNBREDDE*ANTALTEGN)31 ELSE IF YTALPOSITION > 0 THEN SKRIVTAL (X, Y)1N ELSE SKRIVTAL (X - TEGNBREDDE*(ANTALTEGN-1), Y);N Y:= Y + TALAFSTAND; I:= I + NY; UNTIL I >= YANTALINTV;END; (* ZTEGNAKSE *) 1PROCEDURE ZORDENPUNKTER ( BX : ZREALARRAY ;11 BY : ZREALARRAY ;11 PKT : Z20INTEGER ;11 VAR PX : ZINTEGERARRAY;13 VAR PY : ZINTEGERARRAY );3(* Indgang:G (BX(1), BY(1)) ... (BX(PKT), BY(PKT)) = Absolutte bruger koordinateG Udgang :G (PX(1), PY(1)) ... (PX(PKT), PY(PKT)) = Absolutte printer koordinatGM der svarer til brugerkoordinat-MK erne, men sorteret i stigendeKJ orden efter x-værdierne. DerJN findes ikke to punkter med sammeNG x-værdi. *)GVAR I, N, X, Y, : INTEGER;BEGIN* ZABSPKOORD (BX(1), BY(1), PX(1), PY(1));* FOR N:= 2 TO PKT DO BEGIN$ ZABSPKOORD (BX(N), BY(N), X, Y);$ I:= N - 1;+ WHILE (I > 0) AND (X < P(I)) DO BEGIN+< PX (I + 1):= PX (I);<< PY (I + 1):= PY (I);<2 I:= I - 1;2* END;* PX (I + 1):= X; PY (I + 1):= Y; END;END; (* ZORDENPUNKTER *) &PROCEDURE ZINTPOL (BX : ZREALARRAY ;&& BY : ZREALARRAY ;&' BPKT : Z20INTEGER ;'+ INTVL: ZPOSINTEGER ;+- MØNST: CHAR );-L(* Interpolerer punkterne (BX(i), BY(i)) for i = 1 til i = BPKT, ved hjælpLG af Newtons interpolationsformel med 4 punkter. Kurven vil gå igennem G punkterne (BX(i), BY(i)).= Indgang: BX (i) = X-værdier i absolutte brugerkoordinater.=D BY (i) = Funktionsværdier i absolutte brugerkoordinater.D" BPKT = Antalpunkter."E INTVL = Intervallængden, dvs. antal skridt langs x-aksenEG før den næste funktionsværdi udregnes ved hjælp afGF Newtons interpolationsformel, disse funktionsvær-F5 dier forbindes med rette linier.5G Et skridt er det mindste stykke vognen kan flytte.GH MØNST : Denne karakter vil blive brugt til at tegne kurven,HF med en undtagelse: 'M' angiver at mønsteret defi-FD neret ved sidste kald af proceduren ZDEFMØNSTERDN skal anvendes. *)NVAR I, X, PPKT , X1, X2, X3, X4, Y1, Y2, Y3, Y4 : INTEGER; F12, F23, F34 , F123, F234 ,# F1234 : REAL ;## PX, PY : ZINTEGERARRAY;# 'PROCEDURE TEGN (XSTOP, YSTOP: INTEGER);'BEGIN WHILE X < XSTOP DO BEGIN ZPSTREG (ZABS, X,M ROUND(Y1 + (X-X1)*(F12 + (X-X2)*(F123 + (X-X3)*F1234))), MØNST);M X:= X + INTVL; END;& ZPSTREG (ZABS, XSTOP, YSTOP, MØNST);&END; (* TEGN *) BEGIN- ZORDENPUNKTER (BX, BY, BPKT, PX, PY, PPKT);- X1:= PX (1); Y1:= PY (1); ZPSTREG (ZABS, X1, Y1, ' '); IF PPKT < 4? THEN FOR I:= 2 TO PPKT DO ZPSTREG (ZABS, PX(I), PY(I), MØNST)? ELSE BEGIN X2:= PX (2); X3:= PX (3); X4:= PX (4); Y2:= PY (2); Y3:= PY (3); Y4:= PY (4); F12:= (Y1 - Y2)/(X1 - X2); F23:= (Y2 - Y3)/(X2 - X3); F34:= (Y3 - Y4)/(X3 - X4);! F123:= (F12 - F23)/(X1 - X3);!! F234:= (F23 - F34)/(X2 - X4);!$ F1234:= (F123 - F234)/(X1 - X4);$ X:= X1 + INTVL; TEGN (X2, Y2); FOR I:= 5 TO PPKT DO BEGIN WHILE X < X3 DO BEGIN ZPSTREG (ZABS, X,M ROUND (Y1 + (X-X1)*(F12 + (X-X2)*(F123 + (X-X3)*F1234))), MØNST);M X:= X + INTVL;
END;
$ ZPSTREG (ZABS, X3, Y3, MØNST);$ X1:= X2; X2:= X3; X3:= X4; X4:= PX (I); Y1:= Y2; Y2:= Y3; Y3:= Y4; Y4:= PY (I); F12:= F23; F23:= F34; F34:= (Y3 - Y4)/(X3 - X4); F123:= F234;# F234:= (F23 - F34)/(X2 - X4);#& F1234:= (F123 - F234)/(X1 - X4);& END; TEGN (X3, Y3); TEGN (X4, Y4); END;END; (* ZINTPOL *) -PROCEDURE ZINITGRAFIK (GRAFIK : ZGRAFIKMODE);-BEGIN ZESC:= CHR (27); ZLF := CHR (10); ZUD.PIL:= 0; ZPUT (ZESC); IF GRAFIK = ZGROV THEN BEGIN& ZPUT ('3');&+ ZGRAFIK:= ZGROV;+ END ELSE BEGIN& ZPUT ('G');&* ZGRAFIK:= ZFIN;* END; ZDEFMØNST ('. ');8 ZKOORDSYS (ZHØJRE, ZOP, 0.0, 0.0, 20.0, 16.0, 20, 16);8END; (* ZINITGRAFIK *) BEGIN ZINITGRAFIK (ZGROV); % FOR N1:= 1 TO 20 DO BX20 (N1):= N1;% BY20 (1):= 0; BY20 (2):= 2; BY20 (3):= 4; ccccccccccc