APL-Journal - APL Germany e. V.
APL-Journal - APL Germany e. V.
APL-Journal - APL Germany e. V.
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>APL</strong>-<strong>Journal</strong><br />
Das Ergebnis der Verarbeitung mit demProgramm<br />
ALUAPPL_MATMULT ist<br />
·ALU_PM[Ó]·<br />
[0] ALU_PM<br />
[1] RC½ALU3_INIT<br />
[2] RC½ALUAPPL_PRODUKTIONSMATRIX<br />
·<br />
Bei der Lösung des Problems mit <strong>APL</strong> ist besonders interessant,<br />
dass die Matrizenmultiplikation unmittelbar mit einer<br />
eingebauten Funktion lösbar ist (Zeile 14).<br />
Produktionsmatrizen<br />
In diesem Teil geht es um das Verarbeiten von drei Arrays.<br />
Es wird als Beispiel das Verarbeiten von Produktionsmatrizen<br />
behandelt. Dabei soll bei bekannten Beziehungen<br />
zwischen Rohstoffen und Zwischenprodukten sowie der<br />
Beziehung von Zwischenprodukten zu Endprodukten bei<br />
gegebenen Endproduktmengen die Mengen der jeweiligen<br />
Rohstoffe ermittelt werden. Das Problem ist:<br />
Problem: Produktionsmatrix auswerten<br />
Gegeben:<br />
● Beziehung zwischen Rohstoffen und Zwischenprodukten<br />
Datei matrix-r2z.txt<br />
● Beziehung von Zwischen- zu Endprodukten<br />
Datei matrix-z2e.txt<br />
● Vektor an zu erzeugenden Endprodukten<br />
Datei vektor-ep.txt<br />
·ALUAPPL_PRODUKTIONSMATRIX[Œ]·<br />
[0] RC½ALUAPPL_PRODUKTIONSMATRIX;M1;M2;M3;RES;R;G_ERROR<br />
[1] G_ERROR½RC½0 ä INIT GLOBAL ERROR SIGNAL<br />
...<br />
[5] M1½READMAT 'matrix-r2z.txt' ä READ FROM FILE<br />
[6] ¸(0ôG_ERROR)/ER01 ä I/O ERROR<br />
[7] M2½READMAT 'matrix-z2e.txt' ä READ FROM FILE<br />
[8] ¸(0ôG_ERROR)/ER01 ä I/O ERROR<br />
[9] M3½,READMAT 'vektor-ep.txt' ä READ FROM FILE<br />
[10] ¸(0ôG_ERROR)/ER01 ä I/O ERROR<br />
[11] M3½((æM3),1)æM3<br />
[12] ¸((ý1ÆæM1)ô1ÆæM2)/ER02 ä CHECK PROPER RANK OF MATRICES<br />
[13] ¸((ý1ÆæM2)ô1ÆæM3)/ER02 ä CHECK PROPER RANK OF MATRICES<br />
[14] RES½M1+.õM2+.õM3 ä PRODUCTION MATRIX<br />
[15] 'prodmat.txt' ALUWRITEMAT RES<br />
[16] ¸(0ôG_ERROR)/ER04 ä PROBLEMS WRITING INVERTED MATRIX<br />
[17] HOST ALUSYSPATH,G_DIRSEP,'alu3-sigok.bat' ä TELL RESULT<br />
[18] ¸0<br />
...<br />
[27] ¸0<br />
·<br />
Ein Beispielablauf dazu:<br />
Gegeben sei die Beziehung Rohstoffe zu Zwischenprodukten<br />
in der Datei „matrix-a2z.txt“:<br />
Gesucht:<br />
● Menge der benötigten Rohstoffe<br />
Datei prodmat.txt<br />
Es werden hier also drei Arrays (zwei Matrizen und ein<br />
Vektor) verarbeitet. Da diese in einer beliebigen Reihenfolge<br />
gespeichert werden können, wird an dieser Stelle wieder deutlich,<br />
dass es eine wesentliche Vereinfachung ist, den Start der<br />
Verarbeitung an das Vorhandensein einer Triggerdatei zu<br />
binden. In der Funktion ALU_PM wird wieder zunächst das<br />
allgemeine Umfeld für die Verarbeitung ermittelt<br />
(ALU3_INIT). Der anwendungsbezogene Teil,<br />
● das Einlesen der Daten aus den Dateien „matrix-r2z.txt“,<br />
„matrix-z2e.txt“ und “vektor-ep.txt“,<br />
● die Verarbeitung und<br />
● das Bereitstellen des Ergebnisses in der Datei<br />
„prodmat.txt“<br />
geschieht in der Funktion ALUAPPL_MATMULT.<br />
die Beziehung von Zwischenprodukten zu Endprodukten<br />
in der Datei „matrix-z2e.txt:<br />
8 <strong>APL</strong> - <strong>Journal</strong> 2006, 25. Jg., Heft 1/2