home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / spezial / 15 / dok.asc next >
Encoding:
Text File  |  1989-06-15  |  79.6 KB  |  2,022 lines

  1.  
  2.               Numerische Mathematik
  3.  
  4.                         anschaulich dargestellt
  5.                           von Heinz Hagemeyer
  6.                           Karsten Gieselmann
  7.                           und Peter Kurzweil
  8.  
  9.  
  10. Der  Experimentator  hat Daten gesammelt. Wie sind
  11. diese auszuwerten. Welche Gesetzmäßigkeiten liegen
  12. den  Daten  zugrunde.  Was  ist zu tun. Handelt es
  13. sich  um eine lineare-, quadratische oder sonstige
  14. Funktion  ?  Liegen  die Daten exakt vor oder sind
  15. sie   mit   Streuungen  oder  gar  mit  Ausreißern
  16. behaftet?   Welche   Methoden   können  angewendet
  17. werden.    Gibt   es   Möglichkeiten   die   Daten
  18. aufzubereiten und sie dann graphisch darzustellen?
  19.  
  20. Strategien  zur Auswertung von Daten zu entwickeln
  21. ist  u.a.  die Aufgabe der numerischen Mathematik.
  22. Aber  auch  Integrale, die nicht geschlossen, d.h.
  23. formelmäßig gelöst werden können, können zumindest
  24. numerisch  berechnet werden. Wie aber sieht es mit
  25. Differenzialgleichungen  aus.  Wer nicht weiß, was
  26. das  ist,  für  den  ist  dieser Beitrag genau das
  27. Richtige!
  28.  
  29. Zum Schluß lernen Sie noch eine andere Möglichkeit
  30. zum Lösen linearer Gleichungssysteme kennen.
  31.  
  32. Damit  ist  das  Gebiet der numerischen Mathematik
  33. noch  lange  nicht  erschöft.  Der Kenner hoft auf
  34. eine Fortsetzung.
  35.  
  36. Inhalt :
  37.  
  38. Wertetabellen graphisch darstellen······················· Seite  2
  39.  
  40.    Beispiele :
  41.  
  42.     - Lösen von Differenzialgleichungen :·················Seite  5
  43.     - Freier Fall mit Luftwiderstand -
  44.     - Aufladung eines Kondensators -
  45.     - Gedämpfte Schwingung -
  46.  
  47.     - Differenzieren und Integrieren·-··················· Seite  8
  48.  
  49. Regression und Interpolation····························· Seite 10
  50.  
  51.    Lineare Regression·····································Seite 10
  52.      - Potenzfunktionen -
  53.      - Exponentialfunktionen -
  54.      - Logarithmusfunktionen -
  55.  
  56.    Quadratische Regression······························· Seite 15
  57.  
  58.    Interpolation mit kubischen Splines··················· Seite 16
  59.  
  60. Numerische Integration··································· Seite 19
  61.  
  62. Iterative Lösung eines linearen Gleichungssystems·········Seite 26
  63.  
  64.  
  65.  
  66.                   ---------------------------------
  67.                   Wertetabellen graphisch darstelen
  68.                   ---------------------------------
  69.  
  70. Es  kommt  oft vor, daß Daten in Form von Werteta-
  71. bellen  auszuwerten sind. Ein klassisches Beispiel
  72. hierfür  ist,  daß  von  einer  Funktion eine Wer-
  73. tetabelle  berechnet  wurde  mit  dessen Hilfe an-
  74. schließend  der  Funktionsgraph  zu  zeichen  ist.
  75. Klar,  daß diese Wertetabelle einfach per Programm
  76. erstellt werden kann.
  77.  
  78. Aber  nicht  immer  sind  die  Daten so einfach zu
  79. gewinnen.  Es  gibt  zahlreiche  Fälle,  wo  es so
  80. einfach  nicht  geht.  Man  denke nur an empirisch
  81. ermittelte   Daten,  an  numerische  Lösungen  von
  82. Differenzialgleichungen, an Ableitungen, die nicht
  83. ganz  einfach zu gewinnen sind etc.. In all diesen
  84. Fällen   ist   es  mühsam  die  Meßpunkte  in  ein
  85. Koordinatensystems  einzuzeichnen  um sie dann mit
  86. Hilfe von Kurvenlinealen zu verbinden. Wer hat bei
  87. dieser Arbeit noch nie geflucht ?
  88.  
  89.                                --------
  90.                                Die Idee
  91.                                --------
  92.  
  93.  
  94. ist, diese Arbeit sich durch ein Programm abnehmen
  95. zu   lassen.  Diese  Wertetabelle  muß  selbstver-
  96. ständlich  ein  bestimmtes Format besitzen. Um das
  97. Programm  so  universell  wie möglich einsetzen zu
  98. können, besteht dieses Format aus ASCII - Zeichen.
  99. Als  erster Wert einer Zeile muß der x - Wert (die
  100. unabhängige  Variable)  in  beliebiger Darstellung
  101. (z.B.  Gleitkommadarstellung  wie  3.4E-02 oder in
  102. "normaler"  Darstellung  wie  123.76)  eingetragen
  103. werden.  Es  folgt  mindestens ein Leerzeichen und
  104. dann  der  y  -  Wert.  Auf  diese  Weise kann die
  105. Wertetabelle   in  einer  beliebigen  Sprache  wie
  106. BASIC,  FORTRAN,  C, PASCAL oder - mit Hilfe eines
  107. Editors - von Hand erzeugt werden.
  108.  
  109. Wird  dem  Wert  ein  großes "P" vorangestellt, so
  110. wird   dieser  nicht  als  Punkt  des  Kurvenzuges
  111. sondern  als  singulärer Punkt interpretiert. Bei-
  112. spiel :
  113.  
  114. P 0.0000000000E+00 0.0000000000E+00
  115. P 1.0000000000E-01 8.3333333333E-01
  116. P 2.0000000000E-01 1.5972222222E+00
  117.  
  118.   0.0000000000E+00 0.0000000000E+00
  119.   1.0000000000E-01 8.3333333333E-01
  120.   2.0000000000E-01 1.5972222222E+00
  121.   3.0000000000E-01 2.2974537037E+00
  122.   4.0000000000E-01 2.9393325617E+00
  123.   5.0000000000E-01 3.5277215149E+00
  124.   6.0000000000E-01 4.0670780553E+00
  125.   7.0000000000E-01 4.5614882174E+00
  126.   8.0000000000E-01 5.0146975326E+00
  127.   9.0000000000E-01 5.4301394049E+00
  128.   1.0000000000E+00 5.8109611211E+00
  129.  
  130. Das  Programm  liest  nun  Zeile  für  Zeile diese
  131. Wertetabelle  ein.  Die  mit  einem "P" versehenen
  132. Wertepaare werden als Punkt (kleiner Kreis) in ein
  133. Koordinatensystem eingezeichnet, die anderen Werte
  134. werden  durch  Geraden verbunden. (Hier liegt auch
  135. die  Schwäche  des  Algorithmus, die Punkte müssen
  136. dicht   beieinander  liegen  sonst  entsteht  kein
  137. "glatter" Kurvenzug sondern eine "Fieberkurve").
  138.  
  139. Wird  in  die Tabelle eine Leerzeile eingefügt, so
  140. werden  die  nächsten  Daten  als  neuer Kurvenzug
  141. interpretiert.  Auf  diese  Art  und  Weise ist es
  142. möglich,   mehrere   Funktionsgraphen   in   einem
  143. Koordinatensytem  darzustellen. Dies ist ebenfalls
  144. möglich  durch  die  Eingabe mehrerer Dateien. Die
  145. Anzahl  wird  durch  die  Konstante MaxDateiAnzahl
  146. begrenzt  werden  müssen. Das Programm soll, kennt
  147. man die auszuwertende Datei(en) vorher, mit den(m)
  148. Dateinamen aufgerufen werden. Also so z.B.:
  149.                           GRAPHEN S.DAT V.DAT
  150.  
  151. Dann  werden  durch  das  Programm die angegebenen
  152. Dateien  ausgewertet.  Ohne  Parameter  aufgerufen
  153. fordert  das  Programm  die auszuwertenden Dateien
  154. "per Hand" an.
  155.  
  156. Das  Programm  eröffnet sicherlich eine große Zahl
  157. von Anwendungen. Einige von ihnen werden desweiten
  158. beschrieben.   Viel   Spaß  beim  Ausdenken  neuer
  159. Möglichkeiten.
  160.  
  161.                             ---------------
  162.                             Algorithmisches
  163.                             ---------------
  164.  
  165. Das  Programm,  welches  diese  Aufgabe übernimmt,
  166. finden  Sie auf der Sonderdiskette unter dem Namen
  167. GRAPHEN.PAS.  Es ist in der Sprache TURBO - Pascal
  168. 4.0  unter  Verwendung der Unit GRAPH und der UNIT
  169. PGraph aus der Toolbox 12/89 entwickelt worden.
  170.  
  171. Wenn  das  Programm  ohne Paramer aufgerufen wird,
  172. wird    zunächst    abgefragt,    welche   Dateien
  173. ausgewertet  werden sollen. Falls sich die Dateien
  174. nicht  im  aktuellen  Inhaltsverzeichnis  befinden
  175. oder  nicht  vorhanden  sind,  gibt  die Procedure
  176. DateiEingabe eine entsprechende Fehlermeldung aus.
  177. Die  eingegebenen  Namen  werden  in der Variablen
  178. Datei_Name  gespeichert, die Anzahl der eingebenen
  179. Dateien   in   der   Variablen   DateiAnzahl.  Die
  180. Procedure  wird Verlassen durch Eingabe von RETURN
  181. (Leerzeile) oder wenn MaxDateiAnzahl überschritten
  182. wird.
  183.  
  184. Danach  müssen  die  Parameter  zum  Zeichnen  des
  185. Koordinatensystems  eingegeben  werden. Die Grafik
  186. wird  initialisiert  und das Koordinatensystem mit
  187. den vorher eingegebenen Werten gezeichnet. Die Da-
  188. teien  werden  nun nacheinander verarbeitet, wobei
  189. auf dem Bildschirm der Dateiname ausgegeben wird.
  190.  
  191. Dabei  wird  zunächst  der  erste  Punkt ( = erste
  192. Zeile   der   ASCII   Datei)  eingelesen.  In  der
  193. PROCEDURE   Verwandle   werden  x  und  y  -  Wert
  194. voneinander   getrennt   und   in   reelle  Zahlen
  195. (Datentyp   Real)  umgewandelt.  Falls  dabei  ein
  196. Fehler   auftritt,  wird  dies  als  Fehlermeldung
  197. ausgegeben.
  198.  
  199. Die   Umrechnung   in   die  Bildschirmkoordinaten
  200. übernimmt  die  Procedure Umrechnung, die wiederum
  201. die  Procedure  Scale aus PGraph.pas aufruft. Dies
  202. ist so notwendig, weil PGraph ohne Clipping arbei-
  203. tet.     Liegt    ein    Punkt    außerhalb    des
  204. Koordinatensystems,  würde  PGraph  ihn  auch dort
  205. darstellen.   Die  Anweisung  SetViewPort  in  der
  206. Procedure  KoordViewPort  verhindert  dieses durch
  207. ClipOn.  Scale  liefert  dann leider falsche Werte
  208. zurück, die in der Procedure Umrechnung korrigiert
  209. werden. Wer will, mag Scale gleich passend ändern.
  210.  
  211. Ist  dem  Punkt ein "P" vorangestellt, wird dieser
  212. durch  die  Procedure  Mark  durch  einen  kleinen
  213. normgerechten  Kreis  im  Koordinatensystem darge-
  214. stellt.  Ansonsten  werden  die  x und y Werte den
  215. Variablen Xalt und Yalt zugewiesen.
  216.  
  217. Sobald das "P" nicht mehr auftritt, wird der erste
  218. Punkt  in  den  Variablen  Xalt  und  Yalt und der
  219. zweite  in  Xneu  und  Yneu gespeichert. Mit Hilfe
  220. dieser  4  Variablen  kann nun die erste Linie ge-
  221. zogen werden. Danach werden den "alten" Werten die
  222. "neuen"  Werte  zugewiesen  und  so wird Linie für
  223. Linie  gezogen,  bis  EOF  (End  Of File) erreicht
  224. wird.
  225.  
  226.  
  227.                     -------------------------------
  228.                     Das entscheidene Struktogramm :
  229.                     -------------------------------
  230.   
  231.  ┌────────────────────────────────────────────────────────────┐
  232.  │ Solange Datei nicht zu Ende                                │
  233.  │       ┌────────────────────────────────────────────────────┤
  234.  │       │ Lese erste Zeile                                   │
  235.  │       ├────────────────────────────────────────────────────┤
  236.  │       │ Verwandle die Zeile in die Zahlen Xalt, Yalt       │
  237.  │       ├────────────────────────────────────────────────────┤
  238.  │       │ Solange Datei nicht zu Ende                        │
  239.  │       │    ┌───────────────────────────────────────────────┤
  240.  │       │    │ Lese nächste Zeile                            │
  241.  │       │    ├───────────────────────────────────────────────┤
  242.  │       │    │ Verwandle die Zeile in die Zahlen Xneu,Yneu   │
  243.  │       │    ├───────────────────────────────────────────────┤
  244.  │       │    │ Ziehe Linie P(Xalt/Yalt) - P(Xneu/Yneu)       │
  245.  │       │    ├───────────────────────────────────────────────┤
  246.  │       │    │ Xalt := Xneu ; Yalt := Yneu                   │
  247.  └───────┴────┴───────────────────────────────────────────────┘
  248.  
  249. Liest  das  Programm nun eine Leerzeile ein werden
  250. die  anschliesend eingelesenen X und Y - Werte den
  251. Variblen  Xalt  (statt  Xneu) und Yalt zugewiesen.
  252. Das  bedeutet,  daß ein neuer Kurvenzug gezeichnet
  253. wird !
  254.  
  255. Großer Wert wurde auf die Fehlerbehandlung gelegt,
  256. da  die  Dateien  auch  von  Hand oder mit anderen
  257. Programmiersprachen  erstellt  werden  können. Die
  258. erledigt  die  Procedure  Fehler welche detalierte
  259. Fehlermeldungen an den Benutzer ausgibt.
  260.  
  261. Man  sieht, auch mit relativ einfachen Algorithmen
  262. lassen    sich   durchaus   brauchbare   Programme
  263. entwickeln. Es muß nicht immer gleich Backtracking
  264. oder ähnliches sein.
  265.  
  266.  
  267.  
  268.  
  269.     --------------------------------------------------------------
  270.     - Lösen von Differenzialgleichungen mit numerischen Methoden -
  271.     --------------------------------------------------------------
  272.  
  273.                           ---------------
  274.                           1. Freier Fall
  275.                           ---------------
  276.  
  277.  Der freie Fall eines Körpers wird als klassisches
  278.  Beispiel  in  jedem  Physikunterricht  behandelt.
  279.  Dabei   bleibt  der  Luftwiderstand  des  Körpers
  280.  jedoch unberücksichtigt. Wie verhält sich nun ein
  281.  Körper  mit Berücksichtigung des Luftwiderstandes
  282.  ?  Diese  Frage kann mit elementaren Methoden der
  283.  Physik  und  Mathematik nicht beantwortet werden,
  284.  oder doch? (vergl. Abb. 1)
  285.  
  286.  Betrachten  wir  den  Körper zum Zeitpunkt t = 0.
  287.  Dann  wirkt auf ihn - da er ja noch nicht fällt -
  288.  nur  die  Erdbeschleunigung  g = 9,81 m / s2. Für
  289.  einen "ganz kleinen" Zeitabschnitt t ändert sich
  290.  daran  so  gut wie nichts, so daß wir nach diesem
  291.  Zeitabschnitt folgende Geschwindigkeit v erhalten
  292.  :
  293.  
  294.                    v(t) = g ∙ t .
  295.  
  296.  Durch  diese  Geschwindigkeit  (obschon  sie noch
  297.  recht    klein    ist)   macht   sich   nun   der
  298.  Luftwiderstand  bemerkbar.  Durch Beobachtung hat
  299.  man  festgestellt,  daß  dieser  proportional dem
  300.  Quadrat der Geschwindigkeit ist. Es gilt also :
  301.  
  302.                  FL = - kw ∙ v (t) 2
  303.  
  304.  Das  "-"  Zeichen  drückt  aus, daß die durch den
  305.  Luftwiderstand  FL wirkende Kraft entgegengesetzt
  306.  der  Kraft  ist,  die durch die Erdbeschleunigung
  307.  hervorgerufen wird.
  308.  
  309.  Teilt man diese Gleichung auf beiden Seiten durch
  310.  die  Masse  m des Körpers, so erhält man nach dem
  311.  dynamischen Grundgesetz :
  312.  
  313.                                                kw
  314.         aL = - cw ∙ v (t)2         [ mit cw = -- ! ]
  315.                                                m
  316.  
  317.  und  somit  wirkt  auf  den  Körper  nunmehr  die
  318.  Gesamtbeschleunigung:
  319.  
  320.                       a = g - aL
  321.  
  322.  Mit  dieser  resultierenden  Gesamtbeschleunigung
  323.  erhalten wir für den nächsten Zeitabschnitt :
  324.  
  325.                v(t + t) = v(t) + a ∙ t
  326.  
  327.  Daraus    läßt   sich   nun   wieder   die   neue
  328.  Gesamtbeschleunigung berechnen usw. usf..
  329.  
  330.  Um  bei diesem Verfahren brauchbare Ergebnisse zu
  331.  erhalten, muß man die Zeitabschnitte t nur klein
  332.  genug  wählen.  Das  bedeutet, daß man sehr viele
  333.  Berechnungen  durchführen  muß, um z.B die Endge-
  334.  schwindigkeit  zu  ermitteln.  Dies ist nur durch
  335.  den  Einsatz  eines  programmierbaren Rechners in
  336.  einem vertretbaren Zeitaufwand möglich.
  337.  
  338.  Mit den elementaren Methoden der Mathematik, d.h.
  339.  ohne   Kenntnisse  der  Differenzialrechnung  und
  340.  speziell  der  Differenzialgleichungen  ließ sich
  341.  das    oben    beschriebene   Problem   vor   dem
  342.  Computerzeitalter   in  der  Schule  nicht  lösen
  343.  obschon  ein  freifallender  Körper im luftleeren
  344.  Raum  doch  ziemlich unwarscheinlich ist und weit
  345.  an der Realität vorbei geht.
  346.  
  347.  Damit erhalten wir folgendes Struktogramm :
  348.   
  349. ┌┬─────────────────────────────────────────────────────────────┬┐
  350. ││ Dateien zum Schreiben vorbereiten                           ││
  351. ├┼─────────────────────────────────────────────────────────────┼┤
  352. ││ Anfangswerte definieren und Eingabe des Luftwiderstandes    ││
  353. ├┼─────────────────────────────────────────────────────────────┼┤
  354. ││ Anfangswerte s(0) und v(0) in die Dateien schreiben         ││
  355. ├┴─────────────────────────────────────────────────────────────┴┤
  356. │           Zähle mit ts von 0 bis 5  (* Zeit in Sekunden *)    │
  357. │        ┌──────────────────────────────────────────────────────┤
  358. │        │  Zähle mit tn von 1 bis Round (1 / t)               │
  359. │        │       ┌──────────────────────────────────────────────┤
  360. │        │       │   t := ts + t ∙ tn                          │
  361. │ und    │       ├──────────────────────────────────────────────┤
  362. │ tue    │ und   │   a := g  - cw ∙ v²                          │
  363. │        │ tue   ├──────────────────────────────────────────────┤
  364. │        │       │   v := v + a ∙ t                            │
  365. │        │       ├──────────────────────────────────────────────┤
  366. │        │       │   s := s + v ∙ t                            │
  367. │        │       ├┬────────────────────────────────────────────┬┤
  368. │        │       ││  Schreibe s und v in die Dateien           ││
  369. ├────────┴───────┴┴────────────────────────────────────────────┴┤
  370. │  Dateien schließen                                            │
  371. └───────────────────────────────────────────────────────────────┘
  372.  
  373.  Die doppelte Zählschleife bedarf einer Erklärung:
  374.  
  375.  Selbstverständlich  ließe  sich  statt dessen die
  376.  benötigte Zeit t inerhalb einer REPEAT - Schleife
  377.  folgendermaßen zu berechnen :
  378.  
  379.                      t := t + t;
  380.  
  381.  Durch   ständige  Wiederholung  dieser  Anweisung
  382.  bekäme   man   in  der  Berechnung  von  t  große
  383.  Rundungsfehler,  die  doch  sehr  unschön wirken.
  384.  Dies verhindern die beiden Zählschleifen.
  385.  
  386.  Das  Programm  auf  der Sonderdiskette (FALL.PAS)
  387.  schreibt  die  berechneten  Daten  in  die beiden
  388.  Dateien  FALL-S.DAT  und  FALL-V.DAT und gibt sie
  389.  zur Kontrolle noch auf dem Bildschirm aus.
  390.  
  391.  
  392.                   ------------------------------
  393.                   2. Aufladung eines Kondensator
  394.                   ------------------------------
  395.  
  396.  
  397. Die  Aufladekurve  eines  Kondensators  (  uC(t) ,
  398. iC(t)  )  dürfte  jedem  Elektriker / Elektroniker
  399. bekannt  sein.  Doch wie kommt diese Kurve, dessen
  400. Gleichung  in  jeder  besseren  Formelsammlung  zu
  401. finden ist, zustande ? (Abb. 2)
  402.  
  403. Auch  hier  gehen  wie wieder wie beim freien Fall
  404. vor.   Zum   Zeitpunkt   t   =   0   beträgt   die
  405. Kondensatorspannung :
  406.  
  407.                  uC(0) = 0 ( Volt )
  408.  
  409. Demnach fließt ein Strom von :·············u0 - uC
  410. ···································iC(0) = -------
  411. ··············································R
  412.  
  413. Dieser  Strom  lädt  den Kondensator auf. Für eine
  414. "sehr   kleine"  Zeit  t  kann  er  als  konstant
  415. angenommen  werden,  so  daß  nach dieser Zeit die
  416. Spannung am Kondensator sich mit :
  417.  
  418.                     Q = C * U
  419.  
  420. errechnet :
  421. ····································iC(t - t)
  422.               uC (t) = uC(t - t) + ----------
  423. ········································C
  424.  
  425.  
  426. Wählt  man  die Zeit t klein genug, so erhält man
  427. durchaus  brauchbare  Ergebnisse.  Auch hier gilt,
  428. daß  sich  diese Berechnungen nur dann durchführen
  429. lassen,  wenn  man  einen  Computer  einsetzt. Das
  430. Program  KOND.PAS auf der Sonderdiskette zeigt die
  431. Realisierung  dieses  Ansatzes in der Sprache Pas-
  432. cal.  Auch  hier  wird  eine  Wertetabelle auf dem
  433. Bildschirm  ausgegeben und gleichzeitig werden die
  434. Dateien  U.DAT und I.DAT erzeugt, die man dann mit
  435. GRAPHEN.PAS auswerten kann.
  436.  
  437. Hier ist die maßgebliche Schleife in PASCAL :
  438.  
  439.   
  440. FOR  ts  := 0 TO te DO               { Fuer jede volle Sekunde }
  441.      FOR tn := 1 TO Round (1/dt) DO  { ein paar mal }
  442.      BEGIN
  443.          t  := ts + t * tn ;       { Neue Werte be- }
  444.          Uc := Uc + Ic/C * t ;     {  rechnen und }
  445.          ic := (U0 - Uc) / R ;
  446.          Schreibe ;                 { in die Datei schreiben }
  447.      END;
  448.  
  449. Auch  hier wurde wieder eine doppelte Zählschleife
  450. zur  Berechnung  der  Werte  für  t realisiert, um
  451. Rundungfehler  zu verhindern. Das Schreiben in die
  452. Dateien  erledigt die PROCEDURE Schreibe. Das kom-
  453. plette   Programm   finden   Sie  wieder  auf  der
  454. Sonderdiskette.  Es  läßt  sich  bequem  in andere
  455. Sprachen übertragen.
  456.  
  457. Die  Darstellung  der  mit  dem Programm erzeugten
  458. Daten mit GRAPHEN.PAS zeigt Abb. 5
  459.  
  460.  
  461.                    -----------------------
  462.                    3. Gedämpfte Schwingung
  463.                    -----------------------
  464.  
  465.  
  466. Bei    einer    freien    Schwingung    wird   ein
  467. schwingungsfähiges  System  nach einmaligem Anstoß
  468. sich  selbst überlassen, d.h. es wirken keine wei-
  469. teren  Kräfte  von  außen auf das System. Dies ist
  470. wiederum sehr unrealistisch, da Luftwiderstand und
  471. Reibung  die  Schwingung  allmählich zum Abklingen
  472. führen.
  473.  
  474. Um  dies  zu untersuchen nehmen wir das System wie
  475. in  der  Abb.  3  gezeigt an. Dabei wirken auf die
  476. Masse m des Körpers folgende Kräfte :
  477.  
  478. 1.) Die  rücktreibende  Kraft  FF der Feder. Diese
  479.     ist  proportional  zur Auslenkung s der Feder,
  480.     d.h. es gilt :
  481.  
  482.                         FF = - fk ∙ s ( fk : Federkonstante )
  483.  
  484. 2.) Eine  Dämpfungskraft  FD,  welche proportional
  485.     zur Geschwindigkeit v der Masse m ist, d.h. es
  486.     gilt :
  487.  
  488.                         FD = - D ∙ v (D : Dämpfungskonstante)
  489.  
  490. Wird  die  Masse  der  Feder nicht berücksichtigt,
  491. dann ergibt sich die Beschleunigungskraft mit :
  492.  
  493.                          F = FD + FF
  494. Somit  erhält  man für die auf das System wirkende
  495. Beschleunigung :
  496.  
  497. ·······························s(t) ∙ FK + D ∙ v(t)
  498. ·················a(t·+·t)·=·-·--------------------
  499. ········································m
  500.  
  501. Diese  Beschleunigung ist wiederum für einen "sehr
  502. kleinen"  Zeitabschnitt  t  konstant, so daß sich
  503. daraus  analog zum freien Fall die Geschwindigkeit
  504. und der zurückgelegte Weg berechnen lassen.
  505.  
  506. Das Programm SCHWINGUNG.pas auf der Sonderdiskette
  507. zeigt die Realisierung dieser Überlegungen. In der
  508. Abb. 4 sieht man sehr schön, wie diese Methode dem
  509. tatsächlichem Zeitverhalten entspricht.
  510.  
  511.  
  512.  
  513.                        ------------------------
  514.                        4. Infinitisimalrechnung
  515.                        ------------------------
  516.  
  517. Unter  der  Infinitisimalrechnung versteht man die
  518. Zusammenfassung      von     Differenzial-     und
  519. Integralrechnung kurz - die klassische Analysis.
  520.  
  521. Hier   wurde   ein   Algorithmus  entwickelt,  der
  522. folgendes leistet :
  523.  
  524. - Eine beliebige Funktion tabellieren
  525. - Von  dieser  Funktion  die  1.  und 2. Ableitung
  526.   tabellieren und
  527. - Die Stammfunktion dieser Funktion tabellieren.
  528.  
  529. Die  dabei  entstehenden  Wertepaare  (x/y) werden
  530. wiederum  zwecks  Auswertung  durch GRAPHEN.PAS in
  531. eine Datei (INFI.DAT) eingeschrieben.
  532.  
  533.  
  534.  
  535.                        ------------------------
  536.                        Verwendete Algorithmen :
  537.                        ------------------------
  538.  
  539. I Differenzation :
  540.  
  541. Verwendet  man  bei der numerischen Berechnung die
  542. Definition der Ableitung einer Funktion :
  543.  
  544. ·······························f(x+x) - f(x)
  545. ···············f'(x) = lim···· --------------
  546. ······················x -> 0········x
  547.  
  548. so  erhält  man nur ungenaue Werte. Besser ist es,
  549. wenn  die  Ableitung verwendet wird, die sich nach
  550. der Taylerreihenentwicklung ergibt :
  551.  
  552. ·······························f(x+x) - f(x-x)
  553. ···············f'(x) = lim···· -----------------
  554. ·····················x -> 0······· 2 ∙ x
  555.  
  556. Dies  kann  man sich auch anschaulich klar machen.
  557. (Vergl. Abb. 10).
  558.  
  559. Entsprechend erhält man für :
  560.  
  561.  
  562. ·································f'(x+x) - f'(x-x)
  563. ···············f''(x) = lim····· -------------------
  564. ·······················x -> 0········· 2 ∙ x
  565.  
  566.  
  567. Setzt  man  in dieser Formel den o.a. Term ein, so
  568. erhält    man    die   im   Programm   verwendeten
  569. Gleichungen.
  570.  
  571.  
  572. II. Integration :
  573.  
  574. Die Integration wurde nach der Doppelstreifenregel
  575. berechnet.    Diese    ist   die   Grundform   der
  576. Simpsonschen  Regel,  welche  man  in  jedem guten
  577. Mathematikbuch  findet.  (U.a.  Krohn  -  Rattay :
  578. Mathematik für technische Berufe, Verrlag Handwerk
  579. u. Technik). Näheres entnehme man auch dem Beitrag
  580. von  Carsten Gieselmann : "Numerische Integration"
  581. .
  582.  
  583. Abb.  6  zeigt  die  Auswertung  der  durch INFINI
  584. gewonnenen Daten am Beispiel der Funktion f : f(x)
  585. = x²
  586.  
  587. Das   Programm   befindet  sich  unter  dem  Namen
  588. INFI.PAS auf der Sonderdiskette.
  589.  
  590.  
  591.  
  592.                          ----------
  593.                          REGRESSION
  594.                             & Interpolation
  595.                          ----------
  596.  
  597.                      - Auswertung von Meßwerten -
  598.  
  599.  
  600. Wer  hat  noch  nie vor der Aufgabe gestanden, ein
  601. paar  Meßpunkte - gleich wie diese entstanden sind
  602. - in ein Koordinatensystem zu bringen. Und wer hat
  603. noch nie den Fehler dabei gemacht, diese Meßpunkte
  604. mit  Hilfe  eines Lineals (schließlich will man ja
  605. sauber  zeichnen  und mit dem Kurvenlineal hat man
  606. zu  wenig  Übung) von Punkt zu Punkt zu verbinden.
  607. Dies  ist  zwar  sauber,  aber  falsch.  Da taucht
  608. natürlich die Frage auf, wenn nicht so, wie dann ?
  609. Welche  Methode ist die richtige? Das kann eigent-
  610. lich   nur   dann  beantworten  werden,  wenn  der
  611. mathematische   Zusammenhang   der   Meßergebnisse
  612. bekannt   ist.   Wie  sind  sie  zustandegekommen?
  613. Welcher  physikalische  Zusammenhang  ist gegeben.
  614. Sind  die Meßergebnisse nahezu korrekt oder liegen
  615. Fehler (Streuungen) vor. Hat man es sogar mit Aus-
  616. reißern  zu  tun, die die Meßergebnisse total ver-
  617. fälscht haben, so daß sie nahezu unbrauchbar sind?
  618.  
  619. Zur  Analyse  des des Problems werden verschiedene
  620. Methoden   angeboten   die  zur  Erstellung  eines
  621. Datensatzes führen. Dieser wird dann wiederum, wie
  622. gehabt,   durch  das  universelle  Graphikprogramm
  623. GRAPHEN.PAS ausgewertet.
  624.  
  625.  
  626.                           --------------------
  627.                           I Lineare Regression
  628.                           --------------------
  629.  
  630.                     Approximation durch eine Gerade
  631.  
  632.  
  633.                            (nach C.F. Gauß)
  634.  
  635. Ist   bei   den   Meßpunkten   bekannt,   daß  die
  636. aufgenommene  Funktion einer linearen Funktion der
  637. Form  f(x)  = mx + b entstammen, so sind bei einer
  638. optimalen  Verbindung  die  beiden Koeffizienten m
  639. und  b  zu  bestimmen.  Geht man unbefangen an die
  640. Sache  heran,  so  stellt man fest, daß es mehrere
  641. (genau : unendlich viele) Möglichkeiten gibt, eine
  642. Gerade  durch  die  Reihe  der Meßpunkte zu legen.
  643. Welche ist die optimale ?
  644.  
  645. Hier  hilft  die  Mathematik  weiter. Die optimale
  646. Gerade erhält man durch folgende Definition :
  647.  
  648. m  und  b  sind  so zu wählen, daß das Quadrat der
  649. Summe  der  Abstände zwischen den Meßwerten an den
  650. Stellen xi und den Funktionswerten f(xi) = mxi + b
  651. zu  einem  Minimum wird. Man spricht dabei von der
  652. Methode der kleinsten Fehlerquadrate.
  653.  
  654.           Mathematisch ausgedrückt : Σ (xi - f(xi))2 = Minimum
  655.  
  656. Man kann zeigen, daß es nur eine Funktion f(x) mit
  657. der    o.a.    Eigenschaft    gibt,   diese   also
  658. Eindeutigkeit  ist.  Doch wie sind das m und das b
  659. zu  bestimmen  ? Eine mathematische Herleitung ist
  660. nur  mit  Hilfe partieller Ableitungenden möglich.
  661. Diese  ist  in  (fast)  jedem Buch über numerische
  662. Mathematik  bzw. Differenzialrechnung beschrieben.
  663. Eine  gut  lesbare  Darstellung findet man in (1).
  664. Hier soll nur der Algorithmus zur Berechnung von m
  665. un b angegeben werden.
  666.  
  667. 1.  Man  berechne  aus den Meßwerten xi und yi die
  668. folgende Summen :
  669.  
  670.                    Σ xi , Σ yi , Σ xi∙yi und Σ xi2
  671.  
  672. 2.  Aus Σ xi und Σ yi berechne man die Mittelwerte
  673. xm  und  ym  indem man die Summen durch die Anzahl
  674. der Meßwerte dividiert.
  675.  
  676. 3.   Dann   erhält   man   die  Lösungen  aus  den
  677. Gleichungen :
  678.  
  679.                      Σ xi∙yi - n ∙ xm ∙ ym
  680.     i)           m = ______________________
  681.                        Σ xi2   - n ∙ xm2
  682.  
  683.      ii)         b = ym - m ∙ xm
  684.  
  685. wobei das Summenzeichen Σ folgendermaßen definiert
  686. ist :
  687.  
  688.                  Σ xi = x1 + x2 +  ... + xn
  689.  
  690. Beispiel :
  691.   
  692.   i         x         y     x ∙ y        x2
  693. ____________________________________________
  694.   1       1.0       4.2       4.2       1.0
  695.   2       2.0       8.5      17.0       4.0
  696.   3       3.0      12.7      38.1       9.0
  697.   4       4.0      17.2      68.8      16.0
  698. ___________________________________________
  699.   Σ      10.0      42.6     128.1      30.0
  700.   
  701.               10.0                  42.6
  702.   ==>   xm = ______── = 2.5   ym = _______ = 10.65 und damit
  703.                4                      4
  704.   
  705.              128.1 - 4 ∙ 2.5 ∙ 10.65
  706.         m = ________________________ = 4.32
  707.                   30.0 - 4 ∙ 2.5 2
  708.   
  709.         b = 10.65 - 4.32 ∙ 2.5 = - 0.15
  710.  
  711. Doch   wie   berechnet   man  eine  solche  Summe?
  712. Sicherlich  ist diese Frage nur für den "Anfänger"
  713. interessant.   Nachstehend   der  Algorithmus  zur
  714. Berechnung  einer  beliebigen  Summe in Form eines
  715. Struktogramms :
  716.  
  717.   
  718. ┌──────────────────────────────────────────────┐
  719. │  Summe := 0                                  │
  720. ├──────────────────────────────────────────────┤
  721. │  Zähle mit i von 1 bis n                     │
  722. │        ┌─────────────────────────────────────┤
  723. │  und   │  Berechnung Summand                 │
  724. │  tue   ├─────────────────────────────────────┤
  725. │        │  Summe := Summe + Summand           │
  726. └────────┴─────────────────────────────────────┘
  727.  
  728. Die  beiden  Anweisungen  Berechnung  Summand  und
  729. Summe  :=  Summe  +  Summand  können ggf. zu einer
  730. Anweisung zusammengefaßt werden. Das folgende Bei-
  731. spiel   in   Pascal   zeigt   die  Berechnung  der
  732. benötigten Summen :
  733.   
  734.      sumx  := 0; sumy  := 0;    { Vorbesetzen der Summen         }
  735.      sumxy := 0; sumxx := 0;
  736.   
  737.      FOR  i:=1  to  n  DO  {  Für  jeden Meßpunkt       }
  738.      BEGIN xr := x[i];     { Zwischenwert, da einfacher }
  739.           yr    := y[i];        { zu schreiben                  }
  740.           sumx  := sumx  + xr;  { Berechnung der Summen         }
  741.           sumy  := sumy  + yr;         {      "                 }
  742.           sumxy := sumxy + xr*yr;      {      "                 }
  743.           sumxx := sumxx + sqr(xr)     {      "                 }
  744.      END;
  745.  
  746. Den  vollständigen  Algorithmus finden Sie auf der
  747. Sonderdiskette  in der Funktion Berechne_m_b (File
  748. REGLIN.PAS)  wieder,  wobei  diese noch zusätzlich
  749. die  evtl. mögliche Division durch Null (Σ xi2 - n
  750. ∙  xm2  =  0) abprüft. Das ist z.B. dann der Fall,
  751. wenn nur ein Meßpunkt (evtl. auch mehrmals) einge-
  752. geben  wurde.  In diesem Fall ist keine eindeutige
  753. Gerade  durch  den singulären Punkt zu legen - die
  754. Funktion  Lineare_Regression  wird  mit einer Feh-
  755. lermeldung abgebrochen.
  756.  
  757. Doch  wie  gut ist eine solche Approximation, d.h.
  758. wie   genau   wird  die  berechnete  Funktion  den
  759. tatsächlichen Meßwerten gerecht ? Auskunft darüber
  760. gibt der sogenannte Korellationskoeffizient r :
  761.   
  762.                   Σ (yi - ym)(xi - xm)2
  763.          r =  _______________________________
  764.               √ [ Σ (yi - ym)2 Σ (xi - xm)2 ]
  765.  
  766. den  man nach der Berechnung von m und b bestimmen
  767. kann. Man kann zeigen:
  768.  
  769.                                │r│ ≤ 1
  770.  
  771. Liegt  der  Betrag  von r zwischen 0.4 und 0.6, so
  772. spricht man von einer mittleren, liegt er zwischen
  773. 0.6  und 0.8 von einer hohen und liegt er zwischen
  774. 0.8  und 1.0 von einer sehr hohen Korellation. Man
  775. beachte     aber,     daß     ein    sehr    hoher
  776. Korellationskoeffizien  nichts über einen etwaigen
  777. kausalen   Zusammenhang   zwischen   der  linearen
  778. Funktion und den Meßpunkten aussagen kann. Es gibt
  779. gute Gegenbeispiele dafür (Sogenannte Schein- oder
  780. Unsinnskorellationen    z.B.    der   Zusammenhang
  781. zwischen   der   Kleidergröße  und  der  Güte  der
  782. Handschrift  in  den  Klassen 1 bis 6). Diese sind
  783. gar  nicht  so  selten  und oft nur sehr schwer zu
  784. entlarven. Der Korrelationskoeffizient beweist gar
  785. nichts,  er  weist  nur  auf  etwas hin, was einer
  786. genaueren Untersuchung bedarf.
  787.  
  788. Im  Programm  wurde auf die Berechnung und Ausgabe
  789. von  r  verzichtet. An Hand des Graphens läßt sich
  790. beurteilen  wie gut in ersten Näherung die Lineare
  791. Regression  ist. Als aufmerksamer Leser müßten Sie
  792. in   der   Lage  sein,  diese  Berechnung  -  wenn
  793. gewünscht  -  in  das Programm einzufügen. Ist die
  794. Approximation  Ihnen  nicht  gut genug, bietet wir
  795. Ihnen  noch  mehrere andere Möglichkeiten an, Ihre
  796. Meßwerte auszuwerten.
  797.  
  798.  
  799.                           -------------------
  800.                           II Potenzfunktionen
  801.                           -------------------
  802.  
  803. Potenzfunktionen   gehören   zu   der   Sorte  von
  804. Funktionen,  die  sich durch Umrechnen auf lineare
  805. Funktionen  zurückführen  lassen. Allgemein lautet
  806. die Gleichung einer Potenzfunktion :
  807.  
  808.                             f : f(x) = b∙ax
  809.  
  810. Durch  beidseitiges Logarithmieren (hier zur Basis
  811. e) erhält man :
  812.  
  813.                       f : ln (f(x)) = ln (b∙ax)
  814.                                      = ln (b) + ln (ax)
  815.                                      = ln (b) + x∙ln (a)
  816.  
  817. Paßt  man  nun  den  Meßdatensatz entsprechend an,
  818. kann  man  ohne  weiteres  die bisher besprochenen
  819. Verfahren  zur  Auswertung  von Daten heranziehen,
  820. von  denen vermutet wird, daß deren mathematischer
  821. Zusammenhang  mit einer Potenzfunktion beschrieben
  822. werden   kann.   Dazu   berechnet   man  einen  2.
  823. Meßdatensatz durch :
  824.  
  825.                FOR i := 1 TO n DO
  826.                BEGIN
  827.                    x[i] := Ln (x[i]); y[i] := Ln(y[i]);
  828.                END;
  829.  
  830. Mit   diesem   Satz  führt  man  nun  die  lineare
  831. Regression  durch  und  bekommt so die Werte von a
  832. und  b. Bei der Tabelierung der Funktionswerte ist
  833. dann zu rechnen :
  834.  
  835.               y := b∙a^x
  836.  
  837. Da  PASCAL keinen Potenzoperator besitzt, muß dies
  838. umgerechnet werden in:
  839.  
  840.               y := b*EXP (x*Ln(a));
  841.  
  842. Das  Verfahren ist nicht auf alle Potenzfunktionen
  843. anwendbar. Es gilt nur für x,y,a ε î+ ( x > 0, y >
  844. 0 und a > 0).
  845.  
  846.  
  847.                        -------------------------
  848.                        III Exponentialfunktionen
  849.                        -------------------------
  850.  
  851. Auch Exponentialfunktionen der Form :
  852.  
  853. ····························f··:··f(x)··=··a∙b1cx läßt sich zunächst
  854.  
  855. umwandeln in :·····<=>······f··:··f(x)··=··a∙ecx∙ln(b)
  856.  
  857. ···················<=>······f··:··f(x)··=··a∙ebx
  858.  
  859. Diese  Gleichung läßt sich durch logarithmieren in
  860. eine lineare Form umwandeln :
  861.  
  862.                         ln (f(x)) = ln (a∙ebx)
  863.                                   = ln (a) + ln (ebx)
  864.                                   = ln (a) + b∙x
  865.  
  866. Hier wird der 2 Meßdatensatz gewonnen durch :
  867.  
  868.                  FOR i := 1 TO n DO y[i] := Ln (y[i]);
  869.  
  870. Die  Umrechnung  fürs  tabellieren  geschieht dann
  871. durch die Anweisung :
  872.  
  873.                  y := a*EXP(b*x);
  874.  
  875. Auch hier gilt wieder, daß a,b,x ε î+ sein müssen.
  876.  
  877.  
  878.                       --------------------------
  879.                       VI Die Logarithmusfunktion
  880.                       --------------------------
  881.  
  882. der Form f : f(x) = a + b∙ln(x) liegt schon linear
  883. vor.  Hier  muß  nur  noch  jeder  x  - Wert durch
  884. logarithmieren  umgewandelt  werden  und  bei  der
  885. Tabellierung    die    o.a.    Funktionsvorschrift
  886. angewendet werden. Schon ist man fertig.
  887.  
  888. Alle  bisher  besprochenen  Verfahren  lassen sich
  889. sowohl  normal,  d.h.  nur mit Hilfe der Gaußschen
  890. Fehlerquadrate,  als  auch  mit  der  im  Heft be-
  891. schriebenen  Methode  des ROBUST FITTING anwenden.
  892. Wie gut dies funktioniert, zeigen die Abb. 8 und 9
  893. wo   jeweils   einer   Potenzfunktin   und   einer
  894. Exponentialfunktion  "von Hand" ein einzelner Feh-
  895. ler aufgeprägt wurde. Man sieht deutlich, wie sich
  896. die  Methode der Gaußquadratur aus der Bahn werfen
  897. läßt  -  also  versagt  -  während  ROBUST FITTING
  898. brauchbare Resultate liefert.
  899.  
  900. Bei allen bisher beschriebenen Verfahren wurde der
  901. Meßdatensatz in zwei ARRAY's [1 .. Nmax] gehalten.
  902. Die Übergabe an Funktionen und Prozeduren erfolgte
  903. stets als CALL by Name. Dies hat einzig und allein
  904. den  Grund,  den  Speicher  klein  zu  halten,  da
  905. Matrizen bekanntlich "Speicherfresser" sind.
  906.  
  907.  
  908.  
  909.  
  910.                        -------------------------
  911.                        V Quadratische Regression
  912.                        -------------------------
  913.  
  914.                    Approximation durch eine Parabel
  915.                        (Funktion 2.ten Grades )
  916.  
  917.  
  918. Genügt  die  lineare  Approximation nicht, so kann
  919. man  versuchen,  die Meßpunkte durch eine Funktion
  920. 2.ten  Grades zu approximieren. Bekannterweise ist
  921. diese gegeben durch :
  922.  
  923.                          f(x) = ax2 + bx + c
  924.  
  925. wobei   jetzt  die  Koeffizienten  a,b  und  c  zu
  926. bestimmen  sind.  (Man  beachte,  dies  ist  keine
  927. Potenzfunktion,  diese  hätte die Gleichung f(x) =
  928. b∙x²  !)  Das  ist natürlich nicht ganz so einfach
  929. wie vorhin, schließlich sind jetzt 3 Unbekannte zu
  930. berechnen.  Geht  man  wieder nach der Methode der
  931. kleinsten  Fehlerquadrate vor, so bekommt man fol-
  932. gendes  lineares  Gleichungssystem  zur Bestimmung
  933. von a, b und c :
  934.   
  935.          a ∙ Σ xi2 + b ∙ Σ xi  + c ∙ Σ 1   = Σ yi
  936.          a ∙ Σ xi3 + b ∙ Σ xi2 + c ∙ Σ xi  = Σ (xi ∙ yi)
  937.          a ∙ Σ xi4 + b ∙ Σ xi3 + c ∙ Σ xi2 = Σ (yi ∙ xi2)
  938.  
  939.                   (Man beachte : Σ 1 = n )
  940.  
  941. Die  Koeffizienten dieses Gleichungssystems werden
  942. durch  Summenbildung erzeugt. Das Gleichungssystem
  943. kann mit hinreichend bekannten Verfahren, wie z.B.
  944. der   Cramerschen  Regel  (Determinantenverfahren)
  945. gelöst  werden.  Hier  gibt  es  Fälle,  wo  durch
  946. unsinnige  Eingaben  das  Lineare Gleichungssystem
  947. nicht  eindeutig  lösbar ist. Dann ist die Koeffi-
  948. zientendeterminate  =  0  und  die Berechnung wird
  949. üblicherweise mit einer Fehlermeldung abgebrochen.
  950.  
  951. Hinweis  : Die Berechnung der Ausgleichgeraden und
  952. der   Ausgleichsparabel   ist   auch  möglich  bei
  953. mehrmaliger  Eingabe des gleichen x - Wertes. Dies
  954. ist   auch   realistisch   :   bei   einwandfreien
  955. Meßmethoden  können  durchaus  die  gleichen Werte
  956. mehrmals    gemessen    werden.    Bedingt   durch
  957. Meßungenauigkeiten  etc.  entstehen  dabei  in der
  958. Regel   andere  Meßergebnisse.  Dies  stört  nicht
  959. weiter.  Nur wenn nur ein Punkt (genauer nur ein x
  960. -  Wert) eingegeben wurde, kann das Verfahren kein
  961. eindeutiges  Ergebnis liefern. Die Folge wäre eine
  962. Division  durch Null, welche im Programm durch ge-
  963. eignete Abfragen verhindert werden sollte.
  964.  
  965. Ausgleichsfunktionen  3, 4, .. n-ten Grades lassen
  966. sich  im  Prinzip  genau  so aufstellen. Man kommt
  967. dann  auf  lineare Gleichungssysteme n-ten Grades.
  968. Deren Lösung macht im allgemeinen keine Schwierig-
  969. keit, jedoch haben die Funktionen die Eigenschaft,
  970. daß  sie mitunter stark oszillieren (stark hin und
  971. her   schwingen).   Sie   sind   daher   für  eine
  972. Appriximation nicht so gut geeignet.
  973.  
  974.  
  975.  
  976.                           ------------------
  977.                           VI Interpolatition
  978.                           ------------------
  979.  
  980.                       - durch kubische Splines -
  981.  
  982. Genügt  auch die quadratische Regression nicht, so
  983. bleiben  noch  mehrere  Wege  offen : entweder man
  984. versucht  eine  Regression mit Funktionen noch hö-
  985. heren   Grades   bzw.   nehme  man  einen  anderen
  986. Funktionstyp oder man verbindet einfach die Punkte
  987. miteinander (Aber bitte nicht mit einem Lineal !).
  988. Dann   erhält  man  eine  Funktion  f(x)  mit  der
  989. Eigenschaft  f(xi)  =  yi,  d.h.  der  entstehende
  990. Kurvenzug  geht  genau  durch  die  Meßpunkte.  In
  991. diesen  Fällen spricht man von Interpolation. Dies
  992. könnte u.a. dadurch geschehen, daß man durch die n
  993. -  Meßpunkte eine rationale Funktion vom Grade n -
  994. 1 legt. Bekanntlich ist das immer möglich :
  995.  
  996. 2  Punkte  lassen  sich immer durch eine Gerade (=
  997. rationale  Funktion 1.ten Grades) verbinden. Durch
  998. 3 Punkte läßt sich immer eine Parabel legen, bei 4
  999. Punkten benötigt man eine rationale Funktion 3.ten
  1000. Grades usw. usf.. Wo ist das Problem ?
  1001.  
  1002. Geht  man  nach  dieser  Methode vor, so stört der
  1003. Fundamentalsatz der Algebra ganz erheblich. Dieser
  1004. besagt,  daß  eine  rationale Funktion vom Grade n
  1005. genau  n  Nullstellen  besitzt. Dabei müssen diese
  1006. nicht,  können  aber alle reell sein. Das bedeutet
  1007. in  der  Praxis,  daß die berechnete Funktion sehr
  1008. oft die x - Achse schneidet. Der dabei entstehende
  1009. Kurvenzug   gibt   dann   nicht   den   erwarteten
  1010. Funktionsverlauf  wieder,  da er stark oszilliert.
  1011. Abhilfe schafft hier folgende Überlegung :
  1012.  
  1013. Man interpoliere die gegebenen Meßpunkte mit Hilfe
  1014. einer  rationalen Funktion von möglichst niedrigem
  1015. Grade   intervallweise.   Dabei  sollen  sich  die
  1016. Nahtstellen   glatt   aneinanderfügen,   d.h.  die
  1017. Ableitungen    der    intervallweise   definierten
  1018. Funktionen müssen an den Schnittstellen gleichgroß
  1019. sein  (keine  Ecken !). Weiter wird gefordert, daß
  1020. die  Länge  der  Kurve  zu einem Minimum wird. Man
  1021. sieht,   ohne  Kenntnisse  der  Differenzial-  und
  1022. Integralrechnung kommt man auch hier nicht weiter.
  1023.  
  1024. Funktionen,  welche  die o.a. Forderungen erfüllen
  1025. sind  vom Grade 3 und heißen kubische Splines. Die
  1026. mathematische  Herleitung  ist u.a. in (2) und (3)
  1027. nachzulesen. Die Vorteile dieses Verfahrens sind :
  1028.  
  1029. -  Zur Berechnung sind kubische Splines wesentlich
  1030. handlicher   als   rationale   Funktionen  höheren
  1031. Grades. Dies gilt auch für die Ableitungen.
  1032.  
  1033. -   Kubische  Splines  geben  im  allgemeinen  den
  1034. Kurvenverlauf   besser   wieder,  der  entstehende
  1035. Fehler  wird  kleiner. Sie wirken "glättend" haben
  1036. "geringere   Welligkeit"   und   "beruhigen"   die
  1037. Funktion.
  1038.  
  1039. -   Hervorragend   geeignet  sind  sie,  wenn  die
  1040. Meßpunkte  in  exakter Form vorliegen, wie das z.B
  1041. bei  durch  n  Punkte  gegebenen Profilen der Fall
  1042. ist.
  1043.  
  1044. Ihren   Namen   haben  diese  Funktionen  von  dem
  1045. gleichnamigen  biegsamen  Kurvenlineal (englisch :
  1046. spline ).
  1047.  
  1048. Algorithmus zur Berechnung der kubischen Splines :
  1049.  
  1050. Die Funktion, welche wir suchen hat bekannterweise
  1051. die Gleichung :
  1052.  
  1053.                        f(x) = a + bx + cx2 + dx3
  1054.  
  1055. Einfacher  wird  das  Verfahren  jedoch,  wenn wir
  1056. statt dessen ansetzen :
  1057.  
  1058.         fi(x) = ai + bi∙(x - xi) + ci∙(x - xi)2 + di∙(x - xi)3
  1059.  
  1060. für jedes Intervall [xi,xi+1] und i = 0 .. n-1 (n Meßstellen)
  1061.  
  1062. Vorgehensweise :
  1063.  
  1064. 1) Man setze ai = yi···········für i = 0 .. n-1
  1065.  
  1066. 2)··"····"···c0 = cn-1 = 0
  1067.  
  1068. 3) Man löse das lineare Gleichungssystem zur Bestimmung der ci :
  1069.  
  1070.                                      3                 3
  1071. hi-1ci-1 + 2ci(hi-1 + hi) + hici+1 = -- (yi+1 - yi) - ---- (yi - yi-1)
  1072.                                      hi               hi-1
  1073.  
  1074.    für hi = xi+1 - xi und i = 1 .. n-2 !
  1075.  
  1076.         1                hi
  1077. 4) bi = __ (yi+1 - yi) - __ (ci+1 + 2ci)   für i = 0 .. n-2
  1078.         hi               3
  1079.  
  1080.          1
  1081. 5) di = ____ (ci+1 - ci)   für i = 0 .. n-2
  1082.         3hi
  1083.  
  1084. Bemerkungen :
  1085.  
  1086. -    Man    kann    zeigen,    daß   das   lineare
  1087. Gleichungssystem  (3)  eindeutig lösbar ist. Damit
  1088. können  dann  die kubischen Splines berechnet wer-
  1089. den.  (2) bewirkt, daß die Splines für i = 0 und i
  1090. =  n-2  an der oberen bzw. unteren Intervallgrenze
  1091. einen  Wendepunkt  besitzen, so daß sie über ihren
  1092. Definitionsbereich   hinaus   linear   fortgesetzt
  1093. werden können.
  1094.  
  1095. Die  Realisierung  des o.a. Algorithmus können Sie
  1096. dem    Quelltext   (File   SPLINE.PAS)   auf   der
  1097. Sonderdsikette entnehmen. Zu beachten ist nur, daß
  1098. die  Meßwerte  nicht  wie  o.a.  von i = 0 .. n-1,
  1099. sonder von i = 1 .. n in den beiden Arrays x und y
  1100. gespeichert  sind.  Daher  war eine Umrechnung der
  1101. Indizes  notwendig.  Wegen  der  Klarheit des Pro-
  1102. grammtextes    wurde    darauf   verzichtet,   die
  1103. Berechnungen  von i + 1 und i - 1 durch die beiden
  1104. schnelleren  Funktionen  Succ  (i)  und  Pred  (i)
  1105. vorzunehmen.   Wer  will,  mags  ändern.  Aus  dem
  1106. gleichen  Grund  und wegen der Übertragbarkeit auf
  1107. TURBO  Pascal  3.0  wurden auch die Funktionen DEC
  1108. und INC von TURBO PASCAL 4.0 nicht verwendet.
  1109.  
  1110. Das  ganze  Verfahren  kann  nur angewandt werden,
  1111. wenn  die  x  - Werte in aufsteigender Reihenfolge
  1112. vorliegen  und  kein  x  - Wert doppelt eingegeben
  1113. wurde.   Die  Sortierung  übernimmt  die  Function
  1114. Bubblesort  mit einem wenig effizienten aber dafür
  1115. einfachen  Algorithmus. In den meisten Fällen sind
  1116. die Daten sortiert - dann ist Bubblesort schneller
  1117. als   hörere  Verfahren  (nur  ein  Durchlauf  bei
  1118. sortierten Daten).
  1119.  
  1120. Sind  x  -  Werte  doppelt  eingegeben  worden, so
  1121. können  die  Splines  nicht  berechnet werden, der
  1122. Funktion  Spline_Interpolation  wird  FALSE  zuge-
  1123. wiesen,  die  Berechnungen  werden abgebrochen und
  1124. das Programm gibt eine entsprechende Fehlermeldung
  1125. aus.  Das  gleiche  passiert,  wenn die Anzahl der
  1126. Punkte   den  Speicher  sprengen  würde.  Immerhin
  1127. müssen  zur  Berechnung  des Gleichungssystems (3)
  1128. ca.  n² reelle Zahlen im Speicher gehalten werden.
  1129. Da  das  Verfahren  ursprünglich  auf  einem CPM -
  1130. Rechner  mit  64kB  (ich kann mir heute nicht mehr
  1131. vorstellen,  wie man mit sowenig Speicherkapazität
  1132. solche  Programme  schreiben  kann)  Hauptspeicher
  1133. entwickelt  wurde,  sind  die  benötigten Matrizen
  1134. dynamisch  mit  Hilfe von NEW und DISPOSE angelegt
  1135. bzw.   wieder  entfernt  worden.  Wer  will,  mags
  1136. ändern.
  1137.  
  1138. Die  Meßpunkt  werden  am Anfang des Programms mit
  1139. einem  vorangestellten  "P"  in  die Datei REG.DAT
  1140. geschrieben.  GRAPHEN.PAS  stellt  diese Punkte im
  1141. Koordinatensystem  als  normgerechte kleine Kreise
  1142. dar.
  1143.  
  1144. Beim  Aufruf  von REG.PAS meldet sich das Programm
  1145. mit  einer  Auswahlmöglichkeit  zur  Gewinnung des
  1146. Datensatzes. Zum einen kann eine Datei ausgewertet
  1147. werden,   die   den   gleichen   Aufbau   wie  bei
  1148. GRAPHEN.PAS  -  jedoch  ohne  Punkte  - haben muß.
  1149. Weiterhin  können  die  Daten  über  die  Tastatur
  1150. eingegeben  werden.  Zum  dritten  ist es möglich,
  1151. einen Testdatensatz mit Hilfe von Zufallszahlen zu
  1152. erzeugen.   Diese   Verfahren   ist   ROBUSTLINFIT
  1153. entnommen.  Als  besonderes  Bonbon  werden diesem
  1154. Datensatz  Ausreißer  aufgeprägt. Mit Hilfe dieses
  1155. Datensatzes   kann   man   sehr   anschaulich  die
  1156. Möglichkeiten  von  ROBUSTLINFIT  (in diesem Heft)
  1157. studieren.   ROBUSTLINFIT   ist  in  das  Programm
  1158. eingearbeitet worden.
  1159.  
  1160. Ist  man  den  Ausführungen  gefolgt,  dürfte  das
  1161. Nachvollziehen   des   Algorithmus   keine  großen
  1162. Schwierigkeiten  mehr  bereiten.  Zu bemerken ist,
  1163. daß  entgegen  dem  Handbuch von TURBO 4.0 (Band I
  1164. S.251)  Include  -  Dateien auch ohne vollständige
  1165. Programmblöcke   akzeptiert   werden.   Vermutlich
  1166. müssen nur die Definitionen komplett abgeschlossen
  1167. werden.  Daher  ist  es  nach wie vor möglich, ein
  1168. Programm wie üblich aufzuteilen.
  1169.  
  1170. Abb.   7   zeigt   die  lineare  und  quadratische
  1171. Approximation   eines   Testdatensatzes   und  die
  1172. Interpolation  mit  kubischen  Splines.  Man sieht
  1173. sehr   deutlich,  daß  die  kubischen  Splines  im
  1174. Gegensatz  zu  den Approximationen exakt durch die
  1175. Meßpunkte gehen.
  1176.  
  1177. Ich hoffe, daß Ihnen das Lesen etwas Spaß bereitet
  1178. hat,  auch wenn die Materie dem einen oder anderen
  1179. sicherlich   zu   mathematisch   ist.  Vernünftige
  1180. Programme  bekommt  man  aber nur durch gründliche
  1181. Problemanalyse  -  und  dabei  benötigt  man  eben
  1182. mathematische Methoden. Ausprobieren ist eben doch
  1183. nicht alles.
  1184.  
  1185.  
  1186. Literatur :
  1187.  
  1188. (1) W.Kroll : Grund- und Leistungskurs ANALYSIS
  1189.               Band 1 : Differenzialrechnung 1
  1190.               Dümmlers Verlag ISBN 3-427-42811-7  Bonn 1975
  1191.  
  1192. (2) Dr. Hans Ade, Dr. Hugo Schell : Themenhefte Mathematik
  1193.               Numerische Mathematik
  1194.               Ernst Klett Verlag ISBN 3-12-739800-X Stuttgard 1975
  1195.  
  1196. (3) Prof. Dr. M.W. Müller : Höhere Mathematik IV
  1197.               Vorlesung gehalten im SS 1975 (nicht veröffentlicht)
  1198.  
  1199. (4) Hans Jochen Bartsch : Taschenbuch mathematischer Formeln
  1200.               Verlag Harri Deutsch ISBN 3871442399  Frankf./Main 1975
  1201.  
  1202.                         ----------------------
  1203.                         Numerische Integration
  1204.                         ----------------------
  1205.  
  1206. -  Algorithmen  zur  computergestützten Berechnung
  1207. von Integralen -
  1208.  
  1209.  
  1210. Bei  vielen  Problemen in Wissenschaft und Technik
  1211. gilt  es  Integrale  von zu berechnen. Oftmals ist
  1212. diesen Integralen mit dem erlernten mathematischen
  1213. Handwerkszeug nicht beizukommen, eine geschlossene
  1214. Auswertung   ist   entweder   unmöglich   oder  zu
  1215. aufwendig.  In  solchen  Fällen  ist  man auf eine
  1216. numerischen  Bearbeitung  des Problems angewiesen.
  1217. Während  sich  die Wissenschaftler früherer Zeiten
  1218. noch  mit  Rechenschieber  und  Tabellen  abquälen
  1219. mußten,   steht   ihren   heutigen   Kollegen  ein
  1220. wesentlich  leistungsfähigeres  Arbeitsmittel  zur
  1221. Verfügung: der Computer.
  1222.  
  1223.  
  1224.                           -------------------
  1225.                           Der Integralbegriff
  1226.                           -------------------
  1227.  
  1228. Wie  die  Differentialrechnung,  so  geht auch die
  1229. Integralrechnung  auf  ein  geometrisches  Problem
  1230. zurück,  nämlich  die Berechnung von Flächeninhal-
  1231. ten. In einem x-y-Koordinatensystem bezeichnet man
  1232. mit
  1233.  
  1234.                ⌠b
  1235.          A =···│ f(x) dx
  1236.                ⌡a
  1237.  
  1238. (sprich:  "Integral  f(x) dx von a bis b") den von
  1239. dem  Funktionsgraphen  y=f(x), der x-Achse und den
  1240. Geraden x=a und x=b eingeschlossenen Flächeninhalt
  1241. (Abb.  1). Da dieses Problem systematisch erstmals
  1242. Mitte  des  19.  Jahrhunderts  von  dem  deutschen
  1243. Mathematiker  Bernhard  Riemann  untersucht wurde,
  1244. spricht  man  in  Würdigung  seiner  Arbeiten auch
  1245. häufig  vom "Riemann'schen Integral". Neben diesem
  1246. gibt   es   in   der   Mathematik   noch   weitere
  1247. Integralbegriffe,  welche  jedoch  meist  nur  von
  1248. theoretischem  Interesse sind. Wir wollen uns hier
  1249. deshalb  ausschließlich  mit dem Riemann- Integral
  1250. beschäftigen.
  1251.  
  1252.        ---------------------------------------------------------
  1253.        Trapezregel - ein erstes, einfaches Integrationsverfahren
  1254.        ---------------------------------------------------------
  1255.  
  1256. Es   gibt   eine   Reihe  von  Möglichkeiten,  den
  1257. Flächeninhalt   unter  einem  Funktionsgraphen  zu
  1258. bestimmen.  Die  hieraus  abgeleiteten  Rechenvor-
  1259. schriften   und   -regeln   bezeichnet   man   als
  1260. Quadraturformeln.   Die   wohl  einfachste  Formel
  1261. dieser  Art  ist die sogenannte "Trapezregel". Die
  1262. Eckpunkte  [a,f(a)] und [b,f(b)] werden durch eine
  1263. Gerade  verbunden,  die zu berechnende Fläche wird
  1264. damit  zu  einem Trapez, dessen Inhalt nun einfach
  1265. anzugeben  ist (Abb.2, [1]). Wie man leicht sieht,
  1266. stellt   diese   Annäherung   nicht   gerade   das
  1267. Nonplusultra  an  Genauigkeit dar, es besteht eine
  1268. je nach "Glattheit" der Funktion mehr oder weniger
  1269. große   Abweichung   vom  tatsächlichen  Wert  des
  1270. Integrals.  Dies kann verbessert werden, indem man
  1271. das   zu   integrierende   Intervall  in  kleinere
  1272. Teilintervalle  unterteilt  und  auf  jedes dieser
  1273. Teilintervalle   die   Trapezregel  anwendet.  Die
  1274. Trapezsehnen   passen   sich   dann   besser   dem
  1275. tatsächlichen  Funktionsverlauf  an;  Aufsummieren
  1276. der  einzelnen Trapeze ergibt die sogenannte große
  1277. Trapezregel (Abb. 2, [2]).
  1278.  
  1279.                      ----------------------------
  1280.                      Darf es etwas genauer sein ?
  1281.                           - Simpson's Formel
  1282.                      ----------------------------
  1283.  
  1284.  
  1285. Ein Maß für die Güte einer Quadraturformel ist die
  1286. sogenannte  "Fehlerordnung  O".  Sie gibt für eine
  1287. Unterteilung  des  gesamten  Intervalls (a,b) in N
  1288. Teilintervalle  der  Länge h = (b-a)/N an, zu wel-
  1289. cher  Potenz  von  h  die Abweichung der gemachten
  1290. Näherung  vom tatsächlichen Wert proportional ist.
  1291. Die  Trapezregel  besitzt zum Beispiel die Fehler-
  1292. ordnung  O(h2),  der absolute Fehler einer Trapez-
  1293. Näherung ist also proportional zum Quadrat von h.
  1294. Eine   Methode   mit   einer  wesentlich  besseren
  1295. Fehlerordnung  als  die  der  Trapezregel  ist die
  1296. ebenfalls  recht bekannte Simpson-Regel, auch Kep-
  1297. lersche  Faßregel  genannt.  Sie  beruht auf einer
  1298. Annäherung  des  Kurvenverlaufs  einer  Funktion f
  1299. durch  eine  Parabel  durch  die  Punkte [a,f(a)],
  1300. [m,f(m)] und [b,f(b)], wobei der Parameter m = (b-
  1301. a)/2 die Intervallmitte bezeichnet (Abb.3, [1]).
  1302. Da  eine  Parabel  zur  Annäherung  einer Funktion
  1303. anschaulich gesprochen "biegsamer" als eine Gerade
  1304. (beim   Trapezverfahren)  ist,  lassen  sich  hier
  1305. natürlich  schon wesentlich bessere Näherungswerte
  1306. für   den   Flächeninhalt   erzielen.   Mit  einer
  1307. Intervallunterteilung   wie  beim  Trapezverfahren
  1308. beschrieben  gelangt man zur großen Simpson-Formel
  1309. (Abb.3,   [2])   mit   der   Fehlerordnung  O(h4).
  1310. Allerdings  ist  hier  zu  beachten, daß die große
  1311. Simpson-Formel   nur   auf   Intervalle   mit  ge-
  1312. radzahliger Unterteilung anwendbar ist.
  1313.  
  1314.                           -------------------
  1315.                           Gauß'sche Quadratur
  1316.                           -------------------
  1317.  
  1318. Eine   weitere   Möglichkeit  zur  näherungsweisen
  1319. Integralberechnung sind die sogenannten Gauß'schen
  1320. Quadraturformeln. Die Ableitung dieser Rechenregln
  1321. soll  hier  nicht vorgeführt werden, sie erfordert
  1322. Einiges  an Mathematik. Das Verfahren an sich soll
  1323. jedoch  nicht  unerwähnt bleiben, da es gerade für
  1324. den   Einsatz  in  Verbindung  mit  elektronischen
  1325. Datenverarbeitungsanlagen sehr geeignet ist.
  1326. Die  Grundidee  der Gauß-Quadratur ist ähnlich der
  1327. bei    Trapez-   und   Simpson-   Verfahren.   Man
  1328. konstruiert  Regeln, die Polynome eines bestimmten
  1329. Grades exakt integrieren (Trapez: Polynom 1.Grades
  1330. (=Gerade),  Simpson:  Polynom 2.Grades (=Parabel))
  1331. und  wendet  diese  auf die Funktion f an. Da sich
  1332. jede  Funktion  lokal  durch  ein Polynom annähern
  1333. läßt  (je höher der Grad des Polynoms, umso besser
  1334. ist  meist  die Annäherung), wird dieses Verfahren
  1335. natürlich  um  so  genauer,  je höher der Grad der
  1336. exakt zu integrierenden Polynome ist.
  1337. Der   Unterschied  zu  den  bereits  beschriebenen
  1338. Verfahren  ist  nun,  daß bei der Konstruktion der
  1339. Formeln  weder Stützstellen (die x-Werte, an denen
  1340. ein  Funktionswert  ermittelt  wird) noch Gewichte
  1341. (die    Zahlen,    mit    denen    die   einzelnen
  1342. Funktionswerte   multipliziert  werden)  von  vorn
  1343. herein  festgelegt werden. Dies hat zur Folge, daß
  1344. man  Näherungsformeln  noch  höherer  Genauigkeit,
  1345. jedoch  mit  "krummen"  Stützstellen und Gewichten
  1346. erhält.  Das  ist  auch der Grund dafür, warum die
  1347. Gauß-Quadratur     gerade     für    elektronische
  1348. Rechenmaschinen  geeignet  ist: das Verfahren wird
  1349. unrentabel,  wenn  man  keine Möglichkeit hat, die
  1350. Stützstellen und Gewichte dauerhaft abzuspeichern,
  1351. um  sie  bei  Bedarf  in  die Rechnung miteinzube-
  1352. ziehen.  Eine Gauß'sche Quadraturformel vom Grad n
  1353. integriert  Polynome  vom  Grad  2n+1  exakt,  die
  1354. Fehlerordnung  der  Formel ist O(h2n+1). Das neben
  1355. den Prozeduren "Trapezoid" und "Simpson" ebenfalls
  1356. in der Turbo-Pascal-Unit NUMINT.PAS implementierte
  1357. Unterprogramm  "Gauss"  arbeitet  mit einer Formel
  1358. vom   Grad  15,  besitzt  also  die  Fehlerordnung
  1359. O(h31).
  1360.  
  1361.                      -----------------------------
  1362.                      Ein erstes Anwendungsbeispiel
  1363.                      -----------------------------
  1364.  
  1365. Ein  Schraubenhersteller  möchte gerne wissen, mit
  1366. wieviel  Prozent  Produktionsausschuß  er  rechnen
  1367. muß,   wenn   er   seiner   neusten  Sorte  Präzi-
  1368. sionsschrauben  einen  Durchmesser  von  14.95 bis
  1369. 15.05  Milllimeter  garantiert.  Aus umfangreichen
  1370. Messungen   ist  bekannt,  daß  der  der  mittlere
  1371. Durchmesser  dieser  Schrauben  µ=15  mm bei einer
  1372. Streuung von σ=0.02 mm beträgt.
  1373. Solche     unvermeidlichen    produktionsbedingten
  1374. Abweichungen  vom Sollwert entstehen zumeist durch
  1375. zufällige  Fehler und sind deshalb normalverteilt,
  1376. d.h.  ihre  Verteilung (die Wahrscheinlichkeit für
  1377. einen  bestimmten  Wert)  wird durch die Gauß'sche
  1378. Glockenkurve (Abb.4) beschrieben:
  1379.  
  1380.              1··········┌ -(x-µ)2 ┐
  1381.   p(x) = ───────── ·exp │─────────│
  1382.           σ·(2π)½·······└···2σ2···┘
  1383.  
  1384. Den  gesuchten  Wert (besser gesagt das Komplement
  1385. dazu)  findet der Schraubenfabrikant nun, indem er
  1386. alle  Wahrscheinlichkeiten  im Bereich von µ-δ bis
  1387. µ+δ aufsummiert (δ=0.05), d.h. das Integral
  1388.  
  1389.                ⌠µ+δ
  1390.          P =···│ p(x) dx
  1391.                ⌡µ-δ
  1392.  
  1393. berechnet.   Da   die   Gauß-Funktion   eine   der
  1394. Funktionen  ist,  die  nicht geschlossen (also mit
  1395. Papier  und  Bleistift) integrierbar sind, ist man
  1396. bei  der Berechnung auf eine numerische Auswertung
  1397. angewiesen.   Wendet   man   hierzu   das  Trapez-
  1398. Verfahren an, kann man ausnutzen, daß der maximale
  1399. Fehler f dieses Verfahrens durch die Fehlerordnung
  1400. und   das   Maximum   der   2.Ableitung   der   zu
  1401. integrierenden  Funktion  im Integrationsintervall
  1402. gegeben ist:
  1403.  
  1404.   f ≤ h2/12 · max (f"(x)) = g
  1405.  
  1406. Aus   dieser  Gleichung  kann  für  eine  gegebene
  1407. Genauigkeit g der Wert für h = (b-a)/N, damit also
  1408. auch  die  Anzahl  N  der  nötigen Intervallunter-
  1409. teilungen ermittelt werden.
  1410. Unter  Benutzung  des  Programms  PROBABIL.PAS und
  1411. Eingabe  der  oben  angegeben Wert ergibt sich das
  1412. Ablaufprotokoll  in Abb.5. Wie man sieht, besitzen
  1413. 98.8%    aller    produzierten    Schrauben    den
  1414. garantierten  Durchmesser,  es  muß  also mit 1.2%
  1415. Ausschuß gerechnet werden.
  1416.  
  1417.         -------------------------------------------------------
  1418.         Automatische Fehlerkontrolle durch Halbierungsverfahren
  1419.         -------------------------------------------------------
  1420.  
  1421. Die     im     letzten     Beispiel     verwendete
  1422. Genauigkeitskontrolle  ist  zwar  recht praktisch,
  1423. doch  oft  ist  man nicht im Stande bzw. es ist zu
  1424. unwirtschaftlich,    die    Ableitungsmaxima    zu
  1425. berechnen  (bei  der  Gauß-Integration  müßte  man
  1426. beispielsweise das Maximum der 30. Ableitung von f
  1427. berechnen, viel Spaß!).
  1428. Aus   diesem   Grunde   bedient   man   sich   zur
  1429. Genauigkeitskontrolle  einer  Methode, welche zwar
  1430. etwas  zeitintensiver ist, dafür dem Benutzer aber
  1431. sämtliche  Arbeit abnimmt: bei der Auswertung wird
  1432. nicht  nur eine Näherung, sondern durch sukzessive
  1433. Unterteilung des Integrationsintervalls eine Folge
  1434. von    Näherungswerten   berechnet.   Sobald   die
  1435. Differenz        zweier       aufeinanderfolgender
  1436. Näherungswerte  die  geforderte Genauigkeit unter-
  1437. schreitet, kann man davon ausgehen, daß der letzte
  1438. Näherungswert die geforderte Genauigkeit aufweist.
  1439. Dieses   Verfahren  wollen  wir  sofort  an  einem
  1440. Beispiel  ausprobieren:  der  Umfang einer Ellipse
  1441. soll (im Rahmen der Rechengenauigkeit eines Compu-
  1442. ters)  exakt  berechnet werden. Nach einer kleinen
  1443. Rechnung  findet  man, daß der exakte Umfang durch
  1444. das Integral
  1445.  
  1446.           ⌠π ┌·····b2-a2·······┐½
  1447.  U = 2b···│··│1 - ─────── sin2Θ│ dΘ
  1448.           ⌡0 └······b2·········┘
  1449.  
  1450. gegeben  ist.  Die  Parameter  "a"  und  "b"  sind
  1451. hierbei  die  Halbachsen  der Ellipse (Abb.6). Das
  1452. Integral  ist  ein  sogenanntes elliptisches Inte-
  1453. gral,   es   kann   wie  die  Gauß-Funktion  nicht
  1454. geschlossen gelöst werden (aus diesem Grund findet
  1455. man  in Formelsammlungen auch nur Näherungsformeln
  1456. für den Ellipsenumfang).
  1457. Mit  dem Programm ELLIPSE.PAS kann dem Problem auf
  1458. den  Leib  gerückt werden: es berechnet den Umfang
  1459. einer Ellipse mit Hilfe der Simpson-Regel und oben
  1460. beschriebenem   Kontrollverfahren,   welches   als
  1461. Unterprogramm   "Successive"  in  der  NUMINT-Unit
  1462. realisiert ist.
  1463.  
  1464.                     -------------------------------
  1465.                           Adaptive Verfahren
  1466.                     - Integration für Feinschmecker
  1467.                     -------------------------------
  1468.  
  1469. Nichts ist so gut, daß es nicht noch zu verbessern
  1470. wäre: auch die oben vorgestellte Methode hat einen
  1471. Schwachpunkt.   Naturgemäß  sind  Quadraturformeln
  1472. dort  ungenau,  wo  die  zu integrierende Funktion
  1473. starke  Anstiege  bzw. Abfälle besitzt. Integriert
  1474. man  nun  eine  Funktion,  die  an einer Stelle im
  1475. Integrationsintervall  einen solchen Peak besitzt,
  1476. ansonsten  aber  recht  glatt verläuft, so muß der
  1477. Peak- Bereich in sehr kleine Intervalle aufgeteilt
  1478. werden,  damit  eine  gute  Näherung  möglich ist.
  1479. Unser  obiges  Kontrollprogramm  sieht jedoch eine
  1480. Gleichbehandlung      aller      Bereiche      des
  1481. Integrationsintervalls  vor,  deshalb  werden auch
  1482. die glatten Teilstücke sehr fein aufgeteilt.
  1483. Dies   hat   nun   aber   zur   Folge,  daß  viele
  1484. Funktionswerte umsonst berechnet werden, da an den
  1485. glatten  Stellen  ja  schon  wenige Stützwerte zur
  1486. erforderlichen   Genauigkeit  ausreichen.  In  den
  1487. meisten  Fällen  führt  das soweit, daß Teilstücke
  1488. des  Integrationsintervalls, die schon mit der ma-
  1489. ximal überhaupt erreichbaren Rechengenauigkeit be-
  1490. stimmt   sind,   immer  noch  weiter  aufgespalten
  1491. werden.  Hierdurch  verschenkt  man natürlich jede
  1492. Menge  Rechenzeit, manche Integrale lassen sich so
  1493. überhaupt nicht bestimmen.
  1494. Abhilfe    schafft    hier   ein   "intelligentes"
  1495. Steuerprogramm,  welches  sich die Bereiche merkt,
  1496. in  denen  Schwierigkeiten  enstehen und nur diese
  1497. Intervalle    besonders   genau   behandelt.   Das
  1498. intelligente Unterprogramm, es handelt sich um die
  1499. Prozedur  "Adaptive",  welche  sich  ebenfalls  in
  1500. NUMINT.PAS befindet, läßt sich sehr schön rekursiv
  1501. formulieren,  der  Rechner nimmt dem Programmierer
  1502. so  praktisch  alle  Verwaltungsarbeiten  ab. Auch
  1503. hierzu ein Anwendungsbeispiel: die Wurzelfunktion
  1504.  
  1505.               y = x½
  1506.  
  1507. soll  im  Intervall von 0 bis 1 integriert werden.
  1508. Hierbei  gibt  es  im  Bereich nahe Null Probleme,
  1509. denn  dort  wächst die Steigung der Wurzelfunktion
  1510. gegen Unendlich (Abb.7).
  1511. Das   Programm  SQROOT.PAS  zeigt  die  numerische
  1512. Behandlung   des   Wurzelintegrals  mit  dem  oben
  1513. erwähnten  rekursiven  Steuerprogramm.  Der  Leser
  1514. möge  mit  diesem Programm einmal den Integralwert
  1515. zwischen  a=0  und  b=1 berechnen (der exakte Wert
  1516. ist  2/3)  und  bei  fester  Genauigkeit  den  Re-
  1517. chenzeitunterschied  zur  Berechnung des Integrals
  1518. mit "Successive" vergleichen!
  1519.  
  1520.  
  1521.                      -----------------------------
  1522.                      Warum verschiedene Verfahren?
  1523.                      -----------------------------
  1524.  
  1525. Nachdem  wir  jetzt  einige Methoden und Verfahren
  1526. kennengelernt  haben,  Integrale numerisch mit dem
  1527. Computer  zu  "knacken",  mag  sich  der  ein oder
  1528. andere   Leser   fragen,   wieso   hier  so  viele
  1529. verschiedene  Unterprogramme  vorgestellt  werden,
  1530. letztendlich  nimmt man ja doch das schnellste und
  1531. leistungsfähigste.  Doch  gerade  diese beiden Be-
  1532. griffe  können  in  verschiedenen Situationen auch
  1533. völlig  verschiedene  Bedeutungen  haben,  bei der
  1534. Auswahl  des  Verfahrens  kommt  es  ganz  auf die
  1535. Erfordernisse   an.   Ein   Beispiel   soll   dies
  1536. verdeutlichen: die Integralfunktion
  1537.  
  1538.                ⌠∞
  1539.         Γ(α) = │ exp(αx) dx
  1540.                ⌡0
  1541.  
  1542. soll     auf     dem     Bildschirm    in    einem
  1543. Γ-α-Koordinatensystem grafisch dargestellt werden.
  1544. Für  die  Berechnung  der  vielen Integrale ist es
  1545. sicherlich   unzweckmäßig,   das  Gauß-  Verfahren
  1546. anzuwenden.  Dieses  zeigt  seine Stärken erst bei
  1547. höheren   Genauigkeitsforderungen;   da   für  die
  1548. Ermittlung   von   Grafik-Koordinaten   aber  eine
  1549. Genauigkeit   von   4   Stellen  schon  vollkommen
  1550. ausreicht,   wird  man  sich  lieber  ein  weniger
  1551. genaueres,  dafür  aber  sehr  schnelles Verfahren
  1552. (z.B. Simpson oder Trapez) herausgreifen, man will
  1553. ja  schließlich  auch  nicht stundenlang auf einen
  1554. fertig  aufgebauten  Bildschirm warten. In anderen
  1555. Anwendungen   hingegegen   wird  wieder  mehr  die
  1556. Genauigkeit  gefragt  sein,  die Rechenzeit spielt
  1557. dann keine so große Rolle.
  1558. Unter    den   vorgestellten   Programmen   sollte
  1559. eigentlich  für  jeden  Zweck die passende Routine
  1560. vorhanden  sein,  die  Quadraturformeln ergeben in
  1561. Verbindung   mit   den   Kontrollprogrammen   eine
  1562. Vielfalt an Einsatzmöglichkeiten.
  1563.  
  1564.                        ------------------------
  1565.                        Oberflächen und Volumina
  1566.                        ------------------------
  1567.  
  1568. Es ist nun nicht so, daß die Integrationsprogramme
  1569. lediglich  Flächen  unter irgendwelchen Funktionen
  1570. berechnen  können,  mit  ein Paar Handgriffen kann
  1571. man sie auch dazu bewegen, Oberflächen und Volumi-
  1572. na  von  dreidimensionalen  Körpern  zu berechnen.
  1573. Vorraussetzung  ist  allerdings,  daß diese Körper
  1574. rotationssymmetrisch  sind,  d.h.  sie  werden von
  1575. einer   um   eine  Achse  rotierenden  Funktion  f
  1576. erzeugt.
  1577. Beispiele für solche "Drehkörper":
  1578.  
  1579.       y = k (Zylinder)
  1580.  
  1581.       y = k·x (Kegel)
  1582.  
  1583.       y = k·x½ (Paraboloid)
  1584.  
  1585. Abb.8  zeigt diese Funktionen, die bei Rotation um
  1586. die x-Achse den entsprechenen Körper erzeugen. Der
  1587. Parameter  "k"  soll  eine  beliebige  reelle Zahl
  1588. repräsentieren.
  1589. Nach der sogenannten Guldin'schen Regel gilt für Volumen und Oberfläche
  1590. (Mantel) solcher Körper
  1591.  
  1592.              ⌠b
  1593.     M = ··2π·│ y · (1 + y'2)½ dx
  1594.              ⌡a
  1595.  
  1596.  
  1597.              ⌠b
  1598.     V =··· π·│ y2 dx
  1599.              ⌡a
  1600.  
  1601. Das  Programm  GULDIN.PAS  berechnet  nach diesen Formeln Volumen V und
  1602. Oberfläche M eines Drehkörpers.
  1603.  
  1604.  
  1605.                      ----------------------------
  1606.                      Mehrdimensionale Integration
  1607.                      ----------------------------
  1608.  
  1609. Zum  Abschluß wollen wir noch einen kurzen Abstecher in das überaus in-
  1610. teressante Gebiet der Integration in mehreren Dimensionen machen.
  1611. Analog  zu der bisher besprochenen eindimensionalen Integration gibt es
  1612. für  Funktionen  mit  mehreren  Variablen mehrdimensionale Integration,
  1613. jede  Variable  entspricht einer Dimension. Geometrisch veranschaulicht
  1614. werden  hier  nicht  nur Flächen, sondern auch Oberflächen und Volumina
  1615. (jedoch  von  beliebigen Körpern!) berechnet. Ein Beispiel für ein sol-
  1616. ches Integral:
  1617.  
  1618.       ⌠π···⌠π···⌠π
  1619. V =···│ dx │ dy │ dz sin (x+y+z)
  1620.       ⌡0···⌡0···⌡0
  1621.  
  1622. Im mehrdimensionalen Fall schreibt man oft die Differentiale (dx,dy,dz)
  1623. direkt  hinter  das  Integralzeichen, um die Zugehörigkeit von Integra-
  1624. tionsvariable und Grenzen deutlich zu machen.
  1625. Die  mehrdimensionale  Integration ist für den Computer ein ganz heißes
  1626. Eisen: alle bisher in einer Dimension aufgetauchten Probleme vervielfa-
  1627. chen  sich hier mit der Potenz der Dimension. So hat man beispielsweise
  1628. für ein dreidimensionales Integral (welches in allen drei Integrations-
  1629. variablen  numerisch gleich schwer zu behandeln sein soll), bei dem für
  1630. eine  Dimension n Funktionswerte berechnet werden müssen, letztlich we-
  1631. nigstens  n3  Funktionswerte  zu berechnen. Zeitlich gesehen heißt das:
  1632. benötigt  der Rechner für eine Dimension beispielsweise 30 Sekunden, so
  1633. wird  man auf das Ergebnis in drei Dimensionen ganze 303 = 27000 Sekun-
  1634. den,  das sind 7½ Stunden warten müssen! Wie man sieht, sind in der Re-
  1635. gel  bei  solchen  Problemen,  falls man sie wirklich numerisch angehen
  1636. muß, extrem leistungsfähige Rechner gefragt.
  1637. Beschränkt  man  sich jedoch auf Integrale mit maximal drei Dimensionen
  1638. und  gibt  sich  mit Genauigkeiten von wenigen Stellen (allgemein nicht
  1639. mehr  als  fünf)  zufrieden,  so kann man auch auf seinem Hobby-Rechner
  1640. schon ganz brauchbare Resultate erzielen.
  1641. Das  Unterprogramm  "Romberg"  in  NUMINT.PAS implementiert ein relativ
  1642. simples  Verfahren, um mehrdimensionalen Integralen numerisch beizukom-
  1643. men.  Um  die Funktionstüchtigkeit dieser Routine auszutesten, soll das
  1644. Volumen einer Kugel berechnet werden. Dies ist zwar kein Paradebeispiel
  1645. für  den Einsatz des Programms - den Wert kann man in jeder Formelsamm-
  1646. lung nachschlagen, falls man ihn ohnehin nicht schon aus dem Kopf kennt
  1647. -  doch  läßt sich hiermit sehr schön der Gebrauch von "Romberg" demon-
  1648. strieren.  In  sphärischen Polarkoordinaten ist das Volumen einer Kugel
  1649. einfach  das  Integral  über das Volumenelement in den Begrenzungen des
  1650. Körpers:
  1651.  
  1652.         ⌠2π··⌠π···⌠R
  1653.   V =···│ dΦ │ dΘ │ dr r2·sinΘ
  1654.         ⌡0···⌡0···⌡0
  1655.  
  1656. Das  Programm  SPHERE.PAS  berechnet  dieses Integral, nach Eingabe des
  1657. gewünschten  Kugelradius  wird  das  aus der Integration sowie zum Ver-
  1658. gleich  das aus der bekannten Formel V = 4/3·πR3 bestimmte Kugelvolumen
  1659. angezeigt.
  1660. Waren  bisher  alle Integrationsunterprogramme vom Aufruf her mehr oder
  1661. weniger gleich aufgebaut, so gibt es hier nun einige gravierende Unter-
  1662. schiede:  die zu integrierende Funktion hat als Argument nicht mehr nur
  1663. eine  einzige  REAL-Zahl "x", sondern einen Vektor von REAL-Zahlen. Für
  1664. unser  Kugel-  Beispiel  könnte  das  so  aussehen, das x[1]=r, x[2]=Θ,
  1665. x[3]=Φ  ist.  Entsprechend sind die Integrationsgrenzen keine einfachen
  1666. REAL-Zahlen  mehr,  sondern  ebenfalls  Vektoren. Bei der Besetzung der
  1667. Felder muß man natürlich darauf achten, daß die Indizes nicht durchein-
  1668. ander wirft, also a[1],b[1] gehört zu x[1] usw. Desweiteren hat man die
  1669. Möglichkeit, eine relative Unterteilung des Integrationsraumes in Bezug
  1670. auf  die  verschiedenen Dimensionen vorzunehmen. Das ist sehr nützlich,
  1671. wenn  man  ein  Integral  bearbeitet,  welches  in  einer Richtung sehr
  1672. schwierig  zu  integrieren ist. Man kann diese dann durch eine entspre-
  1673. chende  Unterteilung besonders genau behandeln, ohne das gleiche in den
  1674. anderen  Dimensionen auch tun zu müssen, wertvolle Rechenzeit wird ein-
  1675. gespart.
  1676.  
  1677. Literatur
  1678.  
  1679. Wer  bei  diesem "Einstieg" in das Gebiet der Numerik mit Computern auf
  1680. den  Geschmack  gekommen  ist oder wem die hier angegebenen Erklärungen
  1681. nicht ausreichen, dem sei folgende weiterführende Literatur empfohlen:
  1682.  
  1683.  
  1684.  
  1685.                               Carsten Gieselmann
  1686.  
  1687.  
  1688.  
  1689. (1) Engeln-Müllges/Reutter
  1690.     Numerische Mathematik
  1691.     für Ingenieure
  1692.  
  1693. (2) Stoer
  1694.     Einführung in die
  1695.     Numerische Mathematik
  1696.  
  1697. (3) Davis/Rabinowitz
  1698.     Methods of Numerical Integration
  1699.  
  1700.  
  1701.  
  1702.    -------------------------------------------------------------
  1703.    Iterative Berechnung eines Linearen Gleichungssystems mit dem
  1704.            Einzelschritt - Verfahren von Gauss - Seidel.
  1705.    -------------------------------------------------------------
  1706.  
  1707.  
  1708. Die  Berechnung  linearer Gleichungssysteme bereitet in der Regel keine
  1709. Schwierigkeiten,  ist der dazugehörende Gauß'sche Algorithmus oft genug
  1710. publiziert  worden.  So  auch in der Zeitschrift PASCAL (Heft ???). Nun
  1711. ist  aber  die Berechnung größerer Systeme recht problematisch und zwar
  1712. in  zweierlei Hinsicht. Erstens wächst mit steigendem n (n = Anzahl der
  1713. Gleichungen)  der  Zeitbedarf proportional zu n3 (!). Dies fällt sicher
  1714. nicht  in's  Gewicht, wenn man nur hin und wieder ein solches System zu
  1715. lösen  hat.  Zweitens  aber - und das ist viel wichtiger -, werden auch
  1716. die  Rundungsfehler beim Lösen mit dem Gauß'schen Algorithmus mit stei-
  1717. gendem  n immer größer. Das kann schließlich soweit führen, daß die Lö-
  1718. sungen  praktisch  nicht  mehr zu gebrauchen sind. Findige Mathematiker
  1719. sind  dieser Frage nachgegangen und haben schon sehr früh ein Verfahren
  1720. entwickelt,  welches diese beiden Nachteile nicht hat. Dafür hat dieser
  1721. Algorithmus  - wie könnte es anders sein, nichts auf der Welt ist Ideal
  1722. - einen anderen Pferdefuß. Doch davon unten später mehr.
  1723.  
  1724.                      ----------------------------
  1725.                      Der Banarsche Fixpunktsatz :
  1726.                      ----------------------------
  1727.  
  1728. Bevor  wir  uns dem Verfahren zuwenden, müssen einige mathematische Be-
  1729. griffe klargestellt werden. Aber keine Angst, ganz trocken und hochtra-
  1730. bend wird die Sache hier nicht behandelt. Für eine exakte mathematische
  1731. Beschreibung gibt es schließlich Bücher.
  1732.  
  1733. Nehmen  wir  einmal  an,  wir hätten eine Funktion y = f(x), welche wir
  1734. nicht nach x auflösen können (oder wollen). Beispielsweise die Funktion
  1735. f(x)  =  x4  - 9x2 + 4x + 12 . Gesucht ist eine Nullstelle dieser Funk-
  1736. tion, also f(x) = 0. Hat man überhaupt keine Ahnung vom Lösen von Glei-
  1737. chungen  und  schreckt  unbefangen  vor  nichts zurück, so kann man die
  1738. Gleichung umformen in :
  1739.   
  1740.                                9x2 - 4x - 12
  1741.                         x  =   ───────────────
  1742.                                     x3
  1743.  
  1744.  Hat man nun eine Lösung, so müssen linke und rechte Seite übereinstim-
  1745.  men.  Hat man keine Lösung, so kann man durch probieren versuchen, die
  1746.  Lösung zu finden. Wir setzen z.B. ein x = 3 und berechnen :
  1747.  
  1748.   
  1749.                       9∙32 - 4∙3 - 12
  1750.                x =   ────────────────  =  2.1111111111
  1751.                             33
  1752.  
  1753. Stimmt also nicht. Was hindert uns aber, den so errechneten Wert wieder
  1754. in die Formel einzusetzen ? Dann erhalten wir
  1755.   
  1756.                x2  = 2.0902 ...
  1757.                x3  = 2.0762 ...
  1758.                x4  = 2.0660 ...
  1759.                .        .
  1760.                .        .
  1761.             x100   = 2.0050 ...
  1762.  
  1763. Wir  vermuten schließlich die Lösung bei x = 2, was wir durch Einsetzen
  1764. bestätigt finden. Selbstverständlich rechnen wir dies nicht zu Fuß aus,
  1765. sondern  schreiben  dazu ein kleines BASIC - Programm (warum eigentlich
  1766. nicht,  BASIC - Programme bis zu 10 Zeilen Länge haben schließlich ihre
  1767. Vorteile).
  1768.  
  1769. 10 X = 3
  1770. 20 FOR I=1 TO 100
  1771. 30 X = (9*X*X-4*X-12)/(X*X*X)
  1772. 40 NEXT I
  1773. 50 PRINT "X = ";X
  1774. 60 END
  1775.  
  1776. Die Lösung geschieht also in 2 Schritten :
  1777.  
  1778. 1. Umwandeln der Gleichung in die Form x = f(x).
  1779. 2. Erzeugen der Folge··················xi = f(xi-1)
  1780.    mit einem beliebigen Startwert x0 (in unserem Beispiel x0 = 3)
  1781.  
  1782. Wenn  der Fehler der so gefundenen Lösung beliebig klein gehalten kann,
  1783. indem man das Verfahren genügend oft wiederholt, spricht der Mathemati-
  1784. ker von Konvergenz.
  1785.  
  1786. Es  ist  hoffentlich klar, daß das Verfahren seine Tücken hat. Die Kon-
  1787. vergenz  ist  nicht  bei jeder Umformung und nicht für jeden beliebigen
  1788. Startwert  x0  gewährleistet!  Probieren Sie mal verschiedene Werte und
  1789. Gleichungen aus.
  1790.  
  1791. Der  Banarch'sche  Fixpunktsatz  macht  nun Aussagen darüber, wann eine
  1792. solche  Folge konvergiert, d.h. unter welchen Voraussetzungen nach end-
  1793. lich vielen Schritten ein brauchbarer Wert für x gefunden wird.
  1794.  
  1795.  
  1796.                -----------------------------------------
  1797.                Anwendung auf lineare Gleichungssysteme :
  1798.                -----------------------------------------
  1799.  
  1800. Wir  wollen  nun unser erworbenes Wissen auf ein lineares Gleichungssy-
  1801. stem anwenden.
  1802.  
  1803. Beispiel :
  1804.   
  1805.                   4x -  y + z  =  4
  1806.                    x - 2y      = -1
  1807.                   3x +      4z =  7
  1808.  
  1809. Dazu stellen wir die 1. Gleichung nach x, die 2. nach y und die 3. nach
  1810. z um. Wir erhalten :
  1811.   
  1812.                    x = (4 + y - z)/4
  1813.                    y = (-1 - x)/(-2)
  1814.                    z = (7 - 3x)/4
  1815.  
  1816. Beginnen  wir mit einem beliebigen Startwert z.B. x = 4, y = -2 und z =
  1817. 4, so erhalten wir nach je einem Schritt :
  1818.   
  1819. ( 1)       x = -0.5000     y = 0.2500     z = 2.1250
  1820. ( 2)       x =  0.5312     y = 0.7656     z = 1.3515
  1821. ( 3)       x =  0.8535     y = 0.9267     z = 1.1098
  1822.              .               .              .
  1823.              .               .              .
  1824. (10)       x =  0.9999     y = 0.9999     z = 1.0000
  1825.  
  1826. Offensichtlich hat das Gleichungssystem die Lösung x = 1, y = 1 und z =
  1827. 1,  was  sofort durch Einsetzen bestätigt wird. Das dazugehörende BASIC
  1828. Programm :
  1829.  
  1830. 10 X=1:Y=1:Z=1
  1831. 20 FOR I=1 TO 10
  1832. 30 X=(4+Y-Z)/4
  1833. 40 Y=(-1-X)/(-2)
  1834. 50 Z=(7-3*X)/4
  1835. 60 PRINT "X= ";X;" Y= ";Y;" Z= ";Z
  1836. 70 NEXT I
  1837. 80 END
  1838.  
  1839. Damit  dürfte das Einzelschrittverfahren klar sein ! Bleibt zu untersu-
  1840. chen,  unter  welchen Umständen das Verfahren konvergiert, also die ge-
  1841. wünschte Lösung liefert. Die Anwendung des Banarch'schen Fixpunktsatzes
  1842. liefert als Ergebnis das Zeilen- und Spaltensummenkriterium :
  1843.  
  1844. Das Einzelschrittverfahren konvergiert genau dann, wenn
  1845.  
  1846. 1. Das Gleichungssystem eine eindeutige Lösung besitzt und
  1847. 2.  Entweder  das Zeilensummenkriterium oder das Spaltensummenkriterium
  1848. erfüllt sind.
  1849.  
  1850. Zeilensummenkriterium  : Für jede (!) Zeile i (i = 1 .. n) der Matrix A
  1851. muß  gelten,  daß  die Summe der Beträge der Koeffizienten kleiner ist,
  1852. als das doppelte Produkt des Elementes aii. Mit mathematischen Symbolen
  1853. geschrieben :
  1854.   
  1855.                     n
  1856.                     Σ  │aik│ < 2∙│aii│  (i = 1 .. n)
  1857.                    k=1
  1858.  
  1859. Entsprechendes gilt für das Spaltensummenkriterium.
  1860.   
  1861.                                ┌         ┐
  1862.                                │4  -1   1│
  1863. In unserem Beispiel ist    A = │1  -2   0│  (Koeffizientenmatrix)
  1864.                                │3   0   4│
  1865.                                └         ┘
  1866.   
  1867. =>    :   1.  Zeile    :    4 + 1 + 1 < 2∙4     o.k.
  1868.           2.   "       :    1 + 2 + 0 < 2∙2     o.k.
  1869.           3.   "       :    3 + 0 + 4 < 2∙4     o.k.
  1870.  
  1871. In  diesem Gleichungssystem ist also das Zeilensummenkriterium erfüllt.
  1872. (Nebenbei, auch das Spaltensummenkriterium. Der Leser möge dieses durch
  1873. Rechnung  nachprüfen  !). Damit konvergiert das Verfahren für jeden be-
  1874. liebigen Startwert (x,y,z).
  1875.  
  1876. Leider  sagen  diese  Kriterien  nichts darüber aus, wann ein Verfahren
  1877. nicht konvergent ist! Das heißt, liefern Zeilen- oder Spaltensummenkri-
  1878. terium keinen Beweis dafür, daß das Verfahren konvergiert, so heißt das
  1879. noch  lange  nicht, daß das Verfahren keine brauchbaren Ergebnisse lie-
  1880. fert.  Auch kann man manchmal mit dem Vertauschen von Zeilen erreichen,
  1881. daß  ein  System noch eines der Kriterien erfüllt, obschon dies vor der
  1882. Vertauschen  nicht  der  Fall  war. Im Programm wurde darauf allerdings
  1883. verzichtet.
  1884.  
  1885.                             --------------
  1886.                             Das Programm :
  1887.                             --------------
  1888.  
  1889.  
  1890. Um  nicht  jedesmal bei einem gegebenen Gleichungssystem ein neues Pro-
  1891. gramm  schreiben  zu  müssen,  wurde  das Program LINIT (LINeares Glei-
  1892. chungssystem ITerativ) geschrieben, welches sich auf der Sonderdiskette
  1893. befindet. Hier konnte die Zielsprache nur eine Sprache sein, die struk-
  1894. toriertes  Programmieren  zuläßt.  Primitive  BASIC - Dialekte scheiden
  1895. daher aus. Die Sprache PASCAL wurde ausgewählt.
  1896.  
  1897. Um  eine  möglichst leichte Übertragbarkeit zu gewährleisten, wurde das
  1898. Programm  so  geschrieben,  daß  es sowohl unter TURBO - PASCAL 3.0 wie
  1899. auch  unter TURBO - PASCAL 4.0 compeliert werden kann. Die dazu minima-
  1900. len notwendigen Änderungen sind im Quell - Text angegeben.
  1901.  
  1902. Matritzen sind Speicherfresser. Daher wurden alle Matritzen in den Pro-
  1903. zeduren und Funktion als Call by Value übergeben (VAR !). Nur so war es
  1904. mir  möglich, auch Gleichungssysteme mit großem n (getestet wurde bis n
  1905. = 31) direkt in den Speicher (640k) zu compelieren.
  1906.  
  1907.        ---------------------------------------------------------
  1908.        Die    wichtigsten    Funktionen    und    Proceduren   :
  1909.        ---------------------------------------------------------
  1910.  
  1911.                        ------------------------
  1912.                        I. FUNCTION Konvergent :
  1913.                        ------------------------
  1914.  
  1915.  
  1916. Diese Funktion überprüft wie oben angegeben das Zeilen- und Spaltensum-
  1917. menkriterium.  Ist keines der beiden Kriterien erfüllt, so wird der Be-
  1918. nutzer  nach  einer  Warnung aufgefordert einzugeben, ob er den Versuch
  1919. der  Lösung trotzdem waagen will. Entsprechend seiner Eingabe wird Kon-
  1920. vergent auf TRUE oder FALSE gesetzt.
  1921.  
  1922.                          -----------------------
  1923.                          II. FUCTION Maxfehler :
  1924.                          -----------------------
  1925.  
  1926. Die Beurteilung der Genauigkeit einer Lösung eines linearen Gleichungs-
  1927. systems  ist außerordendlich schwierig. Hier wird man, je nach Problem,
  1928. eine entsprechendes Anpassung vornehmen müssen.
  1929.  
  1930.  
  1931.                       --------------------------
  1932.                       III. PROCEDURE Iteration :
  1933.                       --------------------------
  1934.  
  1935. Zwecks schnellerer Verarbeitung durch den Rechner wurde der Iterations-
  1936. schritt folgendermaßen umgestellt :
  1937.  
  1938.  
  1939. Für jede Zeile i = 1 .. n gilt :
  1940.   
  1941.                          n
  1942.                          Σ aikxk = bi
  1943.                         k=1
  1944.                   n
  1945.     <=>   aiixi + Σ aikxk - aiixi = bi
  1946.                  k=1
  1947.                                                   n
  1948.     <=>                     aiixi = bi - (aiixi + Σ aikxk)
  1949.                                                  k=1
  1950.                                                   n
  1951.                                     bi +  aiixi - Σ aikxk
  1952.                                                  k=1
  1953.     <=>                        xi = ──────────────────────
  1954.                                            aii
  1955.  
  1956. ··············n
  1957. Das··Produkt Σ aikxk wird durch die Funktion Produktsumme
  1958. ·············k=1
  1959. ermittelt.
  1960.                           -------------------
  1961.                           IV PROCEDURE Eingabe :
  1962.                           -------------------
  1963.  
  1964. Die  Eingabe  der  Koeffizienten des Gleichungssystems kann sowohl über
  1965. die Tastatur (umständlich und nur für Testzwecke geeignet) als auch mit
  1966. Hilfe  einer  Textdatei  erfolgen.  Diese  hat  dann folgenden Aufbau :
  1967. (vergl. dazu das obige Beispiel)
  1968.   
  1969. 3
  1970. 4  -1  1  4
  1971. 1 - 2  0  -1
  1972. 3   0  4   7
  1973.  
  1974. Die  Datei TEST.lin enthält ein Gleichungssystem mit 31 Unbekannten zum
  1975. ausprobieren.
  1976.  
  1977. Die  Arbeitsweisen  der anderen Proceduren und Funktionen gehen aus dem
  1978. Quelltext hervor und bedürfen sicherlich keinerlei Erklärungen mehr.
  1979.  
  1980.  
  1981.                 --------------------------------------
  1982.                 Anwendungen und Grenzen des Verfahrens.
  1983.                 --------------------------------------
  1984.  
  1985.  
  1986. Die  Zeit,  welche der Gauß'sche Algorithmus benötigt, ist wie oben be-
  1987. reits angegeben proportional zu n3. Dagegen benötigt das Gesamtschritt-
  1988. verfahren  für einen Schritt eine Zeit, die proportional zu n2 ist. Al-
  1989. lerdings  kommt  man  mit einem Schritt in den seltesten Fällen aus, so
  1990. daß  der  Zeitgewinn  nicht  alzu groß in's Gewicht fällt. Man erreicht
  1991. jedoch  eine  erhebliche Steigerung der Genauigkeit. Das Iterationsver-
  1992. fahren ist bei Konvergenz numerisch stabil und daher dem Elimentations-
  1993. verfahren  nach  Gauß  vorzuziehen. Dies gilt insbesondere bei "großen"
  1994. Systemen  (n  >  50), bei denen das Elimentationsverfahren zu total un-
  1995. brauchbaren  Ergebnissen  führen kann. Besonders vorteilhaft wirkt sich
  1996. das  Iterationsverfahren  dann aus, wenn die Matrix A viele Nullen ent-
  1997. hällt, wie das Beispielsweise bei der Berechnung kubischer Splines oder
  1998. auch  bei der Lösung mancher Differenzialgleichungen der Fall ist. Eine
  1999. "blinde"  Anwendung des Gaußalgorithmus würde diese Nullen "zerstören",
  2000. was sich dann nachteilig auf die Genauigkeit auswirkt.
  2001.  
  2002. Ich  möchte aber davor warnen dieses Verfahren "blind" einzusetzen. Ist
  2003. die  Konvergenz  nicht gewährleistet, so kann es passieren, daß die be-
  2004. rechneten  xi  mit der exakten Lösung nichts zu tun haben. In der Regel
  2005. wird  man  dieses  daran merken, daß die xi bei jedem Iterationsschritt
  2006. immer größer werden. Dies führt letztlich zu einem Overflow - Error und
  2007. damit  zu  einem  Abbruch des Programms. Bei linear abhängigen Systemen
  2008. gibt es 2 Möglichkeiten : entweder das Verfahren konvergiert gegen eine
  2009. Lösung  (obschon es deren unendlich viele gibt) oder es divergiert. Man
  2010. sollte sich daher die Werte stets ausgeben lassen um nicht die Kontrol-
  2011. le  über  die  Berechnung  zu verlieren. Das oben gesagte gilt auch für
  2012. Gleichungen  oder  Gleichungssysteme, die nicht linear sind und mit der
  2013. oben geschilderter Methode berechnet werden sollen.
  2014.  
  2015. Und  nun  viel  Spaß  beim  Austesten  und Ausprobieren und ggf. selber
  2016. schreiben.
  2017.  
  2018.  
  2019.  
  2020.  
  2021.                                   Heinz Hagemeyer
  2022.