Algorithmen für Ingenieure - realisiert mit Visual Basic
 9783834800152, 3834800155 [PDF]

  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

Harald Nahrstedt Algorithmen for Ingenieurerealisiert mit Visual Basic

Lexikon fOr IT-Berufe

Grundkurs Theoretische Informatik

yon Peter Fetzer und Bettina Schneider

von Gottfried Vossen und Kurt-Ulrich Witt

Grundkurs IT-Berufe

Anwendungsorientlerte Wirtschaftsinformatik

von Andreas M. B6hm und Bettina Jungkunz

Pr0fungsvorbereitung fOr IT-Berufe von Manfred W~insche

Grundlegende Algorithmen von Volker Heun

Gmndkurs Programmieren mit Delphi von Wolf-Gert Matth~ius

Grundkurs Visual Basic von Sabine Kw

Visual Basic for technische Anwendungen von JOrgen Radel

Grundkurs SmalltalkO b j e k t o r i e n t i e r u n g von Anfang an von Johannes Brauer

Grundkurs Software-Entwicklung mit C++ von Dietrich May

Grundkurs JAVA von Dietmar Abts

Aufbaukurs JAVA von Dietmar Abts

Grundkurs Java-Technologien von Erwin Merker

Java ist eine Sprache yon Ulrich Grude

Middleware in Java von Steffen Heinzl und Markus Mathes

Das Linux-Tutorial - Ihr Weg zum LPl-Zertiflkat von Helmut Pils

Rechnerarchitektur von Paul Herrmann

Grundkurs Relationale Datenbanken von Ren~ Steiner

Grundkurs Datenbankentwurf von Helmut Jarosch

Datenbank-Engineering von Alfred Moos

Grundlagen der Rechnerkommunikation von Bernd SchOrmann

Netze - Protokolle - Speziflkationen von Alfred Olbrich

Grundkurs Verteilte Systeme von GUnther Bengel

Grundkurs Mobile Kommunikationssysteme von Martin Sauter

Grundkurs Wlrtschaftsinformatik von Dietmar Abts und Wilhelm M~lder

von Paul Alpar, Heinz Lothar Grob, Peter Weimann und Robert Winter

Business Intelligence - Grundlagen und praktische Anwendungen von Hans-Georg Kemper, Walid Mehanna und Carsten Unger

Grundkurs GeschMtsprozess-Management von Andreas Gadatsch

Prozessmodelllerung mlt ARIS | von Heinrich Seidlmeier

ITIL kompakt und verst~ndlich yon Alfred Olbrich

BWL kompakt und verstindlich yon Notger Carl, Rudolf Fiedler, William J6rasz und Manfred Kiesel

Masterkurs IT-Controlling von Andreas Gadatsch und Elmar Mayer

Masterkurs Computergraflk und Bildverarbeitung yon Alfred Nischwitz und Peter Haber~cker

Grundkurs Medlengestaltung von David Starmann

Grundkurs Web-Programmlerung von G~nter Pomaska

Web-Programmlerung von Oral Avcl, Ralph Trittmann und Werner Mellis

Grundkurs MySOJ. und PHP von Martin Pollakowski

Grundkurs SAP It/3 | von Andr~ Maassen und Markus Schoenen

SApe-gest0tztes Rechnungswesen von Andreas Gadatsch und Detlev Frick

Kostentrigerrechnung mit SAP R/3 | von Franz Klenger und Ellen Falk-Kalms

Masterkurs Kostenstellenrechnung mit S A P von Franz Klenger und Ellen Falk-Kalms

Controlling mit SAP | von Gunther Friedl, Christian Hilz und Burkhard Pedell

Logistikprozesse mit SAP It/3 | von Jochen Benz und Markus H~flinger

IT-Projekte strukturlert realisleren yon Ralph Brugger

Algorithmen for Ingenleure - realislert mit Visual Basic von Harald Nahrstedt

.............................................................

T......................................

Harald Nahrstedt

Algorithmen fi)r I ngen i e u r e realisiert mit V i s u a l Basic Eine anwendungsorientierte Einf(i hrung- Problemanalyse und L6sungsweg anhand konkreter Beispiele Mit 165 Abbildungen

v=eweg

Bibliografische Information Der Deutschen Bibliothek Die Deutsche Bibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet 0ber abrufbar.

Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Werk berechtigt auch ohne besondere Kennzeichnun8 nicht zu der Annahme, dass solche Namen im Sinne von Warenzeichen- und Markenschutz-Gesetzgebung als frei zu betrachten w~ren und daher von jedermann benutzt werden d0rfen. HSchste inhaltliche und technische Qualit~t unserer Produkte ist unser Ziel. Bei der Produktion und Auslieferung unserer B0cher wollen wir die Umwelt schonen: Dieses Buch ist auf s~iurefreiem und chlorfrei gebleichtem Papier gedruckt. Die Einschweil3folie besteht aus Poly~thylen und damit aus organischen Grundstoffen, die weder bei der Herstellung noch bei der Verbrennung Schadstoffe freisetzen.

1. Auflage Dezember 2005 Alle Rechte vorbehalten 9 Friedr. Vieweg & Sohn Verlag/GWV Fachverlage GmbH, Wiesbaden 2005 Lektorat: Dr. Reinald Klockenbusch /Andrea Brol31er Der Vieweg Verlag ist ein Unternehmen von Springer Science+Business Media. www.vieweg-it.de

Das Werk einschliel31ich aller seiner Teile ist urheberrechtlich s Jede Verwertung aul3erhalb der engen Grenzen des Urheberrechtsgesetzes ist ohne Zustimmun8 des Verlags unzulw und strafbar. Das gilt insbesondere for Vervielf~ltigungen, Ubersetzungen, Mikroverfilmungen und die Einspeicherung und Verarbeitung in elektronischen Systemen. o.

Konzeption und Layout des Umschlags: Ulrike Weigel, www.CorporateDesignGroup.de Umschlagbild: Nina Faber de.sign, Wiesbaden Druck- und buchbinderische Verarbeitun8: Wilhelm & Adam, Heusenstamm Printed in Germany ISBN 3-8348-0015-5

Vorwort

Vo ort Warum dieses Buch

In Laufe meiner langj~hrigen beruflichen Erfahrung musste ich viele ingenieurm~.lgige Aufgaben 16sen. Dies gelang mir immer wieder, nach dem ich den ftir die L6sung richtigen Algorithmus gefunden hatte. Die Entwicklung eines Modells, die Suche nach dem Algorithmus und dessen formale Anwendung waren ftir mich immer die kreativsten Phasen eines L6sungsprozesses. Die Umsetzung des Algorithmus in die jeweilige Programmiersprache war dann ,,nur noch" handwerkliches K6nnen. So ergaben sich mit den Jahren die verschiedensten L6sungen im technischen Bereich mit den unterschiedlichsten Algorithmen. Damit wuchs aber auch mein Interesse an verschiedene Arten von Algorithmen und ihren M6glichkeiten. Mit Freude stelle ich fest, dass gerade in den letzten Jahren durch die sinnvolle Verkn~ipfung von Ingenieurwissenschaften und Informatik neue Mal~st~ibe gesetzt werden. Studienrichtungen wie Maschinenbauinformatik oder Ingenieurinformatik machen Hoffnung auf eine schnelle Weiterentwicklung. Ahnlich wie einst die Ingenieurdisziplin aus der Physik hervorgegangen ist, scheint auch die Informatik hier einen ~.hnlich kl~.renden Prozess zu erfahren. Hin zu einem Softwareingenieurwesen und weg vom Ktinstlertum und T~iftlerdasein. Ziel dieses Buches ist es, sowohl dem Ingenieurstudenten als auch dem praktizierenden Ingenieur Algorithmen und deren Anwendungsm6glichkeiten zu zeigen. Dabei kann und soil der Umfang dieses Buches nur einfache Anwendungen zeigen und so das Prinzip erkl~tren und das Interesse an einer Vertiefung des Stoffes wecken. So beschr~inken sich die mathematischen Herleitungen auf einfache Formen, ohne Untersuchung von Stetigkeit oder gC~ltigen Bereichen. Auch die Biologie hat schon immer die Ingenieurwissenschaften beeinflusst (Bionik) und erf~hrt im Moment ~iber die Informatik mit Prozessen aus der Natur neue Impulse. Dabei habe ich das Thema Neuronale Netze zun~.chst ausgespart. Vielleicht erlaubt mir eine sp~itere Ausgabe auch diesem Thema einige Seiten zu widmen. Ingenieure arbeiten oft in Teams. Dennoch werden durch Aufteilung bestehender Aufgaben die Probleme meist durch EinzelperV

Vorwort sonen gelOst oder zumindest stammt die Kernidee einer L6sung von dieser. Es ist die SchlOsselqualifikation eines Ingenieurs, diese Probleml6sungen zu liefern. In diesem Sinne ist ein Ingenieur auch forschend t~tig, soweit dies ihm zeitlich m6glich ist. Denn zeiteffektiv zu arbeiten, steht bei ihm an vorderster Stelle und so benOtigt er auch ein gutes Zeitmanagement. In diesem Sinne sollen die dargestellten Algorithmen auch zur schnelleren L6sungsfindung dienen.

Zum Aufbau Im ersten Kapitel gebe ich eine kurze l~lbersicht zur geschichtlichen Entwicklung von Algorithmen. Ebenso werden die Eigenschaften und Klassen von Algorithmen erl~tutert. Eine Betrachtung verwandter Begriffe schlielgt sich an. Die restlichen Kapitel haben eine grundlegende Einf~hrung zum Thema und die Anwendung des Algorithmus bis zur Realisierung an einem praktischen Beispiel. Dazu verwende ich die Entwicklungsumgebung von Microsoft Office Excel 2003.

Danksagung Ich danke all denen im Hause Vieweg, die stets im Hintergrund wirkend, zum Gelingen dieses Buches beigetragen haben. Ein besonderer Dank gilt meinem Lektor Dr. Reinald Klockenbusch. Er hat durch geduldiges Hinterfragen und mit wichtigen Ratschl~gen zu diesem Buch die richtigen Impulse gegeben.

An den Leser Dieses Buch soll auch zum Dialog zwischen Autor und Leser auffordern. Daher finden Sie sowohl auf der Homepage des Verlages www.vieweg.de, als auch auf meiner Homepage www.harald-nahrstedt.de ein Forum for erg~tnzenden Programme, Anregungen und Kommentare so wie LOsungen zu den Ubungsaufgaben. M6hnesee, im Oktober 2005

VI

Harald Nahrstedt

I n h a l t s v e r z e i c h n is

Inhaltsverzeich nis 1 A l g o r i t h m e n ...........................................................................................................

1

1.1 G e s c h i c h t l i c h e s ................................................................................................

1

1.2 F o r m a l e Definition ........................................................................................... 3 1.3 A s p e k t e d e r A l g o r i t h m e n ................................................................................ 3 1.4 A l g o r i t h m e n k l a s s e n ......................................................................................... 4 1.5 Das K o n z e p t e i n e r P r o b l e m l 6 s u n g ................................................................. 7 1.6 Heuristik ...........................................................................................................

9

2 L 6 s u n g e n v o n G l e i c h u n g e n .............................................................................. 13 2.1 L 6 s u n g e n y o n q u a d r a t i s c h e n G l e i c h u n g e n .................................................. 13 H~irteprtifung n a c h Brinell ....................................................................... 13 2.2 K u b i s c h e G l e i c h u n g e n .................................................................................. 17 T r i c h t e r v o l u m e n ........................................................................................ 22 2.3 L 6 s u n g e n y o n G l e i c h u n g e n h 6 h e r e n G r a d e s .............................................. 23 Minimaler M a t e r i a l v e r b r a u c h mit Regula Falsi ........................................ 24 Maximales V o l u m e n n a c h d e r N e w t o n M e t h o d e .................................... 31

3 L 6 s u n g e n linearer G l e i c h u n g s s y s t e m e ........................................................... 37 3.1 L 6 s u n g e n linearer G l e i c h u n g s s y s t e m e ......................................................... 37 T e m p e r a t u r v e r t e i l u n g n a c h der Gaufg-Elimination ................................. 38 3.2 Lineare O p t i m i e m n g mit d e r S i m p l e x - M e t h o d e .......................................... 44 P r o d u k t i o n s o p t i m i e m n g ........................................................................... 45 Z u s c h n i t t o p t i m i e m n g ............................................................................... 54

VII

I n h a l t s v e r z e i c h n is

4 F u n k t i o n e n ........................................................................................................... 58 4.1 Interpolation y o n F u n k t i o n e n d u r c h P o l y n o m e .......................................... 58 4.1.1 Interpolation n a c h N e w t o n ....................................................................... 59 Stahlseilverlauf .......................................................................................... 60 4.1.2 Interpolation mittels k u b i s c h e r Splines ..................................................... 65 Stahlseilverlauf .......................................................................................... 71 4.2 A p p r o x i m a t i o n v o n F u n k t i o n e n d u r c h P o l y n o m e ....................................... 72 S e n s o r k e n n l i n i e ......................................................................................... 74 4.3 N u m e r i s c h e Integration ................................................................................. 80 Tr~iger gleicher Zugfestigkeit .................................................................... 81 Ausflusszeit v o n Fltissigkeiten .................................................................. 87

5 D i f f e r e n t i a l g l e i c h u n g e n .................................................................................... 95 5.1 N u m e r i s c h e B e h a n d l u n g g e w 6 h n l i c h e r Differentialgleichungen ........................................................................... 95 B e w e g u n g s b e s t i m m u n g eines Schubkurbeltriebs d u r c h D i f f e r e n z e n q u o t i e n t e n .............................................................................. 97 D r e h s c h w i n g u n g e n ............................................................................... 111 5.2 N u m e r i s c h e B e h a n d l u n g partieller Differentialgleichungen .......................................................................... 119 B e s t i m m u n g einer Membranfl~iche mittels L a p l a c e - O p e r a t o r .............. 121

6 V e k t o r e n u n d Matrizen .................................................................................... 130 6.1 Matrizendefinitionen .................................................................................... 130 6.2 L6sen v o n G l e i c h u n g s s y s t e m e n .................................................................. 151 Gaulg-Elimination .................................................................................... 153 6.3 D i f f e r e n z e n v e r f a h r e n for g e w 6 h n l i c h e Differentialgleichungen .......................................................................... 158 Einseitig e i n g e s p a n n t e r Biegetr~ger ....................................................... 159

VIII ".

.

.

.

I n h a ltsverzeic h n is

6.4 E i g e n w e r t p r o b l e m e ..................................................................................... 163 Freie B i e g e s c h w i n g u n g eines g e r a d e n Balkens .................................... 164

7 P s e u d o z u f a l l s z a h l e n ......................................................................................... 173 7.1 Die Eigenschaft der Pseudo-Zufallszahlen ................................................. 173 Wahrscheinlichkeit u n d Gleichverteilung ............................................. 173 7.2 Integration nach der Monte Carlo M e t h o d e ............................................... 173 B e s t i m m u n g der Fl~iche eines Blechteils ............................................... 177 7.3 Probabilistische Simulation ........................................................................ 180 M a s c h i n e n w a r t u n g als W a r t e s c h l a n g e n p r o b l e m mit W a h r s c h e i n l i c h k e i t s w e r t e n ..................................................................... 180 Ermittlung der L e b e n s d a u e r y o n Maschinenteilen d u r c h Ausfallwahrscheinlichkeiten ....................................................... 186

8 M g o r i t h m e n a u f D a t e n s t r u k t u r e n ................................................................. 204 8.1 P e r m u t a t i o n e n .............................................................................................. 204 Bearbeitung am Flief~band als E n g p a s s z u o r d n u n g s p r o b l e m .................................................................. 207 8.2 Regression u n d Korrelation ......................................................................... 213 Experimentelle B e s t i m m u n g einer Feder .............................................. 219 8.3 Arrays u n d Datenfelder ............................................................................... 221 Nutzwertanalyse ...................................................................................... 222 8.4 Arbeiten auf Listenstrukturen ..................................................................... 228 Quicksort ................................................................................................. 228 Stticklistenorganisation ........................................................................... 231 8.5 Arbeiten auf B a u m s t m k t u r e n u n d G r a p h e n .............................................. 239 N e t z p l a n t e c h n i k ...................................................................................... 242

IX

In h a ltsverzeic h n is

9 V e r h a l t e n s - A l g o r i t h m e n .................................................................................. 253 9.1 Teile u n d Herrsche ...................................................................................... 253 S u c h e n nach der B i s e k t i o n s m e t h o d e .................................................... 253 9.2 Die G r e e d y - M e t h o d e ................................................................................... 256 Auftragsfolgenproblem .......................................................................... 256 9.3 Rtickverfolgung o d e r Backtracking ............................................................ 262 Einschrittige Codes ffir industrielle W e g m e s s u n g ................................. 263 9.4 ROckw~irtsrechnen o d e r Rekursive P r o z e d u r e n ......................................... 270 J e e p - P r o b l e m .......................................................................................... 270

10 A l g o r i t h m e n a u s d e r N a t u r ........................................................................... 274 10.1 Der A m e i s e n a l g o r i t h m u s ........................................................................... 274 M a s c h i n e n b e l e g u n g ................................................................................ 278 10.2 Evolutionsstrategien ................................................................................... 286 S t a b w e r k o p t i m i e m n g ............................................................................. 287 10.3 G e n e t i s c h e Algorithmen ............................................................................ 294 P a c k p r o b l e m ........................................................................................... 296

11 M g o r i t h m e n

als l d i n s t l i c h e I n t e l l i g e n z ...................................................... 303

11.1 Fuzzy Logik ................................................................................................ 303 Fuzzy Regelung eines Industrieofens .................................................... 308

L i t e r a t u r v e r z e i c h n i s ............................................................................................ 315 Sachwortverzeichnis

X

........................................................................................... 317

A bbiMu ngsverzeich n is

Abbildungsverzeichnis 1 M g o r i t h m e n ........................................................................................................... 1 1-1 S y s t e m w i s s e n v e r s u s A l g o r i t h m e n k l a s s e n .................................................... 6 1-2 Black B o x ........................................................................................................

7

1-3 S c h e m a d e r L 6 s u n g s f i n d u n g ........................................................................... 8 1 - 4 0 b l i c h e L6sung des B i e r d e c k e l p r o b l e m s ................................................... 10 1-5 L6sung n a c h d e r A u f g a b e y o n Restriktionen ............................................... 10 1-6 Eine d r e i d i m e n s i o n a l e L6sung ...................................................................... 11

2 L ~ s u n g e n v o n G l e i c h u n g e n .............................................................................. 13 2-1 K u g e l d r u c k p r o b e n a c h Brinell ..................................................................... 14 2-2 Eine T a b e l l e in e i n e r A r b e i t s m a p p e besitzt u n t e r VBA ein C o d e f e n s t e r .. 16 2-3 M e n t i p u n k t Eindringtiefe ..............................................................................

17

2-4 A u s w e r t u n g n a c h Brinell mit B e i s p i e l d a t e n ................................................. 17 2-5 Menti K u b i s c h e G l e i c h u n g .......................................................................... 22 2-6 Geschweilgter Blechtrichter ........................................................................... 22 2-7 B e r e c h n u n g s f o r m u l a r ....................................................................................

23

2-8 M e t h o d e Regula Falsi ....................................................................................

24

2-9 Zylindrischer Behiilter for M i n i m a l a u f g a b e .................................................. 25 2-10 Menti for Minimale Oberfliiche ................................................................... 30 2-11 A u s w e r t u n g d e r T e s t d a t e n .......................................................................... 30 2-12 B l e c h z u s c h n i t t for m a x i m a l e s V o l u m e n ..................................................... 31 2-13 M e t h o d e n a c h N e w t o n ................................................................................ 32 2-14 Menti for m a x i m a l e s V o l u m e n ................................................................... 35 2-15 A u s w e r t u n g d e r T e s t d a t e n for m a x i m a l e s V o l u m e n ................................. 35

3 L/Jsungen l i n e a r e r G l e i c h u n g s s y s t e m e ........................................................... 37 3-1 Gitternetz zur T e m p e r a t u r v e r t e i l u n g ............................................................ 39 3-2 Menti T e m p e r a t u r v e r t e i l u n g ......................................................................... 43

XI

A bbildu ngsverzeich n is 3-3 T e m p e r a t u r f e l d der Testdaten ...................................................................... 44 3-4 Grafische L6sung der P r o d u k t i o n s o p t i m i e r u n g ........................................... 46 3-5 Rechteckregel ................................................................................................ 47 3-6 MenO Simplex ................................................................................................ 54 3-7 Bauteile Ubersicht ......................................................................................... 54 3-8 Zuschnitte zur O p t i m i e m n g .......................................................................... 55 3-9 A u s w e r t u n g der Testdaten zur Zuschnittoptimierung ................................. 56

4 Funktionen ........................................................................................................... 58 4-1 StOtzstellen eines I n t e r p o l a t i o n s p o l y n o m s ................................................... 58 4-2 Stahlseilverlauf ............................................................................................... 60 4-3 MenO zur Interpolation nach N e w t o n .......................................................... 63 4-4 A u s w e r t u n g der Testdaten zum Seilverlauf ................................................. 64 4-5 A n e i n a n d e r r e i h u n g kubischer P o l y n o m e ..................................................... 66 4-6 MenO zur Interpolation mittels kubischer Splines ....................................... 71 4-7 Seilverlauf, ermittelt durch kubische Splines ............................................... 71 4-8 Grafische Darstellung der M e t h o d e der kleinsten Fehlerquadrate ............. 72 4-9 Lineare A p p r o x i m a t i o n ................................................................................. 73 4-10 Lineare A p p r o x i m a t i o n nach der F e s t p u n k t m e t h o d e ................................ 74 4-11 Lineare Approximation nach d e m Minimum der Fehlerquadrate ............. 75 4-12 MenO zur Interpolation nach N e w t o n ........................................................ 79 4-13 Beispiel der linearen A p p r o x i m a t i o n einer Sensorkennlinie .................... 79 4-14 Bestimmtes Integral ..................................................................................... 80 4-15 Einteilung nach der Trapezregel ................................................................ 80 4-16 Tr~iger mit gleicher Zugfestigkeit ................................................................ 82 4-17 MenO zur k o n s t a n t e n Z u g s p a n n u n g .......................................................... 85 4-18 A u s w e r t u n g der Testdaten zur k o n s t a n t e n Z u g s p a n n u n g ........................ 86 4-19 Ausfluss aus e i n e m Beh~lter ....................................................................... 87 4-20 Vorschrittige, r0ckschrittige u n d zentrale Differenzen .............................. 88 4-21 MenO zur Ausflusszeitbestimmung ............................................................. 93

XII

A bbiMu ngsverzeich n is 4-22 B e s t i m m u n g d e r Ausflusszeit einer Fltissigkeit .......................................... 94

5 Differentialgleichungen .................................................................................... 95 5-1 N/ i h er u n g n a c h E u l e r - C a u c h y ...................................................................... 95 5-2 S c h u b k u r b e l t r i e b ........................................................................................... 97 5-3 S c h u b s t a n g e u n d B o l z e n z u m S c h u b k u r b e l t r i e b ......................................... 98 5-4 K u r b e l w a n g e u n d K u r b e l z a p f e n z u m S c h u b k u r b e l t r i e b ............................. 99 5-5 I n d i k a t o r d i a g r a m m z u m S c h u b k u r b e l t r i e b ................................................ 100 5-6 D r e h m o m e n t e n v e r l a u f z u m S c h u b k u r b e l t r i e b ........................................... 100 5-7 S c h w u n g s c h e i b e z u m S c h u b k u r b e l t r i e b .................................................... 101 5-8 Menti z u m S c h u b k u r b e l t r i e b ...................................................................... 108 5-9 A u s w e r t u n g d e r T e s t d a t e n 1. Teil .............................................................. 109 5-10 A u s w e r t u n g d e r T e s t d a t e n 2. Teil ............................................................ 110 5-11 D i a g r a m m e zur A u s w e r t u n g ..................................................................... 111 5-12 T o r s i o n s p e n d e l ..........................................................................................

111

5-13 Menti D r e h s c h w i n g u n g e n ......................................................................... 115 5-14 S c h w i n g u n g s s y s t e m ...................................................................................

116

5-15 Ersatzsystem for D r e h s c h w i n g u n g e n ....................................................... 116 5-16 A u s w e r t u n g des S c h w i n g u n g s s y s t e m s ..................................................... 117 5-17 T o r s i o n s p e n d e l zur Feststellung eines Id ................................................. 118 5-18 G i t t e r p u n k t e ...............................................................................................

119

5-19 B e r e c h n u n g s o p e r a t o r ................................................................................

120

5-20 F o r m e i n e r e i n g e s p a n n t e n M e m b r a n ....................................................... 121 5-21 Einteilung eines M e m b r a n a u s s c h n i t t s ...................................................... 121 5-22 Menti zur M e m b r a n b e r e c h n u n g ............................................................... 128 5-23 M e m b r a n b e s t i m m u n g n a c h T e s t d a t e n ..................................................... 128 5-24 S c h e m a t i s c h e r Aufbau e in e r E l e k t r o n e n r 6 h r e ......................................... 129

6 Vektoren und Matrizen .................................................................................... 130 6-1 Erster Aufbau d e s MenOs M a t r i z e n o p e r a t i o n e n ......................................... 134 6-2 MenO M a t r i z e n o p e r a t i o n e n ......................................................................... 150

XIII

A bbildu ngsverzeich n is 6-3 Menti z u m G a u l g - A l g o r i t h m u s ....................................................................

157

6-4 T e s t d a t e n a u s w e r t u n g ..................................................................................

157

6-5 D i f f e r e n z e n ..................................................................................................

158

6-6 G l e i c h g e w i c h t e i n e s finiten E l e m e n t s u n t e r B i e g e b e l a s t u n g .................... 159 6-7 Einseitig e i n g e s p a n n t e r B i e g e t r ~ g e r ........................................................... 160 6-8 A u s w e r t u n g n a c h d e r G a u l g - M e t h o d e ........................................................ 162 6-9 B e i d s e i t i g e i n g e s p a n n t e r TrS.ger .................................................................

164

6-10 Menti zur M e t h o d e v o n Mises ..................................................................

170

6-11 1. Teil d e r A u s w e r t u n g z u m T e s t b e i s p i e l ................................................. 171 6-12 2. Teil d e r A u s w e r t u n g z u m T e s t b e i s p i e l ................................................. 171

7 Pseudozufallszahlen .........................................................................................

173

7-1 Viertelkreis im Q u a d r a t ...............................................................................

173

7-2 Menti zur M o n t e - C a r l o - M e t h o d e ................................................................

175

7-3 T e s t e r g e b n i s s e zur M o n t e - C a r l o - M e t h o d e .................................................. 176 7-4 Fl~iche e i n e s Blechteils ................................................................................

177

7-5 MenO zur F l ~ i c h e n b e r e c h n u n g ....................................................................

179

7-6 Blechteilfl~che n a c h d e r M o n t e - C a r l o - M e t h o d e b e s t i m m t ........................ 180 7-7 MenO zur M a s c h i n e n w a r t u n g .....................................................................

185

7-8 M a s c h i n e n w a r t u n g mit T e s t d a t e n ...............................................................

185

7-9 S c h e m a e i n e r P u m p e n e i n h e i t .....................................................................

186

7-10 W a h r s c h e i n l i c h k e i t s f u n k t i o n d e r d u r c h s c h n i t t l i c h e n L e b e n s d a u e r ......... 187

8 Algorithmen auf Datenstrukturen ................................................................. 204 8-1 MenO P e r m u t a t i o n e n ...................................................................................

206

8-2 P e r m u t a t i o n e n v o n n=5 ..............................................................................

207

8-3 S c h e m a e i n e r F l i e l g b a n d a r b e i t ....................................................................

207

8-4 Menti zur F l i e l g b a n d a r b e i t ...........................................................................

212

8-5 A u s w e r t u n g d e r T e s t d a t e n ..........................................................................

212

8-6 M e s s w e r t e u n d R e g r e s s i o n s g e r a d e ............................................................. 213 8-7 Menti zur B e s t i m m u n g d e r R e g r e s s i o n s g e r a d e n ....................................... 218

XIV

A bbildu ngsverzeichn is 8-8 A u s w e r t u n g der Testdaten .......................................................................... 219 8-9 F e d e r p e n d e l ................................................................................................. 220 8-10 B e s t i m m u n g der F e d e r k o n s t a n t e n aus d e n Beispieldaten ...................... 221 8-11 Aufbau eines Arrays .................................................................................. 222 8-12 Schema einer Nutzwertanalyse ................................................................. 223 8-13 Beispiel einer Nutzwertanalyse ................................................................. 224 8-14 MenO zur Nutzwertanalyse ....................................................................... 227 8-15 Ergebnis des Testbeispiels ........................................................................ 227 8-16 MenO z u m Quicksort ................................................................................. 231 8-17 Beispiel einer Produktstruktur .................................................................. 232 8-18 MenO zur ProduktstOckliste ...................................................................... 237 8-19 Baugruppen-StOcklisten z u m Beispiel ...................................................... 238 8-20 Struktur-StOckliste z u m Beispiel ............................................................... 238 8-21 Beispiel eines G r a p h e n ............................................................................. 239 8-22 Beispiel eines gerichteten u n d g e w i c h t e t e n G r a p h e n ............................. 240 8-23 Vergleich G r a p h u n d B a u m ...................................................................... 240 8-24 G o z i n t o g r a p h z u m StOcklistenbeispiel ..................................................... 241 8-25 Elemente in PERT ...................................................................................... 242 8-26 Scheinaktivit~.t ............................................................................................ 244 8-27 Netzplan z u m Beispiel .............................................................................. 245 8-28 MenO z u m Netzplan PERT ........................................................................ 251 8-29 1. Teil E i n g a b e d a t e n u n d Auswertungsteil z u m Netzplan ...................... 251 8-30 2. Teil restliche A u s w e r t u n g ..................................................................... 251 9 Verhaltens-Algorithmen

.................................................................................. 253

9-1 Schema einer B i s e k t i o n s m e t h o d e ............................................................... 254 9-2 MenO zur S u c h p r o z e d u r nach der B i s e k t i o n s m e t h o d e ............................. 255 9-3 MenO zur G r e e d y - M e t h o d e ......................................................................... 261 9-4 Ergebnis der Testdaten ............................................................................... 261 9-5 B a u m s t r u k t u r ............................................................................................... 262

XV

A bbiMu ngsverzeich n is 9-6 W e g m e s s u n g ............................................................................................... 263 9-7 Erste Schritte des Algorithmus .................................................................... 264 9-8 Ment~ zur Bestimmungsart .......................................................................... 269 9-9 Die ersten n e u n g e f u n d e n e n einschrittigen Codes ................................... 269 9-10 Die M e t h o d e des Rtickw~irtsrechnens ...................................................... 270 9-11 Men~ zum J e e p - P r o b l e m .......................................................................... 273 9-12 B e i s p i e l b e r e c h n u n g zum J e e p - P r o b l e m ................................................... 273

10 A l g o r i t h m e n aus der Natur ........................................................................... 274 10-1 Ktirzeste m a c h b a r e W e g e der Ameisen ................................................... 275 10-2 Beispiel for Wahrscheinlichkeiten einer L6sungsauswahl im A m e i s e n a l g o r i t h m u s ............................................................................... 277 10-3 Menti zum A m e i s e n a l g o r i t h m u s ............................................................... 285 10-4 Ein m{Sgliches Ergebnis der Testdaten ..................................................... 285 10-5 Stabwerk unter Belastung ......................................................................... 287 10-6 V e r s c h i e b u n g des 1. Knotens ................................................................... 288 10-7 V e r s c h i e b u n g des 2. Knotens ................................................................... 288 10-8 Der Endstab ............................................................................................... 289 10-9 Menti zur S t a b w e r k s o p t i m i e r u n g .............................................................. 293 10-10 Ergebnisse aus d e n Testdaten ................................................................. 293 10-11 Das g e o m e t r i s c h optimierte Stabwerk .................................................... 294 10-12 Menti zum g e n e t i s c h e n Algorithmus ...................................................... 301 10-13 A u s w e r t u n g der Testdaten zum g e n e t i s c h e n Algorithmus .................... 302 11 A l g o r i t h m e n als l d i n s t l i c h e I n t e l l i g e n z ...................................................... 303 11-1 Menge der a n g e n e h m e n R a u m t e m p e r a t u r ............................................... 304 11-2 F o r m e n yon Fuzzy-Mengen ...................................................................... 304 11-3 Beispiel einer Fuzzy-Zerlegung ftir R a u m t e m p e r a t u r .............................. 305 11-4 Das K o m p l e m e n t einer Fuzzy Menge ...................................................... 305 11-5 Die V e r e i n i g u n g s m e n g e der Fuzzy-Mengen ............................................ 305 11-6 Die D u r c h s c h n i t t s m e n g e der Fuzzy-Mengen ........................................... 306

XVI /

~

9 9

..

A bbildungsverzeichnis 11-7 Beispiel einer F u z z y f i z i e m n g .................................................................... 306 11-8 V e r k n t i p f u n g linguistischer Werte ............................................................ 307 11-9 Das S c h e m a einer Fuzzy-Regelung .......................................................... 308 11-10 Fuzzy-Set T e m p e r a t u r .............................................................................. 308 11-11 Fuzzy-Set D r u c k ....................................................................................... 309 11-12 Ventilstellung ........................................................................................... 309 11-13 Menti zur F u z z y - R e g e l u n g ...................................................................... 311 11-14 B e r e c h n e t e s Kennfeld ............................................................................. 314

XVII

P r o g ra m m v e r z e i c h n is

Programmverzeichnis .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

." 7 /

.

~

9

.

"~

2 L6sungen v o n Gleichungen .............................................................................. 13 2-1 B e s t i m m u n g der Eindringtiefe n a c h Brinell ................................................. 15 2-2 LOsungen k u b i s c h e r G l e i c h u n g e n ................................................................ 19 2-3 B e s t i m m u n g der m i n i m a l e n Oberfl~iche eines zylindrischen Beh~ilters ..... 27 2-4 B e s t i m m u n g des m a x i m a l e n V o l u m e n s eines Beh~tlters ............................. 33

3 L6sungen linearer Gleichungssysteme ........................................................... 37 3-1 B e s t i m m u n g der T e m p e r a t u r v e r t e i l u n g nach der Gaulg-Elimination .......... 40 3-2 S i m p l e x m e t h o d e ............................................................................................ 51

4 F u n k t i o n e n ........................................................................................................... 58 4-1 B e s t i m m u n g der Koeffizienten einer I n t e r p o l a t i o n s p o l y n o m s n a c h N e w t o n ............................................................................................. 61 4-2 Interpolation mittels k u b i s c h e r Splines ........................................................ 68 4-3 Lineare A p p r o x i m a t i o n ................................................................................. 76 4-4 Trliger gleicher Z u g s p a n n u n g ....................................................................... 83 4-5 B e s t i m m u n g der Ausflusszeit aus e i n e m Gef~t~ .......................................... 90 5 Differemialgleichungen

.................................................................................... 95

5-1 B e w e g u n g eines S c h u b k u r b e l t r i e b s ........................................................... 103 5-2 D r e h s c h w i n g u n g e n ..................................................................................... 113 5-3 B e s t i m m u n g einer M e m b r a n f o r m ............................................................... 125

6 Vektoren und Matrizen .................................................................................... 130 6-1 M a t r i z e n o p e r a t i o n e n ................................................................................... 132 6-2 Matrizenaddition .......................................................................................... 135 6-3 Matrizensubtraktion ..................................................................................... 137 6-4 S k a l a r p r o d u k t .............................................................................................. 139 6-5 M a t r i z e n p r o d u k t .......................................................................................... 141 6-6 B e s t i m m u n g der D e t e r m i n a n t e einer Matrix .............................................. 145

XVIII

.

A bbildu ngsverzeich n is 6-7 Bestimmung der k o m p l e m e n t ~ r e n Matrix ................................................. 147 6-8 Gaulg-Elemination in Matrizenform ............................................................ 154 6-9 Von Mises Verfahren ................................................................................... '7 P s e u d o z u f a l l s z a h l e n

168

.........................................................................................

173

7-1 F l ~ c h e n b e r e c h n u n g eines Viertelkreises nach der Monte-Carlo-Methode ............................................................. 175 7-2 Fl~ichenberechnung eines Blechteils nach der Monte-Carlo-Methode ..... 178 7-3 Einfaches Modell einer Maschinenwartung ............................................... 182 7-4 Ersatzproblem nach der 1. Methode .......................................................... 190 7-5 Ersatzproblem nach der 2. Methode .......................................................... 195 7-6 Ersatzproblem nach der 3. Methode .......................................................... 200 8 Algorithmen

auf Datenstrukturen

................................................................. 204

8-1 Erzeugung yon Permutationen nattirlicher Zahlen .................................... 205 8-2 P r o z e d u r e n zum E n g p a s s p r o b l e m .............................................................. 209 8-3 Bestimmung einer linearen Regression ...................................................... 216 8-4 Nutzwertanalyse ..........................................................................................

224

8-5 Quicksort .....................................................................................................

230

8-6 StOcklistenorganisation ................................................................................

232

8-7 PERT Netzplan .............................................................................................

247

9 V e r h a l t e n s - A l g o r i t h m e n .................................................................................. 253 9-1 Suchen mittels Bisektionsmethode in einer g e o r d n e t e n Liste .................. 255 9-2 Suchen einer L6sung for ein A u f g a b e n f o l g e p r o b l e m nach der GreedyMethode .................................................................................................. 258 9-3 Bestimmung einschrittiger Codes ............................................................... 266 9-4 Das J e e p - P r o b l e m ........................................................................................

272

10 A l g o r i t h m e n a u s d e r N a t u r ........................................................................... 274 10-1 P r o z e d u r e n zur Bestimmung einer optimalen M a s c h i n e n b e l e g u n g ....... 280 10-2 S t a b w e r k s o p t i m i e m n g nach der Evolutionsstrategie ............................... 291 10-3 Formblatt u n d Daten zum P a c k p r o b l e m .................................................. 296

XIX 9

.~__

~ .

..--

9

\~

P r o g r a m m v e r z e i c h n is

10-4 Initialisierung d e r Eltern ............................................................................ 297 10-5 S e l e k t i o n .................................................................................................... 298 10-6 R e k o m b i n a t i o n .......................................................................................... 299 10-7 M u t a t i o n ..................................................................................................... 300 10-8 P o p u l a t i o n e n ............................................................................................. 301

11 Algorithmen als ldinstliche Intelligenz

...................................................... 303

11-1 Die A u s w e r t u n g s p r o z e d u r e n zur F u z z y - R e g e l u n g .................................. 311

XX

1 Algorithmen

l

Algorithmen Unter einem Algorithmus versteht man eine genau definierte Handlungsvorschrift zur L6sung eines Problems. Er stellt eine der wichtigsten mathematischen Begriffe dar, vergleichbar etwa mit dem Begriff der Funktion. Schaut man jedoch genauer hin, dann stellt man fest, dass der Algorithmus nicht nur for die Mathematik und Informatik von zentraler Bedeutung ist, sondern auch eng mit zentralen Themen der Geistesgeschichte verbunden ist. Seine Anwendung reicht in die Gebiete der Philosophie, der Medizin, der Biologie, der Kulturgeschichte, der Politik, u. v. a. Es gibt kaum eine Wissenschaft, in der der Algorithmus nicht bekannt ist und genutzt wird.

1.1

Geschichtliches L6sungsvorschriften sind sehr viel ~ilter, als es ihre Anwendung in den heutigen Computern vermuten l~sst.

Wurzelziehen nach babylonisch sumerischer Methode Euklid

Lineare Gleichungssysteme

Einer der ~iltesten festgehaltenen Algorithmen der Menschheit wurde um 1700 v. Chr. in Keilschrift auf Tontafeln verfasst und beschreibt das Wurzelziehen nach einer babylonisch sumerische Methode. Den ersten schriftlich festgehaltenen Algorithmus verfasste Euklid in seinem Buch ,,Die Elemente" im 3. Jh. v. Chr. Nebenbei bemerkt, diente dieses Buch etwa 2000 Jahre als L e h r b u c h - eine phantastische Leistung. In diesem Buch beschreibt Euklid unter anderem auch den bis heute benutzten Euklidschen Algorithmus. Lineare Gleichungssysteme mit zwei Unbekannten wurden schon um 1700 v. Chr. von den Babyloniern gel6st. Um 180 v. Chr. verfasste der chinesische Mathematiker Shang Cang ein allgemeines L6sungsverfahren for lineare Gleichungssysteme mit fOnf Ungekannten, in dem unschwer der Gaulgsche-Algorithmus zu erkennen ist. Bei Leonardo Fibonacci von Pisa (1170-1220) findet man diese L6sungsmethode wieder. Man vermutet, dass sie ihren Weg von den Babyloniern Ober die Griechen (Diophant) oder Araber in den Westen genommen hat.

1

1.1

Gesch ich tliches

Algorithmus

Das Wort Algorithmus wird auf den Autor des Buches Hisab aldschabr wa-l-muqabala mit Namen Muhammad ibn Musa al Chwarizmi zurOckgefOhrt. Dieser lebte um 830 n. Chr. am Hofe des Kalifen Mamum in Baghdad und er beschrieb in seinem Buch die Regeln der Arithmetik, wie sie bis dahin von den Indern entwickelt waren. Es ist sein Verdienst, dass sich damit die Algebra auch im Westen schnell verbreitete. Dazu trug auch im Mittelalter eine lateinische Obersetzung mit der Bezeichnung ,,algoritmi de numero Indorum" bei. Stand in dem ursprOnglichen Buch noch das Wort Algorism for Regeln der Arithmetik mit arabischen Zahlen, so wurde es sp~iter zu dem pseudogriechischen Wort ,,algorithmos" Obersetzt.

Raimundus Lullus Es war dann der spanische Philosoph und Theologe Raimundus Lullus, der im Jahre 1656 seine ber0hmte ,,Ars Magna" ver6ffentlichte. Darin beschreibt er einen allgemeinen Algorithmus als ein System grundlegender Begriffe, deren Kombination alle m6glichen Wahrheiten erzeugen sollte. Dazu stellte er sich die mechanische AusfOhrung seines Algorithmus als eine Anordnung von sechs konzentrischen Kreisen vor, die systematisch gegeneinander verschoben, alle m6glichen Kombinationen ergeben sollten. Ada Lovelace

Erst im Jahre 1842 wurde der erste for einen Computer gedachte Algorithmus von Ada Lovelace skizziert. Er war gedacht for die von Charles Babbage konstruierte Analytical Engine. Da er diese aber nicht vollendete, wurde auch der Algorithmus nie implementiert. Ada Lovelace gilt dennoch als die erste Programmiererin.

Leibnitz

Leibnitz war es dann, der bereits in seiner Jugend eine Methode aufzustellen versuchte, die jedes Problem auf algorithmische Weise 16sen sollte. Seine Dissertation ,,De arte combinatoria" aus dem Jahre 1880 hatte zum Ziel, neue Begriffe aus wenigen grundlegenden Begriffen abzuleiten. Die Basis sollte ein Alphabet menschlichen Denkens sein, dargestellt durch geeignete Symbole. Ihre Kombination sollte zu allen bekannten Begriffen fOhren und auch neue erzeugen. Die DurchfOhrbarkeit seines Systems sah Leibnitz durch Abbildungen aller Begriffe auf Zahlen und die der grundlegenden Begriffe auf Primzahlen. Rechnungen auf diesem System sollten dann alle Arten von Problemen 16sen, bis hin zu unterschiedlichen menschlichen Meinungen. So sollten sich damit aulgerdem Prozesse des menschlichen Denkens abbilden und auf Maschinen nachvollziehen lassen.

2

1 Algorithmen Kurt Gddel

Alan Turing

Kurt G6del zeigte dann im Jahre 1931 mittels Beweis, dass eine bestimmte Klasse mathematischer Probleme durch keinen Algorithmus aus einer exakt definierten Klasse von Algorithmen gel~Sst werden kann. In dieser Zeit wurde eine ganze Reihe von Ans~tzen zur Definition eines Algorithmus entwickelt. Insbesondere den Begriff der Berechenbarkeit untersuchte Alan Turing mit seiner Turing-Maschine. Ebenso entstanden die MarkovAlgorithmen. Mit dem Aufkommen digitaler Rechenanlagen durch die Raumfahrt, bekamen die Algorithmen eine neue Bedeutung. Ging es frOher nur um den L6sungsweg, so bekommen Begriffe wie Komplexit~it und Rechenzeit eine immer grOlgere Bedeutung. W~ihrend die Rechenzeit ihre Grenzen in den Erkenntnissen der atomaren Physik findet, entstehen aus der Komplexitfit Begriffe wie ,,ktinstliche Intelligenz" und ftihren zu scheinbaren WidersprOchen.

1.2

AlgorithmenEigenschafien

Formale Definition Obwohl wir doch alle begreifen, was unter einem Algorithmus zu verstehen ist, ist uns die Wissenschaft eine exakte Definition des Begriffs bis heute schuldig geblieben. Im Laufe der Zeit wurden jedoch folgende Eigenschafien fiir einen Algorithmus abgeleitet: 9 Alle verwendeten GrOlgen mtissen bekannt sein 9

Die Umarbeitung geschieht in Arbeitstakten

9

Die Beschreibung des Algorithmus ist vollstfindig

9

Die Beschreibung des Algorithmus ist endlich

9

Alle angegebenen Operationen sind zuEissig

9

Angabe einer Sprache for die Regeln

Die in diesem Buch dargestellten Algorithmen k6nnen nur als Beispiel for eine Kategorie gleichartiger Methoden dargestellt werden, da sich fiber jeden Bereich leicht ein eigenes Buch schreiben liege. Der Leser soil diese Darstellungen als Anreiz empfinden, die Thematik weiter zu vertiefen.

1.3 Algorithmen in den Wissenschafien

Aspekte der Algorithmen Algorithmen verbinden in ihrer Anwendung oft sehr unterschiedliche Wissensgebiete miteinander. So wie der Euklidsche Algorithmus Geometrie und Algebra verbindet, gibt es Algorithmen

3

1.4

Algorithmenklassen im naturwissenschaftlichen Bereich als Simulation auf Wahrscheinlichkeiten. Algorithmen in den Sprachwissenschaften zur Beschreibung sprachlicher Regeln. Algorithmen in den Sozialwissenschaften zur Darstellung bestimmter Verhaltensmuster. Algorithmen in der Wirtschaft zur Darstellung von Wirkzusammenh~ingen. Und viele andere Gebiete mehr. Ja sogar in der Kunst werden Algorithmen zu Arbeitstechniken genannt. Ebenso lassen sich Algorithmen eines Fachgebiets auch auf andere ~ibertragen. Als Beispiel sei der Ameisenalgorithmus aus der Bionik genannt.

Algorithmen in den Ingenieurwissenschafien

Dieses Buch befasst sich mit der Anwendung von Algorithmen im ingenieurwissenschaftlichen Bereich und bedarf daher einer besonderen Sichtweise. Anders als der Naturwissenschaftler, kann sich der Ingenieur nicht ausgiebig mit allen Randbedingungen eines Problems befassen. Die Zeit, die ihm f~ir ein Projekt zur Verf~igung steht, ist ebenso endlich wie der finanzielle Rahmen. Er muss mit begrenzten Informationen Entscheidungen treffen und dabei Risiken absch~ttzen. Auf digitalen Rechenanlagen kann er sich mit Hilfe fachrelevanter Algorithmen diese Informationen durch Berechnungen und Simulationen in Mirzester Zeit effizient besorgen. Dies setzt allerdings Kenntnisse in einer g~tngigen Programmiersprache und entsprechendes Werkzeug voraus. W~ihrend die schnelllebige Hardware und Systemsoftware von geringer Bedeutung ist, sind die allgemeine Darstellung der Algorithmen und ihre Umsetzung in eine leicht verst~tndliche Programmiersprache Gegenstand unserer Betrachtung.

1.4

Algorithmenklassen Die Einteilung der Algorithmen geschieht je nach Sichtweise in unterschiedlichen Klassen. Ich will daher nachfolgend einige Begriffe erl~tutern.

Numerische Algorithmen

4

Die ~tltesten uns bekannten Algorithmen im klassischen Sinne sind die numerischen Algorithmen wie der Euklidsche Algorithmus zur Bestimmung des gr61gten gemeinsamen Teilers zweier nat~irlicher Zahlen oder das Sieb des Eratosthenes zur Ermittlung der Primzahlen einer vorher festgesetzten Zahlenmenge. Aber auch Algorithmen zur L6sung von Gleichungen und Gleichungssystemen sind hier zu finden. In der Neuzeit kamen mit der Differential- und Integralrechnung auch Algorithmen zur N~iherung, Integration, Differentiation, Interpolation und Approximation auf. Ebenso verschiedene Matrizen-Verfahren. Die Geschichte der

1 Algorithmen numerischen Algorithmen ist Teil der Geschichte der Mathematik. Determ i n istische Algorithmen

Unter deterministischen Algorithmen versteht man diejenigen, die bei gleicher Eingabe immer das gleiche Ergebnis liefern. Enth~lt ein Algorithmus Elemente eines Zufallsereignisses, so spricht man von nicht-deterministischen oder randomisierten Algorithmen. Das Monte-Carlo-Verfahren gehOrt zu diesen Algorithmen.

Iterative Algorithmen

Unter iterativen Algorithmen versteht man diejenigen, die mit Rechenschritten, ausgehend von bekannten GrOlgen, Zwischenergebnisse erzielen, die wiederum als Basis for eine erneute Ausftihrung der Rechenschritte dienen. Man unterscheidet diese Verfahren noch nach Algorithmen mit einer vorher bekannten Anzahl von Iterationsschritten, z. B. bilde n-Fakul6it n!= 1.2.3-....n, mit n Iterationsschritten oder nach einer vorher unbekannten Anzahl von Iterationsschritten, z. B. bestimme die Eulersche Zahl e hinreichend genau bilde x = 1+

i

i

, solange x n - Xn_1 < E,

wobei ~ eine sehr kleine Zahl darstellt. Rekursive Algorithmen

Rekursive Algor~tbmen sind eine besondere Art von iterativen A1gorithmen, bei denen die Rechenschritte aus dem eigentlichen Algorithmus bestehen, so dass dieser wiederholt angewendet wird, z. B. rekursive Bestimmung von n-Fakult~t n!=n.(n-1)!, ergibt sich aus der Bestimmung von (n-1)-Fakult~it und diese wiedemm aus (n-2)-Fakultfit (n-1)!=(n-1).(n-2)!, zurtick schreitend bis man das definierte 0!=1 erreicht. Bei rekursiven Algorithmen ist besonders auf die Endlichkeit der Prozedur zu achten.

Entscheidungsund OptimierungsAlgorithmen

Nach der Art der Problemstellung unterscheidet man zwischen Entscheidungs- und Optimierungsalgorithmen. Entscheidungsalgorithmen stellen in ihrer komplexesten Form ein Expertensystem dar. Optimierungsalgorithmen gibt es mit den unterschiedlichsten Methoden. Eine Einteilung l~sst sich vornehmen zwischen den Methoden die eine optimale L6sung und denen die zwar eine L6sung bieten, die aber nicht unbedingt die optimale 5 ,

,

.

1.4

A lgo rith m en k lassen sein muss. Ebenso zwischen denen, die nur eine L6sung bieten und denen, die alle L6sungen der Methode anzeigen.

Operation Research

Die Anwendungen von Optimierungsmethoden auf milit~irische, industrielle, wirtschaftliche, staatliche und soziale Prozesse sind unter dem Begriff Operation Research bekannt geworden. Erstmals im zweiten Weltkrieg eingesetzt, wurden diese Methoden Anfang der ftinfziger Jahre auch for die Industrie und staatliche Stellen interessant. Mit dem Aufkommen digitaler Rechenanlagen werden sie bei Simulationen, Kostenoptimierungen, Lagerhaltungstheorien, Warteschlangenproblemen, Netzwerkanalyse, Transportproblemen, Auftragsplanungen und vieles mehr. Das gr61~te Problem besteht heute in der Bestimmung des besten Verfahrens.

Kognitive Algorithmen

Auf der Suche nach immer neuen Algorithmen wurde auch wieder die Natur als Vorbild entdeckt. Es wurde und werden Mechanismen und Entscheidungsprozesse in der Natur gefunden, die sich auch in anderen Gebieten verwenden lassen. Ftir diese, als kognitive Algorithmen bezeichneten Methoden, spielen die M6glichkeitslogik (Fuzzy-Logic) und Minstliche neuronale Netze (KNN) eine wichtige Rolle.

Abb. 1-1 Systemwissen versus Algorithmenklassen

Genetische Algorithmen

Hybr~de Algorithmen 6

Ebenso die Gruppe der genetischen Algorithmen, die Fortpflanzungsmechanismen simulieren. Hierbei geht es mitunter um ftir das menschliche Verst~indnis sehr einfache F~ihigkeiten, deren Realisierung im Computer allerdings grol~en Aufwand erfordert. Es werden auch Kombinationen dieser Methoden zur L6sung eingesetzt, die als hybride Algorithmen bezeichnet werden. Be-

1 Algorithmen zeichnend ist, dass mit abnehmendem Systemwissen die Anwendungsm~Sglichkeiten kognitiver Algorithmen steigen.

K~nstliche Intelligenz

Die Zukunft hat gerade erst begonnen

Der Begriff K~nstliche Intelligenz (KI) stellt eher ein Forschungsgebiet, als eine einzelne Methode, geschweige denn einen Algorithmus dar. Mit den Expertensystemen ist ein erster sinnvoller Ansatz gefunden, dem sicher auch andere folgen werden. Was Algorithmen letztlich leisten k6nnen, l~isst sich heute noch nicht beantworten. Um es mit einem saloppen Ausspruch zu sagen, den ich erst ktirzlich gelesen habe: ,,Die Zukunft hat gerade erst begonnen!". Und dies gilt besonders for Algorithmen. Mit der immer weiter fortschreitenden Entwicklung der Computer sind neuronale Netze und parallele Algorithmen Wirklichkeit geworden. Aber auch an den Postulaten der Algorithmen wird gertittelt. Ein Algorithmus setzt voraus, dass alle Eingangsdaten bekannt sind. Es gibt jedoch Situationen, in denen Algorithmen erste Daten liefern mtissen, bevor alle Daten vorliegen. Die Entscheidungen treffen for etwas, was erst noch passiert. Die zuktinftige Neuund Weiterentwicklung von Algorithmen wird sicher spannend bleiben.

1.5

Das Konzepteiner Probleml6sung

ProblemlOsung

Computer sind ein unverzichtbares Hilfsmittel bei der Bearbeitung von Probleml6sungen geworden. Wurden sie bisher zur Ermittlung und Speicherung von Daten eingesetzt, so werden sie immer mehr auch aktiv zur Probleml~Ssung herangezogen. Mit Hilfe neuerer Algorithmen und immer schnellerer Systeme lassen sich selbst umfangreiche Probleme in kOrzester Zeit 16sen. Dabei hat die Simulation komplexer naturwissenschaftlich-technischer Zusammenh~inge einen hohen Stellenwert.

Abb. 1-2 blackbox

7

1.5

Das Konzept einer Probleml6sung

black box

Die Probleml6sung beginnt in der Regel bei der Beschreibung des Problems als Black Box. Uber die Definition des Outputs, l~sst sich der Input oft direkt herleiten. Und damit auch deren Umwandlung tiber mathematisch-physikalische Zusammenh~inge.

Abb. 1-3 Schema der L6sungsfindung

Schema einer L6sungsfindung

8

Mitunter sind jedoch auch Vereinfachungen und Abstraktionen notwendig. Immer mit der Malggabe, ein ad~iquates Modell des Problems zu erhalten, an dem sich die L6sung des Problems nachvollziehen l~isst. Die Abstraktion des Modells muss so lange erfolgen, bis ein geeigneter Algorithmus eingesetzt werden kann. Liegt der Algorithmus fest, erfolgt die L6sungsfindung unabh~ngig vom Computer, in Form eines Flussdiagramms, eines Struktogramms oder einer Pseudosprache. Erst danach sollte die Auswahl des Computers, die Wahl des Betriebssystems und der Programmiersprache erfolgen. Es folgt die Programmierung mit der

1 Algorithmen Wahl der Prozeduren und Datenstrukturen. Die Entwicklung schlielgt mit umfangreichen Tests und Ergebnisanalysen ab. Entspricht die gefundene L6sung nicht den Anforderungen, mtissen einzelne Schritte oder der gesamte Zyklus wiederholt werden. Diesen Zusammenhang zeigt anschaulich die Abbildung 1-3.

1.6

Heuristik Man kann kein Buch tiber Algorithmen schreiben, ohne wenigstens die Heuristik- die Wissenschaft des Probleml6sens zu erw~ihnen.

Heuristik

Die Geschichte der Algorithmen ist immer auch ein Teil der Heuristikgeschichte. So haben Euklid, Mohammed ben Musa al Khovaresni, Lullus, Descartes, Leibnitz, u. a. immer erst im heuristischen Sinne geforscht und ihre Ergebnisse waren nicht nur Algorithmen.

Fritz Zwicky und sein Morphologischer Kasten

Zur L6sung im heuristischen Sinne ist weder ein Algorithmus noch ein Computer erforderlich. Manchmal muss man zur LOsungsfindung noch ,,vor" dem Algorithmus einsteigen. An dieser Stelle m6chte ich ganz besonders den Namen Fritz Zwicky (1898-1974) nennen, der mit seiner Konstruktion und Auswertung des Morphologischen Kastens auch mir immer wieder neue Denkans~itze geliefert hat. Ich will nachfolgend seine fOnf Schritte zur L6sungsfindung kommentarlos wiedergeben.

Zwickys Schritte zur LOsungsfindu ng

Erster Schritt Erstellung einer genauen Umschreibung oder Definition sowie der zweckm~ilgigen Verallgemeinerungen des vorgegebenen Problems. Zweiter Schritt Bestimmung aller Parameter, die die L~Ssung beeinflussen. Dritter Schritt Erstellung des Morphologischen Kastens, in dem alle m6glichen L6sungen des Problems ohne Beurteilung eingetragen werden. Vierter Schritt Analyse aller im Morphologischen Kasten enthaltenen L6sungen bezOglich ihrer Realisierbarkeit oder anderer Werte. Ftinfter Schritt Wahl der nach der Analyse optimalen L6sung sowie deren Realisierung und Konstruktion. 9

1.6

Bierdeckelaufgabe

Heuristik Zwickys Morphologischer Kasten erlaubt die Aufgabe von Vorfixiemngen und Denkblockaden. Ein for Ingenieure typisches Denkbeispiel heilgt Bierdeckelaufgabe [1]. Dabei geht es datum, neun Punkte auf einem Bierdeckel mit m6glichst wenigen geraden Linien zu verbinden. Die tibliche L6sung finden Sie in Abb. 1-4.

Abb. 1-4 Ubliche L/Ssung der Bierdeckelproblems

Gibt man die Restriktion ,,auf dem Bierdeckel zeichnen" auf und ebenso die Restriktion, dass die Linien durch die Mitte der Punkte gehen mtissen, dann erh~ilt man eine L6sung mit drei Geraden (Abb. 1-5). Gibt man als weitere Restriktion die Unantastbarkeit des Bierdeckels auf, und zerschneidet man diesen, so gelingt sogar eine L6sung mit einer Linie.

Abb. 1-5 Ltisungnach der Aufgabe von Restriktionen

10

1 Algorithmen

Abb. 1-6 Eine dreidimensionale L6sung

Tab. 1-1 Teil eines Morphologischen Kastens Linienf0hrung

auf dem Bierdeckel

tiber den Bierdeckel hinaus

dreidimensional

Bierdeckel

keine _Anderung

falten

zerschneiden

Punkte

normal

stark vergr6Bert

./.

USW.

Morphologischer Kasten

Es gibt sogar eine Fuzzy-L6sung neben vielen weiteren L6sungen. Die Befreiung von Fixierungen gelingt fast methodisch durch den morphologischen Kasten.

Heuristische Probleml6sungsmethoden

Aber auch Groner & Groner [2] nennen heuristische Probleml6sungsmethoden. 9

Metakognitive Planung (Welche Heuristik?).

9

Aufgabenanalyse (Input, Output).

9

Abstraktion durch Reduktion und/oder Amplifikation (weglassen oder erg~inzen).

9

Wahl der Repr~isentation (Problemdarstellung).

9

Analogien (gibt es ein ~ihnlich gel6stes Problem).

der

einzusetzenden

Heuristiken

11 -

~..

9

.

.

1.6

Heuristik 9

Teill6sungen (top-down-design).

9

Hypothesen prtifen (angenommen dass ..., stimmt dann auch ...).

9

Trennung von Einflussgr61gen (ist y abh~tngig von x oder x und y abh~ngig von z).

9

Aufgabe von Fixierungen, Inkubation (Arbeit beiseite legen und sp~.ter wieder aufgreifen).

9

Nutzung des eigenen Unwissens (wie wgrde ich die Aufgabe 16sen, bevor ich recherchiert habe, was andere getan haben).

Diese Punkte sind weder vollst~tndig noch in der Reihenfolge anzuwenden. Die Heuristik ist ein weites und immer spannendes Bet~tigungsfeld.

12

2 LOsungen von Gleichungen

L6sungen von Gleichungen ~..

.

.

.

.

.

.

.

,

9

.~

~

"

;

.........

~

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

~

"

~

5

.

~

.

.

.

.

.

~ .

...

.

"

.

.

.

.

.

.

Gleichungen geh6ren nach den Zahlen zu den ersten mathematischen Errungenschaften der Menschheit. Bevor sich eine algebraische Schreibweise ftir Gleichungen gebildet hatte, wurden diese in Worte gefasst. Noch heute werden Dreisatzaufgaben gerne mit Worten beschrieben.

2.1

LSsungen von quadratischen Gleichungen Quadratische Gleichungen haben die allgemeine Form

Quadratische Gleichungen

x 2 + ax + b - 0

(2.1.1)

Sind die Koeffizienten dieser Gleichung reell, treten drei L6sbarkeitsf~tlle auf. Die L6sungen sind entweder reell und verschieden, reell und fallen zusammen oder konjugiert komplex ohne reelle L6sung. Die L0sungsformel ftir die reellen F~ille lautet allgemein

oI(2/

Diskriminante

Xl, 2 - - - ~ +

- b

(2.1.2)

Der Radikand der Wurzel wird als Diskriminante (lat. discriminare, trennen, scheiden) D -

-b

(2.1.3)

bezeichnet und ist ausschlaggebend ftir die Art der L6sungen. Ist D>0 gibt es zwei reelle L6sungen. Ist D=0 nur eine reelle L6sung. Und ist D 0 T h e n If O b l ( V , d2) 0 tI ' d e r

der Werte in der PivotSpalte

i

i

pz

i

For

=

0

i If

=

1 To

A(i, d

m

.

ps)

>

0 Then

= A(i,

n

+

If

End E n d If Next i

pz = 0 Or min = d pz = If

i) d

/ A(i, < min

ps)

Then

i

L_..........................................................................................................................................................................................................

52

3 L6sungen linearer Gleichungssysteme .....................................................................................................................................................................................................................................................................................-~

'U m f o r m u n g For i = 1 To For j = 1 If N o t Not B(i,

E n d If Next j Next i For i = 1 To n + 1 If N o t i = p s T h e n B(pz, i)= A(pz,

i)

E n d If Next i For i = 1 To m + 1 If N o t i = p z T h e n B ( i , ps) : - A ( i ,

ps)

E n d If Next i B ( p z , ps) 'N e u e

m + 1 To n + 1 i = pz And _ j = ps Then j)= A(i, j)A ( p z , j)

: 1

/ A(pz,

/ A(pz,

Cells(i Next Next i

/ A(pz,

ps)

ps)

B(i, j)

+ 2,

j)=

B(i,

'S c h l ei f e n b e d i n g u n g k = 0 For i = 1 To n If A ( m + I, Next i Loop While

j)

j

'Marken vertauschen z = Cells(pz + 2, n + 3) Cells(pz + 2, n + 3) = C e l l s ( m Cells(m + 5, ps) = z

ii E n d

ps)

Tabelle eintragen For i = 1 To m + 1 For j = 1 To n + 1

A(i, j ) = i !

A ( i , ps) * _ / A ( p z , ps)

k

+ 1 i)
2. Die Ableitungen ergeben sich zu Pi'(x) = b i + 2 c i ( x - x i ) +

3di(x-xi)

2.

(4.1.9)

und pi"(x ) = 2c i + 6 d i ( x - x i ) .

(4.1.10)

Aus der G15.ttebedingung zwischen zwei Polynomen folgt Pi" (xi ) - ei"-I (xi )

(4.1.11)

2c i = 2ci_ 1 + 6d/_l (x i - x i _ 1 )

und daraus mit hi-xi+,-x i 1 di-1 = - ~ i (ci - c i - 1 ) .

(4.1.12)

Aulgerdem mtissen die Polynome sich in jedem Knoten berOhren, woraus folgt Pi (xi ) = Pi-1 (xi ) = _ )3 ai ai-1 + bi_l (x i xi-1 ) + ci-1 (x i _ xi-1 ) 2 + di_l (x i _ Xi_l (4.1.13) Durch Umstellung und Einsetzen von (4.1.12) folgt

66

4 Funktionen 1 hi b i - g (ai+ 1 - a i ) ---~- (Ci+l - 2ci )

(4.1.14)

Aus der Stetigkeit folgt weiterhin, dass auch die ersten Ableitungen im Knoten gleich sein mtissen el' (xi ) = Pi'-I (xi )

(4.1.15)

bi = bi_l + 2ci_ 1 (x i _ Xi_l ) + 3di_ 1 (x i _ Xi_l )3 Durch Umstellung und Einsetzen ergibt sich ein lineares Gleichungssystem mit n-1 Gleichungen for n+l Unbekannte bei bekannten ai mit hi_lCi_ 1 + 2c i (hi-1 + h i )+ hiCi+l =

3 3 hT(ai+l - a i ) - ~ i _ l (ai - a i _ 1)

(4.1.16)

i = l(1)n - 1 Fassen wir diesen Berechnungsalgorithmus in Struktogrammform zusammen. Der Algorithmus enth/ilt einen Teil-Algorithmus zur L6sung eines Gleichungssystems, wie zuvor im Kapitel 3 unter Gaufg-Algorithmus beschrieben.

Als Beispiel zur Programmiemng benutzen wir den zuvor behandelten Seilverlauf. Tab. 4-3 Algorithmus zur Ermittlung der Koeffizienten eines kubischen Splines i=0,1,n

ai=y i

C0= Cn= 0

L6se Gleichungssystem for ci i=1,1,n-1 hi-Xi§

i

67

4.1.2

Interpolation mittels kubiscber Splines

hi_lCi_ 1 + 2C i (hi-1 + h i )+ hiCi+l 3

hi

3 (ai+ 1 - ai ) - 7 - - - (a i - ai_l )

ni_l

i=O,l,n-1

hi -~ (Ci+l - 2Ci )

1

bi = -hT (ai+l - ai ) i=O,l,n-1 1

di-1 =-~i (ci - c i - 1 ) i=O,l,n-1

Pi(x)=ai+bi(x

xi)+ci(x-xi)2+di(x

xi) 3

C _od._e4"2__Inte~ol_at!.o_n .._~.'_~..e._!s..kub!sc.h_er...S_p!i_nes.................................................................................................................................................................. Option

Explicit

S u b N e w t o n _ L e e r () Call Verlauf_Entfernen ThisWorkbook. Worksheets End Sub

( " N e w t o n " ) .C e l l s . C l e a r

Sub Newton_Testdaten () Call Newton_Leer Cells(l, i) = 0- C e l l s ( l , 2) = 30 Cells(2, i) = i0- C e l l s ( 2 , 2) = 18 Cells(3, I) = 20- C e l l s ( 3 , 2) = i i . 5 Cells(4, i) = 30- C e l l s ( 4 , 2) = i0 Cells(5, i) = 3 5 - C e l l s ( 5 , 2) = 1 0 . 5 Cells(6, i) = 40- C e l l s ( 6 , 2) = 1 2 . 5 C e l l s (7, i) = 50- C e l l s (7, 2) = 20 End Sub

t i.z

Private Sub Werte_Lesen(n, D i m i, j As I n t e g e r

A)

,

I 'Bestimmung belegter Zeilen i j 'und D e f i n i t i o n der notwendigen

68

Datenfelder

4 Funktionen '..............C-e-fi-s-({ows-.-Count-]

........

.............................................................................................

n = ActiveCell.Row R e D i m A ( n , n) A s D o u b l e For i = 1 To n For j = 1 To 2 A(i, j)= Cells(i, Next j Next i End Sub Private Dim

Sub Steigungen(n, i, j A s I n t e g e r

j)

A)

For

j = 3 To n + 1 For i = 1 To nj + 2 Cells(i, j) = ( C e l l s ( i + i, Cells(i, j - i)) / ( C e l l s ( i Cells(i, i)) Next i Next j Exit Sub End Sub Private

Sub

Dim Dim

v, i,

Verlauf

b, j,

x, k,

(n,

j +

- i) - _ j - 2, i)

-

A)

y, z A s D o u b l e p As Integer

p = 0 v = Cells(l, i) b = C e l l s (n, i) For x = v To b Step 1 y = Cells(l, 2) For j = 3 To n + 1 z = Cells(l, j) For k = 1 To j - 2 Next y Next

z = k

= y j

p = p + Cells(n Cells(n Next x !End

z +

1 + 2 + 2

*

(x

- Cells(k,

i))

z

+ p, + p,

i) 2)

= x = y

Sub

I i

i Sub

Auswertung

()

i

69

4.1.2

Interpolation mittels kubischer Splines

...................i ~ a i ~ - i g ~ - i Y 7

......-{-i .... ~

Dim

Integer

n As

......i ~ g a i ~ i - a

.............................................................................................................................................................................................. '

C a l l W e r t e _ L e s e n (n, A) C a l l S t e i g u n g e n ( n , A) C a l l V e r l a u f ( n , A) End Sub Sub Verlauf_Zeigen() Range("Al0-B60").Select Charts.Add ActiveChart.ChartType = xlXYScatterSmoothNoMarkers ActiveChart. SetSourceData Source:= _ Sheets("Newton").Range("Al0-B60"), PlotBy-= _ xlColumns ActiveChart.Location Where-=xlLocationAsObject, Name-="Newton" With ActiveChart .HasTitle = True .ChartTitle.Characters.Text = "Seilverlauf" .Axes(xlCategory, xlPrimary).HasTitle = True .Axes(xlCategory, _ xlPrimary).AxisTitle.Characters.Text = "Weite .Axes(xlValue, xlPrimary).HasTitle = True .Axes(xlValue, _ xlPrimary).AxisTitle.Characters.Text = "H~he

[m] "

Era] "

! End With i ActiveChart.Legend. Select ' Selection. Delete 1End Sub j Sub Verlauf_Entfernen() Dim Shp As Shape ! F o r E a c h S h p In W o r k s h e e t s ( " N e w t o n " ) . S h a p e s Shp. D e l e t e i Next !

Das Men/3 gestaltet sich analog zum vorherigen Beispiel. Die Auswertung der Testdaten finden Sie in Abbildung 4-7.

7O

4 Funktionen

Abb. 4-6 Menti zur Interpolation mittels kubischer Splines

Abb. 4-7 Seilverlauf, ermittelt durch kubische Splines

71

4.2

Approximation von Funktionen durch Polynome

Ubungen Die Methode versagt, wenn der 1. Koeffizient in der 1. Gleichung, der 2. Koeffizient in der 2. Gleichung, usw. Null sind. Dieses Problem kann durch Vertauschung behoben werden, da, wenn es eine L6sung gibt, dies auch m6glich ist. Der Algorithmus ist entsprechend zu erg~inzen.

4.2

Approximationvon Funktionendurch Polynome

Approximation

Im Gegensatz zur Interpolation, wird bei der Approximation nicht verlangt, dass die Funktion in den Sttitzstellen den vorgegebenen Wert annimmt. Hier z~ihlt vielmehr die bestm6gliche Ann~iherung an den Funktionsverlauf nach einer definierten Methode. Nachfolgend betrachten wir die Approximation nach der Methode der kleinsten Fehlerquadrate for lineare Gleichungen. Bei dieser Methode werden die Parameter so bestimmt, dass sich das Polynom mit dem kleinsten quadratischen Abstand an diese Werte anschmiegt.

Methode der kleinsten Feb lerquadrate

Abb. 4-8 Grafische Darstellung der Methode der kleinsten Fehlerquadrate

Lineare Approximation

72

Bei der linearen Approximation sind die Koeffizienten der Geraden y = ax + b (4.2.1)

4

Funktionen

gesucht, so dass die Summe der Abweichungen s i zu jedem Messwert (x i, yi) im Quadrat aller Messwerte n ein Minimum annehmen. Mathematisch lautet die Bedingung 2 n n Z b i --(ax i -k-b)] = Z s 2 = M i n i m u m . i=1 1=1

(4.2.2)

Wir erhalten ein lineares Gleichungssystem der Form a'l 1b + a12 a = ,ill

9

(4.2.3)

a21b + a22a - f12

Abb. 4-9 Lineare Approximation

In Matrizenschreibweise ergibt sich die Minimum-Bedingung y=A.c+s

(4.2.4)

mit

73

4.2

Approximation von Funktionen durch Polynome

y=

lyil Ii!l n

S--

lXl / A= ... ,

c=

/:i

und

~,lxn

(4.2.5)

Wir erhalten die gesuchte L6sung c = ( A T .A) -1 .(A T .y).

(4.2.6)

Beispiel: Sensorkennlinie Sensorkennlinie

Sensoren haben oft eine nichtlineare Ist-Kennlinie, die durch eine lineare Soll-Kennlinie beschrieben wird. Die Abweichung wird als Linearit~tsfehler bezeichnet und wird auf zwei verschiedene Arten definiert. Die erste Methode besteht darin, eine lineare Kennlinie durch Verbinden der beiden Endpunkte (xmin, janin) und (arnax, .}a'nax) zu bilden und wird Festpunktmethode genannt. 100%

Y yr~ax

~

J

', Nichtlmearitat

x X1TIaX

00% Abb. 4-10 Lineare Approximation nach der Festpunktmethode

Die zweite Methode erstellt eine lineare Approximation nach dem Minimum der Fehlerquadrate. Diese Methode ergibt typischerweise die H~ilfte des Linearit~itsfehlers der Festpunktmethode.

74

4 Funktionen

1 O0%

Y ymax

\

r

x 100% Abb. 4-11 Lineare Approximation nach dem Minimum der Fehlerquadrate

Das nachfolgende Programm ermittelt beide Geraden nach Eingabe von beliebigen Messwerten in den ersten beiden Spalten der Tabelle.

Tab. 4-4 Algorithmus zur Ermittlung der approximierenden Geraden

Einlesen der Daten i--1,1,n xi=Zelle(i, 1) yi=Zelle(i,2) EX-" Zx-I- x i

~y=Ey+ y~ 2

2

Ex =Ex + xi. x~ )-",xy=)-',Xy+ Xi . Yi

p

9 q_

~

~

Yn - Y l Xn

Xl

Yn

(Yn

-

Yl)

(x n - X l ) ' X n

75

4.2

Approximation von F u n k t i o n e n durch Polynome

Bestimmung der Geradenwerte

i=l,l,n Yi = P'Xi +q

p

q

~

---

Bestimmung der Geradenwerte

i=l,l,n Yi = P'Xi +q

Das Menti gestaltet sich analog zum vorherigen Beispiel. Die Auswertung der Testdaten finden Sie in Abbildung 4-13. Option

Explicit

Sub

LinAppro_Leer () ThisWorkbook. Worksheets ("Lineare Approximation" End Sub Sub

LinAppro_Testdaten Call LinAppro_Leer Cells(l, i) = 20i Cells(2, i) = 30" i Cells(3, i) = 40Cells(4, i) = 50' Cells(5, I) = 65' Cells(6, I) = 70Cells(7, i) = 80i Cells(8, i) = 90Cells(9, i) = i00, End Sub

) .C e l l s . C l e a r

()

,i

Cells(l, Cells(2, Cells(3, Cells(4, Cells(5, Cells(6, Cells(7, Cells(8, Cells(9,

'

2) 2) 2) 2) 2) 2) 2) 2) 2)

= = = = = = = =

20 55 70 75 82 86 89 90 = 91

! i I i i

i

Private Sub Werte_Lesen D i m i, j A s I n t e g e r

76

(n, A)

i

4 Funktionen ......T ...........................................................................................................................................................................................................................

i

'Bestimmung belegter Zeilen 'und Definition der notwendigen Datenfelder Cells (Rows. Count, i) . E n d ( x l U p ) . S e l e c t n = ActiveCell.Row ReDim A(n, 2) A s For

i = 1 To 2 For j = 1 To A(i, j)= Next

Next End Sub

Double 2 Cells(i,

j)

j

i

Sub LinAppro_Auswertung () ReDim A(I, i) A s D o u b l e D i m p, q, sx, sy, s x x , s x y , Dim

n,

i As

y

As

Double

Integer

i

'D a t e n lesen Call Werte_Lesen(n,

A)

!

'F e s t p u n k t m e t h o d e p = (Cells(n, q

2)

-Cells(l,

2))

/ _

(Cells(n, = Cells(n,

i) 2)

- Cells(l, - (Cells(n,

I)) 2)

- Cells(l,

2))

(Cells(n,

i)

- Cells(l,

i))

* Cells(n,

i)

Cells(l,

7)

"y

="

Cells(l, Cells(l, Cells(l,

8) = p 9) = "x i0) = q

=

+"

/ _

!

'F u n k t i o n s w e r t e For i = 1 To n y = p * Cells(i, Cells(i, 3) = y Next i

I)

+ q

i

'K l e i n s t e For

I

Fehlerquadrate

i = 1 To n sx = sx + Cells(i, i) sxx = sxx + Cells(i, i)

sy = sy + Cells(i, 2) sxy = sxy + Cells(i, i) Next i

i * Cells(i,

i)

* Cells(i,

2) I

i

i P = (n * s x y - s x * sy) / (n * s x x - s x * sx) i i q = ( s y * s x x s x y * sx) / (n * s x x s x * sx) i ...........................................................................................................................................................................................................................J 77 ~

.

Approximation von Funktionen durch Polynome

4.2

Cells(3,

8)

Cells(3, Cells(3,

9) = "x i0) = q

= p +"

'Funktionswerte For

i = y

= p

1 To

Cells(i, Next

n

* Cells(i, 4)

i)

+ q

= y

i

End

Sub

Sub

LinAppro_Diagramm

()

Range("Ai-D9").Select Charts.Add ActiveChart.ChartType ActiveChart.

= xlXYScatterSmoothNoMarkers

SetSourceData

Sheets("Lineare

Source-=

Approximation").Range("AI-D9"),

PlotBy-=xlColumns ActiveChart.

SeriesCollection(1).Name

"= ....S e n s o r k e n n l i n i e ActiveChart.

SeriesCollection(2).Name

"= ....F e s t p u n k t m e t h o d e ...... ActiveChart. SeriesCollection(3).Name "= ....M e t h o d e der ActiveChart.Location "Lineare With

= _

...... =

_

= _

kleinsten Fehlerquadrate ...... Where-=xlLocationAsObject,

ActiveChart .HasTitle = True .ChartTitle.Characters.Text = "Approximation einer Sensorkennlinie" .Axes(xlCategory,

xlPrimary).HasTitle

= True

.Axes(xlCategory, _ xlPrimary).AxisTitle.Characters.Text % ,, .Axes(xlValue,

xlPrimary).HasTitle

.Axes(xlValue, _ xlPrimary).AxisTitle.Characters.Text % ,, End With ActiveWindow.Visible End

Sub

! I

i i Sub

LinAppro_Entfernen() Dim

78

N a m e 9=

Approximation"

Shp

As

Shape

= False

=

"x / x m a x

=

"y / y m a x

= True

4 Funktionen i

For E a c h

Shp In W o r k s h e e t s ( " L l n e a r e tion") Shapes i ' l Shp. D e l e t e i Next i i E n d Sub

Approxima-

i i

i........................................................................................................................................................................................................................... ]

Abb. 4-12 Menii Interpolation nach Newton

Abb. 4-13 Beispiel der linearen Approximation einer Sensorkennlinie

79

4.3

Nu merische Integration

4.3

Numerische Integration Die geometrische Deutung eines bestimmten Integrals ist die FI~iche die zwischen x=a und x=b und von der Funktion y=f(x) und der x-Achse eingeschlossen wird.

Numerische Integration

Abb. 4-14 Bestimmtes Integral

In vielen F~.llen ist zwar die Funktion y=f(x) bekannt, aber es gibt keinen analytischen Ansatz zur Integration. Hier bedient man sich der Trapezregel oder der Simpsonschen Regel. Bei der Trapezregel wird das Intervall (a, b) in n gleich grolge Abschnitte unterteilt und die Kurvenstticke werden durch Geraden ersetzt.

Trapezregel

Abb. 4-15 Einteilung nach der Trapezregel

8O

4 Funktionen Ist h die Breite eines Trapezes und n die Anzahl der Intervalle so gilt

i_.h 2

h

h

(Yo + Yl)+-~(Y~ + Y2) +-"-~(Yn-1 + Y ) n

h = -~ ( f (x o ) + 2 f (x~) + 2 f (x 2 ) + ... + 2 f (Xn_1) + f (X,,)) mit

h-

b-a

.

(4.3.2)

n

Tab. 4-5 L6sungsalgorithmus:Numerische Integration nach der Trapezregel Eingabe der erforderlichen Parameter

X0, in, n, fix)

b-a h=~ n

i=O (1) n-1

Z y = Z y +f(xi )+ f(xi+l) h I=-~ZY

Die Trapezregel liefert umso genauere Werte, je kleiner h ist bzw. je mehr Intervalle n gesetzt werden. Die praktische Grenze liegt in den Rundungsfehlern der Berechnung. Bei der Simpsonschen Methode werden die Geraden durch Kurvenstticke tiber mehrere Intervalle ersetzt. Bei dieser Methode erwartet man in der Regel auch eine h6here Genauigkeit.

Trdger gleicher Zugfestigkeit

Beispiel: Tr~iger gleicher Zugfestigkeit Gesucht ist das Profil eines Stabes, der nach Abbildung 4-16 einer Zugkraft unterliegt, die in jedem Querschnitt konstant sein soil.

81

(4.3.1)

4.3

N u merische I n t e g r a t i o n

Abb. 4-16 Tr/igermit gleicher Zugfestigkeit

An einer beliebigen Stelle x mit dem Querschnitt A ergibt sich die Zugspannung

Px

Crx = ~ . A

(4.3.3)

Darin ist Fx die Kraft an der Stelle x, die sich zusammensetzt aus der ~iulgeren Kraft F u n d dem Gewicht der Masse unterhalb von X.

An der Stelle x+dx mit dem Querschnitt A+dA ergibt sich die Zugspannung Crx+~ =

Fx + P . A . d x . g A +dA

.

(4.3.4)

Darin ist p die Materialdichte und g die Erdbeschleunigung. Da die Spannung tiber die ganze Tr~igerl~inge 1 konstant sein soil, folgt aus der Gleichsetzung dA = p . g . dx . A o"

(4.3.5)

Das Integral liefert

~dAA = l n A

(4.3.6)

so dass sich ein logarithmischer Verlauf ergibt. Wir wollen dieses Integral auf numerischem Wege 16sen. Die einfachste Form bietet die Rechteckregel.

82

4

Funktionen

Tab. 4-6 L6sungsalgorithmus:Tr~igergleicher Zugspannung Eingabe der erforderlichen Parameter A0, 1, P, ~, n .

.

.

.

.

.

.

.

x=/Xx,(Ax),l

9

AA x

-

P'g

.Ax_ 1 .Ax

t7 A x = Ax_ 1 + AA x

Die Erstellung des Programms erfolgt nach dem Oblichen Schema Formblatt-Testdaten-Auswertung-Grafik. Option Sub

Explicit

Zugspannung_Leer() Dim Shp As Shape F o r E a c h S h p In W o r k s h e e t s ( " K o n s t a n t e nung").Shapes Shp.Delete Next ThisWorkbook.Worksheets("Konstante" "Zugspannung").Cells.Clear

Zugspan-

&

R a n g e ( "A1 :E1" ) .S e l e c t Selection.MergeCells = True Selection. Font.Bold = True Selection. Font. Italic = True Selection.Value = "Tr~ger mit konstanter Zugspannung" R a n g e ("A2 :AI6") . S e l e c t Selection. Font.Bold = True Selection. Font. Italic = True Range("A2") : "Ao [m" & C h r W ( 1 7 8 ) & " ]" Range("A3") = "i [m]" Range("A4") : ChrW(961) & " [kg/m" & C h r W ( 1 7 9 ) & " ]" ! Range("A5") = ChrW(963) & " [N/m" & C h r W ( 1 7 8 ) & " ]" ! R a n g e ("A6") = "n" i i R a n g e ( "B- B" ) .C o l u m n W i d t h = "15" ~............................................................................................................................................................................................................................

i i i l ! ]

83 ._

...

4.3

Nu merische Integration

:...............................................................................................................................................................................................

j! i

Range Range

( "C :C " ). C o l u m n W l d t h ' ( " D 2 " ) = "x [m] "

=

"2 "

Range("E2") : "A [m" & C h r W ( 1 7 8 ) R a n g e ( "D2 :E 2 " ) . S e l e c t Selection. Font. Bold = True Selection. Font. Italic R a n g e ( "B2" ) . S e l e c t End Sub

= True

Sub

()

Zugspannung_Testdaten Cells(2, 2) = 0 . 2 C e l l s (3, 2) = 0 . 5

Cells(4, Cells(5, Cells(6, End Sub Sub

2) 2) 2)

A0 1 r S n dx Ax i

= Cells(2, C e l l s (3, Celis(4, C e l l s (5, Cells(6, = 1 / n = A0 = 2

I

~ i [J

()

2) 2) 2) 2) 2)

x = dx To 1 + dx dA = r * 9.81 / S Ax = Ax + dA i = i + 1 Cells(i, 4) = x Cells(i, 5) = A x Next x End Sub Sub

" ]"

A0, i, r, S, n A s D o u b l e dx, x, dA, A x A s D o u b l e i As Integer

= = = =

For

&

= 0.00785 = 0.01 = 50

Zugspannung_Auswertung Dim Dim Dim

.............................................................................................

Step * Ax

dx * dx

Zeige_Querschnittsverlauf() Range("D3:E52").Select Charts.Add ActiveChart.ChartType = xlXYScatterSmoothNoMarkers ActiveChart. SetSourceData Source:= _ Sheets("Konstante Zugspannung") P l o t B y 9= x l C o l u m n s

.Range("D3-E52"),

j _

~ i

........................................................................................................................................................................................................................... ]

84

4 Funktionen i !

ActlveChart. SerlesCollectlon(1).Name = _ "= ....Q u e r s c h n i t t s v e r l a u f ...... ActiveChart.Location Where-= xlLocationAsObject, Name-="Konstante Zugspannung" With ActiveChart .HasTitle = True .ChartTitle.Characters.Text = "Trager mit konstanter Spannung" .Axes(xlCategory, xlPrimary).HasTitle = True .Axes(xlCategory, _ xlPrimary).AxisTitle.Characters.Text = "x [mm]" .Axes(xlValue, xlPrimary).HasTitle = True .Axes(xlValue, _ xlPrimary).AxisTitle.Characters.Text = "A

J

m

[mm^2] '' End With ActiveChart.Legend. Select S e l e c t i o n . L e f t = 229 S e l e c t i o n . T o p = 274 ActiveChart.Axes(xlValue).MajorGridlines. ActiveChart. PlotArea. Select Selection.Width = 314 ActiveWindow.Visible = False End Sub L6sche_Querschnittsverlauf() Dim Shp As Shape F o r E a c h S h p In W o r k s h e e t s ( " K o n s t a n t e nung").Shapes Shp. D e l e t e i Next i End Sub

Select

Sub

Zugspani ! i

Die Prozeduren werden wiederum durch MenOpunkte im MenO Konstante Zugspannung aufgemfen

Abb. 4-17 Menti Konstante Zugspannung

85

4.3

Nu merische Integration

Abb. 4-18 Auswertungder Testdaten

Abbildung 4-18 zeigt das Ergebnis aus den Testdaten. Daraus geht hervor, dass der Querschnitt des Stabes sich exponentiell ver~tndern muss, um eine konstante Zugspannung zu gew~thrleisten.

Obungen Der Algorithmus berechnet den Querschnittsverlauf nach der Rechteckregel. Zuvor haben wir schon die Trapezregel kennen gelernt. )kndern Sie die Berechnung in die nach der Trapezregel ab.

86 ..

.

.

.

.

.

"

. ~

4

Funktionen

Der Querschnittsverlauf sagt noch nichts tiber die eigentliche Tr~igerform (rund, quadratisch, rechteckig, ...) aus. Erg~inzen Sie das Programm um diese Berechnungsm6glichkeiten.

Beispiel: Ausflusszeit von FlOssigkeiten Wir betrachten einen Beh~ilter, in dem sich Fltissigkeit mit der H6he h befindet. A u s f l u s s z e i t von Flfissigkeiten

Nach dem italienischen Physiker Torricelli bestimmt sich die Ausflussgeschwindigkeit aus ,,,

v = ~/2. g- h .

(4.3.7)

Abb. 4-19 Ausfluss aus einem Behalter

Ebenso bestimmt sich die Ausflussmenge aus O=A.v.

(4.3.8)

Der variable Gef~ilgquerschnitt ist durch die Funktion y = f(x)

(4.3.9)

gegeben. Zum Zeitpunkt t betr~igt die Fltissigkeitsh6he x. FOr ein kleines Zeitintervall dt sinkt der Fltissigkeitsspiegel um dx und die austretende Menge berechnet sich, unter der Idealisierung, dass der Querschnitt im Zeitraum dt konstant ist, aus A o 9~/2. g. x . dt = A ( x ) . dx.

(4.3.10)

Umgestellt ergibt sich for das Zeitelement

87

4.3

Numerische Integration dt =

A(x) . dr

9

(4.3.11)

AO~/2. g . x Die Integration zum Zeitpunkt t, zu dem der FlOssigkeitsspiegel die H6he x hat, liefert t

o

x

ao

Die L6sung lautet

1 t=

X~A(x)

Ao 24g 4;x

dr.

(4.3.13)

Damit kOnnen wir den Berechnungsalgorithmus aufstellen. Diesmal verwenden wir einmal die Trapezregel zur Berechnung des Integrals und gleichzeitig bestimmen wir die Zeit aus dem Differenzenquotienten. Dazu gibt es nach Abbildung 4-20 drei M6glichkeiten.

D if f eren zenquotienten

Abb. 4-20 Vorschrittige, rtickschrittige und zentrale Differenzen

Im Algorithmus werde die Differenzen in einer Programmschleife bestimmt, w~ihrend dabei nur die Summe der Funktionen for die Berechnung nach der Trapezregel entsprechend der Darstellung in Tabelle 4-5 erfolgt. Nach der Programmschleife wird dann auch die Ausflusszeit nach der Trapezregel bestimmt. Tab. 4-7 L6sungsalgorithmus:Numerische Integration nach der Trapezregel

88

4

Funktionen

Eingabe der erforderlichen Parameter Ao, h, u, n h-u

AX~'~

n t v =O,t r =O,t m = 0

k

__

A o ~/-2. g xi = h ( - A x ) u + A x

A(xi) Y i = "~i

A(Xi+l) Yi+l = ~[Xi+l Y = Yi +Yi+I

At v = k

A(xi) r--'"

t v = t v + At v A(Xi+l) At r = k

Ax

Xi+l t r = t r + At r A ( x i ) + A(Xi+l) At m = k

1

Ax

2 ~ xi + Xi+l

2 t m = t m + At m

89

4.3

Nu merische Integration kac

t=-~-EY

FOr die Form des Trichters wird eine eigene Prozedur geschrieben. So k6nnen auch andere Formen integriert werden.

Option Sub

Explicit

Ausflusszeit_Leer() Dim Shp As Shape For Each Shp In Worksheets("Ausflusszeit").Shapes Shp. Delete Next

ThisWorkbook.Worksheets("Ausflusszeit").Cells.Clear Range("Al:El").Select Selection.MergeCells = True Selection. Font.Bold = True Selection. Font. Italic = True Selection.Value = "Ausflusszeit bei abnehmendem R a n g e ( "A2 :A 7 " ) . S e l e c t Selection. Font. Bold = True Selection. Font. Italic = True Range("A2") : "A [mm" & C h r W ( 1 7 8 ) Ranc'e ("A3") : "h [mm] " Ranc e("A4") = "u [mm]" Rang,e("A5") = "n" Ranc_'e("A7") : "t (TR) [s]" R a n t re ( "B- B" ) .C o l u m n W i d t h = "15" Ranc re("C-C") .ColumnWidth = "2" R a n c re("D2") : "x [mm] " RancFe("E2") = "yl" Ranc[e("F2") = "y2" R a n c Fe("G2") : "tl [s]" Ranc[e("H2") : "t2 [s]" Ranc[e("I2") = " t m [s]" Ranc[e("J2") : " d t m [s]" R a n g e ( "D2 :J 2 " ) . S e l e c t Selection. Font.Bold = True Selection. Font. Italic = True

9O

FlOssigkeitsstand"

&

" ]"

4 Funktionen

.............{an .........eT' End

Bg

i-Tse

ect .......................................................................................................................................................

Sub

Sub

Ausflusszeit_Testdaten Cells

(2,

2)

=

i0

Cells

(3,

2)

=

400

Cells(4,

2)

=

i0

Cells

2)

=

50

End

(5,

()

Sub

Sub

Trichter_Form(h,

x,

Ax)

Dim r As Double r = i00 + i00 / h * x Ax = r * r * 4 * Atn(1) End Sub

! i

Sub Ausflusszeit_Auswertung D i m A, A x , A x l , A x 2 , h,

() u, dx,

Dim

k,

dt,

tl,

Dim

i,

n

dtl,

As

= Cells(2,

2)

h

= Cells(3,

2)

u

= Cells(4,

2)

n = Cells(5, i = 2

2)

dx

/ n

=

(h - u)

Ji 'S u m m a t i o n

t,

x,

t2,

t2 : 0- t = 0 (A * S q r ( 2 * 9810)) h To u + dx Step -dx Trichter_Form(h, x, A x l ) Trichter_Form(h, xdx,

yl Su y2

nach : Axl = Su + : Ax2

Su

=

Su

yl,

Su

As

y2

As

Double

Double

Integer

A

tl : 0k : 1 / For x = Call Call

dt2,

Ax2)

der Trapezregel / Sqr(x) yl / Sqr(x - dx)

+ y2

'Bestimmung von dt aus dem Differenzenquotienten dtl = k * Axl / Sqr(x) * dx I

i,

tl = tl dt2 = k

+ dtl * Ax2

t2

=

t2

+ dt2

Ax

=

(Axl

/ Sqr(x

+ Ax2)

- dx)

I I

* dx

i i

i

/ 2

[...........................................................................................................................................................................................................................

]

91 9 _

~

,

4.3

Nu merische Integration

i........................................................................................................................................................................................................................... 7

i !

dt = k * Ax t = t + dt

i I i i

'A u s g a b e i = i + 1 Cells(i, 4) Cells(i 5)

!

i

Cells(i, Cells(i, Cells(i, Cells(i, Cells(i, Next x

6) 7) 8) 9) i0)

/ Sqr(x-

dx

/ 2)

* dx

i i

= x = yl = = = =

y2 tl t2 t = dt

'Bestimmung der Ausflusszeit nach der Trapezregel t = S u * d x / 2 / (A * S q r ( 2 * 9 8 1 0 ) ) C e l l s (7, 2) = t End Sub Sub

i i i

i~ i 9 i

Zeitdifferenzen_zeigen() Range("D3-D51").Select ActiveWindow. ScrollRow = 14 ActiveWindow. ScrollRow = 13 ActiveWindow. ScrollRow = 12 ActiveWindow. ScrollRow = ii ActiveWindow. ScrollRow = I0 ActiveWindow. ScrollRow = 9 ActiveWindow. ScrollRow = 8 ActiveWindow. ScrollRow = 7 ActiveWindow. ScrollRow = 6 ActiveWindow. ScrollRow = 5 ActiveWindow. ScrollRow = 4 ActiveWindow. ScrollRow = 3 ActiveWindow. ScrollRow = 2 ActiveWindow. ScrollRow = 1 Range("D3-D51,J3-J51").Select Range("J3").Activate Charts.Add ActiveChart.ChartType = xlXYScatterSmoothNoMarkers ActiveChart. SetSourceData Source:= Sheets("Ausflusszeit").Range( "D3-D51,J3.J51"), PlotBy-=xlColumns ActiveChart.Location Where:= _ xlLocationAsObject, Name-="Ausflusszeit" With ActiveChart .HasTitle = True

...........................................................................................................................................................................................................................

92

!

! j i i J

4 Funktionen

.Axes(xlCategory, xlPrimary).HasTitle = True .Axes(xlCategory, _ xlPrimary).AxisTitle.Characters.Text = "h [mm]" .Axes(xlValue, xlPrimary).HasTitle = True .Axes(xlValue, _ xlPrimary).AxisTitle.Characters.Text = "dt [s]" End With ActiveChart.HasLegend = False End Sub Sub

Zeitdifferenzen_16schen() D i m S h p As S h a p e F o r E a c h S h p In W o r k s h e e t s ( " A u s f l u s s z e i t " ) . S h a p e s Shp. D e l e t e

i Next i End Sub

Auch dieses Beispiel erh~ilt wieder die klassische Aufteilung des Mentis.

Abb. 4-21 Menti Ausflusszeitbestimmung

Die Auswertung der Testdaten in Abbildung 4-22 zeigt einen interessanten Verlauf. Danach nimmt die Zeitdifferenz At for ein Volumenelement Ax st~indig ab bis zu einer H6he von 135 mm. Danach nimmt sie wieder zu, und dies liegt an der geringer werdenden Masse der Fltissigkeit.

Obungen In der Berechnung kann als unterster Wert nicht Null eingegeben werden, weil sonst innerhalb der Berechnung eine Division durch Null erfolgt. L6sen Sie dieses Problem. Vielleicht hilft Ih93 i Y /

-

. .....

.

k...J

.....

:

4.3

Nu merische Integration nen die L6sung des Integrals weiter? Erg~.nzen Sie aulgerdem die Berechnung durch andere Beh~ilterformen.

Abb. 4-22 Bestimmung der Ausflusszeit einer Fliissigkeit

94

5 Differentialgleichungen

Differentialgleichungen ~

Differentialgleichungen

~

g

~

.

~

.

.

.

.

.

.

.

.

.

.

.

.

Bei den Differentialgleichungen zeigt sich die Anwendbarkeit der Mathematik in der Technik besonders deutlich. Bei Differentialgleichungen handelt es sich um Gleichungen, die zur Berechnung einer bestimmten Funktion dienen. Das wesentliche einer Differentialgleichung ist, dass neben der Funktion oder der unabh~ngig Ver~nderlichen auch mindestens eine Ableitung der gesuchten Funktion auftritt. Die Besch~.ftigung mit Differentialgleichungen begann zeitgleich mit der Einf~ihrung der Differential- und Integralrechnung durch Newton und Leibniz zum Ausgang des 17. Jahrhunderts.

5.1

NumerischeBehandlunggew6hnlicher Differentialgleichungen Die numerische Behandlung einer Differentialgleichung l~sst sich nach vielen Methoden durchf~ihren.

Abb.5-1 N~ihemngnach Euler-Cauchy

Euler-CauchyVerfahren

Das Euler-Cauchy-Verfahren ist eine einfache Methode und hat damit eine gr61gere Fehlerrate gegenOber anderen Methoden. Da sie aber einfach zu handhaben ist, soil sie hier benutzt werden.

95 :.

_

.

5.1

Numerische Behandlung gewdhnlicher Differentialgleichungen Es sei (5.1.1)

y= f(x) die analytische L6sung der Differentialgleichung

y'= f (x, y) .

(5.1.2)

Aus der Differentialgleichung folgt die Anfangsbedingung t

YO = f(xo, YO)

(5.1.3)

als bekannter Wert. Eine Verlinderung des Abzissenwertes (5.1.4) X1 = X0 + ergibt den neuen Ordinatenwert ?

Yl = Yo + YO "Ax.

Differentialquotient

(5.1.5)

Auf diese Weise erhlilt man einen Polygonzug, der der gesuchten L6sungsfunktion angeniihert ist. Bei diesem Verfahren, wird also der Differentialquotient

dy

(5.1.6)

dx durch den Differenzenquotienten

Differenzenquotient

Ay Ax

(5.1.7)

ersetzt. W~.hlt man Ax genfigend klein, kommt man der analytischen L6sung beliebig nahe. Der Nachteil wird aus der Darstellung ebenfalls recht deutlich. Mit zunehmenden Schritten entfernt sich die numerische L6sung immer mehr v o n d e r analytischen. Ein genaueres Verfahren ist z. B. das Runge-Kutta-Verfahren.

Die Bewegungsdnderung eines Massenpunktes

Die Betrachtung des Kr~tftegleichgewichts an beweglichen Massenpunkten ffihrt unmittelbar zu einer Differentialgleichung. Ob dies nun einfache Bewegungsmodelle wie z.B. Rotationen sind oder komplexere Modelle wie z.B. Schwingungssysteme. Der Anderung des Bewegungszustandes setzt der Massenpunkt seine tr~tge Masse entgegen

F =-m.a.

96

(5.1.8)

5

Differentialgleichungen

Die Momentanbeschleunigung a ergibt sich als Differentialquotient dv a = -- = v , (5.1.9) p

dt

so dass die erste Anwendung des Euler-Cauchy-Verfahrens die w~ihrend der Zeiteinheit dt auftretende GeschwindigkeitsSnderung dv liefert F v = ---t. (5.1.10) m

FOr die Momentangeschwindigkeit gilt weiterhin der Differentialquotient ds v=--=s dt

t

(5.1.11)

,

so dass die zweite Anwendung des Euler-Cauchy-Verfahrens den w~ihrend der Zeiteinheit dt zurtickgelegten Weg ds ann~ihernd beschreibt s=v.t. (5.1.12) Die Momentangeschwindigkeit wird dabei aus Einfachheitsgrtinden ftir die Berechnung durch die Anfangsgeschwindigkeit des betrachteten Zeitintervalls ersetzt.

Beispiel: Schubkurbeltrieb

V

r+l

i

! rsmq~ Abb.5-2

Schubkurbeltrieb

97

5.1

Numerische B e b a n d l u n g gew6hnlicher Differentialgleichungen

Sch ubku rbeltrieb

Der Kurbeltrieb dient zur Umwandlung von Schub- in Drehbewegung und umgekehrt. Der algebraische Ausdruck ftir die Kolbenbewegung ergibt sich, unter Betrachtung der Abbildung 5-2, aus

x = l + r - l . c o s f l - r . s i n ~0,

(5.1.13)

Weiterhin ist 2 - r = sin____fl_fl,

l

(5.1.14)

cos

cos fl= t / 1 - 2 2 cos 2 (/7,

(5.1.15)

x = r . (1-sin qg)+ l - ( 1 - i / 1 - 22 cos 2 (~0).

(5.1.16)

Bei allgemeiner Phasenverschiebung x = r - ( 1 - sin ~0)+ I. (1-~/1- 22 cos 2((p_ 00 "

(5.1.17)

Die Geschwindigkeit und Beschleunigung ergeben sich angen~ihert aus den Differenzenquotienten kx v =~ (5.1.18) At und mv

a = ~. At

Abb.5-3

98

Schubstange und Bolzen

(5.1.19)

5

Differentialgleichungen

Entsprechend den Bewegungen der Triebwerksteile unterscheidet man oszillierende und rotierende Massen. Die oszillierende Masse bestimmt sich aus rsr m 0 = rnsT.

(5.1.20)

+ m K + m B . l

Darin ist msT der Massenanteil der Schubstange, der durch den Faktor rsT/1 seinen oszillierenden Anteil hat, m K die Kolbenmasse und m B die Masse des Kolbenbolzens.

Abb.5-4 Kurbelwangenund Kurbelzapfen

Die rotierenden Massenanteile setzen sich aus 1- rST mR = m S T . ~ + m l

rw W.

r

(5.1.21)

+m Z +m N

zusammen. Darin ist msT(1-rsT)/l der rotierende Massenanteil der Schubstange, m w die Kurbelwangenmasse, die durch den Faktor rw/r auf den Drehmittelpunkt reduziert werden muss, m z die Kurbelzapfenmasse und m N die Nadellagermasse. Die oszillierende Massenkraft ergibt sich damit aus F 0 = m 0 9a K (5.1.22) und die rotierende Massenkraft (5.1.23)

F R =m R .r.(.o 2 .

Die durch die Zfindung eines Gasgemisches auf den Kolben einwirkende Kraft, sorgt ffir eine Entspannungsbewegung des Systems, d. h. eine Vergr61gerung des Zylinderraumes durch die Kol-

99 "

"

9 ........

,

2

5.1

Numerische Behandlung gewOhnlicher Differentialgleichungen

benbewegung. Die Kraft liegt in der Regel indirekt als Indikatordiagramm vor. Indikatordiagramm

Abb.5-5 Indikatordiagramm

Diese praktische Messwertaufnahme zeigt den Zylinderdruck tiber dem Weg. Die obere Kurve stellt die Entspannungsphase und die untere die Kompressionsphase dar. Die eingeschlossene Flfiche ist ein Malg ffir die geleistete Arbeit. Die Kolbenkraft ergibt sich tiber die Kolbenfl~.che und den indizierten Druck zu z.d 2 (5.1.24) FK = ~ . p . 4

In der Kompressionsphase wird die in einem Schwungrad bei der Entspannungsphase gespeicherte Energie tibernommen.

Abb.5-6 Drehmomentverlauf

100

5 Differentialgleicbungen Das Schwungrad ist ftir die Laufruhe eines Motors von entscheidender Bedeutung. Durch die Triebwerksbewegung und durch die Ver/inderung des indizierten Drucks ergeben sich wechselnde Drehmomentverl~iufe. Daraus resultiert ein mittleres Drehmoment Md M. Die Abweichungen von diesem kennzeichnen das Arbeitsverm6gen W. Dieses wiederum bestimmt das Tr~igheitsmoment der Schwungscheibe. Aus der vorhandenen Winkelgeschwindigkeit und einem angenommenen UngleichfOrmigkeitsgrad ergibt sich das TrSgheitsmoment aus der Gleichung W Id = ~ . (5.1.25) 6.(_0 2

Der UngleichfOrmigkeitsgrad ist das Verh~iltnis der Differenzen der gr61gten und kleinsten Winkelgeschwindigkeit der Schwungmassen m..... d mminZU ihrem Mittelwert. Er wird aus Erfahrung bestimmt.

Abb.5-7 Schwungscheibe

Der Durchmesser der Schwungscheibe ergibt sich aus der Ableitung

ld = ~--~.mS -(D 4 - d 4 ) . b 32

(5.1.26)

g

zu

101

5.1

N u m e r i s c h e B e h a n d l u n g g e w 6 h n l i c h e r Differentialgleichungen

D

=I

32.Id

4

--+d

ms g

.

(5.1.27)

~.b

Tab. 5-1 Algorithmus zur Bestimmung der Schubkurbelbewegung

Eingabe der Schubkurbeldaten d, 1, r, rsT , mST , m,, mz, m~, rw, m w, m N, m o, m R Eingabe Indikatordiagramm: for alle Winkel q) die zugeh6rigen p-Werte mit einer Schrittweite yon 10 Grad Bestimmung der Massenaufteilung m 0 = mST 9

rST

l

+mK +mB

1 - rST m R =mST.~+m l

W.

rW r

+m Z+m N

r

l xa=0, t=0, v = 0 FOr alle Winkel ~p = -90, 10, 270 p = f(~o) x = r . (1-sin co)+ 1. ( 1 - 4 1 - 22 cos 2 (co) Z~f = X - - X a ;

Xa = X

rg.d 2 FK ='~ . p

4

a csin(r cosl

102

5

Differentialgleicbungen

FST = ~

COS/~

F R = EST"

cos(90- q~- fl)

IFR

(2)=

~mR. r At = Arp (2)

t-t+At Ax 12 ~ - m

At Av=v-v

a

~

a ; Va = v

Av

m

At g 0 = m 0 .a Fr = Fsr.

sin(90- 9,- fl)

M d =FT'r W = W + M d .Ar

Durch Einffigen eines Tabellenblattes tblSchubkurbeltrieb, kann der Algorithmus darin programmiert werden. Option Explicit Sub Schubkurbel_Leer() Dim Shp As Shape For Each Shp In W o r k s h e e t s ( " S c h u b k u r b e l t r i e b " ) . S h a p e s Shp. Delete Next ThisWorkbook.Worksheets("Schubkurbeltrieb").Cells.Clear Range("Ai-Bl").Select Selection.MergeCells = True Selection. Font.Bold = True 103 .....

i

. . . .

5.1

Numerische Behandlung gewOhnlicher Differentialgleichungen

. . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Selection.Value

=

"Schubkurbeltrieb"

Range("C'C").ColumnWidth

=

"2"

Range("Dl:El").Select Selection.MergeCells = True Selection. Font.Bold = True Selection. Font. Italic = True Selection.Value = "Indikatordiagramm" Range("D2") = ChrW(966) & " [Grad]" Range("E2") = "p [N/m" & C h r W ( 1 7 8 ) & R a n g e ("D2 :E2" ) . S e l e c t Selection. Font.Bold = True Selection. Font. Italic = True

i i i z

Range("F'F") .ColumnWidth = "2" R a n g e ( "GI :HI" ) .S e l e c t Selection.MergeCells = True Selection. Font.Bold = True Selection. Font. Italic = True Selection.Value = "Auswertung" Range("G2") = "x [mm] " Range("H2") = " F K [N]" Range("I2") = ChrW(946) & " [Grad]" Range("J2") = " F S T [N]" Range("K2") = " F R [N]" Range("L2") = ChrW(969) & " [i/s]" Range("M2") = ChrW(916) & "t [s]" Range("N2") = "t [s]" Range("02") = "v [ m m / s ] " Range("P2") = "a [ m m / s " & C h r W ( 1 7 8 ) Range("Q2") = " F O [N]" Range("R2") = " F T [N]" Range("S2") = "Md [Nmm]" Range("T2") = "W [ N m / s ] " R a n g e ( "G2 :T 2 " ) . S e l e c t Selection. Font. Bold = True Selection. Font. Italic = True R a n g e ( "G :T" ) . S e l e c t Selection.NumberFormat = "0.00"

"]"

&

"]"

t

i i ! i

Range("A2"Al6").Select Selection Font Bold = True Selection. Font. Italic = True Range("A2") = "d [mm] "

! i

i

Range("A3")

i

i

104

"

"

=

"i

[mm] "

5 Differentialgleichungen +,. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Ranc Fe("A4") Ranc_[e("A5") Ranc[e("A6") Rang[e("A7") Ranc_[e("A8") Rang[e("A9") RangFe("Al0")

= : : : : :

Ranc[e("All") Rangre("Al2") Rang[e("Al5") Ranc re("Al6")

"r [mm] " " r S T [mm] " " m S T [kg]" " m B [kg]" "mZ [kg]" " m K [kg]" : " r W [mm] " : : : :

"mW "mN "mO "mR

[kg]" [kg] " [kg]" [kg]"

R a n c re ( "B2 : B 2 0 " ) . S e l e c t Selection.NumberFormat R a n g e ( "B2" ) . S e l e c t End Sub Sub

Schubkurbel_Testdaten Cells(2, 2) : i 0 0 C e l l s (3, 2) = 3 0 0

=

"0.00"

()

Cells(4, Cells(5, Cells(6, Cells(7, Cells(8, Cells(9, Cells(10, Cells(ll, Cells(12,

2) 2) 2) 2) 2) 2) 2) 2) 2)

= = = = = =

Cells(3, Cells(4, Cells(5, Cells(6, Cells(7, Cells(8, Cells(9, Cells(10, Cells(ll, Cells(12, Cells(13, Cells(14, Cells(15, Cells(16, Cells(17,

4) 4) 4) 4) 4) 4) 4) 4) 4) 4) 4) 4) 4) 4) 4)

=-90: Cells(3, = -80: Cells(4, =-70: Cells(5, = -60: Cells(6, =-50: Cells(7, = -40: Cells(8, = -30: Cells(9, = -20: Cells(10, = -i0: Cells(ll, = 0: C e l l s ( 1 2 , = i0: C e l l s ( 1 3 , = 20: C e l l s ( 1 4 , = 30: C e l l s ( 1 5 , = 40: C e l l s ( 1 6 , = 50: C e l l s ( 1 7 ,

i Cells(18, ! Cells(19 j t C e l l s (20 t ....................................................................

4) 4) 4)

' "

50 124 60 23.2 6 32 = 12 = 61.66 = 4

= = =

607080-

Cells(18, Cells(19 C e l l s (20

,

5) 5) 5) 5) 5) 5) 5)

= i00000 = 70000 = 45000 = 25000 = 20000 = 20000 = 20000 5) = 2 0 0 0 0 5) = 2 0 0 0 0 5) = 2 0 0 0 0 5) = 2 0 0 0 0 5) = 2 0 0 0 0 5) = 2 0 0 0 0 5) = 2 0 0 0 0 5) = 2 0 0 0 0 5) 5) 5)

= = =

55000 i00000 190000

!

........................................................................................................... ' ................................................................................................................................................................

105

Numerische Behandlung gewfJhnlicher Differentialgleichungen

5.1 ..................

i T i - i - E ........4 ) .....- - - 6 - O - 7 - - g e K s - i K

Cells(22, Cells(23, Cells(24, Cells(25, Cells(26, Cells(27, Cells(28, Cells(29, Cells(30, Cells(31, Cells(32, Cells(33, Cells(34, Cells(35, Cells(36, Cells(37, Cells(38, Cells(39, End Sub

4) = 4) = 4) = 4) = 4) = 4) = 4) = 4) = 4) = 4) = 4) = 4) = 4) = 4) = 4) = 4) = 4) = 4)=

i00: ii0: 120: 130: 140: 150: 160: 170: 180: 190: 200: 210: 220: 230: 240: 250: 260: 270:

i-. . . . .

Cells(22, Cells(23, Cells(24, Cells(25, Cells(26, Cells(27, Cells(28, Cells(29, Cells(30, Cells(31, Cells(32, Cells(33, Cells(34, Cells(35, Cells(36, Cells(37, Cells(38, Cells(39,

630000 700000 735000 750000 720000 650000 560000 480000 400000 350000 305000 280000 250000 230000 200000 180000 135000 I00000

Sub Schubkurbel_Auswertung () D i m d, i, r, rST, m S T , mB, D i m mO, mR, ph, x, la, FK, D i m w, dx, xa, dph, dt, t,

mZ, mK, rW, mW, m N A s D o u b l e p, be, FST, FR, z A s D o u b l e v, va, dv, aK, F O A s D o u b l e

D i m FT, Md, W A A s D o u b l e Dim i As Integer d = C e l l s (2, 2) ! 1 = C e l l s (3, 2) r = Cells(4, 2) rST = Cells(5, 2) mST = Cells(6, 2) mB = Cells(7, 2) mZ = Cells(8, 2) mK = Cells(9, 2) r W = C e l l s (I0, 2) m W = C e l l s (ii, 2) m N = C e l l s (12, 2) 'M a s s e n a u f t e i l u n g mO = mST * rST / 1 + mK + mB m R = m S T * (i - r ST) / 1 + m W Cells(15, 2) = m O Cells(16, 2) = m R 'B e w e g u n g 'KonstanteAtn(1)=pi/4 la = r / 1 106

................................................................................... 5) = 5) = 5) = 5) = 5) = 5) = 5) = 5) = 5) = 5) = 5) = 5) = 5) = 5) = 5) = 5) = 5) = 5)=

* rW

/ r + mZ

+ mN

5 Differentialgleichungen xa

=

0

dph

=

t

0

=

va

=

WA

=

For

i0 0 0

i

=

3

ph

=

Cells(i,

p

=

ph x

To

39 4)

Cells(i, =

:

If

i

dx xa

ph

/

45

r

*

(i-

1

*

(i

-

3

Then

:

x

-

xa

=

x ^

2

=

d

7)

Cells(i,

Sqr(l xa

=

=

=

r

If

1

- be

be

=

A tn(be

=

0

_

(la

*

Cos(ph))

^

2))

x

x

=

be

+

-

* Atn(1)

8) *

* Atn(1) Sin(ph))

=

Cells(i, FK

5)

* p

/

i000000

FK

Cos(ph) * be

/ >= /

1 0

Then

Sqr(l

-

be

* be))

Else be End

If

Cells(i,

9)

FST

/ Cos(be)

=

FK

=

Cells(i,

i0)

FR

*

=

FST

Cells(i, w

=

=

dt

w

=

0

=

Abs

=

0

* Atn(1)

=

FR

=

w

/

12)

*

45

-

ph

FST

Sqr(Abs(FR Not

/ Atn(1)

Cos(2

ii)

Cells(i, If

be

(mR

*

r))

*

-

be)

9810)

Then

(dph

/ w)

Else dt End

If

Cells(i, t

=

t

13)

+

Cells(i, If

dt v

=

dt

=

t

dt 14)

>

0

=

dx

=

0

Then / dt

Else v End I

If

i

Cells(i

15)

If

i

=

3

Then

ii

dv

=

v

-

va

=

!

v va

=

v Ii

[...........................................................................................................................................................................................................................]

107 9

9

.

.

Numerische Behandlung gew6hnlicher Differentialgleichungen

5.1

va

= v

If

dt

>

0 Then

aK

=

dv

=

0

/ dt

Else aK End

If i

Cells(i, FO

=

aK

= mO

* aK

/

9810

Cells(i,

17)

=

FO

FT

=

FST

Cells(i, Md

=

FT

Cells(i, WA

*

Sin(2

18)

=

* Atn(1)

- ph

- be)

FT

* r 19)

= WA

+ Md

Cells(i,

20)

Next !End

16)

= Md * dph

/

I000

= WA

i

Sub

Die Programmliste enth~ilt diesmal keine Diagrammdarstellung. Somit enth~ilt die Symbolleiste nur drei Mentipunkte.

Abb.5-8 Menu Schubkurbeltrieb

Mit Hilfe der eingebauten Testdaten ergibt sich eine umfassende Darstellung.

108

5 Differentialgleichungen

Abb.5-9 Auswertung der Testdaten 1. Teil

109

Numerische Behandlung gewOhnlicher Differentialgleichungen

5.1

Abb.5-10 Auswertung der Testdaten 2. Teil

Obungen Die Erstellung der Diagramme, und hier gibt es einige, tiberlasse ich dem Leser. Sie kOnnen dies tiber die Funktion Einftigen/Diagramm tun und die entsprechenden Spalten ftir die xund y-Achse ausw~ihlen. Schalten Sie vorher den Makrorecorder ein, so erhalten Sie den Quellcode in einem Modul und kOnnen diesen dem Programm hinzuftigen. Die nachfolgende Darstellung (Abbildung 5-11) zeigt einige Beispiele. Wie kOnnen Sie mehrere Kurven in ein Diagramm zusammenfassen?

110 9

...-

.

-

..

5 Differentialgleichungen

Abb. 5-11 Diagramme zur Auswertung

Ergfinzen Sie aulgerdem das Programm um die Berechnung der Schwungscheibe. Die Formeln dazu habe ich Ihnen bereits geliefert.

Beispiel" Drehschwingungen Drehschwingungen

Ein Torsionspendel nach Abbildung 5-12 erffihrt bei Auslenkung um den Winkel 9 das rtickstellende Moment

G.Ip Mt = ~~0. l

(5.1.28)

Abb. 5-12 Torsionspendel

111 ~ . ~ . ~

i

.

~

.

5.1

Numerische

Behandlung

gew6hnlicher

Differentialgleichungen

Gist der Gleitmodul des Fadens und Ip sein polares Fl~ichentr~igheitsmoment. Daraus folgt als Bewegungsgleichung ffir freie Drehschwingungen die Differentialgleichung 9. G.Ip I d .q~=-~q~

l

.

(5.1.29)

Umgestellt 9.

G.Ip

tp

(5.1.30)

l.l a

und mittels Differentialquotienten 9- dr (/9=~ dt

(5.1.31)

folgt G.Ip do)= - ~ qg . d t . l.l a

(5.1.32)

Angen~ihert durch den Differenzenquotienten folgt G.Ip Ago= - ~ qg . A t . I.I d

(5.1.33)

Den Algorithmus ffir eine Drehschwingungsberechnung gibt das nachfolgende Struktogramm wieder. Tab. 5-2 Algorithmuszur Bestimmung einer Drehschwingung Eingabe G, IF, 1, Id, %, r So lange

to, At, tin.,,

t

J

=J

If ii If

jl > i T h e n = 1 ii > k T h e n

B(jl, E n d If Next 1

_

(Name)

j! i

k Then

i

ii)=

jl ii

A(j,

: jl

- 1

= Ii

- 1

I)

}

j

i i

[9...........................................................................................................................................................................................................................]

148

6 Next

3

Call

Matrix_Kofaktoren(B,

Blatt.Cells(i, Next i

Exit

Sub B

Set

=

n (-i)

^

(i

I, +

Det) k)

*

Det

k

Next Matrix

k)

VektorenundMatrizen

Neu-

Blatt

=

Blatt.Name

Worksheets.Add =

Name

Resume z

i End i

Sub

i Sub

Matrix_Kofaktoren(A, Dim

i,

Dim

Pro,

Det

=

q

n

=

If

j,

k, q

r

As

As

n,

Det)

Integer

Double

0 /

2

q

=

Int(q)

r

=

n

=

n

-

Then

1

Else r End

If

For

i j

= =

1

Pro

=

1

For

k

=

1

To

:

Pro

j

j

+

=

If

j

n * A(k,

j)

1

>

n

Then

De t

+

Pro

To

r

i

+

j

:

j

-

n

+

n

k

De t Next

r

Pro

Next =

i

For

i j

= =

Pro For

1 n

-

=

1

k

=

Det

To

=

Pro

j

j

-

=

If

Next

1

1

Pro

Next

End

To

i

j


x)

("Quicksort")

8 Algorithmen aufDatenstrukturen ...........................................................................................................................................................................................................................i

If

i 0 'S t r u k t u r erg~nzen Max = MyDocNew. UsedRange. Rows. Count For i = 3 To Max j = V a l ( M y D o c N e w . C e l l s (i, i) ) If j > 1 T h e n t

~_

For

i

i

i End

I! i!

k

= 2 To

j

t - t & "." Next k t - t & LTrim(Str(j)) MyDocNew. Cells(i, i) E n d If Next i

= t !

i

Sub

i

Mit Hilfe dieser Prozeduren, die durch das nachfolgende Menti aufrufbar sind, erstellen wir die Stticklisten for das Beispiel in Abbildung 8-17.

Abb. 8-18

Menti zur Produktsttickliste

Dazu werden die Stticklisten P001 bis P004 neu angelegt und mit den entsprechenden Daten geftillt.

237

8.4

Arbeiten auf Listenstrukturen

Abb. 8-19 Baugruppen-Stticklistenzum Beispiel

Struktursffickliste

Die Prozedur StOckliste_Struktur erzeugt aus diesen dann eine StrukturstOckliste.

Abb. 8-20 Struktur-Sttickliste zum Beispiel

Zur Erzeugung aktiviert man die entsprechende BaugruppenSttickliste (hier P001) und ruff dann den MenOpunkt StrukturStOckliste erstellen auf. Die StrukturstOckliste erhS.lt den gleichen Namen wie die BaugruppenstOckliste, lediglich ein S- wird vorangestellt. 238

8 Algorithmen aufDatenstrukturen

Ubungen Schreiben Sie Prozeduren zur Verwaltung von Rezepturen. Anders als Stticklisten dienen sie zur Herstellung von Produkten, die aus Mischungen, Mischungsreihenfolgen und deren Verarbeitung entstehen. Genauso wichtig wie Stticklisten sind Arbeitspl~ine. Verwalten Sie Arbeitspl~ine zu vorhandenen StOcklisten.

8.5

Arbeiten auf Baumstrukturenund Graphen

Baumstrukturen und Graphen

Die Graphentheorie ist eigentlich eine mathematische Disziplin. Allerdings ist sie auch ein wichtiges Werkzeug der Informatik, um bestimmte Zusammenh~tnge zu beschreiben. Ein besonderer Vorteil for den Anwender ist, dass sich die Sachverhalte leicht graphisch darstellen lassen.

Abb. 8-21 Beispiel eines Graphen

Einfacher ungerichteter Graph

Ein einfacher ungerichteter Graph besteht aus Knoten und Kanten. Die Kanten verbinden die Knoten. Sind die Kanten gerichtet (Pfeil), so spricht man von einem gerichteten Graphen. Haben die Kanten noch Wertigkeiten, wie z. B. die Entfernungen von Orten untereinander, so spricht man von einem gewichteten Graphen, ansonsten von ungewichteten Graphen.

239

8.5

Arbeiten a u f Baumstrukturen und Graphen

Abb. 8-22 Beispiel eines gerichteten und gewichteten Graphen

Baume

Eine spezielle Form von Graphen werden auch BS.ume genannt.

Abb. 8-23 Vergleich Graph und Baum

Wurzel und Knoten 240

Aus der Abbildung 8-23 geht hervor, welche Eigenschaft BS.ume haben. Alle Wege gehen von einem Knoten, der Wurzel aus.

8 Algorithmen aufDatenstrukturen Vorg~inger heilgen die Knoten auf dem Weg zur Wurzel und Nachfolger die davon weg. Der unmittelbare Vorganger heifgt Vater und alle Knoten mit demselben Vater heiigen Brtider. Ein Knoten ohne Sohn heilgt Blatt und mit mindestens einem Sohn innerer Knoten. Einen typischen Baum haben wir im vorangegangenen Kapitel kennen gelernt. In Abbildung 8-17 wird die Produktstruktur als Baum dargestellt. Die Betrachtung dieses Sachverhalts tiberlasse ich gerne dem Leser. Ein Beispiel for das Suchen in B~iumen finden Sie im Kapitel 9.3. Einen weiteren gerichteten Graphen in dem Zusammenhang erhalt man, wenn man for ein Produkt den Gozintographen erstellt. Dieser Graph beschreibt, aus welchen verschiedenen Teilen ein Produkt besteht. Die Teile bilden die Knoten und die Kanten geben als Gewichtung die Sttickzahl des Einzelteils ftir ein Produkt an. Der Name des Graphen ist auf den Mathematiker Andrew Vazsonyi zurOckzufOhren, der als Vater des Graphen den Mathematiker Zepartzat Gozinto nannte. Dieser Name ist jedoch eine Verballhornung des Begriffs ,,The Part that goes into".

1

1

2

1

Abb. 8-24 Gozintograph zum Stticklistenbeispiel

241

8.5

Arbeiten auf Baumstrukturen und Graphen Weitere Betrachtungen Oberlasse ich dem Leser und wir wollen uns einem klassischen Beispiel for die Anwendung von Graphen zuwenden, der Netzplantechnik.

Beispiel: Netzplantechnik Netzplantechnik

Die Netzplantechnik unterstiJtzt und kontrolliert die DurchfOhrung von Projekten. Weiterentwickelte Systeme erlauben sogar die Kapazit~its- und Kostenplanung. Diese einfache Graphenmethode ist im Projektmanagement die Erfolgsmethode schlechthin.

PER T u n d CPM

Netzpl~ine sind gerichtete und gewichtete Graphen, die nach bestimmten Regeln erstellt werden. Die zwei bekanntesten Techniken heilgen PERT (Program Evaluation an Review Technic) und CPM (Critical Path Method). Nicht nur, dass Netzpl~ine den Ablauf von Projekten anschaulich darstellen, sie zwingen auch zum Durchdenken des Projekts. Aul~erdem f6rdern sie die Kommunikation und das Verst~indnis ftir alle Beteiligten. Wir betrachten nachfolgend die Methode PERT. Knoten sind darin Ereignisse und Kanten Aktivit~iten.

~ Aktisit/it 1-2

"1 El~ignis 1

optimistische Zeit wahrscheinliche Zeit i pessimisttsche Zeit

4/7/12

7,3 el~'artete Zeit

Ereignis 2

Abb. 8-25 Elemente in PERT

Ereignisse und Aktivit~ten

Ereignisse (Events) sind genau definierte Zeitpunkte. Dabei kommt dem Anfangs- und Endereignis eine besondere Bedeutung zu. Aktivit~iten (Activitys) liegen immer zwischen zwei Ereignissen und verbrauchen Zeit. Sie werden als Pfeil dargestellt. Scheinaktivit~iten sind Hilfsgr6gen zur besseren Darstellung des Sachverhalts. Sie verbrauchen keine Zeit.

Zeitsch~tzungen

FOr die Dauer einer AktivitS.t werden drei ZeitschS.tzungen erstellt. Eine optimistische, eine wahrscheinliche und eine pessi-

242

8

Algorithmen aufDatenstrukturen

mistische Zeitsch~tzung. Ftir die optimistische Zeit t o gilt, eine Mirzere Zeit ist nicht m6glich und auch nicht denkbar. Die pessimistische Zeit tp darf auf keinen Fall tiberschritten werden. Die wahrscheinliche Zeit tw gibt die Zeit an, die man angeben wtirde, w~.re nur eine Zeitangabe erlaubt. Die erwartete Zeit berechnet sich aus der Formel to +4.t w +tp te =

6

.

(8.5.1)

Die erwartete Zeit T E ffir eine AktivitS.t ist die Summe aller t vom Startereignis an J (8.5.2) rE - Z t ei .

i=1

Die spfitm6glichste Zeit T, zu der eine Aktivitfit abgeschlossen sein muss, ist die Summe aller t vom Endergebnis bis zur betrachteten Aktivit~tt n

TL = Z tei 9 i=j Schlupf

(8.5.3)

Als Schlupf bezeichnet man die Differenz (8.5.4)

S =T L -T e .

Die Varianz, ist ein Malg for die Bewertung der der Unsicherheit bei der Angabe der Vorgangsdauer und bestimmt sich aus Standardabweichung

(

82 = ~j, tp - t o 9 6

,'7

)2

(8.5.5)

Als Standardabweichung 8 wird die Wurzel der Varianz bezeichnet. Sie ist ein Malg f/Jr die Gr61ge der Abweichung. Jede Aktivit~tt beginnt mit einem Ereignis und endet mit einem Ereignis. Die Ausnahme bilden das Start- und Endereignis. Eine Aktivit~it kann erst beginnen, wenn das vorherige Ereignis erzielt wurde.

243

8.5

Arbeiten auf Baumstrukturen und Graphen

Aktivit~t 1

Aktivit~t2

Aktivit~tt 1 I

, Schemaktivit~t Aktivit/at 2

Abb. 8-26 Scheinaktivitlit

Parallele Aktivitiiten, die von einem Ereignis ausgehen und im gleichen Folgeereignis enden, werden mit Hilfe von ScheinaktivitSten aufgel6st. Scheinaktivitiiten ben6tigen keine Zeit. Besonders zu beachten ist, dass in einem PERT Netzplan keine Schleifen entstehen. Als konkretes Beispiel betrachten wir die Daten in der nachfolgenden Tabelle 8-8. Es spielt for die Programmierung keine Rolle, um welche Ereignisse und AktivitS.ten es sich handelt. Lediglich die entsprechenden Daten eines Projektes sind for uns von Wichtigkeit. Die T~ttigkeit Nr. 5 ist eine Scheint~itigkeit und erh~.lt somit keine Zeiten. Mit Hilfe dieser Daten 1S.sst sich der Netzplan bereits zeichnen. Siehe Abbildung 8-27. Ein Ergebnis ist bereits eingetragen. Die stlirker gezeichneten Pfeile kennzeichnen den kritischen Pfad. Der kritische Pfad oder Weg ist nach DIN 69900 der Weg in einem Netzplan vom Anfangs- zum Endknoten, bei dem die Pufferzeiten minimal sind.

244

8 Algorithmen aufDatenstrukturen Tab. 8-8 Beispiel von Netzplandaten

Nr

T~.tigkeit

Zeit

Zeit

opti.

wahr.

pess.

1

1-2

2

3

5

2

1-3

3

4

5

3

1-4

4

6

9

4

2-5

2

4

7

5

3-6

0

0

0

6

4-6

3

5

8,5

7

5-7

1,5

4

7

8

6-7

1

3

7

9

7-8

2

5

9

3/4/5 ./ 4/.. ,/

~

Zeit

,

\ \ 0/0,,"0

/167a~f ~ 42/4/7 ~1,514/7~'~"~ 2/5/9 tJr 167 '~ ] .l qQ3 "1 I 5.167 "

, ~

.... ~ / 4/6/9 " , ~ _ ~ '..... / 1/3i7 6,167 f ........~ 3/5/8,5 j r ",~ 3,333 5,25 ~k,,~*

Abb. 8-27 Netzplan zum Beispiel

Nachdem wir nun alle Begriffe eingefOhrt haben und bereits an einem Beispiel die Begriffe geObt haben, kommen wir nun zum Algorithmus. Tab. 8-9 PERT-Netzplan

i = 1 (1) Max (fiber alle Eintr~ige) Bestimme die Knoten a(i,1) und a(i,2)

245

8.5

246

Arbeiten auf Baumstrukturen und Graphen

8 Algorithmen aufDatenstrukturen

FC~r die Programmausftihrung ben6tigen wir ein Formblatt, das Testbeispiel und die Auswertung. Cg~g...8:s

.........e..E~.~E..e..tZp.!...an ...........................................................................................................................................................................................................................

Option Explicit Sub Netzplan_Neu () ThisWorkbook. Worksheets ( "Netzplan" ) .C e l l s . C l e a r

i

247

8.5

Arbeiten auf Baumstrukturen und Graphen

Rancre("Bl") RancFe("Cl")

: =

"Optimis-" & vbLf & "tische Zeit" "Wahrschein-" & vbLf & "liche Zeit"

Rancre("Dl") RancFe("Fl")

= =

"Pessimis-" "Ereignis"

& vbLf

&

"tische

& vbLf

&

"Dauer"

Zeit"

RancFe("Gl")

=

"Erwartete"

RancFe("Hl")

=

"Abweichung"

RancFe("Ii")

=

"Sp~testens"

Rancre("Jl") RancFe("Kl")

= :

"Sp~testens" "FrOhester"

& vbLf & "enden um" & vbLf & "Start um"

RancFe("Ll")

=

"Sp~tester"

& vbLf

&

"Start

Rancre("Ml") Rancre("Nl") Rancre("Ol") Rancre("Pl")

: = = =

"FrOhestes" "Sp~testes" "Schlupf" "Kritischer"

& vbLf & vbLf

& &

"Ende "Ende

Rancre("Ql")

=

"Abweichung"

& vbLf

& vbLf

&

&

"starten

um"

um" um" um"

"Pfad"

Rancre("Al:Ql").Select Selection.

Font.Bold

Selection.

Font. Italic

= True = True

Columns("A:A").Select Selection.NumberFormat

=

"@"

Columns("B:D").Select Selection.NumberFormat

=

"#0.0"

=

"#0.000"

Columns("G:Q").Select Selection.NumberFormat Range("A2").Select End Sub Sub

i

Netzplan Cells(2, Cells(3, Cells(4, Cells(5, Cells(6,

Test() I) = " 1 - 2 " i) = " 1 - 3 " i) = " 1 - 4 " i) = " 2 - 5 " i) = " 3 - 6 "

Cells(7, Cells(8, Cells(9, Cells(10,

i) = " 4 - 6 " i) = " 5 - 7 " i) = " 6 - 7 " i) = " 7 - 8 "

Cells(2,

2)

: 2

Cells(3,

2)

= 3

Cells(4, Cells(5,

2) 2)

= 4 : 2

t

9 ~ Cells(6, 2) : 0 i i C e l l s (7 2) : 3 i ....................................................,.........................................................................................................................................................................................J.................................

248

8 Algorithmen aufDatenstrukturen (

)

Cells (9, Cells(lO,

2) = 1 2) - 2

C e l l s (2, C e l l s (3, C e l l s (4, C e l l s (5, Cells(6, C e l l s (7, C e l l s (8, C e l l s (9, Cells(10,

3) 3) 3) 3) 3) 3) 3) 3) 3)

= = : = = = = =

Cells(2, Cells(3, Celis(4, Cells(5, Cells(6, Cells(7, Cells(8, Cells(9, Cells(10, End Sub

4) 4) 4) 4) 4) 4) 4) 4) 4)

= = = = = = = =

Sub

3 4 6 4 0 5 4 3 =

5

5 5 9 7 0 8.5 7 7 = 9

Netzplan_Start() Dim MyDoc As Object D i m i, M a x A s I n t e g e r D i m tx, el, e2 A s S t r i n g D i m S(), F ( ) , a ( ) , e() A s D i m tl, t2, t3 A s D o u b l e D i m V, L, S L A s D o u b l e

Double

Set MyDoc = ThisWorkbook.ActiveSheet MyDoc .Activate Max : MyDoc.UsedRange.Rows.Count - 1 If M a x > 0 T h e n ReDim S(Max), F(Max), a(Max, 2), e ( M a x , For i = 1 To Max tx = Cells(i + i, i) el = L e f t ( t x , InStr(tx, '.... ) - i) e2 : R i g h t ( t x , InStr(tx, '.... ) - i) a ( i , i) = V a l ( e l ) a ( i , 2) : V a l ( e 2 ) tl = C D b l ( C e l l s (1 + i, 2 ) )

2)

,

i...........................................................................................................................................................................................................................

I ! i i i i

J

249

8.5

Arbeiten auf Baumstrukturen und Graphen

!.......................................................... i

.......

....... .......T-; .........77-7

............................................................................................................................................................

t3 = C D b l ( C e l l s ( i + 1 4)) e(i, i) = (tl + 4 * t2 + t3) / 6 e(i, 2) = ((t3 - tl) / 6) ^ 2 s(i)

F(i) Next i

=

'erwartete 'Varianz

Dauer

0

= 0

'Auffinden der frfihesten Startzeiten For i = 1 To Max If S ( a ( i , 2)) < S ( a ( i , i)) + e(i, S ( a ( i , 2)) = S ( a ( i , I)) + e(i, E n d If Next i F(a(Max, 2)) : S ( a ( M a x , 2)) 'Auffinden der spatesten Endzeiten For i = Max To 1 Step-i If F ( a ( i , i)) : 0 O r F ( a ( i , i)) > F ( a ( i , 2)) - e ( i , F ( a ( i , I)) = F ( a ( i , 2)) - e ( i , E n d If Next i

i) i)

Then

i) i)

Then

m

i i i

L = 0 V = 0 For i = 1 To Max S L = F ( a ( i , 2)) - S ( a ( i , i)) - e(i, i) If SL = v m : I n t ( ( v + b) If t > C e l l s ( m , v = m + 1 Else b = m - 1 E n d If i = v Loop

i

i

/ 2) i) T h e n

'A u s g a b e Cells(i, i) . A c t i v a t e MsgBox "Zeile:" & Str(i) & vbLf vbOKOnly, "Suchergebnis von-

& Cells(i, " & t

i),

Zum Aufruf der Suchfunktion genOgt ein einziger MenOaufruf.

Abb. 9-2 Menti zur Suchprozedur 255

9.2

Die Greedy-Methode Die Prozedur liefert immer eine Ausgabe, egal ob der Suchbegriff gefunden wurde oder nicht.

Ubungen Will man eine solche Liste noch pflegen, dann kommen zwei weitere Prozeduren hinzu, n~tmlich das Einf/~gen und Entfernen von Eintr~tgen. Schreiben Sie diese Prozeduren und benutzen Sie ein Formular zur Verwaltung. Hash-Methode

Nicht immer liegen Listen in geordneter Form vor. Eine sehr effiziente Methode, in diesen Listen Informationen zu finden, ist die Hash-Methode. Die Methode wurde in den fCmfziger Jahren bei IBM unter dem Begriff gestreute Speicherung entwickelt. Befassen Sie sich mit dem Thema und schreiben Sie eine entsprechende Prozedur.

9.2

Die Greedy-Methode

Greedy Methode

Die Greedy-Methode (engl.: greedy = gierig, geizig) beruht auf einer einfachen Entwurfstechnik. Aulgerdem kann sie auf eine Vielzahl von Problemen angewandt werden. Fast alle diese Probleme erfordern die Bestimmung einer Teilmenge, die bestimmten Bedingungen gentigt. Diese Teilmengen nennt man dann eine m6gliche L6sung. Ziel ist es dann eine Teill6sung zu finden, die eine gegebene Zielfunktion maximiert oder minimiert. Dies ist dann eine optimale L6sung. Gew6hnlich gibt es klare Anweisungen zur Bestimmung einer L6sung, aber nicht notwendiger weise einer optimalen L6sung.

Beispiel:Auftragsfolgenproblem Aufiragsfolgenproblem

Gegeben sei eine Menge von n Auftr~igen a i. Jeder Auftrag hat einen Endtermin ei>=0 und einen Gewinn g~>=0. Dabei wird der Gewinn nur erzielt, wenn der Auftrag bis zum Endtermin ausgeffihrt ist. Gehen wir weiter davon aus, dass ffir alle Auftr~.ge nur eine Maschine zur Verffigung steht, und jeder Auftrag diese Maschinen ftir eine bestimmte Zeiteinheit z i belegt. Eine L6sung dieses Problems ist eine Teilmenge der Auftr~.ge, die alle bis zum Ende erledigt werden k6nnen. Der Wert dieser L6sung wj ist die Summe der Gewinne wj - s

256

gi 9

(9.2.1)

9 Verhaltens-Algorithmen Folglich ist eine L6sung mit maximalem Wert eine optimale L6sung. Eine Greedy-Methode ist es nun, ein Optimierungsmalg ftir die Zusammenstellung der Gewinne zu finden. Ausgehend von einem beliebigen Auftrag ai, werden immer nur die Gewinne hinzuaddiert, die den gr61gtm6glichen Gewinn versprechen und dabei den Endtermin einhalten. Aus den so gewonnenen m6glichen L6sungen, wird die beste ausgew~ihlt. Sie ist allerdings kein Garant ftir die optimale L6sung.

Betrachten wir dies an den konkreten Zahlen eines Beispiels in Tabelle 9-2. Neben dem Wert und der belegten Zeit for die Maschinen ist aulgerdem die Zeit angegeben, die bis zur Erledigung des Auftrags verbleibt. Zur Vereinfachung betrachten wir die Zeiten in Stunden. Zur Ermittlung gehen wir von allen Auftr/igen aus und suchen die dazu passenden Folgeauftr/ige nach der zuvor erl~iuterten Greedy-Strategie. Diese ist in Tabelle 9-3 wiedergegeben.

Tab. 9-2 Beispieldaten ftir Auftr~ige

Auf.

Wert

Beleg.

Zeitraum

73

12

30

61

10

4O

55

5O

12

11

30

48

14

35

33

10

45

Tab. 9-3 Struktogramm zur Greedy-Methode

Eingabe der Auftragswerte, Belegzeiten und des Zeitraums for die Ausftihrung FOr alle vorhandenen Auftr/ige i= 1 (1)n

257 ~

~

~

:

.

Die Greedy-Methode

9.2

Das Programm bauen wir wieder wie gewohnt auf, so dass erst ein Formblatt erstellt wird. Dann h3nnen wahlweise eigene Daten eingegeben oder die Testdaten aufgerufen werden. C....o.~g...9.:2 .......~suc~..e..n...ejne..~...~.~ung.....e...u...rein..~.u...eg.a~en~.gep-r~!.~m..n.ach..~r9re.~d~:.~e.t~@ Option Sub

Greedy_Neu () ThisWorkbook.Worksheets

("Greedy")

Range("Al")

=

"Auf.Nr."

Range ("BI") Range("Cl")

= =

"Wert" "Beleg."

Range

=

"Zeitraum"

("DI")

vbLf Range("Fl")

=

&

& vbLf

Selection.

" [h]"

"Auf.Nrn."

Font. Bold

= True

s I i

Selection. Font. Italic = True R a n g e ( "E- E" ) .C o l u m n W i d t h = 2

! !

Range("A2")

258 ,.

.,.

,.

Select

Sub Greedy

Test()

&

& vbLf

Range("Gl") = "Ges.Wert" R a n g e ( " A 1 9G 1 " ) . S e l e c t

' End i ! i Sub

.............................................

Explicit

.C e l l s . C l e a r

"Zeit"

& vbLf

&

Erl. " & _

"zur

&

" [h]"

9 Verhaltens-Algorithmen Dim i As I n t e g e r For

i = 1 To 6 Cells(i + i, I) Next i C e l l s (2, 2) = 73 C e l l s (3, 2) = 61 Cells(4, 2) = 55 C e l l s (5, 2) = 12 Cells(6, 2) = 48 C e l l s (7, 2) = 33 C e l l s (2, 3) = 12 C e l l s (3, 3) = i0 Cells(4, 3) = 8 C e l l s (5, 3) = ii Cells(6, 3) = 14 C e l l s (7, 3) = i0 Cells(2, 4) = 30 Cells(3, 4) = 40 Cells(4, 4) = 50 Cells(5, 4) = 30 Cells(6, 4) = 35 Cells(7., 4) = 45 End Sub Sub

= i

GreedyStart() Dim MyDoc As Object D i m W, Z, wi, zi, ei A s D o u b l e D i m i, j, k, i, w M a x , k M a x , n A s D i m a() A s I n t e g e r Dim t As String

Integer

Set MyDoc = ThisWorkbook.Worksheets("Greedy") n : MyDoc.UsedRange.Rows.Count - 1 R e D i m a(n, 4) 'D a t e n i i b e r n e h m e n For i = 1 To n a(i, 2) = C e l l s ( i a(i, 3) = C e l l s ( i a(i, 4) = C e l l s ( i Next i

+ i, + i, + I,

2) 3) 4)

t

!' i'

i

For

i = 1 To n 'Merker 16schen For j = 1 To n

i! .= i 'i

259

Die Greedy-Methode

9.2

........................................................; 7 s

........i 7 - -

Next j 'Ersten a ( i , i)

.....-6-...........................................................................................................................................................................................................................

Wert = 1

setzen

'Sortierung For

j

der

= 2 To

'gr6sster W = 0 1 = 0 For k = If

freier

1 To

End

=

t

__

For

If

k

a(l,

i)

=

j

j der

Zulassigkeit

i! !1

Next

k + +

26O ,

~' .

" .

,,'~.~_

~

Ausgabe

j = 1 To n For k = 1 To n If a ( k , i) = j T h e n If Z + a ( k , 3) < = a ( k , 4) T h e n Z = Z + a ( k , 3) W = W + a ( k , 2) If j = 1 T h e n t = LTrim(Str(k)) Else t = t & ..... & L T r i m ( S t r ( k ) )

Next j Cells(i Cells(i Next i Sub

und

0

End E n d If k = n E n d If

End

n

If

Next

'PrOfung Z = 0 W

Wert

a ( k , I) = 0 T h e n If a ( k , 2) > W T h e n W = a ( k , 2) 1 = k

End

Next

Werte

n

i, i,

6) 7)

If

= t = W

9 Verhaltens-Algorithmen Der Aufruf der Prozeduren fiber das Menti in Abbildung 9-3 liefert die in Abbildung 9-4 dargestellten Daten.

Abb. 9-3 Menti zur Greedy-Methode

Danach ist die L6sung die Aufgabenfolge 5-1-2-3 mit einem Gesamtwert von 237. Auch for dieses Beispiel gilt, dass es nicht die optimale L6sung sein muss. Die Greedy-Methode liefert jedoch oft ein schnelles und hinreichend gutes Ergebnis.

Abb. 9-4 Ergebnis der Testdaten

Obungen W~ihlen Sie statt des Kriteriums Wert das Kriterium

Wert Belegzeit und vergleichen Sie beide Ergebnisse. Insbesondere, wenn noch die Kosten for die Maschinennutzung dem Gewinn entgegen gesetzt werden.

261

Ri2ckverfolgung oder Backtracking

9.3

Andern Sie den Algorithmus so ab, dass auch Vertauschungen der Reihenfolgen untersucht werden.

9.3

ROckverfolgung oder Backtracking

Ri2ckverfolgung, Backtracking

Die Ri~ckverfolgung stellt ein fundamentales algorithmisches Prinzip dar. Viele Probleme, bei denen man nach einer Menge von L6sungen bzw. nach einer optimalen L6sung sucht, k6nnen mit dieser Methode gel6st werden. Der Name Rtickverfolgung (engl.: backtracking) schildert im Wort bereits anschaulich die Methode. Der Backtracking-Algorithmus ~thnelt dem Suchen in B~tumen.

Abb. 9-5

Baumstruktur

Man durchl~tuft dabei alle Zweige eines Baumes (Abbildung 9-5) bis in die Spitzen und kehrt dann bis zur vorherigen Abzweigung zurtick, die man noch nicht durchlaufen hat. Von diesem Zurfickgehen hat der Algorithmus seinen Namen. Beim Durchsuchen der B~tume verf~thrt man nach einer Strategie. Zum Beispiel orientiert man sich immer nach rechts zu gehen, soweit das m6glich ist. Hat man die Spitze erreicht, geht man bis zur ersten M6glichkeit nach links zu gehen, die man noch nicht durchlaufen hat, wieder zurtick. Danach orientiert man sich wieder rechts. Wir kennen dieses Verfahren auch zum Finden eines Ausgangs aus einem Labyrinth. Ein klassisches Beispiel ist das 8-Damen Problem, das ich bereits im Jahre 1978 in der Wissenschaftszeitschrift Bild der Wissenschaft als Programmierbeispiel auf einem Taschenrechner beschrieben habe. Da wird nach den Positionen gesucht, die 8 262 9 . .

.

9 Verhaltens-Algorithmen Damen auf einem Schachbrett einnehmen k6nnen, ohne sich gegenseitig zu ,,schlagen". Weitere typische Anwendungsbeispiele for den Backtracking-Algorithmus sind die Suche nach einem Ausweg aus einem Labyrinth, angrenzende Fl~ichen mit unterschiedlichen Farben zu versehen und der Weg eines Handelsreisenden. Der Algorithmus spielt ebenfalls in der KI (KOnstlichen Intelligenz) eine bedeutende Rolle. Wir wollen nachfolgend eine industrielle Anwendung betrachten.

Beispiel: Einschrittige Codes for die industrielle Wegmessung Einschrittige Codes, Gray Code

Zur Wegmessung, ob inkremental oder absolut, wird in der Regel der Gray-Code benutzt. Er hat eine Eigenschaft, die der Bin~ircode nicht besitzt. Beim Wechsel von einer Zahl zur nachfolgenden oder zur vorhergehenden ~indert sich nur ein Bit in der Darstellung. l~mnE~naer

Abb. 9-6 Wegmessung

Industrielle Wegmessu ng

Nur dadurch, dass sich immer nur ein Bit ~ndert, sind fehlerfreie Messungen m6glich. Wtirden sich zwei Bits ~indern, Mime es m6glicherweise kurzzeitig zu einem falschen Wert, wenn diese sich nicht wirklich zeitgleich ~indern. Tab. 9-4 Binar- und Gray-Code

i

Bimir-Code

Gray-Code

0

000

000

1

001

001 263 ~ , ~ ; ~ ~ : : ~ .

9.3

Rfickverfolgung oder Backtracking 2

010

011

3

011

010

4

100

110

5

101

111

6

110

101

7

111

100

Wir wollen nachfolgend mittels Backtracking-Algorithmus untersuchen, ob es m6glicherweise noch andere so genannte einschrittige Codes gibt. Als Basis nehmen wir 4 Bit und ffir die Farben Weilg und Schwarz die Ziffern 0 und 1. Eine Ausgangskonstellation sei mit nur Nullen gegeben. Dann ergibt sich die n~ichste Konstellation durch Ver~inderung eines Bits (Abbildung 9-5). Ist eine solche Konstellation gefunden, dann beginnt die Ver~inderung wieder beim ersten Bit. Gibt es die Konstellation bereits, wird das zweite Bit ver~indert, usw.; so lange bis eine weitere Konstellation gefunden ist. Ausgang ist immer die zuletzt gefundene Konstellation. Die jeweilige Position der Bitver~inderung wird registriert, da mit Erreichen der 16. Bitkonstellation oder schon frtiher, wieder ein Rtickw~irtsschritt erforderlich ist.

Abb. 9-7 Erste Schritte des Algorithmus

264

9 Verhaltens-Algorithmen Ein Rtickw~irtsschritt ist immer dann erforderlich, wenn mit Ver~nderung des 4. Bits keine neue Konstellation erreicht wird. Dann wird auf die vorherige gtiltige Konstellation zurtickgegriffen, die noch kein 4. Bit ver~indert hat. Damit ist der Algorithmus umfassend beschrieben und wir wollen ihn im nachfolgenden Schritt als Struktogramm definieren. Tab. 9-5 Bestimmung einschrittiger Codes nach der Backtracking-Methode

265

R~ckverfolgung oder Backtracking

9.3

Da eine lange Laufzeit zu erwarten ist, habe ich noch ein Abbruchkriterium eingebaut, so dass nach Erreichen einer vorgegeb e n e n Anzahl Konstellationen der Prozess terminiert. g o ~ g . . 9 : ~ ......B ~ ! ~ n g . . e ! ~ S h ~ t * ~ . . . C e ~

...........................................................................................................................................................................................................................

Option Explicit S u b E i n C o d e s Start() D i m A(16, 4), U(4), M(16) As I n t e g e r D i m i, j, k, i, n As I n t e g e r D i m pl, p2 As I n t e g e r D i m y, z, s As I n t e g e r D i m t As S t r i n g 'Start i ThisWorkbook.Worksheets("EinCodes").Cells.Clear I Range("H-W").ColumnWidth = 1 i z = I n p u t B o x ( " A n z a h l d e r C o d e s bis z u m Stop a n g e b e n " )

i

y=l 'A u s g a n g s k o n f i g u r a t ion F o r j = 1 To 4 A(I, j) = 0

266

0000

9 Verhaltens-Algorithmen ' ...........................................

.......... j i

Next

.......... =

.......

...........................................................................................................................................................................................................................

j

'Merker Ausgangswerte F o r i = 1 T o 16 M(i) = 0 Next i 'Start i =

i

i

1

Do 'S c h r i t t vor For j = 1 U(j) = Next j If M ( i ) < M(i) = U(M(i))

To 4 A ( i , j) 4 Then M(i) + 1 = 1 - U(M(i))

'P r O f u n g 'Wird die gleiche Konstellation 'noch einmal gefunden, ist pl=l pl = 0 For k = 1 To i p2 = 0 For j = 1 To 4 If N o t U ( j ) = A ( k , j) T h e n Next j If p 2 = 0 T h e n p l = 1 Next k

p2

: 1

!

'Neue Konstellation If p l = 0 T h e n i = i + 1 For j = 1 To 4 A ( i , j) = U ( j ) Cells(i, j) = U ( j ) Next j If

i =

16

Then

'PrOfung,

!

ob

der

ist

Code

in

sich

geschlossen

j

: i

S =

0

i

For

j = 1 To

! 4

i

267

9.3

Rfickverfolgung oder Backtracking

.............................................................................................................. ~ ~ .....~ o ~

s End Next If s

j =

K-ii-< .......~-i- ........~ a - ~

.......; - i i i

= If

s

.........~ i ......."- ......

+

.......................................................................

1

1 Then

'Code

brauchbar

For

=

k t

._

1 To

und

wird

registriert

16

,, ,,

For

j

=

If

1 To

A(k, t

4

j)

:

1 Then

=

t

+ ChrW(9608)

=

t

+ ChrW(8901)

Else t

E n d If If j < Next

Cells(y, Next y

4 Then

t

=

t

+ vbLf

j 7

+ k)

=

t

k

= y

+

1

'Merkerstand For

k

=

1 To

Cells(k, Next

zeigen 16 6)

= M(k)

k

'A b b r u c h If y = z + 1 T h e n Exit Sub End End

If

If

'S c h r i t t M(i)

i End End

=

=

i

zurOck 0

-

1

If

If

Else 'Schritt

zurOck

M(i) = 0 i = i - 1 i

End

If

!

i Loop While i > 0 i i........................................................................................................................................................................................................................... End Sub 5 3

Als Menti wird lediglich ein Start benOtigt. 268

9 Verhaltens-Algorithmen

Abb. 9-8 Menti zum Bestimmungsstart

Die ersten neun gefundenen Codes sehen Sie in Abbildung 9-7. Die Spalten A-D zeigen die vier Bit der 16 Positionen der letzten gefundenen gOltigen Konstellation. In Spalte F sehen Sie den aktuellen Merker der 16 Positionen, und damit den Fortgang des Algorithmus. In den Spalten H-V eine grafische Darstellung aller gefundenen Konstellationen.

Abb. 9-9 Die ersten neun gefundenen einschrittigen Codes

Obungen Andern Sie den Algorithmus so ab, dass mit ihm die Ziffern 0 bis 9 dargestellt werden kOnnen. Es ergeben sich dann zehn Positionen von mOglichen sechzehn. Die restlichen sechs Positionen sind OberflOssig und werden als Redundanz bezeichnet. 269

9.4

Rfickwdrtsrechnen oder Rekursive Prozeduren Schreiben Sie zus~itzliche Prozeduren, die gefundene Codes z. B. auf Gewichtung oder andere Eigenschaften untersucht.

9.4

ROckwiirtsrechnen oder Rekursive Prozeduren

Rf2ckwdrtsrechnen, rekursive Prozeduren

Man spricht von einer rekursiven Methode, wenn in einer Prozedur ein Aufruf von ihr selbst steht. So berechnet sich n! aus seinem Vorg~inger (n-l)! Durch n!= n.(n-1)!. (9.4.1) Damit die Rekursion terminiert, muss ein Rekursionsanfang gegeben sein. FOr Null-Fakult~it gilt 0!= 1 (9.4.2) per Definition. Ein sehr bekanntes Beispiel for das RtickwS.rtsrechnen ist das nachfolgend dargestellte Beispiel, in der Literatur auch als JeepProblem bekannt.

Beispiel:Jeep-Problem Jeep-Problem

Ein Fahrer m6chte mit seinem Jeep eine Wtiste durchqueren. An seinem Ausgangspunkt steht ihm ein unbegrenztes Tanklager zur Verftigung. Der Jeep verbraucht 10 Liter auf 100 km und kann for eine Fahrt immer nur 60 Liter Treibstoff laden. Damit kann der Fahrer 600 km fahren. Der Fahrer ist also gezwungen, in der Wtiste ein Depot anzulegen, auf das er bei seiner Durchquerung zurtickgreifen kann. Die LOsung des Problems ergibt sich durch ROckw~irtsrechnen, das anschaulich in Abbildung 9-10 dargestellt ist.

Abb. 9-10 Die Methode des Riickw~irtsrechnens

Um vom letzten Depot D zum Ziel X zu gelangen, ist eine einzige Tankftillung n6tig.

270 9

9

9 Verhaltens-Algorithmen Um eine Tankftillung vom vorletzten Depot C nach D zu transportieren und dann von D nach C zurtickzukehren, muss der Jeep die Strecke CD dreimal fahren. Kommt er das erste Mal nach D kann er 1/3 der Tankladung zurticklassen. Beim zweiten Mal hat er noch 2/3 der Tankladung. C muss also 1/3 der Tankladung von D entfernt sein = 600/3 = 200 km. Um vom drittletzten Depot B nach C zwei Tankladungen zu bringen, muss der Jeep ftinfmal hin- und heffahren. Zweimal kann er eine 3/5 Tankladung deponieren und beim dritten Mal besitzt er noch 4/5 der Tankftillung. C muss also von B entfernt sein = 600/5 = 120 km.

(111 /

Allgemein betrachtet ergibt sich 600. 1 + - + - + - - + 3 5 7

....

(9.4.3)

Diese Summe divergiert und so llisst sich mit dieser Methode jede beliebige Strecke zurticklegen. Tab. 9-6 Das Jeep-Problem Starteingaben v=Verbrauch in Liter/100 km t=Tankftillung e=Entfernung

E=0 i=0 i=i+l

E=E+ ( i - 1 ) . 2 + 1 So lange wie - t- E

< e

v

Ausgabe der Anzahl Depots

271

9.4

R~ckwdrtsrechnen oder Rekursive Prozeduren Mit Hilfe variabler Eingabedaten sollen die Anzahl Depots bestimmt werden, die zur Oberbrtickung einer bestimmten Entfernung notwendig sind.

[email protected] .......B esti~_ung_eins.cMttj~_~r..Co#.s Option Explicit Sub

Jeep_Neu

.....................................................................................................................................................................................................

()

ThisWorkbook.

Worksheets

("JeepProblem"

) .C e l l s . C l e a r

Ranc re("Al") = " T a n k f ~ l l u n g [L]" R a n c re("A2") = " V e r b r a u c h [L/100km]" R a n c re("A3") = " E n t f e r n u n g [km]" R a n c "e("Dl") = " D e p o t " R a n g 'e("El") = " E n t f e r n u n g " Rang e("Fl") = "Differenz" Ranc e("Al:A3").Select Selection. Font.Bold = True Selection. Font. Italic = True Range("Dl:Fl").Select Selection. Font.Bold = True Selection. Font. Italic = True Range("A-A").ColumnWidth = 20 Range("C'C").ColumnWidth

=

5

Range("Bl").Select End Sub Sub

J e e p _ T e s t () Cells(l, 2) = 80 C e l l s (2, 2) = i0 C e l l s (3, 2) = 1 5 0 0 End Sub

Sub

J e e p _ S t a r t () D i m v, t, e, s, u, Dim i As Integer t v e i

i i

272

= = = =

Cells(l, C e l l s (2, Cells(3, 0

2) 2) 2)

w As

Double

I

i

s = 0

i i

u = 0

i

Do

I I ~ i

9 Verhaltens-Algorithmen 1

=

1

+

s

=

s

+

Cells(i w

ii !

((i4)

i) =

*

2

+

i)

i

*

I00

*

s

+

i,

5)

=

w

Cells(i

+

i,

6)

=

w

-

u

t

/ v

I00

*

s

Loop

/

/ i,

v

=

t

1 +

Cells(i

U

:

1

W

While

*


1 A n d Z e i l e > 1 T h e n F o r 1 = 1 To p If y(l, I) > 0 T h e n y(l, 2) = 1 For

i i i

r : 1 To Z e i l e ts = t & ..... & L T r i m ( S t r ( 1 ) ) If ts = m Left(Cells(r, i), L e n ( t s ) ) T h e n y(l, 2) = y ( l , 2) + _ V a l ( C e l l s (r, 3)) E n d If

I i i i

! i i

i........................................................................................................................................................................................................................... ]

282

10 Algorithmen aus der Natur Next End Next End

r

If

1

If

'W a h r s c h e i n l i c h k e i t s v e r t e i l u n g g = For

0 1 = g

1 To

: g

Next

p

+ y(l,

2)

1

x

: R n d (x)

w

=

Int(x

g

=

0

For

1 = g

* g

1 To

: g

If

+ p

+ y(l,

g

>=

v

=

w

i)

2)

Then

1

1 = p End

If

Next 1 If y ( v ,

i)

>

0 Then

y(v,

i)

=

0

y(v,

2)

=

0

If

k

=

t

= LTrim(Str

1 Then (v))

Else t End

=

t &

f (k) = v q = 1 End If Loop While q = 0 Next k Cells(j + i, 5 + m) z(j)

=

k For

=

der

1 To 1 =

If

k

=

t

Durchlaufzeit

p

1 To =

m

1 Then

u(1) Else If i

LTrim(Str(v))

t

'Bestimmung For

..... &

If

= Cells(f(k)

1 = u(1)

+

i,

1

+

4)

1 Then = u(1)

+ Cells(f(k)+

i,

1 +

4)

!

i i

i

Else

283

10.1

D e r A meisenalgorith m us

[...........................................................................................................................................................................................................................

If

u ( l - i) < u(1) u(1) = u ( 1 ) + _ Cells(f

Then

(k)

+ I,

1 + 4)

+ i,

1 + 4)

Else u(1)

= u(l

- i)

Cells(f E n d If E n d If E n d If Next 1 Next Cells(j + i, 6 + m) s(j) = u ( m ) Next j

+

(k)

= u(m)

'B e u r t e i l u n g 'Nur d i e m i n i m a l s t e n For j = 1 To n If j = 1 T h e n M i n = s(j) Else If

Werte

werden

eingetragen

s(j) < M i n T h e n M i n = s(j) E n d If E n d If Next j For j = 1 To n If s(j) = M i n T h e n q = 0 For k = 1 To Zeile If C e l l s ( k , i) : z(j) T h e n Cells(k, 3) = C e l l s ( k , 3) + 1 q = 1 k = Zeile E n d If Next k If q = 0 T h e n Zeile = Zeile + 1 Cells(Zeile, i) = z(j) Cells(Zeile, 2) = s(j) Cells(Zeile, 3) = 1 E n d If E n d If i Next j ! Next i i End Sub J i........................................................................................................................................................................................................................... ] 284

10 Algorithmen aus der Natur

Mit Hilfe eines Mentis werden die drei Prozeduren aufgerufen.

Abb. 10-3 Mentizum Ameisenalgorithmus

Die Testdaten liefern das bereits bekannte Ergebnis von 40 Stunden. Es werden gleich mehrere L6sungen ausgegeben, ohne dass deren Vollst~ndigkeit gew~hrleistet ist.

Abb. 10-4 Ein m6gliches Ergebnis der Testdaten

Bedingt durch die Pseudozufallszahlen, wird jedes Mal ein anderes Ergebnis erzeugt. Die Pheromonmatrix (links) und die Ergebnisse der letzten Gruppe (rechts) habe ich grau gekennzeichnet.

Obungen FOhren Sie eine Gewichtung der Produkte ein und berOcksichtigen Sie diese bei der Pheromonauswertung. Uberlegen Sie, wie Sie einen Verwitterungsfaktor realisieren k6nnen (Pseudozufallszahlen).

285

10.2

Evolutionsstrategien

10.2

Evolutionsstrategien

Evolutionsstrategie

Die ersten Anwendungen der Evolutionsstrategie sind Ende der 60er Jahre zu finden. Es wurden ~ihnliche Theorien und Verfahren an verschiedenen Orten publiziert. In Deutschland ist es der Name Rechenberg, der mit der simulierten Evolution in Verbindung gebracht wird. Er lieferte die ersten wichtigen theoretischen Betrachtungen und sinnvollen Anwendungen. Als Beispiele sind die Optimiemng eines Rohrkrtimmers, einer Oberschalldtise, eines pneumatischen Reglers, eines Stabtragwerkes, u. a. zu nennen. Die Evolutionsstrategie ist eine universelle Methode zur Optimierung technischer Probleme. Sie wird vor allem bei Problemen eingesetzt, for die keine geschlossene L6sung vorliegt. Die Methode ~hnelt dem Prinzip der biologischen Evolution und besteht meist aus L6sungsversuchen auf realen Parameters~itzen, die dadurch besonders zur LOsung technischer Probleme geeignet sind. Im Gegensatz zu genetischen Algorithmen, bei denen eher ein genetischer Code benutzt wird, und die wir im Anschluss behandeln werden. Beide Methoden wurden unabh~ingig zur gleichen Zeit entwickelt. Das Prinzip einer Evolutionsstrategie ist im nachfolgenden Struktogramm allgemein wiedergegeben.

Tab. 10-4 Das Prinzip der Evolutonsstrategie

286 -

. . . . .

..

10 Algorithmen aus der Natur

Obernahme des verbesserten Systems als Startkriterium for weitere Generierungen

./.

Wiederholung, bis ein Abbruchkriterium greift. Ausgabe der erzielten LOsung Betrachten wir die Methode am nachfolgend einfachen Beispiel eines Stabwerks.

Beispiel: Stabwerkoptimierung Stabwerkoptimierung

Das dargestellte Stabwerk unterliegt den angegebenen Kr~iften und soil mit dem geringsten Materialaufwand gestaltet werden. Die Daten sind a=100 mm, FI=1000 N, F2=500 N, F3=200 N.

Abb. 10-5 Stabwerk unter Belasmng

W~hrend der obere Gurt unverS.ndert bleiben soil, k6nnen die sttitzenden StS.be reduziert werden. Das bedeutet, dass die Knoten K1 und K2 ver~indert werden k6nnen. Wir legen in diese Knoten Koordinatensysteme und ver~indern deren Lage zufallsbedingt um 1 mm. Die Beziehungen ergeben sich aus den nachfolgenden Bildern.

287

10.2

Evolutionsstrategien

F1 a

l Ylx,

x t

1

Abb. 10-6 Verschiebung des 1. Knotens

L l = ~ ( a - y l ' ) 2 + X l '2

L2

__~(

a + x l ' ) 2 +Yl

(10.2.1)

,2

vl

.

,\yi

(10.2.2)

,Lv~

I ~

,

Abb. 10-7 Verschiebung des 2. Knotens

L 3 = ~/(a - Xl'+X2') 2 + (Yl'-Y2 ,)2 L4

288

=~/(

a-y 2

,)2

+x 2

,2

(10.2..3) (10.2.4)

10 Algorithmen aus der Natur

F2

F3 ,

It

Y2 x 2 Abb. 10-8 Der Endstab

L5 = ~/(a-x2') 2 + ( a - y2') 2

(10.2.5)

Nun k6nnen wir den Algorithmus in Struktogrammform aufstellen. Tab. 10-50ptimierung eines Stabwerks nach der Evolutionsstrategie

Startbedingungen xl=0, yl=0, x2=0, y2=0 a=100 Ll=a, L2=a, L3=a, L4=a, L5=a~/2 m 1=0, m2=0, m3=0 GI=LI+L2 Axl=Int(Rnd(x)*3-1) Ay 1=Int(Rnd(x)*3-1) xl'=xl+Axl yl'=yl+Ayl L1

=~/(

a - Yl

,)2

+ Xl

,2

289

10.2

290

Evo l u t io nsst ra teg ien

10 Algorithmen aus der Natur

m3