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) e
Ausgabe x
Damit sich tats~ichlich N~herungswerte ergeben, muss im betrachten Intervall gelten
f(x)'f'(x)
32
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)
O,x 2 ->O,x 3 ->O,x 4 ->O,x 5 ->O,x 6 ->O,x 7 ->O,x 8 ->O,x 9 -> O, XlO >_O, Xll _>0 (3.2.6) Mit Hilfe des Simplex-Programms ergibt sich die optimale L6sung. Interessant ist, dass die Zuschnittform 5 trotz des geringen Verschnitts nicht zur Anwendung kommt.
Abb. 3-9 Auswertung der Testdaten
FOr diese L6sung werden 164 Rohplatten ben6tigt. In diesem Fall zeigen sich auch die Schw~chen des Systems. Eine nicht angegebene Kombination wird auch nicht ausgewertet. So gibt es in diesem Fall noch eine bessere L6sung. Das Finden der fehlenden Zuschnittsform Oberlasse ich dem Leser. Tab. 3-10 Zuschnittl6sung Zuschnittform
56
StOck
A
16
16
80
80
24
24
B
C
D
16
16
80 72
3 L6sungen linearer Gleichungssysteme 11 Summe
44 120
80
132
44
220
6O
Obungen Erweitern Sie die Simplexmethode zu einem VerschnittOptimierungssystem, bei dem nur die Rohspanplatten-Malge und die erforderlichen Bauteilmalge angegeben werden. Das Programm soil dann die Zuschnittl6sung ausweisen und ebenso die Verschnittfl~ichen. Geben Sie augerdem den Verschnitt als prozentualen Anteil zur Gesamtfl~che aus.
57
4.1
Interpolation von Funktionen durcb Polynome
4
Funktionen Immer dann, wenn eine Gr61ge von einer anderen Gr61ge abh~ingt, sprechen wir von einer Funktion oder Abbildung. Im mathematischen Sinne handelt es sich um eine Vorschrift, die jedem Element der Menge A in eindeutiger Weise ein Element der Menge B zuordnet. In allgemeiner Schreibweise
f :A--->B Funktion
Da die Technik voll von solchen Abhangigkeiten ist, k6nnen unzahlige Funktionen genannt werden. Ebenso gibt es viele Algorithmen, die den Umgang mit Funktionen aus unterschiedlichen Grtinden beschreiben.
4.1
Interpolation von Funktionendurch Polynome
Interpolationspolynom
Nicht immer liegt eine Gleichung oder ein Gleichungssystem vor. Oftmals werden in der Praxis Werte gemessen und daraus Funktionen abgeleitet. Eine Methode ist die Funktion durch ein Polynom zu ersetzen. Y
(x4,y4)
(x3 ,y3
(x2,y2)~] (xl,yl)~.. .'j
Abb. 4-1 Sttitzstellen eines Interpolationspolynoms
58
4 Funktionen
4.1.1
Interpolation nach Newton
Ndherungspolynom
Dieses V e r f a h r e n geht v o n d e m Ansatz
P(x) = b 0 + b 1( x - x 0 ) + b 2 ( x - x 0 ) ( x -
x 1
) -t-...
(4.1.1)
+ b n ( x - x 0 ) ( x - x 1)...(x- Xn_ 1) ftir ein Ndherungspolynom aus. Die Koeffizienten b o, b,, ..., b n w e r d e n so bestimmt, dass das N ~ i h e r u n g s p o l y n o m d u r c h die P u n k t e (Xo,Yo), (x,,y), ..., (x ,y,) verlS.uft. Setzt m a n in d e n N e w t o n s c h e n Ansatz ftir x die W e r t e Xo, x~, ..., x ein, so erh~.lt m a n das G l e i c h u n g s s y s t e m
Y0 = b o Yl = b o
+bl(xl-x0)
y 2 = b 0 + b 1 (x 1 - x 0 ) + b 2 (x 2 - x 0 )(x 2 - x 1 ) o ~
Yn = b o + b l ( X l - X o ) + b 2 ( x 2 + b n ( x n - Xo)(X n
-
Xl)... (
x n
Xo)(X2-
Xl) + " "
Xn_l)
(4.1.2) Dieses System l~isst sich schrittweise ftir b0, bl, ..., b n a u s l 6 s e n mit bo = Yo bl = Yl - Yo _ [xlxo] x 1 -- x 0
b2 = [X2XlX~
(4.1.3)
Die Koeffizienten b e s t i m m e n sich aus d e n dividierten Differenzen, die a l l g e m e i n definiert sind zu
Dividierte Differenzen
Ix n Xn_ 1 ...X, X01-- [xn Xn-1 ""Xl 1- [xn-1Xn-2 x n -- x 0
""Xo]
(4.1.4)
Setzt m a n diese Koeffizienten in d e n Ansatz ein, erh~ilt m a n das Newtonsche Interpolationspolynom
Y= YO +[xlxo ]'(X-Xo )+[X2Xlxo l ' ( x - x o ) ' ( X - X l )+"" + Ix n Xn_ 1...X 1X01" (X- X0 )" (X- X1 )" ..." (X- Xn_ 1 ) (4.1.5)
59
4.1.1
Interpolation nach Newton Tab. 4-1 Algorithmus zur Ermittlung der Koeffizienten eines Newtonschen Interpolationspolynoms Eingabe der x i und Yi for i=l,...,n Daten
i=l, 1, m+l
lesen
j = 1, 1, n+l a(i,j) = Cells(i+2,j)
z=O Markierung setzen
i=l, 1, n
Z=Z+l Cells(m+5,i)=z Markierung setzen
i=1, 1, m z=z+l Cells(i+2,n+3)=z
Beispiel: Stahlseilverlauf
Stah lseilverla uf
! --
50
"
Abb. 4-2 Stahlseilverlauf
Ein Stahlseil zwischen zwei Masten, siehe Abbildung 4-2, hat den in der Tabelle 4-2 dargestellten Verlauf.
60
4 Funktionen Tab. 4-2 Stiitzstellen des Seilverlaufs
X
0
10
20
30
35
40
50
Y
30
18
11.5
10
10.5
12.5
20
Ein Programm soil die Koeffizienten eines NewtonschenInterpolationspolynoms bestimmen und den gesamten Verlauf des Seils mit einer Schrittweite von 1 Meter. In den vorgegebenen Sttitzstellen mtissen nattirlich die vorgegebenen Funktionswerte erreicht werden, ansonsten liegt ein Fehler vor. Code ............................... 4-1 Bestimmunn_g............................................................................................................. der Koeffizienten eines Inte.w.olations,p_,ol~noms ..................nach ...........Newton ................................................................... 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
S u b N e w t o n _ T e s t d a t e n () Call Newton_Leer C e l l s ( l , i) = 0- C e l l s ( l , 2) = 30 C e l l s ( 2 , i) = i0- C e l l s ( 2 , 2) = 18 C e l l s ( 3 , i) = 20- C e l l s ( 3 , 2) = i i . 5 C e l l s ( 4 , i) = 30- C e l l s ( 4 , 2) = i0 C e l l s ( 5 , i) = 35- C e l l s ( 5 , 2) = i 0 . 5 C e l l s ( 6 , i) = 40- C e l l s ( 6 , 2) = 1 2 . 5 C e l l s ( 7 , i) = 5 0 - C e l l s ( 7 , 2) = 20 End Sub Private Sub Werte_Lesen(n, D i m i, j As I n t e g e r
A)
I
'Bestimmung belegter Zeilen 'und D e f i n i t i o n d e r n o t w e n d i g e n Datenfelder Cells(Rows.Count, i) . E n d ( x l U p ) . S e l e c t n = ActiveCell.Row R e D i m A(n, n) As D o u b l e F o r i = 1 To n F o r j = 1 To 2 A(i, j ) = C e l l s ( i , j) Next j Next i End Sub
61
4.1.1
Interpolation nach Newton
-5 r v a t e-S u --St-eT u n- en Dim For
i,
j As
............................................................................................................
Integer
j = 3 To n + 1 For i : 1 To nCells(i, j) =
j + 2 (Cells(i Cells(i, (Cells(i
+ j +
i, j - i) - I)) / _ j - 2, I)
- Cells(i,
i))
Next i Next j Exit Sub End Sub Private S u b V e r l a u f (n, A) D i m v, b, x, y, z A s D o u b l e D i m i, j, k, p A s I n t e g e r 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 z = z * (x - C e l l s ( k , Next k y = y + z Next j p = p + 1 Cells(n + 2 + p, i) = x Cells(n + 2 + p, 2) = y Next x End Sub Sub
Auswertung () ReDim A(I, i) A s Dim n As Integer
Call Call Call End Sub
i Sub
i))
Double
Werte_Lesen(n, Steigungen(n, Verlauf(n, A)
A) A)
Verlauf_Zeigen()
i...........................................................................................................................................................................................................................
62
I !
4 Funktionen
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" . A x e s ( x l C a t e g o r y , x l P r i m a r y ) . H a s T i t l e = True .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Weite [m]" .Axes(xlValue, x l P r i m a r y ) . H a s T i t l e = True .Axes(xlValue, x l P r i m a r y ) . A x i s T i t l e . C h a r a c t e r s . T e x t : "H~he [m]" End W i t h A c t i v e C h a r t . L e g e n d . Select Selection. D e l e t e End Sub Sub V e r l a u f _ E n t f e r n e n ( ) D i m Shp As Shape For Each Shp In W o r k s h e e t s ( " N e w t o n " ) . S h a p e s ! i Shp.Delete i Next i End Sub
Abb. 4-3 Menti Interpolation nach Newton
63
4.1.1
Interpolation nach Newton
Abb. 4-4 Auswertungder Testdaten
64
4
Funktionen
Ubungen Lagrange Interpolation
Erstellen Sie eine Prozedur zur Bestimmung der Interpolationskoeffizienten nach dem Verfahren von Lagrange. Dieses geht von dem Ansatz P(x) = L o ( x ) y 0 + L 1(x)y 1 + L 2 ( x ) y 2 +...+ L n (x)y n
(4.1.6) aus, in dem die Koeffizienten L,(x) der Sttitzwerte y~ wiederum Polynome n-ten Grades in x sind. Li(x ) =
( X - - X 0 ) ( X - - X 1 ) . . . ( X - Xi_ 1 ) ( X - - Xi+ 1 ) . . . ( X - - X n ) (X i -- X 0 ) ( X i -- X 1 )...(X i -- Xi_ 1 )(Xi -- Xi+ 1 )...(X i -- X n )
(4.1.7)
4.1.2
Interpolation mittels kubischer Splines Interpolationspolynome haben die Eigenschaft, mit zunehmendem Grad (Anzahl der Sttitzstellen) eine immer stlirker werdende Welligkeit zwischen den Sttitzpunkten zu zeigen. Daher werden in der Praxis Polynome vom Grad n>5 m6glichst vermieden. Hier bedient man sich einer alten Methode zum Zeichnen m6glichst ,,glatter" Kurven. Im Schiffsbau und bei ~ihnlichen Blechkonstruktionen benutzt man ein biegsames Kurvenlineal. Damit l~isst sich durch vorgegebene Punkte eine Kurve ohne Knick bestimmen.
Kubische Splines
Eine Splinefunktion S(x) dritten Grades, daher auch als kubische Splinefunktion bezeichnet, ist in jedem Intervall [xi, xi.,] for i=0(1)n-1 durch ein Polynom P~(x) dritten Grades bestimmt. Die Gl~itte wird dadurch erreicht, dass die einzelnen kubischen Parabeln sich nicht nur stetig, sondern mit stetiger zweiter Ableitung aneinander reihen. Die Bertihrungspunkte werden als Knoten bezeichnet. Man kann zeigen, dass kubische Splines die geringste Krtimmung bei der Interpolation aufweisen.
65
4.1.2
Interpolation mittels kubischer Splines
Pl(X) Po(x) x1
x2
x3
Abb. 4-5 Aneinanderreihung kubischer Polynome
Die Konstruktion von S(x) erfolgt mit dem Ansatz S(x) = P i ( x ) - a i + b i ( x - x i ) + c i ( x - x i ) 2 + d i ( x - x i ) 3
(4.1.8) for alle x ~ Ix i , Xi+l] und n > 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
0
Then
:
zm
+
zl
+
z9
za
=
za
+
zl
+
z2
+
z3
+
z4
z8
+
z9
z3
+
z7
+
z8
e
>
For
J
0
Or
a
+
z5
+
z6
+
z7
+
If
zm i
Ausfallzeiten
zm
End If
If
j
'MontageIf
1
2,
Sa
End Next
+
0 :
Then zm
+
z2
+
k
:
1
To
3
zm
:
zm
Ez(k)
=
Cells
+
z4
+
Ez(k)
( E z (k)
z5 +
+
2
+
z6
1
i 3
+
k)
=
EV(k)
i
201
7.3
Probabilistische Simulation
...........................................................................................................................................................................................................................
Se
=
Se
+
EV(k)
Ae
= Ae
+
1
EV(k) Next End
=
,
0
k
If
If
a
>
0 Then
zm i
=
z2
+
k
=
1 To
3
zm
=
zm
z4
For
zm
+
Az(k) Cells
(Az (k)
Sa
=
Sa
Aa
= Aa
Next
+
+
= Az(k)
AV(k) End
+
z3
z5 +
+
z7
2,
+
+
z8
z6
1 6
+
k)
: AV(k)
+ AV(k) +
=
1
0
k
If
i
'Z e i t s c h r i
tt
For
j
+
dt
AV(j)
= AV(j)
+
dt
j
t
C e l l s (17 Cells(18, Cells(19,
i
[ i End
3
EV(j)
Cells(16,
!
1 To =
Next Next
=
EV(j)
,
2)
=
zm
2) 2) 2)
= = =
za Se Sa
/ Ae / Aa
Sub
...........................................................................................................................................................................................................................
j
Die mittleren Werte mehrerer Auswertungen der Testdaten sehen Sie in Tabelle 7-7. Es ergeben sich for die erste und zweite Methode keine nennenswerten Unterschiede. Zwar ist die Ausfallzeit bei der zweiten Methode etwas geringer, daffir aber auch die Standzeit. Die dritte Methode hat deutlich geringere Ausfallzeiten, aber ebenso deutlich geringere Standzeiten.
Tab. 7-7 Auswertungsdaten im Mittel
1. Methode
202 9
"
.
.;
. . k .
2. Methode
3. Methode
7 Pseudozufallszahlen Montagezeit [hi
5960
5956
6795
Ausfallzeit [h]
3815
3745
3063
Standzeit [100hi
3,65
3,3
1,6
Obungen l~lberlegen und programmieren Sie weitere Methoden.
203
8.1
Perm utationen
Algorithmen auf Datenstrukturen Datenstrukturen realisieren in der einfachsten Form einen Datentyp. Ein Datentyp ist eine Zusammenfassung von Objekten, einschlielglich der darauf zul~issigen Operationen. Datentypen
Grundlegende Datentypen sind Felder, Arrays, Listen, Stacks, Queues, BS.ume und Graphen. Dazu kommen noch zusammengesetzte Datentypen.
8.1
Permutationen
Permutationen
Jede vollst~indige Zusammenstellung einer endlichen Anzahl von Elementen in beliebiger Reihenfolge heilgt Permutation. Aus der Mathematik ergeben sich ftir n Elemente n! Permutationen. Da n! eine sehr schnell wachsende Funktion ist, lassen sich Berechnungen auf Permutationen nur im unteren Zahlenbereich sinnvoll auf Rechenanlagen einsetzen. Bevor wir zu einem Anwendungsbeispiel kommen, wollen wir uns zun~ichst mit der Bestimmung von Permutationen befassen. _Ahnlich, wie wir n! rekursiv auf (n-l)! zurtickgeftihrt haben, l~isst sich dies auch bei den Permutationen bewerkstelligen. Setzt man die Permutationen n-1 voraus, so erh~ilt man n Permutationen, indem die Zahl n an jede m6gliche Stelle eingeftigt wird. Betrachten wir diesen Algorithmus in Struktogrammform. Dazu benutzen wir der Einfachheit halber die nattirlichen Zahlen. Tab. 8-1 Dateneingabe zur Erzeugung von Permutationen Eingabe der Anzahl n i=l (1) n __~ x(i)=i Permutation(I)
204
8 Algorithmen aufDatenstrukturen Zun~ichst wird nach der Eingabe der Anzahl n ein Vektor xO definiert und mit nattirlichen Zahlen von 1 bis n geftillt. Tab. 8-2 Rekursiver Algorithmus zur Erzeugung von Permutationen
Schon for diese Berechnung legen wir ein Tabellenblatt Permutationen an und programmieren diesen Algorithmus. Code 8-1 Erzeugung von Permutationen nattirlicher Zahlen i Option Explicit
[. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
i D i m n, x(), Sub
j As
Integer
P e r m u t _ S t a r t () D i m i As I n t e g e r T h i s W o r k b o o k . W o r k s h e e t s ( " P e r m u t a t i o n e n " ) .Cells. C l e a r n = InputBox("Anzahl") R e D i m x (n) j = 0 For i = 1 To n x(i) = i Next i
205
8.1
End Sub
Permutationen Call Sub
P e r m u t (I)
P e r m u t (k As I n t e g e r ) D i m i, y As I n t e g e r
y = x (k) For i = k x(k) = x(i) = If k < Call Else Call E n d If x(i) = Next i x (k) = y End Sub Sub
To n x(i) y n Then Permut(k
+ i)
Permut_Ausgabe x(k)
P e r m u t _ A u s g a b e () D i m i As I n t e g e r
i i
j=j+1
i
For
i = 1 To n i Cells(j, i) = x(i) J Next i i i End Sub
,._...........................................................................................................................................................................................................................
i i ! i i
2,
Aufgerufen wird die Prozedur Permut_Start fiber einen Menfipunkt.
Abb. 8-1 Menii Permutationen
Das Programm liefert for n=5 genau 5!=120 Permutationen. Abbildung 8-2 zeigt die ersten Zeilen der Berechnung.
206
8 Algorithmen aufDatenstrukturen
Abb. 8-2 Permutationen von n=5
Wenden wir uns nun einem Anwendungsbeispiel zu.
Beispiel: FlieSbandarbeit FlieJgban da rbei t
Abb. 8-3 Schema einer FlieBbandarbeit
Ein Flielgband hat n Stationen zur Bearbeitung. Der auf der Station i postierte Arbeiter k, tibernimmt das Werksttick v o n d e r Station i-1 und tibergibt sie nach der Bearbeitung an die Station i+1. Die eingesetzten Arbeiter haben an den Stationen ein unterschiedliches Arbeitsverm6gen. Allgemein hat ein Arbeiter k an der Station i das Arbeitsverm6gen aik. Dieses wird zum Beispiel in Sttickzahl/Zeiteinheit ausgedrtickt. Das Problem besteht nun darin, die Arbeiter so den einzelnen Stationen zuzuordnen, dass der kleinste Ausstol~ einer einzelnen Station maximiert wird. Dieser Wert entspricht dem Gesamtausstog und kann auch durch erh6hte Beschickung des Flielgbandes nicht 0berschritten werden. 207
8.1
Permutationen
Engpafgproblem
Gesucht ist also die Permutation (Pl,'",Pn) der ArbeitsvermOgen der Arbeiter (1,...,n), so dass gilt min a ipi
-->
Maximum.
(8.1.1)
i = 1 ..... n
Entsprechend mtissen wir den vorherigen Algorithmus ab~indern. Tab. 8-3 Dateneingabe zum Engpassproblem Bestimmung der Anzahl n i=1 (1) n x(i)=i k=l (1) n a(i,k)=Zelle(i,k) Permutation(I) Tab. 8-4 Auswertung des Engpassproblems
208
8 Algorithmen aufDatenstrukturen Tab. 8-5 Ausgabe der berechneten Daten
In d a s n e u e
Tabellenblatt Engpass
nS.chst t i b e r n o m m e n
k6nnen
die Prozeduren
zu-
u n d d a n n erg~inzt w e r d e n .
Code 8-2 Prozeduren zum En gP.ass ............ ~. ................................................................................................................. ...........'P..roblem ........................................................................................................................................................................................................................... Option Explicit Dim Dim Dim
MyDoc As Object n, x() A s L o n g a() , M a x A s D o u b l e
Sub
Engpass_Leer ThisWorkbook. End Sub Sub Engpass_Test Cells(l, i) Celis(l, 2) Cells(l, 3) Cells(l, 4) Cells(l, 5) Cells(l, 6) Cells(2, C e l l s (2,
i) 2)
() Worksheets
= = = = = =
("Engpass"
) .C e l l s . C l e a r
() 7 5 ii 13 14 9
= 3 : 6
...........................................................................................................................................................................................................................]
209
8.1
Perm utationen
........................6 e ii7i77-
i ........- .......
Cells(2, Cells(2, Cells(2,
4) 5) 6)
= 6 = 3 = ii
C e l l s (3, C e l l s (3, Cells(3, Cells(3, Cells(3, Cells(3,
i) 2) 3) 4) 5) 6)
= = = = = =
i0 6 3 1 2 7
Cells(4, Cells(4, C e l l s (4, Cells(4, Cells(4, Cells(4,
i) 2) 3) 4) 5) 6)
= = = = = =
4 7 5 1 6 8
Cells(5, C e l l s (5, C e l l s (5, Cells(5, Cells(5, Cells(5,
i) 2) 3) 4) 5) 6)
= = = = = =
5 7 8 3 i0 6
i) 2) 3) 4) 5) 6)
= = = = = :
4 5 3 6 12 9
Cells(6, Cells(6, Cells(6, Cells(6, Cells(6, [ C e l l s (6 i End Sub
...........................................................................................................................................................................................................................
i i
i........................................................................................................................................................................................................................... i J Sub
Enpass_Start () D i m i, k A s L o n g Set MyDoc = ThisWorkbook.Worksheets n = MyDoc. UsedRange. Rows. Count Max = 0
("Engpass"
)
i i i
ReDim For
i
x(n),
i = 1 To x(i) = i
a(n, n
n)
!i i i
[...........................................................................................................................................................................................................................]
210 "."
"
.
.
Z
\
.~
8 Algorithmen aufDatenstrukturen For
k
=
1 To
a(i, Next
End Sub
k)
n
= Cells(i,
k)
k
Next
i
Call Sub
Permut
(i)
P e r m u t (k A s I n t e g e r ) D i m i, y A s L o n g y
= x (k)
For
i : k
To
n
x(k) x(i)
= x(i) = y
If
< n
k
Then
Call Permut(k + i) Else Call Permut_Ausgabe E n d If x(i) = x(k) Next i x(k) End Sub
= y
Sub Permut_Ausgabe Dim Dim
i As z As
()
Integer Double
z = For
0 i = 1 To n z = z + a(i, Next i If
z > Max Then Max = z For i = 1 To
x(i))
n
Cells(n
+
2,
i)
= x(i)
Cells(n Next i
+
3,
i)
= a(i,
Cells(n E n d If End Sub
+
3,
n
+
i)
=
x(i))
z
Damit freie Daten ins Formblatt eingetragen werden kOnnen, muss zun/~chst der alte Inhalt gel6scht werden. Daffir sorgt die 211
8.1
Perm utationen
Prozedur Engpass_Leer. Testdaten und Auswertung sind nach dem bisherigen Schema aufrufbar.
Abb. 8-4 Menu zur Fliel3bandarbeit
Als Beispieldaten sind sechs Arbeitsstationen mit sechs Arbeitern besetzt, deren Arbeitsverm6gen an den einzelnen Stationen durch die Testdaten ausgedrfickt werden.
Abb. 8-5 Auswertung der Testdaten
Der Maximalwert von 65 wird erreicht, wenn in der ersten Zeile der 4. Spaltenwert, n/J.mlich 13 genommen wird. Dann in der zweiten Zeile und der 3. Spalte der Wert 15, usw. Von allen Werten 13, 15, 10, 8, 7 und 12 ist 7 der Minimalwert. Folglich ist der Arbeitswert as,2der Engpass.
Obungen Ist die Reihenfolge der auszuffihrenden Arbeiten nicht fest vorgegeben und kann damit parallel erfolgen, so ist der Engpass derjenige Auftrag, der die l/~ngste Arbeitszeit erfordert. Mathematisch bedeutet dies m a x aip i ----) Minimum. (8.1.2) i=1.....n Das Problem ist mit dem gleichen Programm 16sbar, wenn die Werte negativ eingegeben werden. Prtifen Sie dies nach.
212
8 Algorithmen aufDatenstrukturen
8.2
Regression und Korrelation
Regression und Korrelation Regressions- und Korrelationsanalyse befassen sich mit der Aufdeckung und Beschreibung der AbhS.ngigkeit von Merkmalen (Zufallsgr61gen). W~ihrend sich die Regressionsanalyse mit der Art des Zusammenhangs zwischen den Merkmalen besch~iftigt, ist es die Aufgabe der Korrelationsanalyse, den Grad dieses Zusammenhangs zu bestimmen. Oft ergeben sich in der Praxis Messwerte, bei denen man in der einfachsten Form einen linearen Zusammenhang vermutet. In der Regel sind n Messwertepaare gegeben, wobei einer unabh~ingigen Variablen x i (i=l,...,n) genauso viele abh~ingige Werte y, zugeordnet werden. Der funktionale Zusammenhang kann nicht direkt angegeben werden, da die Messwerte von einer StOrgr/3f~e ~ Oberlagert werden. y =a.x+b+c (8.2.1)
Abb. 8-6 Messwerte und Regressionsgerade
Methode der kleinsten Feh lerquadrate
Es gibt verschiedene M6glichkeiten, die Gerade zu bestimmen. Eine der herk6mmlichsten Methoden ist die uns bereits bekannte Methode der kleinsten Fehlerquadrate, die wir bereits bei der Approximation verwendet haben. Dabei ist das Ziel n n 2 E e2 = E (Yi-(a. x i +b)) -+ Minimum, (8.2.2) i=1 i=1
213
8.2
Regression und Korrelation die Minimierung der summierten Quadrate der Residuen. Aus dieser Forderung ergibt sich und
b = y-a. x.
(8.2.4)
n
Z(Xi
-x)(Yi -7)
a = i=1
(8.2.3) n
(xi -x) 2 i=1
X=~
(8.2.5)
Xi
n i=1
-
1
n
(8.2.6)
Y = -- i~l Yi 9 J~
.__
m
D
Darin sind x und y die aus den x i und Yi gebildeten Mittelwerte und Mit Hilfe der Koeffizienten a und b haben wir somit zwar eine
Korrelationskoeffizient
~(xi-x~yi-y) i=1 r
~
.-.
i-y)
Kov(x, y) ~/Var(x) . ~/Var(y )
li=~l(Xi -x) 2 "li=~l(Y
(8.2.7) Gerade, aber noch immer keine Aussage, ob es wirklich einen linearen Zusammenhang gibt. Eine Aussage dartiber bekommt man durch die Bestimmung des Korrelationskoeffizienten aus der Gleichung W/ihrend man den Ausdruck im Z/ihler als Kovarianz bezeichnet, heilgen die Ausdrticke unter der Wurzel Varianzen. Der Korrelationskoeffizient r kann nur Werte zwischen +1 und -1 annehmen. Bei einem Wert von +1 besteht ein vollst~ndig positiver linearer Zusammenhang. Bei-1 ein entsprechend negativer. Ist der Wert 214 ~ : . . .
"
." 7. " " . ~
8 Algorithmen aufDatenstrukturen Null, dann besteht kein linearer Zusammenhang. Es kann dann aber immer noch ein nichtlinearer Zusammenhang bestehen. Schreiben wir also zun~.chst ein Programm zur Bestimmung einer Regressionsgeraden und suchen wir uns dann einen Anwendungsfall. Tab. 8-6 Bestimmung der Regressionsgeraden Einlesen und Auswertung der Daten i=i (1) n
Xi =Zelle(i,1) Yi =Zelle(i,2)
Z xi - Z xi + xi Z Y i = Z Y i +Yi -
1
-
1
X "- - - Z X i rl n
Y = -~'[ i~l ._. Y i i=l (1) n
Z (xi -- 7) = s (Xi -- X) -t-(Xi -- X) m
m
Z (Yi - Y) = Z (Yi - Y) + (Yi - Y)
Z ( X i - x ) 2 - Z ( X i -X) 2 +(X i -X) 2 Z (xi -x)(Yi - 7 ) = Z ( x i - x ) ( Y i - Y ) + ( x i - x ) ( Y i - 7 ) Z (Xi - x)(Yi --y) a = i=l rl
Z ( X i -X) 2 i=1
b=y-b.x
215
8.2
RegressionundKorrelation n
r-
s -x)(Yi -7) i=l i~(X
-X)2
"I~(yii=l - 7 ) 2
Zus~.tzlich werden wir in der Prozedur noch die Werte der Regressionsgeraden berechnen und zusammen mit den Messwerten darstellen. Code 8-3 Bestimmun einer linearen Re ression Option
Explicit
Sub
R e g r e s s i o n _ L e e r () ThisWorkbook.Worksheets ("Regression") Call Regression_Gra f ik_l~schen i iEnd Sub { Sub Regression_Test() i . D i m i As I n t e g e r i F o r i = 1 To i0 i C e l l s ( i , i) = i Next i C e l l s ( l , 2) = 1.57 C e l l s ( 2 , 2) = 2.22 C e l l s ( 3 , 2) = 2.03 C e l l s ( 4 , 2) = 2 . 4 1 C e l l s ( 5 , 2) = 2 . 3 5 C e l l s ( 6 , 2) = 2 . 3 8 C e l l s (7, 2) = 2 . 5 8 C e l l s ( 8 , 2) = 2 . 4 9 C e l l s ( 9 , 2) = 2 . 7 8 C e l l s ( 1 0 , 2) = 2 . 9 2 End Sub Sub
i
.Cells. C l e a r
R e g r e s s i o n _ S t a r t () D i m m y D o c As O b j e c t D i m i As L o n g D i m a, b, r, sx, sy, xq, y q As D o u b l e D i m sxx, syy, sx2, sy2, s x y As D o u b l e Set M y D o c = T h i s W o r k b o o k . W o r k s h e e t s ( " R e g r e s s i o n " ) n = MyDoc.UsedRange.Rows.Count
i
! R e D i m x(n) i ........................................................................................................................................................................................................................... y(n) i.......................................................................................
216
8 Algorithmen aufDatenstrukturen
For
1
To
x(i)
i
=
=
Cells(i,
i)
y(i)
=
Cells(i,
2)
sx
=
sx
+
x(i)
sy
=
sy
+
y(i)
Next
i
xq
=
sx
yq
=
sy
For
i
/ n / n
=
1
To
=
sxx
+
(x(i)
-
syy
:
syy
+
(y(i)
- yq)
sx2
=
sx2
+
(x(i)
-
xq)
^
2
sy2
=
sy2
+
(y(i)
- yq)
^
2
sxy
=
sxy
+
(x(i)
-
*
(y(i)
xq)
xq)
- yq)
i
a
=
sxy
b
=
yq-
r
:
sxy
/
sx2 a
/
Cells(l,
* xq Sqr(sx2)
5)
=
a
Cells(2,
5)
=
b
Cells(3,
5)
=
For
i
=
1
Cells(i, Next
Sub
n
sxx
Next
End
n
To
/
Sqr(sy2)
r n
3)
=
a
* x(i)
+
b
i
Sub Regression_Grafik() Charts.Add ActiveChart.ChartType ActiveChart.
=
SetSourceData
xlXYScatterSmoothNoMarkers Source-=
m
Sheets("Regression").Range("Cl5") ActiveChart.
SeriesCollection.NewSeries
ActiveChart.
SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).XValues
=
"=Regression!RiCi-Rl0Cl" ActiveChart.
SeriesCollection(1).Values
=
"=Regression!RiC2-Rl0C2" ActiveChart.
SeriesCollection(1).Name
ActiveChart.
SeriesCollection(2).XValues
=
"= ....M e s s w e r t e
......
=
"=Regression!RiCi-Rl0Cl" i
ActiveChart.
SeriesCollection(2).Values
-
_
"=Regression!RiC3-Rl0C3"
i
ActiveChart.
........
SeriesCollection(2)
Regressionsgerade
Name
=
......
i
ActiveChart Location Where- =xlLocationAsObject I ......................................................................... ~...................................................................................................................................................................~........~............................................]..............
217
8.2
Regression und Korrelation
Name:="Regression" ActiveChart.Axes(xlValue).Select With ActiveChart.Axes(xlValue) . M i n i m u m S c a l e = 1.5 .MaximumScale = 3 .MinorUnitIsAuto = True .MajorUnitIsAuto = True .Crosses = xlAutomatic .ReversePlotOrder = False .ScaleType = xlLinear .DisplayUnit = xlNone End With ActiveChart.Axes(xlCategory).Select W i t h ActiveChart.Axes(xlCategory) .MinimumScaleIsAuto = True . M a x i m u m S c a l e = i0 .MinorUnitIsAuto = True .MajorUnitIsAuto = True .Crosses = xlAutomatic .ReversePlotOrder = False .ScaleType = xlLinear .DisplayUnit = xlNone End With End Sub Sub Regression_Grafik_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 ( " R e g r e s s i o n " ) . S h a p e s i Shp.Delete Next J i End Sub
Die Symbolleiste b e k o m m t w i e d e r e i n e n
k o m p l e t t e n Eintrag.
Abb. 8-7 Menti zur Bestimmung der Regressionsgeraden
218
i i i i '!
8 Algorithmen aufDatenstrukturen
Abb. 8-8 Auswertung der Testdaten
Die Auswertung der Testdaten ergibt einen Korrelationskoeffizienten von 0,91, und damit ist ein linearer Zusammenhang gegeben. Die Regressionsgerade berechnet sich angen~ihert mit y = 0,1146. x + 1,7427.
Beispiel: Experimentelle Bestimmung einer Feder Experimentelle Dieses elementare Verfahren der Messtechnik bestimmt die FeBestimmung einer derkonstante und die effektive Federmasse einer unbekannten Feder Feder. Die Versuchanordnung ist in Abbildung 8-9 schematisch dargestellt. Danach werden verschiedene Zusatzmassen aufgelegt und die jeweilige Auslenkung festgehalten. Allgemein gilt for die Kraft F die zur Auslenkung s einer Feder notwendig ist F =c.s.
(8.2.8)
Der Proportionalit~itfaktor c wird als Federkonstante bezeichnet und bestimmt sich durch Umstellung aus F c = --.
(8.2.9)
S
219
8.2
Regression und Korrelation
Abb. 8-9 Federpendel
Eine Beispielfeder hat folgende Daten: Masse
Gewichtskraft
Auslenkung
[kg]
[N]
[cm]
0,5
4,905
1,92
1,0
9,81
3,84
1,5
14,715
5,55
2,0
19,62
7,34
2,5
24,525
9,21
Diese in das Programm eingegeben, liefern einen starken linearen Zusammenhang (0,999...) und die Federkonstante ist 0,3686 N/cm (Abbildung 8-10).
220
8 Algorithmen aufDatenstrukturen
Abb. 8-10 Bestimmung der Federkonstanten aus den Beispieldaten
Ubungen Zur Darstellung der Grafik ist eine feste Gr61ge von 10 Messwerten programmiert. Andern Sie dies auf die tats/ichliche Anzahl vorhandener Messwerte ab. Befassen Sie sich auch mit der nichtlinearen Regression und schreiben Sie Prozeduren ffir eine quadratische und kubische Regression.
8.3
Arrays und Datenfelder Arrays sind eine Sammlung von gleichen Datentypen unter einem Namen. Vergleichbar den Matrizen in der Mathematik. Arrays sind aulgerdem n-dimensionale Gebilde und besitzen for jede Dimension einen Index (Abbildung 9-11).
221
Arrays und Datenfelder
8.3
i, j, k
Abb. 8-11 Aufbau eines Arrays
Arrays, Datenfelder, Matrizen
Arrays werden auch als Datenfeldern, Matrizen, indizierte Variable, etc. bezeichnet. Arrays mit nur einem Indize werden oft als Vektoren bezeichnet. Diese Datenstruktur wurde bereits unter 3.1 zur L6sung eines linearen Gleichungssystems nach dem Gaulgschen Algorithmus benutzt. Neben der Verwaltung von Zahlenmengen lassen sich mit ihnen auch logische Operationen durchftihren. Im Prinzip ist eine Excel-Tabelle ein zweidimensionales Array. Arrays tauchen in allen Beispielen dieses Buches auf und unterstreichen daher die Wichtigkeit dieser Datenstruktur. Wir wollen uns nachfolgend mit einem kleinen Beispiel begntigen, in dem Text und Werte in einem Array verwaltet werden.
Beispiel: Nutzwertanalyse Nutzwertanalyse
Die Nutzwertanalyse wurde in den USA unter dem Begriff utility analysis entwickelt und seit den 70er Jahren auch in Deutschland eingesetzt. Die Nutzwertanalyse priorisiert verschiedene L6sungen. Dies geschieht durch deren Gewichtung im Hinblick zur Erreichung eines oder mehrerer Ziele.
222 9
..
,;
8 Algorithmen aufDatenstrukturen
Abb. 8-12 Das Schema einer Nutzwertanalyse
Zun~ichst gilt es festzustellen, welche Kriterien for eine Projektentscheidung wichtig und malggeblich sein sollen. In den meisten F~illen k6nnen schon im ersten Schritt KO-Kriterien formuliert werden, die zwingend erftillt werden mtissen. L6sungen, die diese Bedingung nicht erftillen, scheiden sofort aus. Diese MussKriterien k6nnen durch Soll-Kriterien erg~inzt werden, deren Erftillung erwtinscht, aber nicht notwendig ist. In einem zweiten Schritt mtissen nun die einzelnen Soll-Ziele in eine Ordnung gebracht werden. M6glich ist eine Systematisierung in Form von Oberzielen und dazugeh6rigen Unterzielen. Den einzelnen Zielen werden Gewichtungsfaktoren zugeordnet. Das kann in der Form von Multiplikatoren von 1 (wenig wichtig) bis 5 (sehr wichtig) oder als Prozentangaben geschehen.
223
Arrays und Datenfelder
8.3
Teilnutzen 1 Teilnutzen 2 x Ziel 1 x Ziel 2 LOsungen (Faktor 2)
(Faktor 4)
Teilnutzen 3 x Ziel 3 (Faktor 3) +Nutzen ....
A
3x2=6
2x4=8
4 x 3 = 12
26
B
3x2=6
3 x 4 = 12
2x3 =6
24
C
2x2=4
2x4=8
1x3=3
15
,,
. . . . . . . . . . .
i,J
Abb. 8-13 Beispiel einer Nutzwertanalyse
Unter den verschiedenen Formen w~ihlen wir die in dem Beispiel von Abbildung 8-13 dargestellte Form. Ein Struktogramm halte ich ftir diesen einfachen Algorithmus nicht for notwendig. Vielmehr betrachten wir gleich den Quellcode. ,.C.o~e...8-4 ......+_N....-...tzwerm_,..a+!.y...s.++...........................................................................................................................................................................................................................
Option Dim
Explicit m, n As I n t e g e r
Sub
Nutzwert_Start () m = 0 n = 0 Call Nutzwert_Formblatt End Sub Sub
Nutzwert_Formblatt (m, D i m i, j As I n t e g e r D i m r, c As S t r i n g ThisWorkbook.Worksheets 'E i n g a b e n
If
224
erforderlich?
m = 0 Then
(m,
n)
n)
("Nutzwertanalyse
") .C e l l s . C l e a r
8 Algorithmen aufDatenstrukturen ........................................... m ..... = ........
End If
n
=
0
n
=
InputBox("Anzahl
End If
.......d g g
;Li
gJ-i .............................................................................................................................
Then der
Kriterien")
If m
=
0 Or
MsgBox Exit End
n
=
0 Then
"Eingabe
fehler
!"
Sub
If
'S p a l t e n b e s c h r i Columns Range For
ftung
("A-A")
.ColumnWidth
( " A I " ) .V a l u e i
c
-
1 To
=
+
i
Range
(c) . S e l e c t
With
Selection
End Next
=
=
"L6sungen"
*
2)
30
n
Chr(64
9V a l u e
=
Str(i)
&
&
"i"
".
Krit."
Wi th
i
'S p a l t e n b r e i For
i c
=
te
1 To
=
n
Chr(64
Columns With
+
i
* 2)
=
..... &
Chr(64
+
i
*
2
+
i)
Selection
End Next
&
(c ) . S e l e c t
.ColumnWidth
c
.......LT
If
=
6
i)
*
With
i Chr(64
Range
+
(n
(c) . V a l u e
+ =
2)
&
"i"
"Nutzen"
'F a r b k e n n u n g For
i r
: =
1 To
n
Chr(64
+
i
* 2
+
i)
&
"2-"
Chr(64
+
i
*
+
i)
&
LTrim(Str(l
Range
(r) . S e l e c t
With
Selection 9
End Next
= =
& + m))
Interior
9C o l o r I n d e x .Pattern
2
15
xlSolid
With
i
i i
i i
r
:
Chr(64
+ n
*
2
+
2)
&
"2-"
Chr(64
+ n
*
2
+
2)
&
LTrim(Str(l
& _ + m))
225
Arrays und Datenfelder
8.3 i i l i i
Range(r).Select With Selection. Interior .ColorIndex = 15 .Pattern = xlSolid
i i l i
End W i t h 'F o r m e l n setzen For i = 1 To n c = Chr(64 + i * 2 + i) For j = 1 To m r = c & LTrim(Str(l +
j))
R a n g e (r) . S e l e c t ActiveCell.FormulaRiCl Next Next i
I! =
~
For
i!
& &
"]C"
* 2
+
2)
& LTrim(Str(l
+
j))
I!
i : 1 To n c = c + "RC[-" & LTrim(Str(2 If i < n T h e n c = c & "+"
Next i R a n g e (r) . S e l e c t ActiveCell.FormulaRiCl Next j End Sub Sub
"=RC[-I]*R[-" LTrim(Str(j))
j
'S u m m e n bestimmen For j = 1 To m r = Chr(64 + n C
=
Nutzwert_Beispiel () m = 3 n = 3 Call Nutzwert - Formblatt(m,
* i-
i))
&
"]"
= c
n)
i
i
lI
Cells(2, Cells(3, Cells(4,
i) i) i)
= = =
"A" "B" "C"
Cells(l, Cells(l, Cells(l,
3) 5) 7)
= = =
2 4 3
Cells
2)
=
3
(2,
i Cells(3, 2) = 3 it........................................................................................................................................................................................................................... Cells(4, 2) = 2 i J
226 9
~
.
.
.
-
~
8 Algorithmen aufDatenstrukturen
Cells(2, Cells(3, Cells(4, Cells(2, Cells(3 i i Cells(4, !End Sub iI
'
4) 4) 4)
: 2 = 3 = 2
6) 6) 6)
= 4 : 2 = 1
,
...........................................................................................................................................................................................................................
i i
I J
In diesem Beispiel wird die indirekte Adressiemng und die Berechnung der direkten und indirekten Adressierung gezeigt. Aufgerufen werden beide Prozeduren wieder tiber einen Mentipunkt.
Abb. 8-14 Menti zur Nutzwertanalyse
Das Testbeispiel liefert das in Abbildung 8-15 dargestellte Ergebnis.
Abb. 8-15 Ergebnis des Testbeispiels
Obungen Entwerfen Sie ein Formblatt, in dem Ober- und Unterziele definiert werden k6nnen. In VBA gibt es die M6glichkeit Bereiche (Range) durch einen Variablen-Namen zu deklarieren. So kann zum Beispiel der Bereich G I:H6 eines Tabellenblattes Test den Namen Feld durch folgende Anweisung erhalten:
227
8.4
Arbeiten a u f Listenstrukturen
i["........................................................................................................................................................................................................................... ies ~ -- i i - ' T e s t | ~G~I ~ ~H~6 I! L...................................................................................................
"_ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
~i
j
Arbeiten auf Listenstrukturen
8.4
Listenstruktu ren
Daten in Listen zu sammeln dient oft dem Zweck, einer bestimmten Gruppe von Benutzern schnell brauchbare Informationen zu liefern. Wie diese zu organisieren sind, h~ingt von der Art der Nutzung ab. Ebenso gibt es eine Vielzahl von Suchmethoden zum Finden der Informationen. Siehe dazu auch Kapitel 9.1. Zun~ichst betrachten wir den im Prinzip schnellsten Sortieralgorithmus auf Listen.
Beispiel: Quicksort Quicksort
Quicksort ist ein schneller rekursiver Sortieralgorithmus, der nach dem Prinzip Teile und Herrsche (engl. divide and conquer) arbeitet (siehe 9.1). Er wurde 1960 von c. Antony R. Hoare in seiner Grundform entwickelt und seither von anderen weiter verfeinert. Der Algorithmus hat den Vorteil, dass er fiber eine sehr kurze innere Schleife verffigt (was die Ausffihrungsgeschwindigkeit stark erh6ht) und ohne zus~itzlichen Speicherplatz auskommt (abgesehen von dem for die Rekursion zus~itzlichen ben6tigten Platz auf dem Aufruf-Stack). QuickSort w~ihlt ein Element aus der zu sortierenden Liste aus (Pivotelement) und zerlegt die Liste in zwei Teillisten, eine obere und eine untere, von denen die eine alle Elemente enth~lt, die gr61ger sind als das Pivotelement, die andere den Rest. Dazu wird zun~ichst ein Element von unten gesucht, das gr61ger als das Pivotelement und damit for die untere Liste zu grog ist. Entsprechend wird von oben ein kleineres (oder gleichgrof~es) Element als das Pivotelement gesucht. Die beiden Elemente werden dann vertauscht und landen damit in der jeweils richtigen Liste. Der Vorgang wird fortgesetzt, bis sich die untere und obere Suche treffen. Damit sind die oben erw~ihnten Teillisten in einem einzigen Durchlauf entstanden. Suche und Vertauschung k6nnen in place durchgeffihrt werden, d. h. es ist keine zweite Liste erforderlich. Die noch unsortierten Teillisten werden fiber denselben Algorithmus in noch kleinere Teillisten zerlegt (z.B. mittels Rekursion) und, sobald nur noch Listen mit je einem Element vorhanden sind, wieder zusammengesetzt. Die Sortierung ist damit abgeschlossen. Tab. 8-7 Quicksort
228 ~ ~ .
7..~ . ~
8 Algorithmen aufDatenstrukturen
229
8.4
Arbeiten auf Listenstrukturen Das Pivotelement wird immer in der Mitte des Intervalls bestimmt. O p t i m i e r u n g e n s u c h e n das Pivotelement nach geeigneten Kriterien aus.
Cg~e 8-.s ....Qu..!c~.sert Option Sub
...........................................................................................................................................................................................................................
Explicit
Q u i c k s o r t _ T e s t () D i m x As D o u b l e D i m i As I n t e g e r
x = Timer R a n d o m i z e (x) F o r i = 1 To i00 C e l l s ( i , i) = R n d ( x ) Next i End Sub Sub
Q u i c k s o r t _ S t a r t () D i m M y D o c As O b j e c t D i m von, b i s As I n t e g e r
Set M y D o c = T h i s W o r k b o o k . W o r k s h e e t s von= 1 b i s = M y D o c . U s e d R a n g e . Rows. C o u n t Call QuickSort(von, bis) End Sub Sub
Q u i c k S o r t (v, b) D i m i, j, p As I n t e g e r D i m x, y As D o u b l e
i
= V
j : b p = I n t ( ( v + b) x = C e l l s (p, i)
! i iI
!
230
/ 2)
'Array aufteilen Do W h i l e (Cells(i, i = i + 1 Wend W h i l e (Cells(j, j = j - 1 Wend
i)
< x)
i)
> 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. Code9-1Suchen ~ttelsBisektionsmethodeineinergeordnetenListe
[...........................................................................................................................................................................................................................
i Option Sub
Explicit
SuchListe() Dim myDoc As Object Dim t As String D i m v, b, m, i A s L o n g Set
myDoc
= ThisWorkbook.Worksheets
'Eingabe t = InputBox("Suchbegriff
("Suchliste"
)
angeben[")
'Start-Suchbereich 'von 1 b i s A n z a h l E i n t r a g e v = 1 b = myDoc.UsedRange. Rows. Count 'S u c h s c h l e i f e Do W h i l e b >= 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