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 werden die L6sungen imagin~ir.
Beispiel: H~irtebestimmungnach Brinell Kugeldruckprobe nach Brinell
Bei der H~rtebestimmung eines Werkstoffs mittels der Kugeldruckprobe nach Brinell wird die Eindrucktiefe h einer kleinen Stahlkugel von bekanntem Radius r in einen zu prufenden Werkstoff aus dem Radius x des Eindruckkreises bestimmt.
13
2.1
LOsungen von q u a d r a t i s c h e n Gleichungen
Abb. 2-1 Kugeldruckprobe nach Brinell
Nach dem Satz des Pythagoras erh~.lt man r
2
- (r-
h)
2
+
X2
.
(2.1.4)
Dies ftihrt durch Umstellung auf die Normalform der Quadratischen Gleichung h 2 + 2 r h + h 2 - O.
(2.1.5)
Die L6sungen lauten hi, 2 - r + ~/r 2 - x 2 .
(2.1.6)
Dabei ist nur eine L/3sung sinnvoll, die eine H6he h ermittelt, die kleiner ist als r h = r-~[r 2 -x 2 .
Die einfache Darstellung des Berechnungsablaufs togramm finden Sie in Tabelle 2-1.
(2.1.7) als Struk-
Zur Programmierung benutzen wir ein neues Tabellenblatt in unserer neu angelegten Mappe. Der Mappe geben wir den Namen Algorithmen und diesem Tabellenblatt den Namen Brinell. Das zugehOrige Codefenster b e k o m m t den Namen tblBrinell. Schreibformen und Notationen entnehmen Sie bitte dem Kapitel 1 - Einftihrung in VBA meines Buches [3].
14
2
L 6 s u n g e n von G l e i c h u n g e n
Tab. 2-1 Struktogramm zur Bestimmung der Eindrucktiefe Eingaben Kugelradius r, gemessener Abdruckradius x h - r-4r 2 -x 2
Ausgabe der Eindrucktiefe h
Abb. 2-2 Eine Tabelle in einer Arbeitsmappe besitzt unter VBA ein Codefenster
In dieses Codefenster g e b e n wir auch die in der Codeliste 2-1 dargestellten Prozeduren ein.
Option
Explicit
'Prozedur zur E r s t e l l u n g Sub B r i n e l l _ F o r m b l a t t ()
eines
Formblatts
'Tabelle 1 6 s c h e n W o r k s h e e t s ("Brinell ") .Activate W o r k s h e e t s ( "Brinell" ) .Cells. C l e a r 15
2.1
L6sungen von quadratischen Gleichungen
'T a b e l l e
beschriften
Ranc re("Al") .Value
=
"Kugelradius"
Ranc Rant Rant Ranc Ranc
= = = = =
"Abdruckradius" "Eindringtiefe" "mm" "mm" "mm"
re ( " A 2 " ) re ( " A 3 " ) re ( " C l " ) re("C2") re ( "C3 " )
.Value .Value .Value .Value .V a l u e
Ranc re("Al") .ColumnWidth R a n c re ( " B I " ) .C o l u m n W i d t h
= 20 = I0
R a n c re ( " C l " ) .C o l u m n W i d t h
=
Columns
5
( "B" ) . S e l e c t
Selection.NumberFormat R a n g e ( " B I " ) .S e l e c t End Sub
=
"0.000"
i 'Prozedur zur Berechnung der i Sub Brinell_Auswertung () i D i m r, x, h A s D o u b l e 'E i n g a b e w e r t e
Eindringtiefe
lesen
r = Cells(l, x = C e l l s (2, 'B e r e c h n u n g
2) 2)
h = r - Sqr(r * r - x 'A u s g a b e C e l l s (3, 2) = h R a n g e ( " B I " ) .S e l e c t End Sub
* x)
j
.................................................................................................................................................................................................................... j
Zum
Symbolleiste Algorithmen
Abschluss sollen die Prozeduren
n o c h Ober eine Symbol-
leiste, die wir auch Algorithmen nennen, aufgerufen werden. Die Symbolleiste erh~ilt den Mentipunkt Eindringtiefe mit den Unterpunkten Neues Formblatt und Auswertung. Die Men(iunterpunkte erhalten bei der Definition noch keine Prozedur- (Makro-) Zuweisung. Beim ersten Aufruf fragt das System nach dieser Zuordnung und wir k6nnen aus einer Ubersicht w~thlen.
Abb. 2-3 Menti Algorithmen Mentipunkt Eindringtiefe
16
2
LOsungen von Gleichungen
In der Tabellenansicht wird eine Berechnung zun~ichst durch den Aufruf des Formblatts gestartet. Nach einer Eingabe von Daten for r und x erhalten wir das Ergebnis (Abbildung 2-4).
Abb. 2-4 Auswertung mit Beispieldaten
Ubungen Schreiben Sie ein Programm, so dass ftir einen vorgegebenen Kugelradius die Eindringtiefen for einen Abdruckradius-Bereich von x 1 bis x 2 in einer Tabelle erstellt werden.
2.2
KubischeGleichungen
Kubische Gleichungen
Die LOsungsformel ftir kubische Gleichungen geht auf den Mathematiker del Ferro zurtick. Es handelt sich dabei eher um ein Verfahren in mehreren Schritten. Die Normalform der kubischen Gleichung lautet x 3 +ax 2 + b x + c = O
(2.2.1)
In einem ersten Schritt wird die Gleichung mit einem Faktor multipliziert. Danach eine kubische Erg~inzung ermittelt und in einem weiteren Schritt eine Substitution durchgeftihrt. So erh~ilt man eine reduzierte kubische Gleichung, deren LOsung sich durch zwei Kubikwurzeln darstellen l~isst. Dieses so erhaltene Gleichungssystem ist nach dem Wurzelsatz von Vieta 16sbar. Wir ersparen uns die Herleitung und betrachten den LOsungsalgorithmus als Struktogramm in Tabelle 2-2. Tab. 2-2 Algorithmus zur Bestimmung der L6sungen von kubischen Gleichungen
Kubische Gleichung x 3 + ax 2 + bx + c = 0 a
2
p=b-~ 3
17 .
.
.
2.2
18
Kubische Gleichungen
2
L 6 s u n g e n von G l e i c h u n g e n
Die Umsetzung dieses Algorithmus als Programm finden Sie in der nachfolgenden Codeliste 2-2. Legen Sie dazu ein Tabellenblatt mit dem Namen tblKubischeGleichungan.
.Code.2:2__L6sungen..kubis.cher G.[e!chungen ....................................................................................................................................................................................................... Option Sub
Explicit
Formular () Worksheets ("Kubische Gleichung" ) .C e l l s . C l e a r Cells(3, i) = " G l e i c h u n g - " Cells(3, 2) = "x" & C h r W ( 1 7 9 ) & " + " Range
( "C3" ) . I n t e r i o r . C o l o r I n d e x
Cells(3, 4) = "x" & C h r W ( 1 7 8 ) R a n g e ( "E3" ) . I n t e r i o r . C o l o r I n d e x
= &
Cells(3, 6) = "x" & " + " R a n g e ( "G3" ) . I n t e r i o r . C o l o r I n d e x Cells(3, Cells(3, C e l l s (3,
8) = "=" 9) = "0" 3) . A c t i v a t e
Cells(5, Cells(6, Cells(7,
i) i) i)
= = =
15
" + " = 15 =
15
"D=" "xl=" "x2="
Cells(8, i) = Range("B5:C5")
"x3=" .MergeCells
= True
Range("B6-C6") Range("B7-C7")
.MergeCells .MergeCells
= True = True
i I !
Range("B8-C8")
.MergeCells
= True
i
I
i End
Sub
i
L................................................................................................................................................................................. J
19
2.2
Kubische Gleichungen
...............................................................................................................................................................................................................
Private If
Sub
Worksheet_Change(ByVal
Target.Row Select
=
Case
5).Activate
Case 5 Cells(3,
7).Activate
. End
i
End
E
i End Sub
Double
3).Activate
Select
If
Sub Auswertung() D i m a, b, c, Dim
yl,
y2,
= C e l l s (3, = Cells(3, = Cells(3,
p q
: b - (a = (2 * a
D
=
(q
/ 2)
D, y3,
a b c
Cells If D r z w yl y2 y3
p,
q,
y2i,
r,
s,
y3i,
u,
xl,
v,
w,
z As
x2,
x3
As
Double
3) 5) 7)
* a) / 3 * a * a) ^ 2
+
(p
/ 27
-
/ 3)
(a
* b)
/ 3
+ c
^ 3
(5, 2) = D < 0 Then : Sqr(-(p / 3) ^ 3) :-(q / 2) / r : Atn(-z / Sqr(-z * z + i)) + 2 * A t n ( 1 ) = 2 * r ^ (i / 3) * C o s ( w / 3) = 2 * r ^ (i / 3) * C o s ( w / 3 + 8 * Atn(1) : 2 * r ^ (i / 3) * C o s ( w / 3 + 16 * A t n ( 1 )
xl
= yl
- a
x2
= y2
- a
/ 3
x3 = y3 Cells(6,
- a 2)
/ 3 = xl
Cells
l i i J i i
Range)
Auswertung
Cells(3,
t,
As
Target.Column
Case 3 Cells(3,
Case 7 Call
Target
3 Then
(7,
/ 3) / 3)
/ 3
2)
= x2
Cells(8,
2)
= x3
C e l l s (7, Cells(8, Cells(7
4) 4) 5)
= = =
"" "" ""
Cells(8, 5) = "" ElseIf D = 0 Then y l = 2 * ( - q / 2)
^
(I
/ 3)
J y 2 = ( - q / 2) ^ (I / 3) L ...........................................................................................................................................................................................................................
2O
2 L6sungen von Gleichungen ...........................................................................................................................................................................................................................
y3
= y2
xl
= yl
-
a
/
3
x2
= y2
-
a
/
3
x3
= y3
-
a
/
3
Cells(6,
2)
=
xl
Cells
2)
=
x2
Cells(8,
(7,
2)
=
x3
Cells(7,
4)
=
""
Cells(8,
4)
=
""
Cells(7,
5)
=
""
Cells(8,
5)
=
""
I
Else s
=
z
=
If
S q r (D) -q >=
u
=
Else u End z
2
+
s
0 Then z
^
(i
=-(-z)
/ ^
-q
/
z
>=
v
=
Else v End
(I
2 0
z
-
^
(i
=-(-z)
/ ^
/
3)
3) (i
If
yl
:
u
y2
=
-(u
i
y2i
!
y3
i ,
y3i
=
xl
: yl
- a
/ 3
x2
= y2
-
a
/
x3 = y3 Cells(6,
-
a 2)
=
=
+
v
+ v)
Sqr(3)
-(u
Cells
i
3)
s
i
l
/
Then
i
ii
3)
If
=
If
/
z
+ v)
-Sqr(3)
(u*
(u
/
2
- v)
/
2
3
/ 3 = xl
2)
=
x2
2)
=
x3
Cells(7,
4)
=
"+
i"
Cells(8,
4)
=
"+
i"
Cells
5)
= y2i
5)
= y3i
(7,
v)
/ 2
Cells(8,
Cells(8
(7,
/ 2 *
i End If i i E n d Sub [........................................................................................................................................................................................................................... Aufgerufen
werden
die P r o z e d u r e n
Formblatt u n d
Auswer[un g
tiber entsprechende Mentipunkte in der Symbolleiste. Die Eingabe der Formel ist so gestaltet, dass mit jeder Eingabe zur weite21 _
-
2.2
Kubische Gleichungen
ren Eingabe eines Koeffizienten gesprungen wird. Mit der Eingabe des letzten Koeffizienten erfolgen dann der Aufruf der Bewertung und die Ausgabe der L6sungen. Die Eingabe kann dann erneut beginnen.
Abb. 2-5 Menti Kubische Gleichung
Beispiel: Trichtervolumen Trich tervolu men
Mit Hilfe des erstellten Programms soll ein Berechnungsproblem gel6st werden. Ein Blechtrichter nach Abbildung 2-6 hat die Querschnittsform eines gleichseitigen Dreiecks und ein Volumen von 1814 cm ~. Gesucht ist der obere Durchmesser des Kegels, denn hier soil ein Zylindrisches Rohr angeschweilgt werden.
Abb. 2-6 GeschweiBterBlechtrichter
Das Volumen bestimmt sich aus der Formel
v --~. 3
.h.
Aus der Gleichschenkligkeit folgt for die H6he
22 ~
m
(2.2.2)
2
h = d ~F3 2
L 6 s u n g e n von G l e i c h u n g e n
(2.2.3)
o
Damit ergibt sich die kubische Gleichung d 3 _ ~ 2 4V " = 0 = d 3 8000
(2.2.4)
-
Mit Hilfe des Programms ergibt sich die L6sung. Der Durchmesser ist 20 cm grog.
Abb. 2-7 Berechnungsformular
Ubungen Welchen Durchmesser hS.tte ein Kugelbeh~ilter bei gleichem Volumen?
2.3
L6sungen von Gleichungenh6heren Grades Jede algebraische Gleichung kann in der allgemeinen Form
Gleichungen h 6 h e r e n Grades
anx
n
xn-1 + an_ 1 + ... + a l x + a o - 0
(2.3.1)
dargestellt werden. Man spricht von einer Gleichung n-ten Grades. FOr n>4 gibt es keine L6sungsformel. Das ist mathematisch bewiesen. Betrachtet man diese Gleichung als Funktion
f (x) -
(2.3.2)
an xn + an_lX n-l + ... + a l x + a o
so ergeben sich einige L6sungsverfahren. Durch die Entwicklung der Computertechnologie haben die so genannten Iterationsverfahren eine grolge Bedeutung erfahren. Lassen sich die L6sungsmethoden doch in Form von Iterationsschleifen programmieren, die solange durchlaufen werden, bis die gewtinschte Genauigkeit erreicht ist.
23 ./.
9
~
....
-
2.3
Regula Falsi
L6sungen von Gleichungen hOheren Grades Betrachten wir die Methode Regula Falsi (Abbildung 2-8). Bezeichnen wir die zu suchende Nullstelle (Wurzel) einer stetigen Funktion f(x) mit x o. Bei der Methode ersetzt man die Kurve f(x) im Intervall (xl, x 2) durch eine Sekante (lineare Interpolation). Der Schnittpunkt mit der x-Achse x 3 ist die angen~iherte L6sung for x 0. Eine wiederholte Anwendung dieser Methode mit den N~iherungswerten liefert eine LOsung mit hinreichender Genauigkeit. Voraussetzung ist die Stetigkeit der Funktion. Eine ~ihnliche Methode ist das Newtonsche Verfahren. Diese Verfahren funktionieren nicht nur bei Funktionen, die als Polynome gegeben sind, sondern generell for stetige Funktionen.
Xl
/ / ~
Sekante
Abb. 2-8 Methode Regula Falsi
Beispiel: Minimaler Materialverbrauch Minimaler Materialverbrauch
Ftir eine zylindrische Konservendose (Abbildung 2-9), mit einem vorgegebenen Inhalt V, soil zur Herstellung m/3glichst wenig Blech verbraucht werden. Das Volumen bestimmt sich aus der Gleichung V - ~r. r 2 9h
24
(2.3.3)
2
L6sungen von Gleichungen
r
Abb. 2-9 Zylindrischer Beh~ilter
Die Oberfl~iche, die eigentliche ZielgrOlge, bestimmt sich aus O-
2.V 2. z r - r 2 4 - ~ ,
(2.3.4)
r
wenn man for h die umgestellte Volumengleichung einsetzt. Extremwerte
Minimum und Maximum
Nun suchen wir nicht nach einer Nullstelle dieser Funktion, sondern nach einem Extremwert, n~imlich dem Minimum. Es gilt ftir stetige Funktionen, das an der Stelle eines Extremwertes der Funktion f(x) ihre erste Ableitung y'=f(x) das Vorzeichen wechselt. Ein Extremwert der Ableitung ist wiederum an ihrer Ableitung, der zweiten Ableitung zu erkennen. Ist diese an dieser Stelle positiv, dann liegt ein Minimum vor, andernfalls ein Maximum. Die Ableitungen der Oberfl~iche ergeben 2.V O ' - 4-;re. r - - - - - 5 (2.3.5) r und 4.V O"- 4-x +--7
(2.3.6)
r
Stellen wir zun/ichst den Falsi auf. Tabelle 2-3 zeigt eines Struktogramms. Ich lassen sich Struktogramme
Algorithmus ftir die Methode Regula die Methode in der allgemeinen Form benutze dazu eine Tabellenform. So schnell erstellen.
25
2.3
LOsungen von Gleichungen hOheren Grades Tab. 2-3 Struktogramm zur Methode Regula Falsi
Nun ersetzen wir die allgemeinen Bedingungen und Formeln durch die speziellen unseres Beispiels und erhalten so einen A1gorithmus, wie in Tabelle 2-4 dargestellt. Tab. 2-4 Struktogramm zur Bestimmung des Durchmessers fiir einen minimalen Materialverbrauch
26
2 L6sungen von Gleichungen
Bestimme O"(d) Ausgabe d und Angabe ob Minimum oder Maximum Wir erstellen ein weiteres Tabellenblatt in unserer Mappe Algorithmen. Dem Tabellenblatt geben wir den Namen Minimum und dem dazugeh6rigen Codefenster den Namen tblMinimum. In diesem Codefenster erstellen wir die Programmanweisungen nach Codeliste 2-2. Obernehmen Sie auch die Kommentare, damit Sie bei einer sp~teren Betrachtung des Programmcodes auch schneller den Inhalt verstehen. Sie sollten auch bei allen nachfolgenden Programmen nicht mit Kommentaren sparen. Hier gilt die Devise: ,,Lieber zu viel, als zu wenig." :..C...o.r163
-3......BEs_ti~u_ng_d.e!...~nima!...e.n...~
Option
'Prozedur Private
.................................................................................................................................................................................
Explicit zur Sub
Erstellung
eines
Minimum_Formblatt
Formblatts ()
'Tabelle 16schen Worksheets ("Minimum") .Activate Worksheets ( " M i n i m u m " ) .C e l l s . C l e a r 'Tabelle beschriften Range("Al") .Value Range("A2") .Value Ranc_ e ( " A 3 " ) . V a l u e R a n c e ( "A4" ) .V a l u e Rang e("Cl") .Value R a n c 9e ( " C 2 " ) . V a l u e R a n c :e("C3") . V a l u e R a n c re ("El") . V a l u e R a n c re("Fl") . V a l u e R a n c re("Gl") . V a l u e R a n t re("B6") . V a l u e R a n t re ( "AI" ) R a n t re ( "BI" ) R a n c re ( "Cl" ) R a n c re ( " D I " ) R a n c re ( "El" ) Ranc[e ( "FI" )
= = = = = = = = : = =
"Volumen V =" "Startwert d l =" "Startwert d2 =" "Abschaltgrenze" "cm" + C h r W ( 1 7 9 ) "mm" "mm" "Oberflache [cm^2]" "0' (d)" "0' ' (d) ]" "d [cm]"
.C o l u m n W i d t h .ColumnWidth .ColumnWidth .ColumnWidth .ColumnWidth .C o l u m n W i d t h
= = = = = =
15 i0 5 1 15 15
27
2.3
LOsungen yon Gleichungen h6heren Grades
Columns("B").Select Selection.NumberFormat = "0.000" Range("Bl").Select End Sub Private Sub Minimum_Testdaten() Cells(l, 2) = 50 Cells(2, 2) = i0 Cells(3, 2) = i 0 0 Cells(4, 2) = 0 . 0 1 End Sub Private Function Ob(V, Dim r As Double Dim pi As Double pi = 4 * Atn(1) r = d / 2 Ob = 2 * pi * r End Function
d)
* r + 2
'Oberflache
in
'Konstante pi 'Radius in cm * V / r
Private Function Obl(V, Dim r As Double Dim pi As Double
d)
pi = 4 * Atn(1) r = d / 2 Obl = 4 * pi * r End Function
'Konstante pi 'Radius in cm * V / (r * r)
- 2
Private Function Ob2(V, Dim r As Double Dim pi As Double pi = 4 * Atn(1) r = d / 2 Ob2 = 4 * pi + 4 * V End Function
d)
/
cm^3
'i.
'2.
Ableitung
Ableitung
der
Oberfl~che
der
Oberflache
'Konstante pi 'Radius in cm (r * r * r)
Private Sub Minimum_Auswertung () D i m d, dl, d2, V, e A s D o u b l e Dim i As Integer 'E i n g a b e w e r t e lesen V = Cells(l, 2) dl = C e l l s ( 2 , 2) d2 = C e l l s ( 3 , 2) i e = C e l l s (4 2) ! ' i 'S t a r t ~ b e r p r f i f u n g ,
/ /
10 10
'Volumen in cm^3 'Startwert 1 i n cm 'Startwert 2 i n cm 'Abschaltkriterium
|...........................................................................................................................................................................................................................
28
1 I i I
j
2 L6sungen von Gleichungen ...........................................................................................................................................................................................................................
!
If
O b l ( V , dl) > 0 T h e n If O b l ( V , d2) <= 0 T h e n 'S t a r t w e r t e korrekt Else MsgBox "Startwerte falsch.' " , _ vbInformation & vbOKOnly Exit Sub E n d If Else If O b l ( V , d2) > 0 T h e n d = dl: dl = d2: d2 = d Else MsgBox "Startwerte f a l s c h ! ", _ vbInformation & vbOKOnly Exit Sub E n d If E n d If 'B e r e c h n u n g Cells(2, Cells(2, Cells(2, Cells(3, Cells(3, Cells(3, i = Do
5) 6) 7) 5) 6) 7)
= = = = = =
i i
i i
O b ( V , dl) O b l ( V , dl) O b 2 ( V , dl) O b ( V , d2) O b l ( V , d2) O b 2 ( V , d2)
6 d
= dl - O b l ( V , dl) * (d2 - dl) / ( O b l ( V , d2) - O b l ( V , dl)) If O b l ( V , d) > 0 T h e n dl = d Else d2 = d E n d If i = i + 1 Cells(i, 2) = d Cells(i, 5) = O b ( V , d) Cells(i, 6) = O b l ( V , d) Cells(i, 7) = O b 2 ( V , d) 'A b b r u c h k r i t e r i u m t Loop While Abs(Obl(V d)) > e i
i End
i i
_
i
'
!
Sub
i
29 9
,
"
T
23
L6sungen von Gleichungen h6heren Grades Auch diese Prozeduren werden tiber die Symbolleiste Algorithmen angebunden. Die Symbolleiste erhlilt den Mentipunkt Minimale Oberflg~che mit den Unterpunkten Formblatt, Testdaten und Auswertung. Die Prozeduren mtissen bei der Definition nicht zugewiesen werden, denn beim ersten Aufruf des Symbols wird nach der zugeh6rigen Prozedur gefragt und im Dialog werden alle vorhandenen Prozeduren angezeigt. Durch Anklicken erfolgt die Zuordnung.
Abb. 2-10 Menu Minimale Oberfliiche
Mit Hilfe der eingebauten Testdaten ergibt sich die Auswertung nach Abbildung 2-11. In dem gezeigten Tabellenblatt sind die Zeilen 11 bis 59 ausgeblendet, so dass man nur die Werte zum Beginn und zum Ende der Iteration sieht. Bei einem zylindrischen Behlilter vom 50 cm 3 Inhalt ergibt sich for einen Durchmesser von 3,993 cm die kleinste Oberflliche zu 75,13 cm 2. Welchen Wert hat die Zylinderh6he?
Abb. 2-11 Auswertung der Testdaten
3O
2 L6sungen von Gleichungen
Ubungen Schreiben Sie ein Programm das ffir mehrere Volumen z. B. vom 100 bis 1000 cm 3 mit einer Schrittweite von 100 die jeweiligen optimalen Durchmesser und Oberfl~ichen bestimmt und stellen Sie die Verh~iltnisse in einem Diagramm dar. Die nachfolgende Betrachtung fOhrt zur Suche nach einem Maximum.
Beispiel: MaximalesVolumen Maximales Volumen
Ein Transportbeh~ilter soil so aus einem quadratischen Blech mit der Kantenl~inge geformt werden, dass sein Volumen ein Maxim u m darstellt. Zur Herstellung werden die vier kleinen Quadrate an den Ecken ausgestanzt und die seitlichen Laschen gefalzt.
Abb. 2-12 Blechzuschnitt
Das Volumen des BehS.lters bestimmt sich aus der Gleichung
V = x ( a - 2x) 2 .
(2.3.7)
Die Ableitungen ergeben hier V' = 12x 2 - 8 a x + a 2
(2.3.8)
V" = 2 4 x - 8a.
(2.3.9)
und
Newtonsches Ndheru ngsverfahren
Auch hier wird wiederum nach einer Nullstelle der Ableitung gesucht. Diesmal wollen wir uns das Newtonsche Verfahren ansehen (Abbildung 2-13). Im Gegensatz zur Methode Regula Falsi wird statt der Sekante eine Tangente zur Ermittlung einer weite-
31 .-
7
:
2.3
LOsungen von Gleichungen hOheren Grades ren N~iherung benutzt.
Tangente
j
f(x) /
/ Abb. 2-13 MethodenachNewton
Auch sie liefert nach endlichen Iterationsschritten eine brauchbare LOsung.
Tab. 2-5 Struktogrammzur Methode nachNewton Eingabe Bestimmung eines Startwertes x, Abschaltwert der Iterationsschleife e X=X
1
f(xl) f ' ( x 1)
X 1 --
X
So lange wie
If <x~l> e
Ausgabe x
Damit sich tats~ichlich N~herungswerte ergeben, muss im betrachten Intervall gelten
f(x)'f'(x)
32
<1.
(2.3.10)
2
LOsungen v o n G l e i c h u n g e n
Interessant ist noch, dass diese Methode mit einem Startwert auskommt. FOr beide Methoden ist eine Voraussetzung, dass es sich um zweimal stetig differenzierbare Funktionen handelt. Nur dann ist ein Abbruch der Iterationen gew~ihrleistet. FOr das Maximum-Problem ergibt sich damit der in Tabelle 2-6 dargestellte Algorithmus. Wir erstellen ein weiteres Tabellenblatt in unserer Mappe A l g o r i t h m e n . Der Tabelle geben wir den Namen M a x i m u m und dem dazugehOrigen Codefenster den Namen tblMaximum. .
Tab. 2-6 Struktogrammzur Bestimmung des maximalen Volumens Eingabe Eingabe der Kantenl~inge a in cm Bestimmung des Startwertes x, Abschaltwert der Iterationsschleife X=X 1
V(x 1) V'(x1)
Bestimme V(x), V'(x) und V"(x) So lange wie IV' (x) I > e
In tblMaximum tragen wir den Programmcode aus der Codeliste 2-4 ein. Code 2-4 Besfimmungdes maximalen Volumens
[...........................................................................................................................................................................................................................
i Option
Explicit
I
!
i 'Prozedur zur Erstellung eines Private Sub Maximum_Formblatt()
! i i i I
' i j
Formblatts
'Tabelle 16schen Worksheets("Maximum").Activate Worksheets("Maximum").Cells.Clear 'Tabelle beschriften Range("Al").Value = "Kantenl~nge a =" Range("A2").Value = " S t a r t w e r t x =" Range("A3").Value = "Abschaltgrenze" Range("Cl").Value = "cm" Range("C2") V a l u e = "cm" " R a n g e ( E1 ) . V a l u e = Volumen [cm 3] Ii
n
It
~
ii
!
i
33
LOsungen von Gleichungen hOheren Grades
2.3
..........{...a..n-~ . e 7 :r~{ '~7/V-aiue-7 ..... aV r] X i-;~ ...........................................................................]........................ Ranc[e("Gl").Value = "V'' (x)]" R a n c [ e ( " B 6 " ) . V a l u e = "x [cm]" Ranc[e ( "AI" ) .C o l u m n W i d t h = 15 Ranc[e("Bl") .ColumnWidth = i0 Ranc[e ( "Cl" ) .C o l u m n W i d t h = 5 Ranc[e ( "DI" ) .C o l u m n W i d t h = 1 R a n g e ( "El" ) .C o l u m n W i d t h = 15 R a n g e ( "FI" ) .C o l u m n W i d t h = 15 R a n g e ( "GI" ) .C o l u m n W i d t h = 15 C o l u m n s ( "B" ) . S e l e c t Selection.NumberFormat Range End
Sub
Maximum_Testdaten
Cells(l, C e l l s (2, Cells(3, End
2) 2) 2)
()
= 50 = 2 = 0.01
Sub
Private Vol End
"0.000"
Sub
i Private i
=
( "BI" ) . S e l e c t
Function V o l (a, x) = x * (a2 * x) ^ 2
'Volumen
in
c m ^3
Function
Private Function V o l = 12 * x End Function
Vol(a, x) * x - 8 * a
Private Function V o 2 = 24 * x End Function
Vo2(a, x) - 8 * a
Private Dim Dim
Sub Maximum_Auswertung a, x, e A s D o u b l e i As
'i. A b l e i t u n g * x + a * a
'2.
Ableitung
des
Volumens
des
Volumens
()
Integer
'E i n g a b e w e r t e lesen a = Cells(l, 2) x = C e l l s (2, 2) e = C e l l s (3, 2)
'Kantenlange in cm 'Startwert in cm 'A b s c h a l t k r i t e r i u m
|
! i 'B e r e c h n u n g i C e l l s (2, i Cells(2
5) 6)
= Vol(a, = Vol(a
'
[................ Ce~s_(s
34 9
9
.
H
x) x) '
........ 7! ..... :_VoL(a~
! i i
........ X! .................................................................................................................................... J
2 LOsungen von Gleichungen 1=6 Do x = x - Vol(a, i = i + 1 Cells(i, 2) = Cells(i, 5) = Cells(i, 6) = Cells(i, 7) =
x)
/ Vo2(a,
x Vol(a, Vol(a, Vo2(a,
x)
x) x) x)
I
i ,Abbruchkriterium 3
Loop N h i l e I End
Abs(Vol(a,
x))
> e
Sub
[...........................................................................................................................................................................................................................
:
Die Symbolleiste Algorithmen erh~ilt einen neuen Mentipunkt Maximales Volumen. Dessen Unterpunkte sind wiederum Formblatt, Testdaten und Auswertung. Beim ersten Aufruf werden die Mentipunkte mit den Prozeduren verkntipft.
Abb. 2-14 Menii Maximales Volumen
Mit Hilfe der eingebauten Testdaten ergibt sich die nachfolgende Auswertung. Bei einer Kantenl~inge vom 50 cm ergibt sich ein Einschnitt von x=8,333 cm for ein maximales Volumen von 9259,26 cm 3.
Abb. 2-15 Auswertung der Testdaten
35 ~".. . . . . . .
; \.
)
2.3
L6sungen von Gleichungen h6heren Grades
Obungen Schreiben Sic ein Programm das for mehrere Kantenl~tngen z. B. von 50 bis 250 cm, mit einer Schrittweite von 10 cm, das jeweilige Malg x zum optimalen Volumen bestimmt und stellen Sie die Verh/iltnisse in einem Diagramm dar. Gibt es eine feste Beziehung zwischen a und Xoptimal?
36
3
LOsungen linearer Gleichungssysteme
L6sungen linearer Gleichungssysteme Systeme linearer Gleichungen, kurz lineare Gleichungssysteme genannt, bestehen aus mehreren Gleichungen mit mehreren Unbekannten. In der Technik ftihren viele Probleme auf lineare Gleichungssysteme.
3.1
L6sungen linearer Gleichungssysteme Eigentlich hatten wir es in unserem vorherigen Beispiel von Kapitel 2 mit einem System von zwei Gleichungen mit zwei Unbekannten zu tun. Der allgemeine Fall liegt vor, wenn m Gleichungen mit n Unbekannten gegeben sind. al lXl + al2x 2 + ... + alnX n = c 1
Lineares Gleich u n gssy s t e m
a21x1 + a22x 2 + ... + a2nXn = c 2
(3.1.1)
o o ~
amlX 1 + am2X 2 + ... + amnX n = Cm Homogenes Gleich u n g s s y s t e m
Diese Form heilgt lineares Gleichungssystem. Die reellen Zahlen aik (i=l,...,m; k=l,...,n) sind die Koeffizienten des Systems. Die reellen Zahlen c i werden als Absolutglieder bezeichnet. Das Gleichungssystem wird als homogen bezeichnet, wenn die Absolutglieder verschwinden. Eine Methode zur Bestimmung der L6sung ist das G a u ~ s c h e Verauch als GauJgsches E l i m i n a t i o n s v e r f a h r e n bezeichnet. Man entfernt durch Multiplikation von Gleichungen mit einer Zahl und Addition zu einer anderen aus (n-l) von n Gleichungen eine Unbekannte. Entfernt aus (n-2) der neuen (n-l) Gleichungen eine zweite Unbekannt. Das Verfahren wird solange wiederholt, bis nur eine Gleichung mit einer Unbekannten vorliegt. Aus ihr wird die Unbekannte bestimmt und durch rtickwirkendes Einsetzen alle anderen.
fahren,
GauJgsches Eliminationsverfahren
Tab. 3-1 Algorithmus der GauB-Elimination
Eingabe der Koeffizienten des Gleichungssystems
37
3.1
L6sungen linearer Gleichungssysteme
I = 1 (1)n-1 j = i+1 (1) n
c = aji /aii k=i+
l(1) n+l
aik = a i k - C aik
i= n (-1) 1 Ya
=
ai,n+1
k = i + 1 (1) n Ya = Ya - a~k x k Xi = Ya / a,, LOsung ausgeben
Beispiel: Temperaturverteilung Tempera t u rverte ilung in einem Kanal
Die Temperaturverteilung innerhalb eines Kanals mit rechteckigem Querschnitt wird durch die Laplace-Gleichung beschrieben. An der Rohrwand werden unterschiedliche Temperaturen gemessen. Es sollen die Temperaturen an den angegebenen Punkten bestimmt werden unter der Annahme, dass ein innen liegender Punkt den Mittelwert aller benachbarten Punkte hat. Jeder Punkt geht zu einem Viertel in die Gleichungen ein und da wir nicht umst~indlich mit BrOchen arbeiten wollen, multiplizieren wir die Gleichungen mit 4 und so ergeben sich die nachfolgenden Gleichungen.
38
3 LOsungen linearer Gleichungssysteme 12
18
24
42
36
12
,
,
42
42
12
X1
x2
x3
x4
x5
X6
X7
X8
X9
XI0
XII
XI2
X13
XI4
XI5
22
30
16
16
16
16
24
32
24
16
16
alle ~Verte in Grad Celsius
Abb. 3-1 Gittemetz
x 1 : 4 x 1- x 2 - x6 = 24 x2 : - x 1 + 4x2 - x3 - x7 = 18 x3 : - x2 + 4x3 x4 x8 = 24 x4 : - x3 + 4 x 4 x5 x9 = 36 x5 : - x4 + 4x5 x 10 = 84 x6 :- x l + 4x6 x7 x 11 = 22 x7:-x2-x6+4x7
x8 x 1 2 = 0
x8 : - x3 - x7 + 4x8 x9 x 13 = 0 x9:-x4-x8+4x9
(3.1.2)
xl0 x14=0
x l 0 : - x5 x9 + 4 x 1 0 x15 = 30 xll:-x6+4xll
x12=34
x12:-x7
xll+4x12
x13=24
x13:-x8
x12+4x13
x14=32
x14:-x9
x13+4x14
x15=24
xl5:-xl0
x14+4x15=32
D a w i r d e n A l g o r i t h m u s als S t r u k t o g r a m m b e r e i t s v o r l i e g e n haben, geben
erstellen wir ein Tabellenblatt T e m p e r a t u r v e r t e i l u n g unter
tblTemperaturverteilung
den
Programmcode
und aus
C o d e l i s t e 3-1 ein.
39
L6sungen linearer Gleichungssysteme
3.1
Code 3-1 BesO_~un_g_derTemp_~a_m_~e~e.!lu.ng...nachder Option
Gau_B-_Eli.n~.'nat!pn ..............................................................................
Explicit
'G a u s s - E l i m i n a t i o n Private Sub Werte(n, A, Dim Shp As Shape D i m i, j As I n t e g e r
x)
'Tabelle 16schen Worksheets("Temperaturverteilung").Activate Worksheets("Temperaturverteilung").Cells.Clear For Each Shp In Shapes Shp. Delete Next 'Werte R a n g e ( "AI- P I 5 " ) .C o l u m n W i d t h = 5 R a n g e ( " A 2 0 :G 2 4 " ) .S e l e c t Selection.NumberFormat = "0.00" For
I t i ! ! i
i = 1 To n For j = 1 To n + 1 Cells(i, j) = 0 If i = j T h e n C e l l s ( i , j) = 4 Next j Next i Cells(l, 2) = -i: C e l l s ( l , 6) = -I Cells(2, I) = -i: C e l l s ( 2 , 3) = -i Cells(2, 7) = -i Cells(3, 2) = -i: C e l l s ( 3 , 4) = -I Cells(3, 8) = -i Cells(4, 3) = -i: C e l l s ( 4 , 5) = -i Cells(4, 9) = -i Cells(5, 4) = - I : Cells(5, i0) = - i Cells(6, i) = -i: C e l l s ( 6 , 7) = -i Cells(6, ii) = -i C e l l s (7, 2) = -i: C e l l s (7, 6) = -i C e l l s (7, 8) = -i: C e l l s (7, 12) = -i Cells(8, 3) = -i: C e l l s ( 8 , 7) = -i Cells(8, 9) = -i: C e l l s ( 8 , 13) = -i Cells(9, 4) = -i: C e l l s ( 9 , 8) = -i Cells(9, i0) = - i : Cells(9, 14) = - i Cells(10, Cells(10, Cells(ll Cells(12,
'
5) = -i15) = -i 6) = - i 7) = -i:
Cells(10, Cells(ll Cells(12,
9)
'
12) ii)
= -i
=-i = -i
i i i i I ii
L ...........................................................................................................................................................................................................................
4O
3 LOsungen linearer Gleichungssysteme
Cells(13, Cells(13, Cells(14, Cells(14, Cells(15, Cells(l, C e l l s (2, C e l l s (3, Cells(4, Cells(5, Cells(6, C e l l s (7, Cells(8, Cells(9, Cells(10, Cells(ll, C e l l s (12, Cells(13, C e l l s (14, C e l l s (15, End Sub
8) = -i: C e l l s ( 1 3 , 12) = -i 14) = -i 9) = -i: C e l l s ( 1 4 , 13) = -i 15) = -i i0) = -i: C e l l s ( 1 5 , 14) = -i 16) 16) 16) 16) 16) 16) 16) 16) 16) 16) 16) 16) 16) 16) 16)
= = = = = = = = =
24 18 24 36 84 22 0 0 0 = 30 = 34 = 24 = 32 = 24 = 32
Private Sub Werte_Lesen(n, D i m i, j A s I n t e g e r
A,
x)
'Bestimmung belegter Zeilen 'und D e f i n i t i o n der notwendigen Datenfelder C e l l s (Rows. C o u n t , 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 + i), x(n) A s D o u b l e F o r i = 1 To n F o r j = 1 To n + 1 A(i, j ) = Cells(i, j) Next j Next i End Sub Private Sub Dim k As Dim c As i
c
ii
For
=
A(j,
Subtrahiere_Gleichung(A, Integer Double i)
/
A(i,
k = i + 1 To
n
n,
i,
j)
i)
I
+ I
,i
JI..........................A..(...j.......'............ - c * A(i , k) Ji ......k..)........................................................................................................................................................................................................................... ........= A ( j , k ) i
41
LOsungen linearer Gleichungssysteme
3.1
...........................................................................................................................................................................................................
Next k End Sub Private Function Summe(A, Dim s As Double Dim k As Integer s : A ( i , n + i) For k = i + 1 To n s : s - A ( i , k)
x,
n,
i)
* x(k)
Next k Summe = s End Function Sub
Auswertung () ReDim A(I, i), x ( 1 ) A s D o u b l e D i m n, i, j, k A s I n t e g e r n = 15 R e D i m A ( n , n + i), x ( n ) A s D o u b l e Call Werte(n, A, x) Call Werte_Lesen(n, A, x) For i = 1 To n1 For j = i + 1 To n Call Subtrahiere_Gleichung(A, Next Next i For
i = n To 1 Step x(i) = Summe(A, j = Int((i - i) k = i - (j - i) Cells(j + 20, k Cells(i, n + 3) Next i
42
n,
j
Cells(20,
I)
=
12
Cells(20, C e l l s (20, Cells(20, Cells(20, Cells(20, Cells(20, Cells(21, C e l l s (22, Cells(23, Cells(24,
2) 3) 4) 5) 6) 7) 7) 7) 7) 7)
= = = = = = = = = =
12 18 24 36 42 42 42 30 16 16
-i x, n, i) / A ( i , / 5) + 1 * 5 + i) = x ( i ) = x(i)
i)
i,
j)
3 LOsungen linearer Gleichungssysteme ..................... C J i - ~ i ~ - a i -
Cells(24, C e l l s (24, C e l l s (24, C e l l s (24, C e l l s (24, C e l l s (23, Cells(22, Cells(21,
I
....... ~ - i .........= ...... ~ - ~ ...........................................................................................................................................................................................................................
5) 4) 3) 2) i) i) i) i)
= = = = = = = =
'
24 32 24 16 17 18 22 12
I
I z
i j I I i [
Range("A20-G24").Select Charts.Add ActiveChart.ChartType = xlSurface ActiveChart. SetSourceData _ Source-=Sheets("Temperaturverteilung").Range( "A20-G24"), PlotBy-=xlRows ActiveChart.Location Where-=xlLocationAsObject, Name:= "Temperaturverteilung" With ActiveChart .HasTitle = True .ChartTitle.Characters.Text = "Temperaturverteilung" .Axes(xlCategory).HasTitle = False .Axes(xlSeries).HasTitle = False .Axes(xlValue).HasTitle = False End With ActiveChart.Corners.Select With ActiveChart .Elevation = 25 .Rotation = 211 End
End With Sub
_
i
...........................................................................................................................................................................................................................
J
Die Symbolleiste A~onthmen erh~lt einen neuen MenOpunkt Temperatu~erteilung mit einem einzigen Unterpunkt Auswe~ tung. Beim ersten Au~uf wird dieser MenOpunkt mit der Prozedur Auswenung verknOpR.
Abb. 3-2 Menti Temperaturverteilung
43
3.2
Lineare Optimierung mit der Simplex-Methode Nach Eingabe der Koeffizienten und Aufruf der Auswertung, stehen die Ergebnisse in der Tabelle in Spalte R von x, bis x,s aufsteigend. Zus~tzlich zur Ausgabe der berechneten Werte habe ich im Bereich (A20:G24) die Temperaturwerte nach Lage eingestellt. Damit ist es dann m6glich, mittels eines Makros, daraus eine graftsche Darstellung zu erstellen. Die Anweisungen aus dem Makro habe ich dann in die Prozedur Auswertung eingeftigt.
Abb. 3-3 Temperaturfeldder Testdaten
Ubungen Schreiben Sie als Erg~nzung eine Prozedur, mit deren Hilfe Sie die Randtemperaturen ver~indern k6nnen.
3.2
Line,are Optimierung mit der Simplex-Methode
Ziel- oder Kostenfunktion
Bleiben wir weiter bei den Gleichungssystemen. Bei vielen wirtschaftlichen Problemen gilt es for eine Ziel- oder Kostenfunktion mit n Variablen f
44
= c o + C l X 1 "[- C 2 X 2 "1" ... "[- C n X n
(3.2.1)
3
Extremwert
LOsungen linearer Gleichungssysteme
einen Extremwert (minimale Kosten, maximale Ausnutzung, etc.) zu finden, for die zusiitzlich gegebene Nebenbedingungen (Gleichungen oder Ungleichungen) erffillt sind. allX 1 + al2X 2 + . . . + alnX n = a 1 (3.2.2)
a21x I + a22x 2 + . . . + a2nX n <-- a 2 USW.
mit Xl>=0,..., x>=0. Simplexmethode
Zur L6sung gibt es einige Verfahren. Wir befassen uns an dieser Stelle mit der Simplexmethode von Dantzig. Die Methode wollen wir an Hand eines Beispiels studieren.
Beispiel: Produktionsoptimierung Produktionsoptimierung
Eine Produktion erstellt mit zwei Maschinengruppen M1, M2 zwei Produkte P1, P2 mit folgenden Zeiten und Gewinnen: Tab. 3-2 Produktionstibersicht M,
M2
Gewinn
P, (A)
3 Euro
P2 (B)
5 Euro 160 Std./Woche
120 Std./Woche
Die Firma arbeitet mit 40 Stunden/Woche und verffigt fiber 4 Maschinen der Gruppe M1 und 3 Maschinen der Gruppe M2. Unter der Annahme, dass immer die ganze Produktion verkauft werden kann, ist der maximale Gewinn gesucht. Kommen wir zur Aufstellung des Gleichungssystems. A sei die wOchentliche Produktion des Produkts P1 und B die wGchentliche Produktion des Produktes P2. Mit der Gruppe M1 stehen 160 Stunden und mit der Gruppe M2 120 Stunden pro Woche zur Verffigung. Damit gilt: Gesucht: Maximum von 3A + 5 B => Maximum
(3.2.3)
Restriktionen:
45
32
Lineare Optimierung mit der Simplex-Methode 6A + 4B < 160 2A + 4B < 120
(3.2.4)
A,B>O Grafisch ist dieses Problem direkt 1Osbar, wenn man die Restriktionen als Funktionen im gfiltigen Bereich zeichnet.
Abb. 3-4 Grafische L6sung
Doch wir interessieren uns ffir die Simplex-Methode. Dazu erstellt man ffir das Problem eine Tabelle der Form Tabelle 3-3. Als Pivotspalte wird diejenige gewiihlt, in der in der untersten Zeile der gr6gte negative Wert steht. In diesem Fall -5. Als Pivotzeile wird diejenige gew~thlt, bei der sich der Quotient aus Wert der letzten Spalte geteilt durch Wert der Pivotspalte den kleinsten Wert ergibt. In diesem Fall ist 160/4=40 > 120/4=30. Somit ist das Pivotelement die 4 in der zweiten Zeile. Tab. 3-3 Auswertungstabelle
46
6
4
160
2
4
120
-3
-5
0
i
I
]
3 LOsungenlinearer Gleichungssysteme Die Tabelle wird nun folgendermalgen umgeformt. Die Elemente in der Pivotzeile werden durch das Pivotelement dividiert. Die Elemente der Pivotspalte werden durch das Pivotelement dividiert und bekommen das umgekehrte Vorzeichen. Das Pivorelement selbst wird durch seinen Reziprokwert ersetzt. Alle tibrigen Elemente werden nach der Rechteckregel umgeformt.
a
b
e
p
Abb. 3-5 Rechteckregel
Sei a ein beliebiges Element aus der alten Tabelle, b und c die im Rechteck zum Pivotelement p angeordneten Elemente der alten Tabelle (siehe Abbildung 3-5), dann ergibt sich for den neuen Wert r
a - a-b.--. P
(3.2.5)
Die neue Tabelle sieht also bereits nach der ersten Umformung wie in Tabelle 3-4 dargestellt aus. Tab. 3-4 Auswertungstabelle nach der ersten Umformung
4,00
-1,00
4O
0,50
0,25
30
-0,50
1,25
150
Die Tabelle wird solange umgeformt, bis in der unteren Zeile nur noch positive Elemente stehen. 47
3.2
Lineare Optimierung mit der Simplex-Methode Tab. 3-5 Auswertungstabellenach der letzten Umformung
0,25
-0,25
10
-0,125
0,375
25
0,125
1,125
a55 i
................................................
|
Zus~itzlich werden die Elemente der untersten Zeile und die Elemente der letzten Spalte mit fortlaufenden Zahlen markiert. Bei jeder Umwandlung werden dann die Marken von Pivotzeile und Pivotspalte vertauscht. Am Ende stehen in den Zeilen 1, 2,..., n in der hinteren Spalte die Werte ftir x,, x,,..., x . Das Verfahren liefert das gleiche Ergebnis, wie w i r e s von der grafischen L6sung kennen, n~mlich dass das Maximum bei 3.10+ 5.25 = 155 Euro
liegt. Wir wollen nun den allgemeinen Algorithmus unter Verwendung eines Tabellenblattes und von Arrays erstellen. Tab. 3-6 Algorithmusder Simplex-Methode Eingabe der Ungleichungs-Koeffizienten Zeilenwerte m und Spaltenwerte n Daten lesen
i=1, 1, m+l j= 1, 1, n+l a(i,j) = Cells(i+2,j)
z=0 i=1, 1, n / Markierung setzen
Z=Z+l Cells(m+5,i)=z i-1, 1, m / Markierung setzen 48
3 L6sungen linearer Gleichungssysteme
49
3.2
50
Lineare Optimierung mit der Simplex-Methode
3 LOsungen linearer Gleichungssysteme
Dieser Algorithmus wird in einem neuen Tabellenblatt Simplex unter tblSimplex programmiert. Den Programmcode finden Sie in der nachfolgenden Codeliste 3-2.
Option
Explicit
Private Sub Testdaten() D i m i, j As I n t e g e r 'Tabelle 16schen W o r k s h e e t s (" S i m p l e x " ) . A c t i v a t e W o r k s h e e t s ( " S i m p l e x " ) .C e l l s . C l e a r 'Werte Range("Al-C3").ColumnWidth Range("Al:Bl").Select Selection.NumberFormat = Range("A3:C5").Select Selection.NumberFormat = Cells(l, Celis(l, Cells(3, C e l l s (3, C e l l s (3, Cells(4, Cells(4, Cells(4, Cells(5, C e l l s (5, C e l l s (5, End Sub
i) 2)
= 2 = 2
i) 2) 3) i) 2) 3) i) 2) 3)
= = = = = = = = =
= i0 "#0" "0.000"
6 4 160 2 4 120 -3 -5 0
P r i v a t e S u b A u s w e r t u n g () D i m m, n, i, j, k, pz, ps, min, z As D i m d As D o u b l e R e D i m A(I, I), B(I, i) As D o u b l e
I
i i
m = Cells(l, i) n = C e l l s ( l , 2) R e D i m A ( m + i, n + i),
B(m
+ i,
Integer
n + i)
i i
51
3.2
Lineare Optimierung mit der Simplex-Methode
................................................................................................................................................................................... 'D a t e n
lesen
For
i
=
For
1 To j
=
A(i, Next j Next i
m
+
1
1 To j)
n
+
1
= Cells(i
+
2,
j)
'M a r k e n setzen z = 0 For
i
=
z =
1 To z +
Cells(m Next i For
i = z
=
n
1 +
1 To z
+
Cells(i Next i
5,
i)
=
z
m
1 +
2,
n
+
3)
=
z
'Auswertungsschleife Do 'Bestimme PivotSpalte mit 'in d e r u n t e r s t e n Zeile ps
=
For
gr6~tem
negativen
+
< min
Wert
0 i
=
1 To
n
If
ps = 0 Or ps = i min = A(m End If Next i
A(m +
i,
i,
i)
Then
i)
'Bestimme PivotZeile durch Division letzten Spalte durch Elemente i 'vorausgesetzt dieser Wert ist > 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) <
0 Then
k
+ 5,
ps)
= 1
= 1
Sub
L ...........................................................................................................................................................................................................................
Die Symbolleiste
Algorithmen erh~lt
wieder einen neuen MenO-
punkt Simplex mit den Unterpunkten Textdaten und Auswer53
Lineare Optimierung mit der Simplex-Methode
3.2
tung. Beim ersten Aufruf werden diese Mentipunkte mit den Prozeduren Testdaten und Auswertung verkntipft.
Abb. 3-6 Menu Simplex
Die Testdaten entsprechen dem betrachteten Beispiel und nach deren Aufruf und der anschlielgenden Auswertung ergeben sich die bereits bekannten Werte.
Abb. 3-7 Ergebnisder Testdaten
Als weiteres Beispiel w/ihlen wir die Suche nach einem Minimalwert.
Beispiel" Zuschnittoptimierung Zuschnittoptimierung
In einer Produktion werden aus 5 x 3 Meter grolgen Spanplatten nachfolgende Bauteile geschnitten. Tab. 3-7 Bauteile-Ubersicht
Typ
L~inge x Brei-
A
3 x 1,5
120
4 x 1,5
80
3x 1
220
2x2
60
D 54 . 7 ~
..
Sttick
3 LOsungenlinearer Gleichungssysteme
Tab. 3-8 Zuschnittformen Zuschnittform
10 11
FOr den Zuschnitt gibt es mehrere M6glichkeiten. Die sinnvollsten werden nachfolgend dargestellt. Schnittbreiten bleiben unberOcksichtigt.
55
3.2
Lineare Optimierung mit der Simplex-Methode Abb. 3-8 Zuschnitte
Daraus ergeben sich nach den Tabellen 3-7 und 3-8 die Ungleichungen 3.x 1 + l . x 2 + l ' x 3 + l ' x 4 + 2 . x 5 +O.x 6 +O-x 7 +O.x 8 +O-x 9 +O.XlO +O.Xll <120 O'x 1 + l - x 2 + O ' x 3 + O ' x 4 + O ' x 5 + 2 . x 6 + 2 . x 7 + l . x 8 +O.x 9 +O.XlO +O.Xll _<80 O'x l + O ' x 2 + 3 " x 3 + l ' x 4 + O . x S + O . x 6 + l - x 7 + 2 . x
8+5.x 9 + 2 - x l O + 3 . x l l _<220
O'x l + O ' x 2 + O ' x 3 + l ' x 4 + l ' x 5 + O . x 6 + O - x 7 +O.x 8 + O . x 9 + 2 - x l O + l - x l l ___60 X1 ->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
t i = ti_ 1 + A t G.Ip Ago i . . . . l.I d
~oi_ 1 9A t
A qoi = goi 9A t
q~i = fox-1 + k~i In einer neuen Tabelle Drehschwingungen wird der Algorithmus programmiert. 112
5 Differentialgleichungen .,,Cg.de...5:2 ........,.D.....r.e,hsgh.wi..ngu.ng ........................................................................................................................................................................................................................... Option Explicit
Sub
Drehschwingung_Leer() Dim Shp As Shape For Each Shp In Worksheets("Drehschwingung").Shapes Shp. Delete Next ThisWorkbook.Worksheets("Drehschwingung").Cells.Clear R a n g e ( "AI :BI" ) . S e l e c t Selection.MergeCells = True Selection. Font. Bold = True Selection. Font. Italic = True Selection. Value = "Drehschwingung" R a n g e ( "A2 :A 1 6 " ) . S e l e c t Selection. Font.Bold = True Selection. Font. Italic = True Range("A2") = "G [N/m" & C h r W ( 1 7 8 ) Range("A3") Range("A4") R a n g re("A5") R a n t re("A6") R a n t re("A7") R a n t re("A8") R a n t re("A9") Rant re("Al0") Rant re("B-B")
&
"]"
: "Ip [ m ^ 4 ] " = "i [m]" = "Id [kgm]" = ChrW(966) & " [kg]" : ChrW(969) & " [l/s]" = "tO [s]" = ChrW(916) & "t [s]" = "tmax [s]" .ColumnWidth = "15"
Range("C:C").ColumnWidth = "2" Range("Dl:Fl").Select Selection.MergeCells = True Selection. Font.Bold = True Selection. Font. Italic = True Selection.Value = "Auswertung" Range("D2") = "t [s]" Range("E2") = ChrW(969) & " [l/s] " Range("F2") = ChrW(966) & " [Grad] " R a n g e ( "D2 :F2" ) .S e l e c t Selection. Font.Bold = True Selection. Font. Italic = True i R a n g e ( "B2" ) . S e l e c t i End Sub
i !
...........................................................................................................................................................................................................................
j
113
5.1
Numerische Behandlung gewOhnlicher Differentialgleichungen
Sub
Drehschwingung_Testdaten () C e l l s (2, 2) = 8 0 0 0 0 0 0 0 0 0 0 # C e l l s (3, 2) = 0 . 0 0 0 0 0 0 2 Cells(4, 2) = 0.6 Cells(5, 2) = 4 . 5 Cells(6, 2) = 4 Cells(7, 2) = 0 Cells(8, 2) = 0 Cells(9, 2) = 0 . 0 0 5 Cells(10, 2) = 0.2 End Sub Sub
Drehschwingung_Auswertung () D i m G, Ip, i, Id, p0, w0, tO, D i m t, p, dp, dw, w A s D o u b l e Dim i As Integer
G = C e l l s (2, 2) Ip = C e l l s ( 3 , 2) 1 = Cells(4, 2) Id = Cells(5, 2) p0 = Cells(6, 2) w0 = Cells(7, 2) tO = C e l l s ( 8 , 2) dt = Cells(9, 2) t m = C e l l s (i0, 2) t = t0 p = p0 w = w0 i = 2 Do i = i + 1 t = t + dt Cells(i, 4) = t d w = - G * Ip / 1 / I d w = w + dw Cells(i, 5) = w dp=w* dt p = p + dp Cells(i, 6) = p Loop While t < tm End Sub i Sub i [
1
114
Drehschwingung_Zeigen Range("D3"D42 F3-F42") ' R a n g e ( i t F3 ) . A c t i v a t e Ii
* p
() Select "
dt,
tm As
Double
* dt
J i i i
5 Differentialgleichungen ........................
...........................................................................................................................................................................................................................
ActiveChart.ChartType = xlXYScatterSmoothNoMarkers ActiveChart. SetSourceData m Source-=Sheets("Drehschwingung").Range( _ "D3-D42,F3-F42"), PlotBy-=xlColumns ActiveChart.
SeriesCollection(1).Name
=
ii !
_
II i ! !
....... A u s l e n k u n g ...... ActiveChart Location Where-=xlLocationAsObject I! Name-="Drehschwingung With ActiveChart i .HasTitle = True .ChartTitle.Characters.Text = "Drehschwingung" .Axes(xlCategory, xlPrimary).HasTitle = True .Axes(xlCategory, _ xlPrimary).AxisTitle.Characters.Text = "t [s]" .Axes(xlValue, xlPrimary).HasTitle = True .Axes(xlValue, xlPrimary).AxisTitle.Characters. _ T e x t = " W i n k e l [Grad]" End With ActiveWindow.Visible = False Windows("Kapitel 05.xls").Activate End Sub Sub
Drehschwingung_L~schen () 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 Shp. D e l e t e Next End Sub
("Drehschwingung")
.S h a p e s
Das Menti hat wieder die Oblichen Funktionen. Der Schwingungsverlauf kann aufgerufen und wieder gel6scht werden. FOr eine Neuberechnung wird die Funktion Neues Formular aufgerufen. Die Testdaten beruhen auf einem nachfolgend dargestellten Beispiel.
Abb. 5-13 Menti Drehschwingungen
115 '-
9
.
'
. -
~4
5.1
Numemche Behandlung gewdhnlicher Differentialgleichungen Als Testbeispiel wird ein Getriebe b.enutzt, das nachfolgend schematisch dargestellt ist.
Abb. 5-14 Schwingungssystem
Das Schwingungssystem hat folgende Daten: q =2"ro;r2 = q ldl
=
6kgm;Id2
=
3kgm
d = 0,04m; 1 = 0,6m N G = 80.000.000.000~ m
Ip = 20000m 4
Ersatzsystem ff2 r Drehschwingungen
Abb. 5-15 Ersatzsystem 116
2
5
Differentialgleichungen
Zur Betrachtung werden die Massen der Drehwellen auf ein Ersatzsystem nach Abbildung 5-15 reduziert. Es folgt i d l o = l d 1 ( 7r0/ 2
= -14 I d 1
)2r0 (
und
Id20 = Id 2
- i d 2"
(5.1.34)
(5.~.35)
So dass gilt I d 0 = I d l o + Id2o = 4 , 5 k g m .
(5.1.36)
Die Auswertung des Systems mit Daten und Diagramm sehen Sie in Abbildung 5-16.
Abb. 5-16 Auswertungdes Schwingungssystems
117
5.1
Numerische Behandlung gewOhnlicher Differentialgleichungen
Ubungen Ergiinzen Sie das Programm um eine allgemeine Berechnungsprozedur zur Bestimmung reduzierter Massen.
Torsionspendel
In der Praxis wird ein Torsionspendel mitunter zur Feststellung des Massentr~igheitsmoments eines beliebigen K6rpers benutzt. Den Versuchsaufbau zeigt Abbildung 5-17. Der Vorteil liegt darin, dass lediglich die Massen m,, der Radius r~ und die Schwingzeiten des Systems bekannt sein mtissen Die Zeit ohne aufgesetzte Massen betrligt
I I.ld
T = 2 Gi~p "
(5.1.37)
Abb. 5-17 Torsionspendel zur Feststellung eines Id
Mit aufgesetzten Massen ergibt sich nach dem Steinerschen Satz /
r~ = 2 j / . (id + 2.m~. r2) . G'Ip V
(5.1.38)
Daraus folgt durch Gleichsetzung und Umstellung
Id = 2" ml "r2 .
118 :~
/
.
.
...-
(5.1.39)
5
Differentialgleichungen
Schreiben Sie eine zus~itzliche Prozedur, die durch Eingabe der Schwingzeiten das zugehOrige Massentr~gheitsmoment Id bestimmt.
5.2
Partielle D i f f erentialgleichung
Numerische Behandlung partieller Differentialgleichungen In gew6hnlichen Differentialgleichungen treten nur Funktionen mit einer unabh~ingig Ver~inderlichen auf. Dagegen spricht man von einer partiellen Differentialgleichung, wenn die gesuchte Funktion y = Y(Xl,X 2 ..... Xn) (5.2.1) von mehreren Ver~inderlichen x,, x2, ... , x n abh~ingt und in der Gleichung partielle Ableitungen der Form /,gy L92y --, ~ , usw. (5.2.2) l~qxi lgXi~qxj auftreten. Um deren LOsung numerisch zu bestimmen, tiberzieht man die x, y-Ebene mit einem zweidimensionalen Gitter der Maschenweite h. Y
(xi, Yi)
g
L
I !
h
ii
L h
Abb. 5-18 Gitterpunkte
Die Gitterpunkte bestimmen sich durch x i = x o + i . h und y j = Yo + j ' h .
(5.2.3)
Aulgerdem wollen wir folgende Abktirzung ui,j = u ( x i , Y j )
(5.2.4)
119
5.2
Numerische B e h a n d l u n g partieller Differentialgleichungen
verwenden )~hnlich wie zuvor werden auch hier partielle Ableitungen erster und h6herer Ordnung durch Differenzenquotienten approximiert (diskretisiert). So ergibt sich Ui+l'J -- Ui-l'J + O(h 2 ) 2h
(5.2.5)
(Xi, Yj) = Ui'j+l -Ui,j-1 +O(h2).
(5.2.6)
t.gU (Xi, Y J ) vax Laplace-Operator
und
Oy
2h
Ein h~ufig auftretender Differentialoperator ist der LaplaceOperator A
L92u L92u (5.2.7)
Au "- - ~ + ~ / 9 y 2
mit der Differenzenapproximation
Au(xi, Y j ) =
Ui+l,j - 2ui, j + Ui_l, j h2
+
ui, j+ 1 - 2ui, j + ui,j_ 1 h2 o
(5.2.8) Dies lasst sich symbolisch und anschaulich durch folgenden Berechnungsoperator in der Abbildung 5-19 darstellen.
Abb. 5-19 Berechnungsoperator
120
5 Differentialgleichungen
Beispiel: Membran
Membranform
Abb. 5-20 Form einer eingespannten Membran
Die in Abbildung 5-20 dargestellte elastische Membrane ist an den R~ndern fest eingespannt. Sie erftillt die Laplacesche Differentialgleichung 02u 02u + - 0. (5.2.9) Lax2 - ~ Dabei ist u die H6he der Membrane fiber der (x,y)-Ebene. Die Randwerte seien u=0 ftir den ~iulgeren und u=l ffir den inneren Rand. Aus der Symmetrieeigenschaft des Laplace-Operators genfigt die Betrachtung eines Viertelstficks.
Abb. 5-21 Membranausschnitt
121
5.2
Nu merische Beha ndlu ng pa rtieller Differentialgleich u ngen
Durch Anwendung Differenzen.
des Operators ergeben sich nachfolgende
Verbesserung der Zeilenwerte (von Schritt n nach n+l): j=0, i=3: (n+l). z -U2, 0 "r
(n+l) (n+l) (n)_ (n) 0 -U4, 0 mR3,_ 1 tU3,1
daraus folgt: (n+l)
u3,o
(n+l)
,-,
-u<0 =/.u3,,
(n)+
(n+l)
1 weil u2,0
=1.
j=0, i=4: (n+l)+ /. (n+l) (n+l) (n)+ (n) -U3, 0 g~U4,0 -U5, 0 "--U4,_1 U4,1
daraus folgt: (n+l)+/
-u3,o
(n+l) ,-,
~u4,o
(n+l) r,
=o weil us,o
=o.
j=l, i=2: (n+l)+ /. (n+l) (n+l) (n)+ (n) -Ul, 1 q:U2,1 -U3,1 ~--'U2,0 U2, 2
daraus folgt: U2,1
(n+l)
-U3,1
(n+l)
mU2,2
(n)+,-, Z w e i l u , ,1(n*')~-'ll ~2,o (n) -" 1.
j=l, i=3: -U2,1
(n+l)+z (n+l) (n+l) (n)+ (n) l~U3,1 -U4,1 mR3, 0 U3, 2
daraus folgt: -U2,1
(n+l).
z
tqU3,1
(n+l)
(n)
mU3, 0
weil
U4A
~"+"
(n)
r,
-'U3, 2 mU.
j=2, i=2: (n+l)+z (n+l) (n+l) (n)+ (n) -Ul, 2 qU2, 2 -U3, 2 ~--'U2,1 U2, 3
daraus folgt: -U2,1
weil
(n+l)+z (n+l) (n) A~:U2,2 -'U2,1
,, u n d U3, 2("*')mR2, 3(n)m'~U
U 12(n*l)--'U21 , ,
(n+l)
(sym.).
Verbesserung der Spaltenwerte (von Schritt n+l nach n+2): i=2, j=l: -U2,0
(n+2)+z (n+2) (n+2) (n+l) . (n+l) ~ U 3,1 ~U2,1 -022 mUl,l
daraus folgt: (.+~)-U2,2 (n+2) =U3,1 (n+l)+,-, well U2,1 Z
U2,0"-Ul,1 m
i=2, j=2: -U2,1
(n+2) . z "r
daraus folgt: 122
,.
.
_
.
(n+2) (n+2) (n+l)+ (n+l) 2 -U2, 3 =Ul, 2 U3,2
1
5 Differentialgleichungen - U 2,1(n+2).]. 4 u 2,2(n+2 ) U 2,1(n+ 1)
well u2,3=u~,2=Ound u,,2=u2,1(sym.). i=3, j=O" (n+2) ~ z (n+2) (n+2) (n+l) . (n+l) -U3,_ 1 z~U3, 0 -U3,1 =U2, 0 tO4, 0
daraus folgt: (n+2) ~
U3,o
(n+2)
-ZU3, ~
(n+l)+ .I
=U4,o
1
weil U2,o=lund u3_1=u3,1(sym.). i=3, j=l: _U3,0(n+2)+4U3,1(n+2)_U3,2(n+2) D~R2,1 (n+l) "l'U4,1' (n+l)
daraus folgt: (n+2) ~ /.
-u~,o i=4, j=0: -U4,_l
(n+2)
~u3,,
(n+l)
=uz,1
weil u~,z=u4,,=0.
(n+2) . z (n+2) (n+2) (n+l) . (n+l) t z'~U4, 0 -U4,1 -'U3, 0 "+'U5, 0
daraus folgt: 4U4,0(n+2).-U3,0 (n+l)
weil u4,~=Us,o=0und u4_,=u4,, (sym.). Durch Umstellung ergeben sich die 10 Iterationsgleichungen: (n+l) = 1 (2u3 J (n) +1) 15
U4'o U 3,0
U3'l u2,1
(n+l)
= 4U 4,0
(n)
(n+l) _ ~1 (u 2,2 (n) -I- 4u 2,2 (n) + 1) -- 15 (n+l)
---- 4u3,1 (n+
U2,2 (n+l) =
1)
-- u3, 0
__
41(u 2,1 (n+l)
u2,1
(n+2)
= 4u2,2
u3,1 (n+2) =
(n+l)
141(4u2,1
+ U 2,1
(n+l)
U2,2(n+2) = 151 (4U2,1
(n)
+ U3,1
- u2,1
(n+l)
(n)
)
(n+l) +
2)
(n+l)
+ u4, 0
(n+l)
+ 1)
123 ~ ~........ -. ~ . ~ :
5.2
Nu merische Behandlu ng partieller Differentialgleich u ngen
u 3,0 u4, 0
(n+2)
(n+2) (n+l) = 4u 3,1 -- U 2,1
(n+2)_ 1 (n+l) - -~u3, 0
Tab. 5-3 Algorithmus zur Bestimmung der eingespannten Membran Eingabe Startwerte u4,0 (0) = 0 ; u 3 , 0 (0) =0;u3,1 (0) =0;u2,1 (0) = 0 ; u 2 , 2 (0) - - 0
n Iterationsschritte u4,0(n+l)__ ~151 (2u3,1 (n) +1) (n+l)
u3, 0
(n+l)
U3'l
u2,1
(n+l)
U2,2
= 4u4, 0
(n+l)
1 (n) = 15 (U2, 2 + 4U3,0 (n) +2)
= 4U3,1
(n+l)
u3'l U3,0
U4,0
(n)
(n+l) _ 1 (n+l) (n) -- -~ (U2,1 +U2,1 )
Uz,z(n+2) = 151 (4u2,1
u 2,1
- u3, 0
(n+2)
= 4u 2,2
(n+l)
(n+2)
+ u3,1
- u 2,1
(n+l)
+ 2)
(n+l)
(n+2)_ 1 (n+l) (n+l) - 14 (4u2'1 + u4,~ + 1) (n+2)
(n+2) (n+l) = 4u 3,1 -- U 2,1
(n+2)_ 1 (n+l) -- -~U3,0
Das Programm enth~ilt in der Reihenfolge die Iterationsgleichungen. Es ist jedoch darauf zu achten, welcher Iterationswert in die 124 ....~...~
.
-...7..~.
5 Differentialgleichungen jeweilige Gleichung eingeht. Ich habe dies durch die Variablenfolge u, v, w gekennzeichnet. Erst nach Beendigung der beiden Iterationsschritte erfolgt eine Verschiebung und ein neuer Durchlauf kann beginnen. .C.~.e_S.:..3. ......Dst!.mmu~g..e!.n.er...M.em~ra...@orm
Option Sub
i i ~ i i i i I i i
............................................................................................................................................................................................................
Explicit
Membran_Formular() Dim Shp As Shape For Each Shp In Worksheets("Membran").Shapes Shp. Delete Next ThisWorkbook.Worksheets("Membran").Cells.Clear Cells(l, Cells(2, Cells(2, Cells(3, Cells(3, C e l l s (4, Cells(4, Cells(5, Cells(5, Cells(6, Cells(6, Cells(7, C e l l s (7, C e l l s (8, Cells(8, Cells(9, Cells(9, Cells(10, Cells(10, Cells(ll,
6) 5) 7) 4) 8) 3) 9) 2) I0) i) ii) 2) i0) 3) 9) 4) 8) 5) 7) 6)
: = : : = = = :
Cells(4, Cells(5,
6) 5)
= =
1 1
Cells(5, Cells(6, Cells(6
7) 4) 8)
= = :
1 1 1
Cells(7,
5)
:
1
Cells(7, Cells(8,
7) 6)
= :
1 1
Range
0 0 0 0 0 0 0 0 =
=
0 0
= =
0 0
= = = = =
0 0 0 0 0
= = =
0 0 0
( "I6 :J 6 " ) . S e l e c t
i. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
:
125
Nu merische Behandlu ng partieller Differentialgleich u ngen
5.2
.ColorIndex .Pattern End
=
15
= xlSolid
With
Range("H5:I5").Select With
Selection.
Interior
.ColorIndex .Pattern
=
15
= xlSolid
End With Range("H4").Select With
Selection.
Interior
.ColorIndex .Pattern End
=
15
= xlSolid
With
Range("Al2").Select With
Selection.
Interior
.ColorIndex .Pattern End End Sub
=
15
= xlSolid
With
Sub Membran_Auswertung Dim u40, u30, u31,
() u21,
u22
As
Double
Dim Dim
v21, w21,
v22 w22
As As
Double Double
v40, w40,
v30, w30,
v31, w31,
D i m i, n A s I n t e g e r n = Cells(12, i) u40 = Cells(6, i0) u30
= Cells(6,
9)
u31 u21 u22
= Cells(5, = Cells(5, = Cells(4,
9) 8) 8)
For
i
126 9
-
.
/
. . . .
i =
1 To
n
v40
=
1
/ 15
v30
=
4
* v40
*
(2
v31
=
1
/ 15
*
(u22
v21
=
4
* v31
- u30
v22
=
1
/ 4
(v21
w22
=
1
/ 15
w21
=
4
* w22
w31 w30
= =
1 4
/ 14 * (4 * v 2 1 * w31 - v21
w40
= 1 / 4 * v30
* *
(4
* u31 +
4
+
i)
* u30
+
2)
+ v31
+
2)
+ v40
+
i)
+ u21) * v21
- v21
!
5 Differentialgleichungen
u40 u30 u31 u21 u22
= = = = =
w40 w30 w31 w21 w22
Cells(6, Cells(6, Cells(5, Cells(5, Cells(4, Next i
i0) 9) 9) 8) 8)
= = = =
: u40 u30 u31 u21 u22
i
'{}bertragung Cells(7, Cells(7, Cells(8, Cells(8, Cells(9, Cells(9, Cells(10, Cells(2, Cells(3, Cells(3, Cells(4, Cells(3, Cells(4, Cells(8, Cells(9, Cells(4, Cells(5, Cells(7, Cells(8, Cells(5, Cells(6, C e l l s (7, Cells(6, End Sub
durch Symmetrie 9) = C e l l s ( 5 , 9) 8) = C e l l s ( 5 , 8) 8) = C e l l s ( 4 , 8) 7) = C e l l s ( 4 , 7) 7) = C e l l s ( 3 , 7) 6) = C e l l s ( 3 , 6) 6) = C e l l s ( 2 , 6) 6)= Cells(6, i0) 6) = C e l l s ( 6 , 9) 7) = C e l l s ( 5 , 9) 7) = C e l l s ( 5 , 8) 5) = C e l l s ( 3 , 7) 5) = C e l l s ( 4 , 7) 5) = C e l l s ( 8 , 7) 5) = C e l l s ( 9 , 7) 4) = C e l l s ( 4 , 8) 4) = C e l l s ( 5 , 8) 4) = C e l l s ( 7 , 8) 4) = C e l l s ( 8 , 8) 3) = C e l l s ( 5 , 9) 3) = C e l l s ( 6 , 9) 3) = C e l l s (7, 9) 2) = C e l l s ( 6 , i0)
Da es sich um ein spezielles Beispiel handelt, sind nur zwei Prozeduren vorgegeben. Zuerst der Aufbau des Formblatts mit den Daten. Nach der manuellen Eingabe der Schleifendurchliiufe in Zelle A12 mtissen noch die Startwerte in den grauen Feldern eingetragen werden. FOr die vorliegende Berechnung wurden diese Fel127 ~
-
-
~
.
~
,
.
,
:
5.2
Numerische Behandlung partieller Differentialgleichungen der mit Null belegt. Aber auch andere Startwerte ftihren zum gleichen Ergebnis.
Abb. 5-22 Menti Membran
Mit dem Start werden die Gitterpunkte der Membran berechnet und nach der Symmetrie tibertragen.
Abb. 5-23 Membranausschnitt
Die grafische Darstellung wurde manuell erstellt, da zur besseren Wiedergabe Korrekturen an den Einstellungen vorgenommen wurden. Ebenso wurden leeren Zellen mit angrenzenden Werten geftillt.
Ubungen Elektronenr6hre
128
Eine ElektronenrOhre hat den in Abbildung 5-24 dargestellten Aufbau.
5 Differentialgleichungen
Anode
Gitter
Kathode
Abb. 5-24 Schematischer Aufbau einer Elektronenr6hre
Wir gehen v o n d e r vereinfachten Annahme aus, dass die Elektroden nach links und rechts unendlich fortgefOhrt sind. Dann gentigt die Potentialverteilung im Raum zwischen den Elektroden der Laplaceschen Differentialgleichung (5.2.9). Die Kathode hat das Potential 0 Volt und das Gitter-1 Volt. Wie grog muss die Anodenspannung gew~ihlt werden, damit das Potential zwischen den Gitterf~iden nicht negativ wird? Benutzen Sie die dargestellte Aufteilung unter Berticksichtigung symmetrischer Verh~iltnisse.
129
6.1
M a t r i z e n d e f i n it ionen
6
Vektoren und Matrizen Matrizen werden heutzutage in allen Bereichen immer dann eingesetzt, wenn es gilt grolge Datenmengen zu verarbeiten. Nicht zuletzt deswegen ist MS Excel mit seiner Matrixstruktur als ein tiberaus hilfreiches Entwicklungstool zu nennen. Die Informationsaufbereitung mit Matrizen ist ausgesprochen anschaulich. Dennoch bedarf es einiger wichtiger Matrizendefinitionen, bevor man sich mit deren Anwendung besch~iftigt. Dabei werde ich nicht auf die Matrizenfunktionen von Excel eingehen.
6.1
Matrizendefinitionen
Matrix
Eine Matrix ist per Definition ein rechteckiges Zahlenschema mit in der Regel mehreren Zeilen und Spalten.
Elemente einer M a t r i x
A-
all
a12
a13
a21
a22
a23
a31
a32
a33
(6.1.1)
Eine Matrix wird mit einem Grolgbuchstaben beschrieben und die Elemente einer Matrix mit dem zugeh6rigen Kleinbuchstaben. Am Index eines Elementes kann man erkennen, in welcher Zeile und Spalte sich das Element befindet. Ftir die Schreibweise einer Matrix gibt es auch eine Kurzform A = (a~k),i = 1 , . . . , m , k = 1,...,n,
(6.1.2)
ftir eine Matrix mit m Zeilen und n Spalten, oder noch ktirzer A - (aik)(m,n)"
(6.1.3)
Man sagt auch, dass die Matrix A vom Typ (m,n) ist. Die Zeilen einer Matrix heilgen auch Zeilenvektoren. Analog bezeichnet man die Spalten auch als Spaltenvektoren. Eine besondere Form der Matrix ist dann gegeben, wenn m = n ist. Es liegt dann eine quadratische Matrix vor. Sind nur die diagonalen Element ungleich Null, so spricht man von einer Diagonalmatrix. Haben alle
130 9
.
..
.
6
VektorenundMatrizen
diese diagonalen Elemente zus~itzlich den Wert 1, so heifgt sie Einheitsmatrix. Transponierte Matrix
Durch Vertauschung von Zeilen und Spalten einer Matrix, entsteht eine neue Matrix. Diese heilgt die Transponierte der Matrix A. Eine Matrix der Form al 1 a12 A-/a21a22
,
(6.1.4)
/
k,a31 a32 hat als Transponierte die Form A T - ( all a21 a31].
(6.1.5)
~,a12 a22 a32 Eine Matrix vom Typ (m,n) hat eine Transponierte vom Typ (n,m). Die Transponierte einer Transponierten ergibt die ursprtingliche Matrix. Als Formel (at) r -a. (6.1.6) FOr die Elemente einer Matrix bedeutet dies
T aik - aki.
(6.1.7)
Der Algorithmus zur Bestimmung der Transponierten besteht also einfach in der Vertauschung der Indizes (Tabelle 6-1). Beginnen wir nun mit einer Sammlung von Matrizenoperationen in einer eigenen Arbeitsmappe, da Matrizenoperationen immer wieder verwendet werden. Wir erstellen eine erste Tabelle mit dem Namen Matrix A. Eine zweite Tabelle mit dem Namen Matrix B wird automatisch als Transponierte benutzt. Allerdings l~sst sie sich auch manuell neu erstellen Ober eine zusS.tzliche Prozedur. Ebenso eine dritte Tabelle Matrix C. Tab. 6-1 Bestimmung einer Transponierten
Eingabe der Elemente aik einer Matrix A Bestimmung der Transponierten durch Vertauschung der Indizes i = 1 (1)m
131
6.1
Matrizendefi n itionen
k=i(1)
n
bki = aik
Ausgabe der Matrix B als Transponierte ..C_._g~..e....6-.!.....~.eze~ur.en.. [email protected]~z..e..no~.e.rat!.on..e..n Option
............................................................................................................................................................................................
Explicit
'Prozedur Matrix A neu S u b M a t r i x A Neu() D i m B l a t t As W o r k s h e e t D i m N a m e As S t r i n g N a m e = " M a t r i x A" On E r r o r G o T o M a t r i x A N e u Set B l a t t = T h i s W o r k b o o k . W o r k s h e e t s ( N a m e ) Blatt.Activate Blatt.Cells.Clear E x i t Sub M a t r i x A NeuSet B l a t t = W o r k s h e e t s . A d d Blatt.Name = Name Resume End Sub 'Prozedur Matrix B neu S u b M a t r i x B Neu() D i m B l a t t As W o r k s h e e t D i m N a m e As S t r i n g N a m e = " M a t r i x B" On E r r o r G o T o M a t r i x B N e u Set B l a t t = T h i s W o r k b o o k . W o r k s h e e t s Blatt .Activate Blatt.Cells.Clear Exi t S u b M a t r i x B NeuSet B l a t t = W o r k s h e e t s . A d d Blatt.Name = Name Resume End Sub I 'Prozedur
i Sub M a t r i x Dim
Matrix
C neu
(Name)
i
C Neu()
Blatt
As W o r k s h e e t
i
........................................................................................................................................................................................................................... ]
132
6 Dim
Name
As
VektorenundMatrizen
String
N a m e - " M a t r i x C" On Error GoTo Matrix C Neu Set Blatt = ThisWorkbook.Worksheets(Name) Blatt.Activate Blatt.Cells.Clear Exit Sub Matrix C NeuSet Blatt = Worksheets.Add Blatt.Name = Name Resume End Sub
Sub Matrix_Transponierte () Dim Blatt As Worksheet Dim Name As String D i m i, k, m, Z e i l e n , S p a l t e n D i m A() A s D o u b l e
As
Integer
N a m e = " M a t r i x A" Set Blatt = ThisWorkbook.Worksheets (Name) Zeilen = Blatt.UsedRange.Rows.Count Spalten = Blatt.UsedRange. Columns. Count 'Matrix A lesen ReDim A(Zeilen, Spalten) For i = 1 To Zeilen For k = 1 To Spalten A(i, k) = B l a t t . C e l l s ( i , Next k Next i
k)
'OberprOfung, ob Matrix B vorhanden N a m e = " M a t r i x B" m = 0 F o r E a c h B l a t t In S h e e t s If N a m e = B l a t t . N a m e Then m = 1 E n d If Next 'Matrix B anlegen If m = 0 T h e n Set Blatt = Worksheets.Add j Blatt. Name = Name
i
l J
L........................................................................................................................................................................................................................... j
133 ,,.~
.....
..
...
6.1
Matrizendefinitionen
f...........................................................................................................................................................................................................................
E n d If Set B l a t t = T h i s W o r k b o o k . W o r k s h e e t s Blatt .Activate Blatt.Cells.Clear 'Bestimmung der Transponierten F o r i = 1 To Z e i l e n F o r k = 1 To S p a l t e n ,I Blatt.Cells(k, i) = A(i, Next k i I Next i i End Sub i
(Name)
k)
...........................................................................................................................................................................................................................
j
Alle Prozeduren werden durch einen Mentipunkt aufgerufen.
Abb. 6-1 Erster Aufbau des MenUs Matrizenoperationen
MatrizenadditionZwei Matrizen werden addiert, indem die Elemente mit gleichem Index addiert werden.
!(allal21 .(bllbl21 lall+blla12+b121 a+B=laZla22+/b21b22 = a z l + b 2 1 a 2 2 + b 2 2 \a31 a32
~.b31b32
a31 +b31 a32 +b32 (6.1.8)
Es ist ersichtlich, dass beide Matrizen vom gleichen Typ sein m~issen. Die Matrizenaddition ist sowohl kommutativ als auch assoziativ
A+B=B+A A+(B+C)=(A+B)+C 9
(6.1.9)
Ftir die Matrizenaddition erweitern wir den Quellcode um die nachfolgenden Zeilen. Dabei setzen wir die Matrix A und die Matrix B als Ausgangstabellen voraus.
134 9
....
6
VektorenundMatrizen
Code6-2 MaMzenaddition Sub
Matrix_Addition() Dim Blattl, Blatt2, Blatt As Worksheet D i m N a m e l , N a m e 2 , N a m e As S t r i n g D i m i, k, m, ZI, Z2, SI, $2 A s I n t e g e r D i m A(), B() A s D o u b l e
'0berprOfung, ob Matrix A vorhanden N a m e l = " M a t r i x A" Set Blattl = ThisWorkbook.Worksheets(Namel) m = 0 F o r E a c h B l a t t In S h e e t s If N a m e l = B l a t t l . N a m e Then m = 1 E n d If Next If m = 0 T h e n MsgBox " M a t r i x A fehlt'". , v b O K O n l y , "ACHTUNG" Exit Sub E n d If Z1 = B l a t t l . U s e d R a n g e . R o w s . C o u n t S1 = B l a t t l . U s e d R a n g e . C o l u m n s . C o u n t 'Matrix A lesen R e D i m A ( Z I , Sl) F o r i = 1 To Z1 F o r k = 1 To S1 A(i, k) = B l a t t l . C e l l s ( i , Next k Next i
I ! i I i i ! i i i i !
k)
'0berprOfung, ob Matrix B vorhanden N a m e 2 = " M a t r i x B" Set Blatt2 = ThisWorkbook.Worksheets(Name2) m = 0 F o r E a c h B l a t t In S h e e t s If N a m e 2 = B l a t t 2 . N a m e Then m = 1 E n d If Next If m = 0 T h e n MsgBox "Matrix B fehlt!", vbOKOnly, "ACHTUNG" Exit Sub E n d If Z2 = B l a t t 2 . U s e d R a n g e . R o w s . C o u n t $2 = B l a t t 2 . U s e d R a n g e . C o l u m n s . C o u n t
135
6.1
Matrizendefi n itionen
R e D i m B(Z2, $2) F o r i = 1 To Z2 F o r k = 1 To $2 B(i, k) = B l a t t 2 . C e l l s ( i , Next k Next i
k)
'0berprOfung der Typen If Z1 <> Z2 Or S1 <> $2 T h e n MsgBox "Matrixtypen unterschiedlich!", "ACHTUNG" Exit Sub E n d If
vbOKOnly,
_
'UberprOfung, ob Matrix C vorhanden N a m e = " M a t r i x C" On Error GoTo Matrix C Neu Set B l a t t = T h i s W o r k b o o k . W o r k s h e e t s ( N a m e ) Blatt.Activate Blatt.Cells.Clear 'Addition F o r i = 1 To Z1 F o r k = 1 To S1 Blatt.Cells(i, Next k Next i
k)
= A(i,
k)
+ B(i,
k)
Exit Sub M a t r i x C Neu! Set B l a t t = W o r k s h e e t s . A d d i Blatt.Name = Name ! ! Resume i End Sub
Matrizensubtraktion
[ i j i
Analog zur Matrizenaddition definiert sich die Matrizensubtraktion
A-B=
a21 a22 -]b21 b22 =/a21-b21a22-b22 a31 a32 ~b31b32 \a31-b31 a32-b32 (6.1.10)
FOr die Matrizensubtraktion gilt weder das Kommutativ- noch das Assoziativgesetz. Die Prozedur ist ~ihnlich der der Addition. 136 9
.
.
.
.
.
.
.
..
6
VektorenundMatrizen
Code6-3 Matfizensubtr~tion
, ...........................................................................................................................................................................................................................
Sub
Matrix_Subtraktion() Dim Blattl, Blatt2, Blatt As Worksheet D i m N a m e l , N a m e 2 , N a m e As S t r i n g D i m i, k, m, ZI, Z2, SI, $2 As I n t e g e r D i m A(), B() A s D o u b l e
'0berprOfung, ob Matrix A vorhanden N a m e l = " M a t r i x A" Set Blattl = ThisWorkbook.Worksheets(Namel) m = 0 F o r E a c h B l a t t In S h e e t s If N a m e l = B l a t t l . N a m e Then m = 1 E n d If Next If m = 0 T h e n M s g B o x " M a t r i x A fehlt'". , v b O K O n l y , "ACHTUNG" Exit Sub E n d If Z1 = B l a t t l . U s e d R a n g e . R o w s . C o u n t S1 = B l a t t l . U s e d R a n g e . C o l u m n s . C o u n t 'Matrix A lesen R e D i m A ( Z l , Sl) F o r i = 1 To Z1 F o r k = 1 To S1 A(i, k) = B l a t t l . C e l l s ( i , Next k Next i
k)
'0berpr~fung, ob Matrix B vorhanden N a m e 2 : " M a t r i x B" Set Blatt2 = ThisWorkbook.Worksheets(Name2) m = 0 F o r E a c h B l a t t In S h e e t s If N a m e 2 = B l a t t 2 . N a m e Then m = 1 E n d If Next If m = 0 T h e n MsgBox "Matrix B fehlt!", vbOKOnly, "ACHTUNG" Exit Sub E n d If i Z2 = B l a t t 2 . U s e d R a n g e . R o w s . C o u n t i $2 = B l a t t 2 U s e d R a n g e Columns.Count ........................................................................................................................................................................................................................... j
J
137
Matrizendefinitionen
6.1
ReDim B(Z2, $2) For
i = 1 To Z2 F o r k = 1 To $2 B(i, k) = B l a t t 2 . C e l l s ( i , Next k Next i
'
k)
'0berprOfung der Typen If Z1 <> Z2 O r S1 <> S2 T h e n M s g B o x " M a t r i x t y p e n u n t e r s c h i e d l i c h ! ", v b O K O n l y , "ACHTUNG" Exit Sub E n d If '0berprOfung, ob Matrix C vorhanden N a m e = " M a t r i x C" On Error GoTo Matrix C Neu Set Blatt = ThisWorkbook.Worksheets (Name) Blatt .Activate Blatt.Cells .Clear 'Addition F o r i = 1 To Z1 F o r k = 1 To S1 Blatt.Cells(i, k) = A(i, k) - B ( i , k) Next k Next i Exit Sub Matrix C NeuSet Blatt = Worksheets.Add Blatt.Name = Name Resume End Sub
Skalarprodukt
_
i i
I
Die Multiplikation einer Matrix mit einer Zahl (Skalar) erfolgt in der Form, dass jedes Element der Matrix mit dem Skalar multipliziert wird.
._(all a12/ / i otA =ula21a22 = \a31 a32
all O~'a12/ a21 o~ a22 a31 o~ a32
(6.1.11)
FOr eine Multiplikation eines Skalars mit einer Matrix gelten nachfolgende Gesetze-
138
6
VektorenundMatrizen
Assoziativgesetz oq .(o~2 9A)= (~ 1 .o~2). A Distributivgesetz (a 1 "6~2)'A = a 1 -a+6~ 2 . a O:. ( A + B ) = og. A + og. B
(6.1.12)
(6.1.13)
Beim Aufruf dieser Prozedur wird auger der Matrix A der Skalar in Matrix B in Zelle(1,1) vorausgesetzt. Das Skalarprodukt steht dann in Matrix C.
Sub
Matrix_Skalarprodukt() Dim Blattl, Blatt2, Blatt As Worksheet D i m N a m e l , N a m e 2 , N a m e As S t r i n g D i m i, k, m, ZI, S1 A s I n t e g e r D i m A() As D o u b l e Dim Skalar As Double
'0berpr0fung, ob Matrix A vorhanden N a m e l = " M a t r i x A" Set Blattl = ThisWorkbook.Worksheets(Namel) m = 0 F o r E a c h B l a t t In S h e e t s If N a m e l = B l a t t l . N a m e Then m = 1 E n d If Next If m = 0 T h e n MsgBox " M a t r i x A fehlt'". , v b O K O n l y , "ACHTUNG" Exit Sub E n d If Z1 = B l a t t l . U s e d R a n g e . R o w s . C o u n t S1 = B l a t t l . U s e d R a n g e . C o l u m n s . C o u n t 'Matrix A lesen R e D i m A ( Z l , Sl) F o r i = 1 To Z1 F o r k = 1 To S1 A(i, k) = B l a t t l . C e l l s ( i , Next k Next i
i~ ' 0 b e r p r ~ f u n g , i
Name2
=
ob Matrix " M a t r i x B"
B vorhanden
k)
ii J
..................................................................................................................................................................................................................... j
139
6.1
Matrizendefi n it ionen
.......................
........2 .....Ygg
gT
gTg27
gT
g
ggr
......................................................................................
m = 0 For
Each
Blatt
In
Sheets
If
Name2 = Blatt2.Name m = 1 E n d If
Then
Next If
m
=
0 Then
MsgBox
"Skalar
in Matrix
B
fehlt!",
vbOKOnly,
_
"ACHTUNG" Exit End
Sub
If
Skalar
= Blatt2.Cells(l,
'0berprOfung, ob Matrix N a m e = " M a t r i x C" On Error GoTo Matrix Set
Blatt
i)
C vorhanden C Neu
= ThisWorkbook.Worksheets(Name)
Blatt.Activate Blatt.Cells.Clear 'Addition F o r i = 1 T o Z1 For k = 1 To
S1
Blatt.Cells(i,
k)
= A(i,
k)
* Skalar
Next k Next i Exit Sub
!
Matrix ' i
C Neu-
Set Blatt Blatt.Name Resume
= Worksheets.Add = Name
i End Sub
Matrizenprodukt
Das Produkt einer Matrix A mit einer Matrix B ist ebenfalls wieder eine Matrix
C-A.B.
(6.1.14)
Das Element % ist das Skalarprodukt des i-ten Zeilenvektors der Matrix A mit dem k-ten Spaltenvektor der Matrix B.
140 9
.
."
9
.
6
VektorenundMatrizen
/ / c'2/
/a,, 0,2 /b, ' b,2
/a21 a22 ~b21b22 \a31 a32
\c31 c32
(6.1.15)
allbll +a12621 alibi2 +a12b22 "] = a21bll +a22b21 a21b12 +a22b22 a31bll +a32b21 a31b12 +a32b22
J
Das Matrizenprodukt ist nur definiert ftir Matrizen vom Typ(m,n), die multipliziert werden mit Matrizen vom Typ(n,r). Sub Matrix_Produkt() D i m B l a t t l , B l a t t 2 , B l a t t As W o r k s h e e t D i m N a m e l , N a m e 2 , N a m e As S t r i n g D i m i, j, k, m, ZI, Z2, SI, $2 As I n t e g e r D i m A(), B() As D o u b l e D i m S u m As D o u b l e 'UberprOfung, ob Matrix A vorhanden N a m e l = " M a t r i x A" Set Blattl = ThisWorkbook.Worksheets(Namel) m = 0 F o r E a c h B l a t t In S h e e t s If N a m e l = B l a t t l . N a m e Then m = 1 E n d If Next If m = 0 T h e n M s g B o x " M a t r i x A fehlt'". , v b O K O n l y , "ACHTUNG" Exit Sub i E n d If i Z1 = B l a t t l . U s e d R a n g e . R o w s . C o u n t S1 = B l a t t l . U s e d R a n g e . C o l u m n s . C o u n t 'Matrix A lesen R e D i m A ( Z I , Sl) F o r i = 1 To Z1 F o r k = 1 To S1 A(i, k) = B l a t t l . C e l l s ( i , Next k Next i
k)
i i '0berpr~fung, ob M a t r i x i N a m e 2 = " M a t r i x B"
i B vorhanden
...........................................................................................................................................................................................................................
! i i
J
141
6.1
M a t r i z e n d e f i n itio n e n
..........................
.......
m
=
. . . .
......................................................................................
0
For
E a c h B l a t t In S h e e t s If N a m e 2 = B l a t t 2 . N a m e Then m = 1 E n d If Next If m = 0 T h e n MsgBox "Matrix B fehlt!", vbOKOnly, Exit Sub E n d If Z2 = B l a t t 2 . U s e d R a n g e . R o w s . C o u n t $2 = B l a t t 2 . U s e d R a n g e . C o l u m n s . C o u n t
i i E i
'Matrix B lesen R e D i m B ( Z 2 , S2) F o r i = 1 To Z2 F o r k = 1 To $2 B(i, k) = B l a t t 2 . C e l l s ( i , Next k Next i
"ACHTUNG"
k)
'0berprOfung ob Multiplikation zulassig If S1 <> Z2 T h e n MsgBox "Multiplikation nicht m0glich!", "ACHTUNG" Exit Sub E n d If
vbOKOnly,
_
'0berprOfung, ob Matrix C vorhanden N a m e = " M a t r i x C" On Error GoTo Matrix C Neu Set Blatt = ThisWorkbook.Worksheets(Name) I B latt Activate j Blatt Cells Clear i " " 'P r o d u k t b i l d u n g F o r j = 1 To S2 F o r i = 1 To Zl Sum = 0 F o r k = 1 To S1 S u m = S u m + A(i, k) * B(k, Next k Blatt.Cells(i, j) : S t r ( S u m ) Next i i Next j
j)
............................................................................................................................................................................................................... ]
142
6
VektorenundMatrizen
Ex,t-....sub ..........................................................................................................................................................i.............................
.........................................
Matrix Set
C
Neu
Blatt
Blatt.Name
!
9
i
= Worksheets.Add = Name
Resume
Wfihrend ffir die Matrizenmultiplikation das Kommutativgesetz im Allgemeinen nicht gilt, gelten das Assoziativgesetz (A.B).C=A.(B.C) (6.1.16) und die Distributivgesetze A.(B+C)= A.B+A.C
(6.1.17)
(A+B).C=A.C+B.C Determinante einer Matrix
Jeder quadratischen Matrix kann man auf eine bestimmte Weise einen Skalar zuordnen, der als Determinante der Matrix bezeichnet wird. Die Schreibweise ist all
a12
a21
a22
l
IAl=detA=
[anl an2
. . .
...
aln a2n
(6.1.18)
... ann
Dabei dtirfen die senkrechten Striche nicht mit der Klammer der Matrix verwechselt werden. Die Berechnung der Determinanten zeigt sich am besten bei einer Matrix vom Typ(3,3).
lla21 all
det A =
a12
a13
a22
a23
la31 a32
a33
I
=alla22a33 +a12a23a31 +a13a21a32
(6.1.19)
-a13a22a31 -a12a21a33 -alla23a32 Tab. 6-2 Bestimmung einer Determinante
Eingabe der n x n Elemente aik der Matrix A q---
n
2
143
6.1
144
Matrizendefinitionen
6
VektorenundMatrizen
Code6-6 BestimmungderDeterminanteeinerMatfix ........................................................................................................................................................................................................................... Sub Matrix_Determinante()
ii
D i m B l a t t l , B l a t t As W o r k s h e e t D i m N a m e l , N a m e As S t r i n g D i m i, j, k, m, n, ZI, S1 As I n t e g e r D i m A() As D o u b l e D i m Sum, Pro, q As D o u b l e 'UberprOfung, ob Matrix A vorhanden N a m e l = " M a t r i x A" Set Blattl = ThisWorkbook.Worksheets(Namel) m = 0 F o r E a c h B l a t t In S h e e t s If N a m e l = B l a t t l . N a m e T h e n m = 1 E n d If Next If m = 0 T h e n MsgBox "Matrix A fehlt[", vbOKOnly, "ACHTUNG" Exit Sub E n d If Z1 = B l a t t l . U s e d R a n g e . R o w s . C o u n t S1 = B l a t t l . U s e d R a n g e . C o l u m n s . C o u n t 'Matrix A lesen R e D i m A ( Z I , Sl) F o r i = 1 To Z1 F o r k = 1 To S1 A(i, k) = B l a t t l . C e l l s ( i , Next k Next i
k)
' O b e r p r O f u n g ob q u a d r a t i s c h e M a t r i x v o r l i e g t If Z1 <> S1 T h e n MsgBox "Keine quadratische Matrix!", vbOKOnly, "ACHTUNG" Exit Sub E n d If
_
' U b e r p r O f u n g , ob M a t r i x C v o r h a n d e n N a m e : " M a t r i x C" On Error GoTo Matrix C Neu ] Set Blatt = ThisWorkbook.Worksheets(Name) Blatt.Activate Blatt.Cells.Clear
i i
i
i
........................................................................................................................................................................................................................... j
145
6.1
Matrizendefi n itionen
: 'D e t e r m i n a n t e q
=
Zl
If
/
2
q
=
Int(q)
n
=
Zl
=
Z1
-
Then 1
Else n
i i I
End
If
Sum
=
0
For
i
=
1
To
n
i
i
j =i
! I
Pro
=
1
i
For
k
=
Pro
j
j
+
=
If
j
>
=
i j
= =
Z1
Sum 1
+
To
Zl
Pro For
-
=
1
k
=
Pro
j)
Then
j
=
j
-
Z1
Pro
If Next Sum i
1 =
Matrix Set
+
1
To
Z1
Pro
* A(k,
j)
-1
j
<
1
Then
j
=
j
+
Z1
k =
Sum-
Blatt.Cells(l, Exit
n i
j =j
!End
* A(k,
1
i
For
i
Z1
k
Sum
Next
To
=
Next Next
1
Pro
Pro i)
=
Sum
Sub C
Neu-
Blatt
Blatt.Name Resume
= Worksheets.Add =
Name
Sub
I i i i
Determinanten dienen zur L6sung linearer Gleichungssysteme und ftir die Theorie der Eigenwerte ebenso, wie zur Bestimmung der Inversen einer Matrix. Inverse einer Matrix
Unter einer Inversen einer Matrix A versteht man eine Matrix B in der Form, das gilt A. B - E , (6.1.20) mit E als Einheitsmatrix. Die inverse Matrix von A wird mit A-' bezeichnet
146
6
Vektoren und Matrizen
A . A -1 = E .
(6.1.21)
Die Berechnung einer Inversen ist etwas kompliziert. Eine Methode ist das Gaulgsche Eliminationsverfahren, das im nachfolgenden Kapitel behandelt wird. Eine zweite Methode ist die Berechnung mit Hilfe der Determinanten A -1 = I--/----A+. det A
(6.1.22)
Dies setzt jedoch voraus, dass diese ungleich Null ist und mit A § die komplement~tre Matrix von A vorliegt. Eine Matrix, deren Determinante Null ist, wird als singul~ir bezeichnet. SingulS.re Matrizen besitzen keine Inverse.
Komplementdre Matrix
Matrix der Kofaktoren
Die komplement~tre Matrix (wird auch adjungierte genannt) A§ einer quadratischen Matrix A bestimmt sich aus deren Unterdeterminanten. Die Unterdeterminante det Aij bestimmt sich aus der Matrix A unter Streichung der Zeile i und Spalte j. Die komplement~tre Matrix hat dann die Elemente (-1) i+j .det Aij.
(6.1.23)
Die komplement~ire Matrix wird auch als Matrix der Kofaktoren bezeichnet. ~ g ~ e . . ~ : 2 ........B ~ s t ! ~ ~ g . . ~ . ~ e . m ~ g m ~ r ~ . . . M ~
.........................................................................................................................................................................................
Sub M a t r i x _ K o m p l e m e n t ( ) Dim Blattl, Blatt As W o r k s h e e t Dim Namel, N a m e As String Dim i, j, k, m, n, ZI, S1 As I n t e g e r Dim jl, i, ii As I n t e g e r Dim A(), B() As D o u b l e D i m Det, q As D o u b l e 'UberprOfung, ob M a t r i x A v o r h a n d e n N a m e l = "Matrix A" Set Blattl = T h i s W o r k b o o k . W o r k s h e e t s ( N a m e l ) |
!
m=0
i
i i i
For Each Blatt In Sheets If N a m e l = B l a t t l . N a m e T h e n m : l End If ! Next i Ifm=0Then i M s g B o x "Matrix A fehlt!", vbOKOnly, "ACHTUNG" i i Exit Sub i [........................................................................................................................................................................................................................... j
147
6.1
M a t r i z e n d e f i n it ionen E n d If Z1 = B l a t t l . U s e d R a n g e . R o w s . C o u n t S1 = B l a t t l . U s e d R a n g e . C o l u m n s . C o u n t
'Matrix A lesen R e D i m A ( Z I , SI) F o r i = 1 T o Z1 F o r k = 1 T o S1 A ( i , k) = B l a t t l . C e l l s ( i , Next k Next i
k)
'0berpr0fung, ob quadratische Matrix vorliegt If Zl < > S1 T h e n MsgBox "Keine quadratische M a t r i x ! ", v b O K O n l y , "ACHTUNG" Exit Sub E n d If 'UberprOfung, ob Matrix B vorhanden N a m e = " M a t r i x B" On Error GoTo Matrix B Neu Set Blatt = ThisWorkbook.Worksheets Blatt .Activate Blatt.Cells .Clear 'D e t e r m i n a n t e q = Zl / 2 If q = I n t ( q ) T h e n n = Z1 - 1 i t
Else n = Z1 E n d If
i
For
i
i
j i j
i = 1 To n For k = 1 To n 'Bildung der Untermatrix R e D i m B ( n - i, n - i) For j = 1 To n For 1 = 1 To n If j <> i A n d 1 < >
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
<
n * A(k,
j)
1 1
Then
-
Pro
j
:
j
k =
Det
i
Sub
149
6.1
Matrizendefi n it ionen
Inzwischen haben sich einige weitere Mentipunkte angesammelt.
Abb. 6-2 Menti Matrizenoperationen
An einem einfachen Beispiel soll noch einmal der Berechnungsvorgang verdeutlicht werden. Gegeben sei die Matrix 1
A=
3
i02 i/ -2
.
-1
Dann ergibt die Berechnung als Determinante den Wert 7. Die Berechnung des Komplements von A erbringt
A+=
7 -3
!2/ .
Ebenso bestimmt sich die transponierte Matrix zu
AT=
-2
1 .
3 Das Matrizenprodukt AT A~ liefert wiederum
150 .
'
..
-....,
6
A T .A + =
Vektoren u n d M a t r i z e n
/i0i/ 7
=detA.E.
0
Dies ist auch die Aussage des Laplaceschen Entwicklungssatzes. Nach diesem l~tsst sich die inverse Matrix bestimmen (6.1.22) - 0,428...
- 1
0,714... /
0,857
1
-0,428/"
1
-0,285...)
1 - - } - - . ( A + ) T = A -1 = |
deta
~, 0,571...
Nach (6.1.21) ergibt sich dann auch
A . A -1 = E =
/i0i/ 1
.
0
Obungen Fassen Sie sich wiederholende Anweisungen, und da gibt es eine Menge, zu eigenen Prozeduren zusammen. Schreiben Sie erg~tnzende Prozeduren zur Matrizenumformung. Eine n-reihige Determinante 1/isst sich auf (n-1)-reihige Determinanten zurtickftihren. (n-1)-reihige Determinanten auf (n-2)reihige Determinanten, und so weiter. Schreiben Sie eine entsprechend rekursive Prozedur.
6.2
L6sungen von Gleichungssystemen Die zuvor behandelten Gleichungssysteme lassen sich mit Hilfe von Algorithmen auf Matrizen effektiver realisieren. Ein allgemeines Gleichungssystem der Form
G leic h u n gssy s t e m
allXl +a12x2 +'"+alnXn = Yl a21xl +a22x2 +'"+a2nXn - Y2
(6.2.1)
o o ~
amlXl +am2X2 +'"+amnXn = Ym
wird symbolisch in der Form A. x = b
(6.2.2)
geschrieben. Darin ist A eine Matrix mit m Zeilen und n Spalten
151
6.2
L6sungen von Gleichungssystemen al lal2...aln
(6.2.3)
A ~
und x ein n-dimensionaler Vektor Xl x2
x-
(6.2.4)
x: sowie y ein m-dimensionaler Vektor Yl y=
Y2
(6.2.5)
Die Rechenregeln ftir Matrizen und Vektoren haben wir im vorherigen Kapitel behandelt. Ebenso einfache Umformungsregeln, wie z. B. das Erstellen einer transponierten Matrix9 Begriffe wie symmetrische Matrix setze ich voraus. Ich k o m m e daher direkt zu einer Anwendung, die wir bereits kennen. Damit meine ich den Gaug-Algorithmus zur Aufl6sung einer linearen Gleichungssystems A-x = b, (det k , O) (6.2.6) Wie wir es bereits praktiziert haben, gelangt man zur L6sung, w e n n in den Gleichungen Unbekannte so eliminiert werden, dass zum Schluss eine Unbekannte bestimmt werden kann und durch Rtickw~rtseinsetzen ebenfalls alle anderen. Dies erreicht man in der Matrizenanwendung durch fortgesetzte Linearkombinationen jeweils zweier Gleichungen zu einem gestaffelten System R x 9
~___b
@
(6.2.7)
mit der Rechtsdreiecksmatrix R. Man spricht von Triangularisierung. Damit lassen sich dann die Unbekannten x n, x n_,, xn_2, ... , x, durch Rtickw~irtseinsetzen berechnen. Also nichts Neues, sondern nur eine andere Schreibweise.
152 ~
.. ~.~
.
.
6
VektorenundMatrizen
Zur Ermittlung von R aus A sind n-1 Eliminationsschritte erforderlich. Diese sind wie folgt durchzuffihren. Im k-ten Schritt wird die k-te Zeile (Pivotzeile) nacheinander mit den Faktoren Cik =
- ~ , (i = k + 1..... n) akk
(6.2.8)
multipliziert und von den Zeilen i=k+l,...,n subtrahiert, wodurch alle Elemente aik" unterhalb der Diagonalen zu Null werden. Nach n-1 Schritten ergibt sich so die Matrix R. Die mit einem * gekennzeichneten Gr6gen, sind die durch die bereits vorangegangenen k-1 Schritte ver/inderten Elemente der Matrix A. Zur Verringerung von Rundungsfehlern ist es zweckmlifgig, vor jedem Eliminationsschritt einen Zeilentausch so durchzuftihren, dass das betragsgr61~te Element aller aik" (i=k+l,...,n) zum Pivotelement wird (Spaltenpivotisierung). Der Betrag der Determinante von A wird dadurch nicht ge/indert, doch es wechselt das Vorzeichen bei jedem Zeilentausch. Mit einer Anzahl p von Zeilenvertauschungen gilt det A = (-1) p det R.
Gauflsche Elimination
(6.2.9)
Der Gaulgsche Algorithmus in Matrizenform /indert sich unwesentlich zum Kapitel 3. Tab. 6-3 Algorithmusder Gaul3-Elimination Eingabe der Koeffizienten des Gleichungssystems Elimination i= 1 (1)m-1 j = i + l (1) m
aji aii
k = 1 (1)n a jk =a j k - c . aik y j - y j - c . Yl
153
6.2
L6sungen
von Gleichungssystemen
ROckw~irtsrechnung i- n (-1) 1 a = Yi
k = i + 1 (1) n a =s
a-aik
9x k
Za
xi = ~ aii
Daftir hat das Programm eine etwas andere Struktur, denn die einzelnen Schritte wurden als Prozeduren ausgelagert. Code 6-8 GauB-Elimination in Matrizenform Option Explicit D i m A ( ) , y ( ) , x() A s D i m m, n A s I n t e g e r
Double
Sub
G a u s s _ L e e r () ThisWorkbook. Worksheets R a n g e ( "AI" ) .S e l e c t End Sub Sub
!i
i i i i
( " G a u s s " ) .C e l l s . C l e a r
Gauss_Testdaten () D i m i, j A s I n t e g e r F o r i = 1 T o 15 F o r j = 1 T o 15 Cells(i, j) = 0 If i = j T h e n C e l l s ( i , j) = 4 Next j Next i Cells(l, 2) = -i: C e l l s ( l , 6) = -i Cells(2, i) = -i: C e l l s ( 2 , 3) = -i: Cells(3, 2) = -i: C e l l s ( 3 , 4) = -i: Cells(4, 3) = -i- C e l l s ( 4 , 5) = -iCells(5, 4)=-i-Cells(5, i0)=-i Cells(6, i) = -i- C e l l s ( 6 , 7) = -iCells(7, 2) = -i- C e l l s ( 7 , 6) = -i C e l l s (7, 8) = -i- C e l l s ( 7 , 12) = -I Cells(8, 3) : -i- C e l l s ( 8 , 7) = -i Cells(8, 9) = -i- C e l l s ( 8 , 13) = -i Cells(9, 4) = -i- C e l l s ( 9 , 8) = -i
Cells(2, Cells(3, Cells(4,
7) 8) 9)
Cells(6,
ii)
= -i = -i = -i = -i
I
i ! I i i i ii i !
, ..........................................................................................................................................................................................................................._
154 9
...
.
..
6 i.....................C e i ~ ~ 7 ~ i
~
..........{ / 5 ] .........= .......' L
.........c e ~ i s i { ~ - i
VektorenundMatrizen
........{ a i .........= ........- { ...................................................................................................................................... ~
Cells(10,
5)=-i-Cells(10,
9)=-I
Cells(10, Cells(ll, Cells(12,
15) = -i 6) = -i7) = -i.
Cells(ll, Cells(12,
12) Ii)
= =
-i -i
C e l l s (12, Cells(13,
13) = -i 8) = -i-
Cells(13,
12)
=
-i
Cells(13, Cells(14,
14) = -i 9) = -i.
Cells(14,
13)
=
-i
Cells(14, Cells(15,
15) i0)
Cells(l, Cells(2, Cells(3, Cells(4, Cells(5, Cells(6, C e l l s (7, Cells(8, Cells(9, Cells(10,
17) 17) 17) 17) 17) 17) 17) 17) 17) 17)
Cells(ll, Cells(12, Cells(13, Cells(14, Cells(15,
17) 17) 17) 17) 17)
i
End Sub
= = = = = = = = = = =
-i -i-
Cells(15,
14)
=
-i
24 18 24 36 84 22 0 0 0 = 30 = = = = =
34 24 32 24 32
Sub Gauss Daten lesen() Dim MyDoc As Object Dim nRows, nCols, i,
j As
Integer
Set MyDoc = ThisWorkbook.Worksheets("Gauss") nRows : MyDoc.UsedRange.Rows.Count nCols : MyDoc.UsedRange.Columns.Count m = nmows n : nCols - 2 R e D i m A ( m , n), y ( m ) , x ( n ) For
I l
i = 1 To m y(i) = Cells(i, nCols) Next i For i = 1 To m For j = 1 To n A(i j) : C e l l s ( i j) ,
z
i i i i
155
6.2
End Sub
L6sungen von Gleichungssystemen Next Sub
i
Gauss_Elimination () Dim c As Double D i m i, j, k A s I n t e g e r For
i = 1 To m1 For j = i + 1 To m c = A ( j , i) / A ( i , i) For k = 1 To n A ( j , k) = A ( j , k) - c Next k y(j) = y(j) - c * y(i) Next j Next i End Sub Sub
Gauss_R0ckwartsrechnung D i m i, j, k A s I n t e g e r Dim s As Double
* A(i,
k)
()
For
i = n To 1 Step-i s = y(i) For k = i + 1 To n s : s - A ( i , k) Next k x ( i ) : s / A ( i , i) Next i End Sub Sub
* x(k)
Gauss_Auswertung () D i m i, j A s I n t e g e r Dim s As Double Call
Gauss_Daten_lesen
Call
Gauss
Elimination
Cal i Gauss_RNckwartsrechnung !
i 'A u s g a b e
i
For
i =
! i i
For
,
Next
156
1 To
m
j = 1 To n Cells(m + 1 + i -
i
j)
= A(i
i
j)
i i .:
6
Next
i
For
j
=
1
To
Cells(2 I
z
VektorenundMatrizen
Next
n
* m
+
3,
j)
=
x(j)
j
J i
i 'T e s t r e c h n u n g i i i
i I
s
=
0
For
j s
Next
= = j
1 s
To
n
+
A(I,
* m
+
j)
* x(j) i
I
i
!
Cells(2
3,
n
+
2)
:
s
i i
J End
Sub
i
Nach der Installation des Mentis
Abb. 6-3 Menii zum GauB-Algorithmus
ist das Ergebnis mit den Testdaten das Gleiche. Daher erspare ich mir eine nochmalige grafische Darstellung.
Abb. 6-4 Testdatenauswertung (siehe auch Kapitel 3)
157
6.3 Differenzenverfahren f a r gewOhnliche Differentialgleichungen
Ubungen Dem Algorithmus fehlt der zuvor beschriebene Zeilentausch zur Verringerung von Rundungsfehlern. Erg~inzen Sie diese Anweisungen. Ebenso werden G01tigkeitsbedingungen nicht beachtet. Diese sind ebenfalls zu erg~inzen.
6.3 Differenzenverfahrenfor gew6hnliche Differentialgleichungen
D if f eren zen verfahren
Das Ersetzen von Differentialquotienten durch Differenzenquotienten haben wir bereits in den vorangegangenen Kapiteln praktiziert.
,/ Yi-i
Yi-"
h
Yi
h
"
i+l
h
-~
Yi+2
h--'
Abb. 6-5 Differenzen
Der Differentialquotient
dy=y, dx
(6.3.1)
wird durch den hier zentralen Differenzenquotienten Y'+' Y / '
Yi =
2h
(6.3.2)
i
an einer beliebigen Stelle i approximiert. Auf die gleiche Weise k6nnen ebenso die h6heren Ableitungen approximiert werden.
158 9
.
.
.
.
.
.
.
6 VektorenundMatrizen So gilt
"=(A2yl =(-~(~)) h( Yi+l -Yi
yi igr)i
Yi - Y-1i1h (6.3.3)
Die zentralen Differenzenformeln ftir die ersten vier Ableitungen lauten ' 1 Yi = 2---~(Yi+l-Yi-1)
1
" Yi --~-(Yi+I - 2Yi + Yi-1) l'l
oov
Yi
=
,,,,
Yi
(6.3.4)
1
_
2. h 3
(Yi+2
-
2 yi+l + 2 yi-1 - Yi-2 )
1
h-~ (Yi+2-4yi+l +6yi-4yi-1 + Yi-2)
Beispiel" Einseitig eingespannter BiegetRiger Einseitig eingespannter Biegetrdger
'
Mb
l!x dx
Abb. 6-6 Gleichgewicht eines finiten Elements unter Biegebelastung
Damit ein finites Tr~tgerelement sich im Gleichgewicht befindet, mtissen folgende Bedingungen erftillt sein.
159 -
...c
-
"
6.3 Differenzenverfahren far gewOhnliche Differentialgleichungen d2 I d 2y(x) ) = q(x) dx 2 E.l(x) dx 2 d 2y(x) M(x) = - E . l ( x ) ~ dx 2 FQ(X)= dM(x------~)=- dx cl (
(6.3.5)
d2y(x))dx 2
Abb. 6-7 Einseitig eingespannter Biegetr~iger
FOr einen einseitig eingespannten Biegetr~iger gelten zus~itzlich die Randbedingungen y(O) =0 y'(O) =0
y"(1) = O,M(/) =0
(6.3.6)
F
y"(l) = E. I FQ (1) = F tm
y
=0
Zur Vereinfachung wurde der Tr~iger in vier Teile gleicher L~inge unterteilt, und es ergeben sich die Differenzen
Yi-2-4yi-1 +6yi-4yi+1
160
+ Yi+2 =0,i =0 ..... 4
(6.2.7)
6
VektorenundMatrizen
Tab. 6-4 Gleichungssystem Y-2 -4y_, Y-1
+6y o
-4y,
+y,
-4y o
+6y,
-4y~
+ Y3
Yo
-4y~
+@2
-4y~
+ Y4
y~
-4y,
+@3
-4Y4
Y2
-@3
+6Y4 -4Ys
=0 = 0 -
+Y5
0
= 0 + Y6
= 0
Wir erhalten ein lineares Gleichungssystem mit 9 Unbekannten. Aus den R a n d b e d i n g u n g e n Yo = 0 -Y-1 +Yl = 0 Y3 - 2. Y4 + Y5 = 0
(6.3.8) F.13
- y2 + 2" y3 - 2" y s + Y6 =
32.E.I
folgt durch Umstellung -Y-1 = Yl Y5 = -Y3 + 2. Y4
(6.3.9) F.l 3
Y6 = +Y2 - 2. Y3 + 2. Y5
32- E. I
u n d eingesetzt
Tab. 6-5 Umgeformtes Gleichungssystem
-4y o
+7y1
-4Y2
Yo
-4y,
+ 6 Y 2 -@3
+ Y4
=0
Y~
-@2
+5y 3
-2y 4
= 0
2y 2
-4y~
+2y 4
= C
+ Y3
= 0
mit
161
6.3 Differenzenverfahren ffir gew6hnliche Differentialgleichungen F.I 3 c=~
(6.3.10)
32.E.I
Die erste G l e i c h u n g w e r d e n wir nicht v e r w e n d e n , weil so Y-2raus fallt. Was bleibt ist die M a t r i z e n g l e i c h u n g mit d e r o b i g e n Matrix
A.x=b ,
(6.3.11)
die wir direkt mittels des z u v o r erstellten G a u s - A l g o r i t h m u s 16sen k6nnen. Mit d e n W e r t e n
E Stahl
"
-
21000
N mm
I
bh3
=~
12
2
50.2003 =~ = 33.333.333mm 4 12
1 = 875mm F = 1000N ergibt sich ffir die K o n s t a n t e c als g e r u n d e t e n Wert 0,03.
Abb.6-8 Auswertung nach der GauB-Methode 162 .
.
.
.
.
..
.
6
VektorenundMatrizen
Ubungen Taylor-Reihenentwicklung
Die approximierenden Differenzen nach (6.3.4) lassen sich tiber eine Taylor-Reihenentwicklung von y(x) noch verbessern. So gilt an der Stelle xi
hn Y i+l = Y(Xi + h)= n=0 k n!
(6.3.12)
und ftir die erste Ableitung
//
Ay -"-~i
,
2
h2
-
~ (-h)ny(n)(xi)+ Z n! =
n=0
Y(n)(xi)+
/
"
h4
= Yi + ~ Y~+ - i ~
y}5) + ...
(6.3.13)
6.4 Eigenwertprobleme Eigen wertpro b lem
In der Mechanik ftihren viele Probleme auf die L6sung von Eigenwertproblemen der Form
(A-2,.B).x=O.
(6.4.1)
zurtick. Darin sind A und B quadratische Matrizen. Gesucht sind die Eigenwerte ~, und der zugeh6rige Eigenvektor x. In der Regel kann das allgemeine Eigenwertproblem tiberftihrt werden in das spezielle Eigenwertproblem
( A - 2 . E)x - O .
(6.4.2)
Darin ist E die Einheitsmatrix. Diese Schreibweise stellt ein homogenes Gleichungssystem dar, dass nur dann eine nichttriviale L6sung besitzt, wenn gilt det(A-2. E)= 0,
(6.4.3)
wenn also die Determinante Null ist. Eigenwertprobleme treten z. B. immer da auf, wo etwas schwingt oder wo Schwingungen verhindert werden sollen. Beispiele sind Membranen, Platten, Tragwerke, usw.
163
6.4 Eigenwertprobleme
Beispiel: Freie Biegeschwingungeines geraden Balkens
Freie Biegeschwingung eines geraden Balkens
Abb. 6-9 Beidseitig eingespannter Trager
Die Differentialgleichung for die freie Eigenschwingung eines geraden Tr~igers lautet
d2 ( d2y(x) I dx 2 E. l(x) d x 2 -
(.0 2
9m(x). y(x) = 0
(6.4.4)
oder umgestellt
y(4) _
(.02
.m = 0 .
(6.4.5)
E.I
Eine Approximation durch einfache Differenzen liefert
Yi-2 -4Yi-1 + 6Yi -
4Yi+l +
Yi+2 -/~Yi = O,
(6.4.6)
mit
2=m.h4 ~(_0 E.I
2.
(6.4.7)
Wie zuvor erhalten wir ein Gleichungssystem, diesmal mit 6 Unbekannten.
164
6
VektorenundMatrizen
+ Y3
=0
Tab. 6-6 Gleichungssystem
Y-, -4Y0 +6Y1 -4Y2 Y0
-4y,
+6Y2 -4Y3
Yl
-4Y2
+6Y3 -4Y4
Y2
-4Y3
=0
+ Y4 +Y4
= 0
+6Y4 -4y 4 + y~
=0
Mit den Randbedingungen Yo = 0 t
Yo - 0
(6.4.8)
Y-1 - Yl ergibt sich die endgtiltige Matrix nach Tabelle 6-5 ftir die Gleichung (6.4.2). Tab. 6-7 Gleichungssystem 7Yl
-4Yz
+ Y3
=0
-4yl
+6y2
-4Y3
+ Y4
- 0
Yl
-4Y2
+6Y3 -3Y4
=0
Yz
-3y 3
= 0
+ 2y 4
Die numerischen Verfahren zur Berechnung der Eigenwerte einer Matrix unterscheidet man nach direkten und indirekten Methoden. Die direkten Methoden liefern die Wertetabelle des charakteristischen Polynoms und dessen Ableitung. Die indirekten Methoden umgehen die Aufstellung des charakteristischen Polynoms und versuchen die Eigenwerte und Eigenvektoren sukzessive anzun~ihern. Methode v. Mises
Das Iterations-Verfahren nach v. Mises ist eine indirekte Methode zur Bestimmung des betragsgr61gten Eigenwertes und des zugeh6rigen Eigenvektors. Ausgehend von einem beliebigen Startvektor x(0), der die Basisdarstellung x(O) "- Cl " z l + C2" Z 2 + . . . + Cn " Z n
(6.4.9)
besitzt und so gew~ihlt ist, dass alle 165
6.4 Eigenwertprobleme
c k , 0,k = 1..... n
(6.4.10)
folgt der erste Schritt x (1) = A. x (0) und allgemein x (m+l) =
(6.4.11)
(6.4.12)
A . x (m) .
)i,quivalent dazu gilt (6.4.13)
x (m) - A m 9x (0) .
Wegen dieser )~quivalenz auch oft als Potenzmethode bezeichnet. Es gilt weiterhin X (m) = A m ' x (0) = 2 7 "
I
c l'z 1+s
n lilm I i"
i=2
"Z i
~,~'1 )
(6.4.14) ftir den Fall das A reel ist. Und daraus bestimmt sich der zugehOrige Eigenvektor aus 1
~.
x
(m)
1
--+ q " z , wenn m ~ oo.
(6.4.15)
Dieses Verfahren lasst sich mit Hilfe der Prozeduren unter 6.1 leicht ausrechnen. 7
-4
1
0
-014 - 64
- 64
23
1
-3
1 A ~
1 ,x
=
(~
i
-43
-2 x (1)
-
A. x (~ =
6_
, x(2) = A.
X (1)
-
66 -62 25
2
-850:
-627 x (3)
166 9
..
--..
9
=
A. x (2) =
'
841 /
, x (4) = A . x (3) =
10872
-754[
-942
302 )
3707
6
VektorenundMatrizen
-112458 x (5) = A. x (4) =
140651 [. -119642 / 46549 )
FOr die Quotienten x(m+l) k
(m) xk
ergeben sich die Werte in Tabelle 6-8. Tab. 6-8 Quotientenwerte
m\k -2
-1,67
0,5
21,5
11
12,4
12,5
14,58
12,74
12,16
12,08
13,58
12,93
12,49
12,27
13,22
12,94
12,7
12,56
Es ist ersichtlich, dass der betragsgr61gte Eigenwert ~1 = 13 ist. Der dazugeh6rige Eigenvektor bestimmt sich nach (6.4.15) zu
o,038/. -0,3 /
0a3 ) Die manuelle Nachprtifung mit den Prozeduren yon Kapitel 6.1 ergibt:
167
6.4 Eigenwertprobleme
7
-4
1
0
1 0 0 0
i4 -46 -46 1
-6 -4
1
0
i 0101 i i4 -4 -4-7 : 3
-3
0
-6 -4
1
0
0
1
-0,3"] (-0,04"] /
/
-3-11
0,13)
-11
O"
/
i 4 -7_4 -7-4 1 , 3 -0'0,3382]- //-0,03/ 0'05/= 1
-3
k-o,09)
i ,
Nachfolgend wollen wir noch eine Prozedur for die Iterationsmethode v. Mises schreiben. Code 6-9 v.Mises-Verfahren Option Explicit D i m a(), x() A s D o u b l e Dim n As Integer S u b v M i s e s _ L e e r () ThisWorkbook. Worksheets R a n g e ( "AI" ) .S e l e c t End Sub Sub
i
vMises_Testdaten Cells(l, i) = 7 Cells(l, 2) = -4 Cells(l, 3) = 1 Cells(l, 4) = 0 Cells(2, i) = -4 C e l l s (2, 2) = 6 C e l l s (2, 3) = -4 Cells(2, 4) = 1 Cells(3, I) = 1 C e l l s (3, 2) = -4 C e l l s (3, 3) = 6 Cells(3, 4) = -3 Cells(4, i) = 0 Cells(4, 2) = 1 C e l l s (4, 3) = -3 Cells(4, 4) = 2 Cells(l, Cells(2, Cells(3,
6) 6) 6)
( " v M i s e s " ) .C e l l s . C l e a r
()
= 1 = 3 = 3
i
i............... s
168
..... 7__4 ..........................................................................................................................................................................................................................
]
6
VektorenundMatrizen
[. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
!End i i Sub
{
,
Sub vMises_Daten_lesen() Dim MyDoc As Object Dim nRows, nCols, i,
j As I n t e g e r
Set MyDoc = ThisWorkbook.Worksheets("vMises") nRows = MyDoc. UsedRange. Rows. Count n = nRows R e D i m a(n, n), x ( n ) For
i = 1 To n x(i) = Cells(i, n + 2) Next i For i = 1 To n For j = 1 To n a(i, j ) = Cells(i, j) Next j Next i End Sub Sub
vMises_Auswertung () D i m y ( ) , z() A s D o u b l e D i m i, j, k, m A s I n t e g e r D i m L, p A s D o u b l e Call vMises_Daten_lesen ReDim y(n), z(n) m = i0
'I t e r a t i o n e n For i = 1 To m For j = 1 To n y(j) = 0 For k = 1 To n y(j) = y(j) Next k Next j
! i i~
+ a(j,
'Quotient For j : 1 To n If x ( j ) = 0 T h e n Cells(i, n + 5 + j) Else Cells(i, n + 5 + j) E n d If
k)
=
* x(k)
""
: y(j)
/ x(j)
i ~ ii
169
6.4 Eigenwertprobleme Next
j
For
j
=
1
x(j)
To
Cells(j, Next Next
+
2)
= y(j)
i
=
bilden
0
For
i L
= =
Next L
n
j
'M i t t e l w e r t L
n
= y(j)
1 L
To +
n
Cells(m,
n
+
5
+
n)
=
L
i)
i
=
L
/ n
Cells(m
+
i,
n
+
5
+
'E i g e n v e k t o r For
i
i i
ii
=
1 To
y(i) = Cells(i
1
n
/ L n +
^ m 3)
* x(i) = y(i)
Next i '0 b e r p r f i f u n g For
=
1
To
z (i)
i
=
0
For
j
=
1
n To
p = a(i, If i = j
;!
z(i)
=
n j) Then
z(i)
p + p
= p-
L
* y(j)
i
i Next
J i
Next i
j
For
i = 1 To n Cells(i, n + Next i
i
4)
=
z(i)
Die Prozeduren werden durch die nachfolgenden Menfipunkte aufgerufen.
Abb. 6-10 Menu zur Methode v.Mises
170 ...............
i
"
i i
i
6
VektorenundMatrizen
Die Testdaten zum vorherigen Beispiel sehen wir in den Abbildungen 6-11 und 6-12. Im Bereich AI:D4 ist die Matrix A wiedergegeben und im Bereich FI:F4 zun~ichst der Startvektor.
Abb. 6-11 1.Teil der Auswertung zum Testbeispiel
In den gleichen Bereich werden nacheinander die ermittelten Vektoren gespeichert. Die zugehOrigen Quotienten finden Sie for die 10 Iterationsschritte im Bereich JI:M10. In Mll steht der Mittelwert der letzten ~,-Werte, der for die Bestimmung des Eigenvektors genommen wird. Dieser Eigenvektor steht im Bereich GI:G4.
Abb. 6-12 2.Teil der Auswertung zum Testbeispiel
Die l~lberprOfung der Daten nach der Formel (6.4.2) zeigt im Bereich HI:H4 den angen~iherten Nullvektor. Es bleibt zum Schluss noch nach zu halten, dass die Eigenkreisfrequenz des Tr~gers durch Umstellung von (6.4.7) lautet
~=
2. E.. I__: 3,595 9 .I m. h-4
(6.4.16)
171
6.4 Eigenwertprobleme
Ubungen Nicht immer konvergiert die Methode v. Mises g e g e n einen Grenzwert. Beispiel:
A=
/,oo ,o/ /!/ -2 0
,x (~ =
.
1
Untersuchen Sie den Fall u n d finden Sie die L6sung. Programmieren Sie ein weiteres Verfahren zur Bestimmung yon Eigenwerten.
172
7 Pseudozufallszahlen
7
PseudozufalIszahlen
7.1
Die Eigenschaften der Pseudozufallszahlen
Pseudo Zufallszahlen
Mit Computern ist es zwar nicht m6glich, echte Zufallszahlen zu erzeugen, aber man kann Zahlenfolgen erhalten, die im halboffenen Intervall [0,1) hinreichend gleichm~tlgig verteilt sind. Diese bezeichnet man als Pseudozufallszahlen. Hinreichend gleichm~.lgig verteilt bedeutet, dass bei einer ausreichenden Anzahl von Pseudozufallszahlen und bei jeder Unterteilung des Intervalls, in allen Teilintervallen die gleiche Anzahl Treffer liegt.
7.2
Integration nach der Monte Carlo Methode
,~ .,~
Die Gleichverteilung der Pseudozufallszahlen nutzt man in vielen Bereichen aus, um VerhS.ltnisse auszudrticken. So ist auch die Integration als Verh~.ltnis von bekannter zu unbekannter Fl~tche mittels Pseudozufallszahlen m6glich.
Monte Carlo Methode
Dieses Verfahren wird als Monte Carlo Methode bezeichnet.
Abb. 7-1 Viertelkreis im Quadrat
Die Integration einer Fl~iche geht v o n d e r Uberlegung aus, wenn eine Gleichverteilung auf einem Intervall vorliegt, dann kann man mit zwei Intervallen eine Ebene aufspannen, auf der alle Punkte dieser Intervalle in der Ebene ebenfalls gleich verteilt sind.
173
7.2
Integration nach der Monte Carlo Methode Betrachten wir dazu in Abbildung 7-1 die Darstellung eines Viertelkreises und ein Quadrats. Nehmen wir weiterhin an, der FI~icheninhalt des Viertelkreises sei unbekannt und der des Quadrats gegeben mit A = a 2. Die Oberlegung ist nun sehr einfach. Erzeugt man jetzt hinreichend viele Zufallspunkte im Quadrat, so mOsste dass Verh~iltnis der Punkte im Quadrat zu den Punkten im Viertelkreis im gleichen Verh~iltnis stehen wie die Fl~ichen
nK = AK . no. Ao
(7.2.1)
Ein Treffer im Viertelkreis liegt dann vor, wenn gilt 2
2
Z x "~-Zy
2
.
Tab. 7-1 Algorithmus zur Monte-Carlo-Methode
174
(7.2.2)
7 Pseudozufallszahlen Wir schreiben nun eine Prozedur, die in zwanzig Programmschleifen den Inhalt eines Viertelkreises berechnet. Code 7-1 Fl~ichenberechnun eines Viertelkreises nach der Monte-C~!o-Methode ................................................................... Option Explicit Sub
MonteCarlo_Test
()
Dim Dim
x, n,
y, z A s D o u b l e m As Long
Dim
i,
j As
Long
ThisWorkbook. n = i000000
Worksheets
("MonteCarlo"
) .C e l l s . C l e a r
Randomize Cells(l, 2) z = Timer For
i m
= =
1 To
x
j
= 1 To n = Rnd(z)
y
: Rnd(z)
If
x m
End Next j Cells(i,
i , Next i End Sub
20
0
For
,
= Atn(1)
* x + y = m+ 1
* y
<
1 Then
If i)
=
Str(m
/ n)
1'
i i
Obwohl es sich nur um eine einfache Berechnung handelt, wollen wir diese auch tiber ein MenO aufrufbar machen.
Abb. 7-2 Menti zur Monte-Carlo-Methode
Ein Testlauf mit n=l.000.000 lieferte bei 20 Durchl~iufen eine Genauigkeit nur bis zur zweiten Nachkommastelle. Rechts oben (Spalte B) zum Vergleich der exakte Wert aus ATN(1).
175
7.2
Integration nach der Monte Carlo Methode
Abb. 7-3 Testergebnisse zur Monte-Carlo-Methode
Auch das liegt in der Eigenschaft der Pseudozufallszahlen. Es kommt nicht immer das gleiche Ergebnis heraus, wenn die Anzahl der Versuch nicht hinreichend ist. So gibt es immer wieder ,,Ausreilger".
ZufallszahlenGenerator
Bevor wir nun zu einem Beispiel kommen, miissen wir uns noch mit dem Zufallszahlen-Generator befassen. Die Rnd-Funktion liefert einen Wert aus dem halboffenen Intervail [0,1). "........................................................................................................................................................................................ !
i ..................................................................................................................................................................
I i[........................................................................................................................................................................................................................... R n d (Z a h l ) ."
Der Wert von Zahl bestimmt, wie die Zufallszahl generiert wird. FOr jeden gegebenen Standardwert wird dieselbe Zufallszahlenfolge generiert, daher ist auch eine Pseudozufallszahlenfolge alles andere als zuf~llig. Denn bei jedem nachfolgenden Aufruf der Rnd-Funktion, dient die vorherige Zahl als Startwert for die n~ichste Zahl in der Folge.
176
7 Pseudozufallszahlen
Damit nicht immer die gleichen Pseudozufallszahlen erzeugt werden, gibt es die Randomize-Funktion. Sie muss vor dem ers.......................................................................................
.............................................................................
Randomize
Sie wird ohne Argument ausgefOhrt und initialisiert den Zufallszahlengenerator auf der Basis der Systemzeit. Oft wird ein Intervall [a, b] mit Zufallszahlen ben6tigt. Die Erzeugung von Pseudozufallszahlen bei beliebiger [a,b]Gleichverteilung erh~ilt man, in dem man die Verteilungsfunktion y = F(x) = ( x - a ) ~(b-a) (7.2.3) nach x aufl6st. Die nachfolgende Anweisung erzeugt Pseudo-zufallszahlen im
Darin ist x die letzte Pseudozufallszahl und die kleinste darstellbare Zahl, z.B. 1E-308 for eine Double-Flielgkomma-Zahl. Sie ist notwendig, damit aus einem halboffenen Intervall ein geschlossenes wird.
Beispiel: Bestimmung der FRicheeines Blechteils
Abb. 7-4 Fl~iche eines Blechteils
Fldche eines Blechteils
FOr das in Abbildung 7-4 dargestellte Blechteil ist der Fl~cheninhalt gesucht. Nun gibt es dafOr zwar Formeln, aber wir wollen den Fl~.cheninhalt mit der Monte-Carlo-Methode bestimmen. 177
7.2
Integration nach der Monte Carlo Methode Tab. 7-2 Fl~ichenberechnung des Blechteils
Als Vorlage k6nnen wir hier den Testalgorithmus nehmen. ,..C...g~..tT:~ ........~...a...c-he..n~.e.re.c.hnu.n..g-ie.s.-B...!..e.c..h..t.ei!s-..n..ac...h.....der...M~.nte.-c~.!9:Me.t~e
............................................................................................
Option E x p l i c i t Sub MonteCarlo_Blechteil D i m x, y, z, e, A As D i m n, m As L o n g D i m i, j As L o n g
,J
() Double
ThisWorkbook.Worksheets ( " B l e c h t e i l " ) .C e l l s . C l e a r n = InputBox("Anzahl Durchl~ufe-")
;9...........................................................................................................................................................................................................................
178
i
7 Pseudozufallszahlen Randomize A
=
160
z
=
Timer
*
e
=
IE-308
Cells(l, For
i m
i i
i)
= =
160
1
=
A
To
20
1
To
t
0
For
j x
= =
yIf
+
e)
*
Rnd(z)
-
80
(160
+
e)
*
Rnd(z)
-
80
* y)
<=
80
Sqr(x
* x
y
<=
m End End Next
n
(160
If
=
+
65 m
+
y
Then
Then 1
If
If
j
Cells(i, Next End Sub
* Atn(1)
2)
=
Str(A
* m
/ n)
i
i 3
t........................................................................................................................................................................................................................... J
Auch diese Berechnung bekommt einen Men0aufruf.
Abb. 7-5 Menti zur Fl~ichenberechnung
Die Auswertung (Abbildung 7-6) zeigt in der Spalte A den berechneten Fl~icheninhalt der gesamten Kreisfl~iche und in Spalte B die Bestimmungen des Blechteils nach der Monte-CarloMethode.
Ubungen Schreiben Sie die Prozeduren so um, dass auch Testergebnisse mit unterschiedlichen Laufwerten n ausgegeben werden. Ftigen Sie beim Blechteil die exakte Berechnung hinzu.
179
7.3
Probabilistische Simulation
Abb. 7-6 Blechteilfl~iche nach der Monte-Carlo-Methode
7.3
Probabilistische Simulation
Probabilistische Simulation
Was wir zuvor tiber die Eigenschaft von Pseudozufallszahlen gesagt haben, dass sie bei hinreichender Anzahl eine Gleichverteilung auf einem Intervall garantieren, lfisst sich auch in anderen Bereichen anwenden. Ein Bereich ist die Simulation von Wahrscheinlichkeitsmodellen. Man spricht hier von probabilistischer Simulation. Eine der ersten A n w e n d u n g e n war die Simulation der Diffusion von Neutronen durch die Bleiw~inde von Kernreaktoren. Dann k a m e n Warteschlangen- und Optimierungsprobleme hinzu. Heute gibt es Simulationen in allen Bereichen.
Beispiel: WarteschlangenproblemMaschinenwartung Wa rtes c h la n g enproblem Maschinenwartung
180
Grundlage for eine solche Simulation sind Wahrscheinlichkeitsbetrachtungen. N e h m e n wir an, eine Person bedient einige Maschinen. Dann kann sie sich beim Ausfall mehrerer Maschinen nur um eine kOmmern. Erst w e n n diese wieder funktioniert, kann sie sich um eine andere ausgefallene Maschine ktimmern. Bedient diese Person nun zu viele Maschinen, so kann es zu ei-
7
Pseudozufallszahlen
nem erheblichen Produktionsausfall kommen. Umgekehrt ist die Person bei zu wenigen Maschinen nicht vollbesch~iftigt. Der Ausfall von Maschinen ist zuf~illig. Mit Langzeitstudien kann man jedoch eine gewisse Wahrscheinlichkeitsverteilung angeben. Nehmen wir an, es sei eine Anzahl n Maschinen gegeben, die von einer Person bedient werden. Wir betrachten einen l~ingeren Zeitraum in Zeitschritten t. Wir nehmen weiterhin an, dass mit einer Wahrscheinlichkeit von x-At eine Maschine in t ausf~illt. Ebenso sei die Wahrscheinlichkeit y.t gegeben, dass innerhalb von t die Reparatur wieder beendet ist. Die letzte Wahrscheinlichkeit w steht daftir, dass zu einem bestimmten Zeitpunkt t sich m Maschinen in der Warteschlange befinden. Setzt man lim w ( t ) = w m , (7.3.1) t---)oo
so ergibt sich ein System von Differenzengleichungen (7.3.2)
y. w 1 = m. x. w o Y . Wm+ , - [ x ( n - m ) + y ] w m - x ( n -
m + 1)win_ ,
ftir m=2,3,4,..
Erkennbar ist die Rekursionsformel y . Wm+ 1
"
-
x(n - m)w m .
(7.3.3)
Da diese mit Fakult~it w~ichst, kann es zu einem erheblichen Rechenaufwand kommen, den man bei der probabilistischen Simulation umgeht. Tab. 7-3 L6sungsalgorithmus Maschinenwartung Eingabe der erforderlichen Parameter: At als Zeitintervall in Sekunden t.... als Betrachtungszeitraum in Minuten xe [0,1) Wahrscheinlichkeit for den Ausfall einer Maschine in At ye[0,1) Wahrscheinlichkeit for die Reparatur einer Maschine in At Randomize Startbedingung w=0, z=0 t=l (1) tmax Ausfallwahrscheinlichkeit z,=Rnd(z) 181
7.3
Probabilistische Simulation
Der Algorithmus ist offensichtlich einfach zu programmieren. Code 7-3 Einfaches Modell einer Maschinenwartung t ...........................................................................................................................................................................................................................
Option Sub
i
Explicit
Maschinenwartung 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 ( " M a s c h i n e n w a r t u n g " ) . S h a p e s Shp. D e l e t e Next ThisWorkbook.Worksheets("Maschinenwartung").Cells.Clear Range("Al:Bl").Select Selection.MergeCells : True Selection. Font.Bold = True Selection. Font. Italic : True Selection.Value = "Maschinenwartung" Range("A-B") .ColumnWidth = "i0" R a n g e ( "C-C" ) . C o l u m n W i d t h = "2" R a n g e ( "A2 :A 1 6 " ) .S e l e c t Selection. Font.Bold : True Selection. Font. Italic : True Range("A2") : ChrW(916) & "t [s]" Range("A3") = " t m a x [s]" Range("A4") = "x" Range("A5") = "y"
...........................................................................................................................................................................................................................
182
a
7 Pseudozufallszahlen
Range("Dl:El").Select Selection.MergeCells Selection. Selection.
= True
Font.Bold = True Font. Italic = True
Selection.Value
"Auswertung"
Range("D2:E2").Select Selection.
Font.Bold
Selection.
Font. Italic
Range("D2")
:
"t
Range("E2")
=
"w"
= True = True
[s]"
Selection.NumberFormat
-
"0"
Range("B2").Select End
Sub
Sub
Maschinenwartung_Testdaten Cells
(2,
2)
=
1
Cells
(3,
2)
=
360
Cells(4,
2)
=
0.3
Cells(5,
2)
=
0.4
End
()
Sub
Sub
Maschinenwartung_Auswertung Dim
w,
t,
dt,
Dim
x,
y,
z As
dt
= Cells
tm
= Cells(3,
x y
(2,
tm,
i As
()
Long
Double 2) 2)
= Celis(4, = C e l l s (5,
2) 2)
Randomize z = Timer =
2
w = For
i
0 t
=
0 To
tm
Step
dt
z = Rnd(z) If
z <= w
End If
Then +
1
If w > 0 Then z = Rnd(z) If z <= y Then w End
End
x
= w
= w-
1
If
If
...........................................................................................................................................................................................................................
! J
183
7.3
Probabilistische Simulation 1
:
1
+
Cells(i, Cells(i, Next t End Sub Sub
End
1
4) 5)
= t = w
Warteschlange_zeigen() Range("D3-E363").Select Charts.Add ActiveChart.ChartType = xlXYScatterLinesNoMarkers ActiveChart.SetSourceData Source-= Sheets("Maschinenwartung").Range("D3-E363"), _ PlotBy-=xlColumns ActiveChart. SeriesCollection(1).Name = "= ....W a r t e s c h l a n g e ...... ActiveChart.Location Where:= n xlLocationAsObject, Name-="Maschinenwartung" With ActiveChart .HasTitle = True .ChartTitle.Characters.Text = "Warteschlange" .Axes(xlCategory, xlPrimary).HasTitle = True .Axes(xlCategory, _ xlPrimary).AxisTitle.Characters.Text = _ "t [ S e k . ] " .Axes(xlValue, xlPrimary).HasTitle = True .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = _ "Anzahl Maschinen" End With ActiveWindow.Visible = False Sub
Sub
Grafik_16schen () 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 !I S h p .D e l e t e Next i End Sub
("Maschinenwartung")
.Shapes
!...........................................................................................................................................................................................................................
j i J
Die Symbolleiste erh~.lt das in der nachfolgenden Abbildung dargestellte Ment~.
184
7 Pseudozufallszahlen
Abb. 7-7 Menti zur Maschinenwartung
Bei der Auswertung der Testdaten ergeben sich ~ihnliche Daten wie in Abbildung 7-8 dargestellt.
Abb. 7-8 Maschinenwartungmit Testdaten
185
7.3
Probabilistische Simulation
Ubungen Interessant ist der Wirkzusammenhang zwischen den Wahrscheinlichkeiten x und y. Er l~isst sich an diesem einfachen Beispiel anschaulich studieren. Nattirlich k/3nnen n Maschinen auch von p Personen bedient werden, die wiederum nur zu bestimmten Zeiten (Pausen, Arbeitszeit) zu Verftigung stehen. Sie sehen, mit steigender Komplexit~t w~ichst die Realit~itsn~ihe.
Beispiel: Ermittlung der Lebensdauervon Pumpenventilen Lebensdauerermittlung von Pumpenventilen
Ein Unternehmen, z. B. der chemischen Industrie, setzt in der Produktion Pumpen ein. Die Pumpen besitzen drei Einlass- und drei Auslass-Ventilen. Wird nur ein Ventil unbrauchbar, muss die Pumpe zur Instandsetzung auger Betrieb gesetzt werden. Jede Ventilgruppe (Einlass oder Auslass) bildet eine Montageeinheit.
Abb. 7-9 Schemader Pumpeneinheiten
Ftir die Instandhaltung, die nach der besten LOsung sucht, ergeben sich unterschiedliche Verhaltensweisen. 1. Methode: Nur Ventile die defekt sind werden ausgetauscht. 2. Methode: Ist ein Ventil einer Gruppe defekt, wird die gesamte Gruppe tiberholt. Dabei wird das defekte Ventil ersetzt und alle anderen, deren durchschnittliche Nutzzeit tiberschritten ist. 3. Methode:
186
7 Pseudozufallszahlen Ist ein Ventil einer Gruppe defekt, werden alle Ventile der Gruppe ausgetauscht. Die anfallenden Kosten sind bekannt und lassen sich in Montagestunden ausdrOcken. So ergeben sich als Kostengruppen: 9
Pumpe stilllegen und Instandhaltung vorbereiten
9
AnschlOsse demontieren
9
Ventilgruppe demontieren
9
Ventil demontieren
9
Ventil reparieren
9
Ventil montieren
9
Ventilgruppe montieren
9
AnschlOsse montieren
9
Pumpe in Betrieb nehmen
Die durchschnittliche Lebensdauer eines Ventils ist aus jahrelangen Untersuchungen ebenfalls bekannt, so dass sich die Ausfallwahrscheinlichkeit vereinfacht durch eine Gerade darstellen l~isst.
durchschn. Lebensdauer Abb. 7-10 W ahrscheinlichkeitsfunktion der durchschnittlichen Lebensdauer
Entwerfen wir zun~ichst den Algorithmus ftir die erste Methode. Tab. 7-4 L6sungsalgorithmus Ersatzproblem Eingabe der erforderlichen Parameter: Schrittweite At in 100h tm~ x als Betrachtungszeitraum in 100h 187 ~
~
:
~
7.3
188
Probabilistische Simulation
7 Pseudozufallszahlen
FOr das Programm erstellen wir wieder ein Formblatt, und die Berechnung mit Testdaten.
189
7.3
Probabilistische Simulation
.Co.de..7-.4_ Ersatzproble.mn___a.chde_r.!....Methode. ......................................................................................................................................................................................... Option Sub
Explicit
Ersatzproblem_Leer() Dim Shp As Shape For Each Shp In Worksheets("Ersatzproblem").Shapes Shp. D e l e t e Next ThisWorkbook.Worksheets("Ersatzproblem").Cells.Clear R a n g e ( " A I - B I " ) .S e l e c t Selection.MergeCells = True Selection. Font.Bold = True Selection. Font. Italic = True Selection.Value = "Instandhaltungsdaten" R a n g e ( " A - A " ) .C o l u m n W i d t h = "30" Range("B-B") .ColumnWidth = "i0" Range("C-C") .ColumnWidth = "2" Range("D-I") .ColumnWidth = "i0" R a n g e ( "A2 9A 2 0 " ) .S e l e c t Selection. Font.Bold = True Selection. Font. Italic = True Ranc_e("A2") : ChrW(916) & "t [ 1 0 0 h ] " Ranc_e("A3") : "tmax [100h]" Rance("A4") : "tNutz [100h]" Rance("A5") = "Pumpe ausschalten [hi " R a n c e ("A6") = " A n s c h l O s s e demontieren [h] " R a n c e ("A7") = " G r u p p e d e m o n t i e r e n [h] " Ranc_e("A8") = "Ventil demontieren [h]" Rance("A9") = "Ventil reparieren [hi" Ranc_e("Al0") = "Ventil montieren [h]" Ranc,e ( " A l l " ) = " G r u p p e m o n t i e r e n [h] " Ranc<e("Al2") = "Anschl~isse montieren [h]" R a n c re("Al3") = " P u m p e e i n s c h a l t e n [h]" R a n c re ( " A I 5 " ) = " A u s w e r t u n g " R a n c re ( " A I 6 " ) = " M o n t a g e z e i t [h] " R a n c re("Al7") = " A u s f a l l z e i t [h]" R a n c re("Al8") = " S t a n d z e i t Einlass [100h]" Ranc~e("Al9") = "Standzeit Auslass [100h]" R a n c re ( "B2 -B20" ) .S e l e c t Selection.NumberFormat = "0.0"
i
190
R a n g e ( "DI- Ii" ) .S e l e c t Selection.MergeCells = True Selection. Font.Bold = True
i
7 Pseudozufallszahlen
Selection.Value : "Auswertung" Range("D2.j2").Select Selection. Font.Bold = True Selection. Font. Italic : True Selection.NumberFormat : "0" [100h]" Range("D2") = "El [100h]" Range("E2") = "E2 [100h]" Range("F2") = "E3 [100h]" Range("G2") = "AI [100h]" Range("H2") = "A2 [100h]" Range("I2") = "A3 Range("B2").Select End Sub Sub
Ersatzproblem_Testdaten C e l l s (2, 2) = 1 C e l l s (3, 2) = i 0 0 0 C e l l s (4, 2) = i0 C e l l s ( 5 , 2) = 0.5 C e l l s ( 6 , 2) = 0.7 C e l l s ( 7 , 2) = 0.4 C e l l s ( 8 , 2) = 0.8 C e l l s ( 9 , 2) = 0.3 Cells(10, 2) = 0.6 Cells(ll, 2) = 0.4 Cells(12, 2) = 0.6 Cells(13, 2) = 0.2 End Sub Sub
i i i i
! i i
()
Ersatzproblem_Auswertungl() D i m dt, tm, x, tn A s D o u b l e D i m zl, z2, z3, z4, zS, z6, z7, z8, z9 A s D i m t, z, zm, za A s D o u b l e D i m i, j, e, a A s L o n g D i m E V ( 3 ) , E z ( 3 ) , A V ( 3 ) , A z ( 3 ) As L o n g D i m Se, Ae, Sa, A a dt = C e l l s (2, t m = C e l l s (3, tn = C e l l s ( 4 , zl = C e l l s ( 5 , z2 = C e l l s ( 6 , z3 = C e l l s (7, z4 : C e l l s ( 8 , z5 : C e l l s ( 9 ,
Double
2) 2) 2) 2) 2) 2) 2) 2)
i i i
i. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
a
191
7.3
Probabilistische Simulation
: ....................
.......
........
z7
= Cells
z8
=
Cells(12,
2)
z9
=
Cells(13,
2)
For
j
J I
Next
i
Se
=
1 =
0
Az(j)
=
0
2)
3
j :
zm
To
Ez(j)
0-
Ae
Sa=0i
(11,
..................................................................................................................................................................................................................
:
0
Aa=0
:
0
i
=
2
z
=
Timer
Randomize For
t
=
dt
To
tm
Step
dt
i
'E i n l a s s v e n t i l e e
=
0
For
j
=
z
=
x
=
If
1
To
EV(j) z
<=
e
=
/ x
e
Ez(j)
tn
Then +
1
=
Ez(j)
+
Cells(Ez(j) Se = Se +
+ 2, EV(j)
Ae
1
=
Ae
+
EV(j)
=
0
End Next
3
Rnd(z)
1 3
+
j)
=
EV(j)
6
+
j)
=
AV(j)
If
j
I
'A u s l a s s v e n t i l e a
=
0
For
j
=
z
=
x
=
If
1
To
3
Rnd(z) AV(j) z
<=
a
=
a
Az(j)
/ x
tn
Then +
1
= Az(j)
Cells(Az(j)
J i i
Next
+ +
Sa
=
Sa
+ AV(j)
Aa
=
Aa
+
AV(j) End If
=
0
2,
1
1 i
j
[........................................................................................................................................................................................................................... j
192
7 Pseudozufallszahlen
i
'Montage-
und
If
e
>
0
Then
zm
=
zm
+
zl
+
z9
za
=
za
+
zl
+
z2
z8
+
z9
End If
0
Or
a
+
z3
+
z4
+
z5
+
z6
+
z7
+
If e
>
0
Then
zm
:
zm
+
z2
zm
=
zm
+
e
End If
Ausfallzeiten
>
+ *
z3
+
z7
+
z8
(z4
+
z5
+
z6)
z3
+
z7
+
z8
(z4
+
z5
+
z6)
If a
>
0
Then
zm
=
zm
+
z2
zm
=
zm
+
a
=
1
To
3
End
+ *
If
!
'Z e i t s c h r i t t For
j
EV(j)
:
EV(j)
+
iV(j)
=
iV(j)
+dt
Next Next
End
dt
j
t
Cells(16,
2)
=
Cells(17,
2)
=
zm za
Cells(18,
2)
=
Se
/ Ae
Cells(19,
2)
=
Sa
/ Aa
!
Sub
Die 2. Methode ersetzt auch nicht defekte Ventile, wenn die H~ilfte der Lebensdauer erreicht ist.
Tab. 7-5 L6sungsalgorithmus Ersatzproblem 2. Methode Randomize z=Timer, Startwert Zufallszahl t = A t ( A t ) tmax
Ausfall eines Einlassventils e=0
j= 1 ( 1 ) 3 z=Rnd(z) 193 ~ ~ ~ 2 P . - ~ :
7.3
194
Probabilistische Simulation
7 Pseudozufallszahlen
Fgr die zweite Methode wird lediglich eine weitere Prozedur ben6tigt. ~ . g . ~ , ! : ~ ........ ~ . ~ g ~ ~ g . m . . ~ : , , ~ , ~ g . ~
........................................................................................................................................................................................................................... E
Sub Ersatzproblem_Auswertung_2() Dim dt, tm, x, tn As Double Dim z l ,
z2,
z3,
z4,
z5,
z6,
i i z7,
z8,
z9 As D o u b l e
...........................................................................................................................................................................................................................j
195
7.3
Probabilistische Simulation
.....................i ~ i m - ~ i
.........~.i ........~ m 7 .....- # . 7 - ~
j,
k,
e,
i,
a As
Dim Dim
EV(3), Ez(3), AV(3), Se, A e , Sa, A a
dt
= Cells(2,
2)
tm tn
= Cells(3, = Cells(4,
2) 2)
l
zl
= Cells(5,
2)
i
z2 z3
= Cells(6, = C e l l s (7,
2) 2)
ii J
z4
= Cells(8,
2)
z5
= Cells(9,
2)
z6 z7
= Cells(10, = Cells(ll,
2) 2)
z8 z9
= Cells = Cells
2) 2)
For
j
:
Ez(j) Az(j) Next j
(12, (13,
1 To 0 0
Ae
=
0
S a = 0: A a z m = 0: z a i = 2 z = Timer Randomize For t = dt
= =
0 0
=
0:
............................................................................................................................................................................................
Long Az(3)
As
Long
3
= =
Se
i
........~ o ; ; i ~ l a
Dim
To
tm
Step
dt
i i 'E i n l a s s v e n t i l e e = 0 For j = 1 To z : Rnd(z) x If
3
= EV(j) z <= e = e Ez(j)
/ tn x
Then + 1 = Ez(j)
Cells(Ez(j) Se = Se Ae = Ae EV(j) = E n d If Next j
i i
'
!
!
Auslassventile
196
+ +
+ EV(j) + 1 0
2,
1 3
+
j)
= EV(j)
7 Pseudozufallszahlen a
=
0
For
j
=
z
=
x
=
If
1
To
3
Rnd(z) AV(j) z
<=
a
=
/ x
a
Az(j)
tn
Then +
1
=
Az(j)
Cells(Az(j)
1
2,
Sa
:
Sa
+
AV(j)
Aa
=
Aa
+
1
AV(j)
=
0
End Next
+ +
6
+
j)
=
AV(j)
If
j
l
'MontageIf
und e
If
Ausfallzeiten >
0
Then
zm
=
zm
+
zl
+
z9
za
=
za
+
zl
+
z2
+
z8
+
z9
End
>
0
Or
a
+
z4
+
z5
+
z6
+
z7
+
If e
>
0
Then
zm
=
zm
+
z2
zm
=
zm
+
e
=
1
To
For
k If
End
z3
+
z7
+
z8
(z4
+
z5
+
z6)
tn
/
3 >=
=
zm
Ez(k)
=
+
z4
2 +
Ez(k)
Then z5
+
Cells
( E z (k)
Se
=
Se
+
EV(k)
Ae
=
Ae
+
1
EV(k)
=
0
End Next
+ *
EV(k) zm
If
z3
+
+
z6
1
2,
3
+
k)
=
EV(k)
=
AV(k)
If
k
If a
>
0
Then
zm
=
zm
+
z2
zm
=
zm
+
a
=
1
To
For
k If
AV(k) zm
+ *
z3
+
z7
+
z8
(z4
+
z5
+
z6)
tn
/
3 >=
=
zm
Az(k)
=
+
z4
2 +
Az(k)
Then z5
+
Cells
(Az (k)
Sa
=
Sa
+
AV(k)
+
Aa : AV(k)
Aa =
+ 0
1
2,
+
z6
1 6
+
k)
i
i i
End
If
...........................................................................................................................................................................................................................
I
]97
7.3
Probabilistische Simulation
End
Next If
k
j, i 'Z e i t s c h r i t t For j = 1 To 3 EV(j) = EV(j) AV(j) = AV(j) Next j Next t Cells(16, 2) = z m Cells(17, 2) = z a Cells(18, Cells(19, End Sub
2) 2)
= Se = Sa
+ dt + dt
/ Ae / Aa
...........................................................................................................................................................................................................................
Die 3. Methode ersetzt auch nicht defekte Ventile einer Gruppe. Tab. 7-6 L6sungsalgorithmus Ersatzproblem 3. Methode
198 "
, / 7 ,
~
~
."
_.
7 Pseudozufallszahlen
199
7.3
Probabilistische Simulation
Und auch die dritte Methode wird als eigenst~ndige Prozedur integriert. _C..oae 7..-~ ......Ersatzprob!em_3. O...e..th~e ........................................................................................................................................................................................................................... Sub Ersatzproblem_Auswertung_3 () D i m dt, tm, x, t n A s D o u b l e D i m zl, z2, z3, z4, z5, z6, z7, z8, z9 A s D o u b l e D i m t, z, zm, za A s D o u b l e D i m i, j, k, e, a A s L o n g Dim EV(3), Ez(3), AV(3), Az(3) As Long D i m Se, Ae, Sa, A a dt tm tn zl z2 z3 z4 z5 z6 z7 z8 z9 For
= = = = = = = = = = = =
C e l l s (2, C e l l s (3, Cells(4, Cells(5, Cells(6, C e l l s (7, Cells(8, Cells(9, Cells(10, Cells(ll, C e l l s (12, Cells(13,
j = 1 To Ez(j) = 0 Az(j) = 0 Next j S e = 0: A e = S a = 0: A a = z m = 0: za = i = 2 z = Timer
200
3
0 0 0
2) 2) 2) 2) 2) 2) 2) 2) 2) 2) 2) 2)
7 Pseudozufallszahlen Randomize For
t
-
dt
To
tm
Step
dt
'E i n l a s s v e n t i l e e
=
0
For
j
=
z
=
x
=
If
1
To
3
Rnd(z) EV(j) z
<:
e
:
/ x
e
Ez(j)
tn
Then +
1
:
Ez(j)
Cells(Ez(j)
1
2,
Se
:
Se
+
EV(j)
Ae
:
Ae
+
1
EV(j)
:
0
End Next
+ +
3
+
j)
:
EV(j)
6
+
j)
:
iV(j)
If
j
'A u s l a s s v e n t i l e a
=
0
For
j
=
z
=
x
:
If
1
To
3
Rnd(z) iV(j) z
<:
a
=
/ x
a
iz(j)
tn
Then +
1
-
iz(j)
+
Cells(iz(j) =
Sa
+
AV(j)
Aa
:
Aa
+
1
iV(j)
:
0
und e
>
>
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 <= j T h e n 't a u s c h e n y : Cells(i, i) C e l l s ( i , I) : C e l l s ( j , Cells(j, I) = y i = i + 1
j =j E n d If Loop Until
i
i i)
i
-i i > j
' rekursive Aufrufe If v < j T h e n Call QuickSort(v, E n d If If i < b T h e n Call QuickSort(i, E n d If End Sub
j)
b)
i
...........................................................................................................................................................................................................................J
Eine Testprozedur erzeugt zunS.chst im Tabellenblatt Quicksort 100 Zufallszahlen. Danach werden sie mittels Quicksort sortiert.
Abb. 8-16 Menti zum Quicksort
Obungen Schreiben Sie einen alternativen Sortieralgorithmus (z. B. den BubbleSort) und vergleichen Sie Sortierzeiten und DurchlS.ufe.
Beispiel: StOcklistenorganisation Stf~cklistenorganisation
St~cklisten zusammen mit Fertigungspl~inen stellen ebenfalls einen Algorithmus dar, n~tmlich den der Herstellung eines Bauteils, einer Baugruppe oder einer Maschine. Sie sind mit die wichtigsten Datenstrukturen eines produzierenden Unternehmens.
231
8.4
Arbeiten auf Listenstrukturen Produkt I
I
l
,
I
I
1
I,
Abb. 8-17 Beispiel einer Produktstruktur
Wir betrachten ein Produkt, das sich aus Baugruppen und Elementen zusammensetzt. In unserem Beispiel besteht das Produkt aus zwei Baugruppen und zwei Einzelteilen. Die erste Baugruppe besteht aus zwei Einzelteilen, die zweite aus zwei Einzelteilen und einer weiteren Baugruppe. Diese Baugruppe enth~ilt zwei Einzelteile und ein Fertigteil, dass bei einem anderen Hersteller bestellt werden muss.
BaugruppenStackliste
Die tibliche Sttickliste ist die so genannte Baugruppen-Sttickliste. Sie ist einfach zu verwalten und aus ihr k6nnen alle anderen Dokumente abgeleitet werden. Wir gehen von der ersten Ebene der Produktdarstellung aus und erzeugen eine leere Sttickliste.
Code 8-6 Stticklistenor anisation Option Explicit D i m B l a t t As W o r k s h e e t Sub Stfickliste_Neu ( ) D i m N a m e As S t r i n g D i m I n d e x As I n t e g e r Name i i i i I
= I n p u t B o x ( "Stficklisten-Kennung
eingeben [" )
'Uberprfifung, ob Stfickliste v o r h a n d e n For E a c h B l a t t In S h e e t s If N a m e = B l a t t 9 N a m e T h e n M s g B o x "Stfickliste b e r e i t s v o r h a n d e n " ,
!
vbOKOnly
t...........................................................................................................................................................................................................................
232
i! i J
8 Algorithmen aufDatenstrukturen
End Next
Exit If
Sub
'St0ckliste neu erzeugen Set Blatt = Worksheets.Add Blatt.Name = Name Call StOckliste_Formblatt End Sub Sub
S t ~ i c k l i s t e _ L 6 s c h e n () D i m N a m e , t As S t r i n g t = ThisWorkbook.ActiveSheet.Name Name = InputBox("Zu 16schende StOcklisten-Kennung eingeben!", " L 6 s c h u n g " , t)
'UberprOfung, ob St~ckliste vorhanden F o r E a c h B l a t t In S h e e t s If N a m e = B l a t t . N a m e T h e n If M s g B o x ( " S t ~ c k l i s t e wirklich 16schen?", vbYesNo, "ACHTUNG!") = vbNo Then Exit Sub E n d If Blatt.Delete Exit Sub E n d If Next End Sub Sub
S t ~ i c k l i s t e _ F o r m b l a t t () D i m M y D o c As O b j e c t Set MyDoc = ThisWorkbook.ActiveSheet MyDoc .Activate MyDoc.Cells. Clear
MyDoc.Range("Al") = MyDoc.Name & "- B a u g r u p p e " MyDoc.Range("Al:Fl").Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = False ' .Orientation = 0 i .AddIndent = False ~ i . I n d e n t L e v e l = 0 i i........................................................................................................................................................................................................................... ]
233
Arbeiten auf Listenstrukturen
8.4
........................................ 7 ~ T g g ~ g T i - ~
.......a ......~ ; ~ ~ g -
.ReadingOrder .MergeCells
....................................................................................................................................................................
= xlContext = True
End With With Selection 9 .Name
=
"Arial"
9S i z e
=
14
.Strikethrough 9S u p e r s c r i p t 9S u b s c r i p t
= False
.OutlineFont 9S h a d o w
= False = False = False
= False
9U n d e r l i n e
= xlUnderlineStyleNone
.ColorIndex
= xlAutomatic
End With Selection 9149
= True
MyDoc.Range("A2")
=
"Stufe"
MyDoc.Range("B2")
=
"PosNr."
MyDoc.Range("C2") MyDoc.Range("D2")
= =
"Menge" "Bezeichnung"
MyDoc.Range("E2")
=
"Ident-Nr."
MyDoc.Range("F2")
=
"Material"
MyDoc.Range("A2:A2").Select With
Selection
9V a l u e = "Stufe" .ColumnWidth = i0 End With MyDoc.Range("B2").Select With Selection 9V a l u e = "Pos.Nr." 9C o l u m n W i d t h = 7 End
With
MyDoc.Range("C2").Select With
Selection 9V a l u e = "Menge" .ColumnWidth = 8
End With MyDoc.Range("D2").Select
! {
With
Selection 9V a l u e = "Bezeichnung"
i i
.ColumnWidth With
! i
End
=
30
i
MyDoc.Range("E2").Select
i
With
i
Selection
........................... : ~ . ~
234 9
.
.
.
.
.
i ! i
.
.
.......~ . _ ~ . ~ g ~ p ~ . . i ~
..............................................................................................................................................................................
8 Algorithmen aufDatenstrukturen .............................................
......
.......
...........................................................................................................................................................................................................................
End With MyDoc.Range("F2").Select With Selection .Value = "Material" . C o l u m n W i d t h = 20 End With MyDoc.Columns("A:A").Select With Selection . N u m b e r F o r m a t = "@" .HorizontalAlignment = xlLeft .VerticalAlignment = xlBottom End With MyDoc.Columns("B:C").Select With Selection . N u m b e r F o r m a t = "0" .HorizontalAlignment = xlRight .VerticalAlignment = xlBottom End With MyDoc.Columns("D:F").Select With Selection . N u m b e r F o r m a t = "@" .HorizontalAlignment = xlLeft .VerticalAlignment = xlBottom End With
End Sub
M y D o c . R a n g e ( "A3 " ) .S e l e c t Sub S t O c k l i s t e _ S t r u k t u r () D i m M y D o c , M y D o c N e w As O b j e c t D i m Min, Max, M a x U , x A s I n t e g e r D i m N a m e , t As S t r i n g D i m i, j, k, s A s I n t e g e r Set MyDoc = ThisWorkbook.ActiveSheet MyDoc .Activate Max = MyDoc.UsedRange. Rows .Count N a m e = "S-" & M y D o c . N a m e
-
zl
'0berprOfung, ob St~ckliste vorhanden 'i F o r E a c h B l a t t In S h e e t s If N a m e = B l a t t 9 N a m e T h e n ii j l........................................................................................................................................................................................................................... j
235
8.4
Arbeiten auf Listenstrukturen
..........................................................ij
Box......
Exit End
.......
..........................
Sub
If
Next 'StNckliste Set Blatt Blatt.Name 'Mit Set
neu
erzeugen
= Worksheets.Add = Name
neuer
Stiickliste
MyDocNew
MyDocNew.
Act iva t e
MyDocNew.
Cells. Clear
Call
Stiickliste_Formblatt
'Ubernahme For
i = For
der
1 To j
=
Next Next
Daten
Max
1 To
MyDocNew.
6 Cells(i
+
2,
j)
= MyDoc.Cells(i
+
2,
j
i
'Aufl6sung Min
arbeiten
= ThisWorkbook.ActiveSheet
=
der
Struktur
0
Do x = Max For
0 = MyDocNew.UsedRange.Rows.Count - 2 i = Min + 1 To Max Name = MyDocNew. Cells(i + 2, 5) I f N o t N a m e = "" T h e n Set MyDoc = ThisWorkbook.Worksheets(Name) MaxU = MyDoc.UsedRange.Rows.Count - 2 For j = 1 To MaxU If
Not x
MyDoc.Cells(j
= x
+
+
MyDocNew.
Rows(i
Selection.
+ 2
Insert
MyDocNew.Cells(i MyDocNew. For
k
=
2 To
MyDocNew.
236
End Next j
Next If
k
i)
=
""
Then
+ x).Select
Shift-=xlDown +
Cells(i
2
+ x,
i)
+
2,
i)
+
2
+ x,
+
2,
k)
= _ +
1
6 Cells(i
MyDoc.Cells(j J i J
2,
1
k)
= _
j)
8 Algorithmen aufDatenstrukturen 1
End
--
Max
If
Next i Loop While x > 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 <= 0 . i T h e n Cells(i + i, 6) = " K r i t i s c h ! " E n d If Cells(i + I, 7) = e(i, i) Cells(i + i, 8) = S q r ( e ( i , 2)) If SL <= 0 . i T h e n Cells(i + i, 9) = S ( a ( i , i)) Cells(i + i, i0) = F ( a ( i , 2)) 'Aufsummierung von Pfadl&nge und Varianz If L < F ( a ( i , 2)) T h e n L = F ( a ( i , 2)) V = V + e(i, 2) Else Cells(i + i, ii) = S ( a ( i , i)) Cells(i + i, 12) = F ( a ( i , 2)) - e ( i , i) Cells(i + I, 1 3 ) = S ( a ( i , i)) + e(i, i) Cells(i + i, 14) : F ( a ( i , 2)) Cells(i + i, 15) = SL E n d If
! i i i
i........................................................................................................................................................................................................................... ]
250
8 Algorithmen aufDatenstrukturen Next i E n d If ! i C e l l s ( 2 , 16) : L ! i C e l l s ( 2 , 17) = Sqr(V) i ii........................................................................................................................................................................................................................... E n d Sub i J
Aufgemfen werden die Prozeduren wieder durch entsprechende Mentipunkte.
Abb. 8-28 Menti zum Netzplan PERT
Abb. 8-29
1. Teil Eingabedaten und Auswertungteil
Abb. 8-30
2. Teil restliche Auswertung
251
8.5
Arbeiten auf Baumstrukturen und Graphen
Obungen Erstellen Sie ein Programm, das nach der Struktursttickliste des vorangegangenen Kapitels einen Baum erstellt. Erstellen Sie aulgerdem ein Programm, das ebenfalls zur Struktursttickliste einen Gozintographen erstellt. Wer sich mit dem Projektmanagement weiter befassen m6chte, dem m6chte ich an dieser Stelle MS Project empfehlen.
252
9
Verhaltens-Algorithmen
Verhaltens-Algorithmen 9.1
Teile und Herrsche
Teile und Herrsche Die Strategie ,,Teile und Herrsche' (lat.: divide et impera) besteht darin, ein gegebenes Problem in verschiedene Teilprobleme aufzuspalten. Diese Teilprobleme m~issen gel6st werden. Dann muss eine Methode gefunden werden, die Teill6sungen zu einer Gesamtl6sung zusammen zu ftigen. Sind die Teilprobleme immer noch relativ grog, dann muss die ,,Teile und Herrsche" Strategie m6glicherweise noch einmal angewendet werden. Oft sind die entstandenen Teilprobleme vom gleichen Typ wie das Hauptproblem. In solchen F~illen formuliert man die wiederholte Anwendung des ,,Teile und Herrsche" - Prinzips als rekursive Prozedur. Damit werden immer kleinere Teilprobleme erzeugt die letztlich nicht weiter zergliedert werden mC~ssen.
Beispiel: Suchen nach der Bisektionsmethode B isektionsmethode Bei der Bisektionsmethode geht man von geordneten Datenstrukturen aus. Als Beispiel w~.hlen wir das Inhaltsverzeichnis dieses Buches. Es soil als geordnete Liste auf einem Tabellenblatt stehen. Diese Liste kann noch durch weitere Buchinhalte erg~tnzt werden, so dass ein brauchbares Suchverzeichnis entsteht. Jeder benutzt eine Oberschaubare Menge Fachbticher, die so effektiver genutzt werden k6nnen. Die Methode ist auch vom Suchen in Telefonb/~chern her bekannt und man geht wie folgt vor. Zun~tchst wird in der Mitte des Telefonbuches nachgesehen. Dann wird bestimmt, in welcher der beiden H~tlften des Buches der Begriff nun liegt. Diese H~.lfte wird wieder in der Mitte unterteilt und man geht ftir diese H~ilfte genauso vor. So gelangt man zu immer kleineren Datenmengen, bis letztlich ein Gefunden oder Nichtvorhanden als Ergebnis vorliegt.
253
9.1
Teile und Herrsche
Abb. 9-1 Schema einer Bisektionsmethode
Der Algorithmus besteht im Prinzip aus der Teilung von Datenstrukturen derart, dass immer das zu suchende Element in der Teilmenge ist. Dies muss zwangsl~iufig zum zu s u c h e n d e n Element ftihren. Tab. 9-1 Suchen nach der Bisektionsmethode
254
9 Verhaltens-Algorithmen Der Algorithmus ist genauso leicht zu programmieren wie es das Struktogramm darstellt. Das einzige Problem ist eine sichere Terminierung des Suchprozesses. Und hier genOgt in der Tat die Abfrage ob b>=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
*
<
e
i
i End
Sub
t
i........................................................................................................................................................................................................................... ]
Abb. 9-11 Menti zum Jeep-Problem
Die programmierten Testdaten liefern die nachfolgende L6sung.
Abb. 9-12 Beispielberechnung zum Jeep-Problem
Ubungen Erweitern Sie die Berechnung so, dass zus~itzliche Reservetanks mitgeftihrt werden k6nnen.
273
10.1
0
Der A meisena lgorith m us
Algorithmen ausderNatur Die Bionik, ein Fachgebiet das die Fachgebiete Biologie und Technik einschliegt, befasst sich mit in der Natur zu findender L6sungen, Strukturen und Prinzipien und wie weit sich diese for die Technik umsetzen lassen. Die Natur bietet eine Ftille von Optimall6sungen, yon denen die nachfolgenden zwei Beispiele nur einen kleinen Einblick wiedergeben k6nnen.
10.1
Der Ameisenalgorithmus
Ameisenalgorithmus
Der Ameisenalgorithmus wurde in der Tat den Ameisen abgeschaut. Es war der italienische Wissenschaftler Marco Dorigo, der 1991 erstmals diesen Algorithmus einsetzte. Die Ameisen errichten zwischen ihrem Ameisenhaufen und einer Futterquelle stets direkte Stralgen. Doch wie machen sie das, wenn sie schlecht sehen k6nnen und jeder Grashalm for sie ein fast untiberwindbares Hindernis ist? Daftir hat ihnen die Natur eine wunderbare Einrichtung gegeben. Ameisen besitzen am Hinterleib eine Drt~se, mit der sie den Lockstoff Pheromon produzieren k6nnen. Nachfolgende Ameisen orientieren sich an diesem Stoff und folgen mit hoher Wahrscheinlichkeit den am st~.rksten markierten Wegen. Doch wie kommt es dabei in der Regel zu den ktirzesten machbaren Wegen? Betrachten wir als einfaches Modell (Abbildung 10-1) einen Ameisenhaufen und eine Futterquelle. Zwischen beiden liegt nun ein Hindernis, das die Ameisen zwingt einen Umweg zu nehmen. Ftir eine Gruppe von Ameisen, die die Futterquelle zum ersten Mal besucht, ergeben sich zwei M6glichkeiten, links oder rechts um das Hindernis herum.
274
10 Algorithmen aus der Natur
Abb. 10-1 Ktirzeste machbare Wege der Ameisen
W~ihrend ihres Weges sondern die Ameisen einen Sexuallockstoff, also ein Pheromon ab. Da aber noch kein Pheromon vorliegt ist anzunehmen, dass sich die Gruppe teilt und die erste Gruppe nimmt den Mirzeren Weg (1) und erreicht die Futterquelle zuerst. Sie w~ihlt als Rtickweg wieder den kOrzeren Weg, da sie nun vom eigenen Pheromon des Hinwegs auch zurtick geleitet wird. Die zweite Gruppe (2) mit dem 1S.ngeren Weg kommt danach auch zur Futterquelle und nimmt nun, da der kOrzere Weg bereits doppelt mit dem Pheromon der ersten Gruppe gekennzeichnet ist als der l~ingere (nur einmal durch Gruppe 2), nun ebenfalls diesen Rtickweg. So kommt es zu einer erneuten VerstS.rkung der Wegkennzeichnung. FOr alle nachfolgenden Ameisen ist der Weg vorgegeben und wird immer stS.rker gekennzeichnet. Es entsteht eine Ameisenstralge. Sie sehen, eine einfache aber sehr wirksame Methode der Natur. Die Natur regelt dieses System aber noch weiter. Wind, Regen, Waldtiere und andere EinflOsse sorgen dafOr, dass nur die aktuellen Wege gekennzeichnet bleiben. Ein weiterer St/3rfaktor liegt darin, dass Ameisen sich durchaus auch einmal den l~ngeren Weg aussuchen k6nnen, bzw. andere Wege suchen. M6glicherweise finden Sie so einen noch Mirzeren 275
10.1
Der Ameisenalgorithmus
Weg bzw. es wird verhindert, dass ein Weg zu dominant wird und das Finden besserer L6sungen verhindert. Hier wirkt ein Mechanismus, den wir bei den genetischen Algorithmen noch kennen lernen werden und der dort als Mutation bezeichnet wird. Alle diese Mechanismen ~indern jedoch nichts am Grundprinzip. Die Frage ist nun, wie kann dieses Prinzip im Computer nachgebildet werden. Eine Pseudo-Ameise verh~tlt sich ebenso wie ihr nat0rliches Vorbild und macht ihre Entscheidung abh~ingig von der Pheromonauspr~igung aller m6glichen L6sungen. Weg eines Ha ndelsreisenden
Das klassische Modell ist der Weg eines Handelsreisenden, der nacheinander verschiedene Orte besucht. Umgesetzt for unsere Pseudoameise wird die St~irke des Pheromons durch eine Zahl gekennzeichnet, die in einer Entfernungsmatrix alle M6glichkeiten beinhaltet. Mit dieser Matrix kann die Pseudoameise eine Auswahl treffen. Tab. 10-1 Beispiel einer Pheromonmatrix
Pheromonmatrix
Monte Carlo Methode
276 ~,~-L~
,
.,
~.~
Die Auswahlwahrscheinlichkeit wird auf das Intervall (0,1) abgebildet und mittels Monte Carlo Methode eine zufallsbedingte Auswahl getroffen. Die Gewichtung erfolgt also durch die Faktoren aus der Pheromonmatrix. ZusS.tzlich k6nnen diese Faktoren noch durch eine Priorit~itsregel verstSrkt werden. Letztendlich ergibt sich aber immer eine prozentuale Verteilung wie sie ein Beispiel in Abbildung 10-2 zeigt.
10 Algorithmen aus der N a t u r
Abb. 10-2 Beispiel ffir Wahrscheinlichkeiten einer L6sungsauswahl im Ameisenalgorithmus
FOr eine Pseudoameise ai, for die sich j=l,..,n L6sungsmOglichkeiten ergeben, die in der Pheromonmatrix die Pheromonfaktoren pj besitzen und jeweils durch einen Wert wj einer Priorit~itsregel gewichtet werden, ergibt sich die Auswahlwahrscheinlichkeit 14'0 = n
g ij "P ij
"
(lO.1 l)
Z g ik "Pik
k=l Nach der Wegsuche ist die Pheromonablage der nfichste Schritt. Sie muss bei der Pseudoameise jedoch anders erfolgen als bei ihrem natOrlichen Vorbild. In der Natur erfolgt die Ablage bei kOrzeren Wegen schneller als bei Eingeren. Durch die diskrete Betrachtungsweise des Computers ist dies nicht m6glich. Daher erfolgt die Kennzeichnung erst, nachdem eine Gruppe A von Pseudoameisen ihre Wege bestimmt hat und die Gfite der LOsungen bewertet wurde. Diese Bewertung wird in die Pheromonmatrix eingetragen, die wiederum der Ausgang for die n~ichste Gruppe B ist. Hier kann auch, abweichend v o n d e r Natur, nur die beste L6sung in die Pheromonmatrix eingetragen werden. Dazu gibt es unterschiedliche )~nderungen und Erg~inzungen. Auch so genannte Verwitterungsfaktoren wurden eingeffihrt. Eine Vertiefung des Stoffes in dieser Richtung Oberlasse ich dem Leser und m6chte eine Konkretisierung in Richtung Optimie277
Der A meisenalgorith m us
10.1
rungsprobleme vornehmen. Der Ameisenalgorithmus kann viele Optimierungsprobleme tibertragen werden. Etwa bei Abstimmung von Produktionsabl~iufen in Fertigungsstragen, der Produktion von Artikeln unter Beachtung der Rohstoffe, der Bewegung von Robotern, und vieles mehr. Der Ablauf eine Optimierungsaufgabe hat aber in der einfachsten Form nachfolgende Gestalt.
auf der bei bei for die
Tab. 10-2 Wegsucheder Pseudoameisen ohne Gewichtungsfaktoren Eingabe m = Anzahl Gruppen n = Anzahl Pseudoameisen einer Gruppe Initialisiere Pheromonmatrix i=l (1) m
j=l (1) n Suche ffir alle Pseudoameisen aj einen Weg in Abh~ingigkeit v o n d e r Pheromonmatrix Beurteile die gefundenen L6sungen und trage die Beurteilung in die Pheromonmatrix ein. Gib die beste L6sung an
Wir setzen den Algorithmus nachfolgend zur Optimierung einer Maschinenbelegung ein.
Beispiel: Maschinenbelegung Maschinenbelegung
Dieses Beispiel habe ich meinem Buch [3] entnommen, in dem ich die Maschinenbelegung nach Johnson untersucht habe. In einem Produktionsbetrieb werden ffinf Produkte auf drei Maschinen in gleicher Reihenfolge produziert. Die Belegung der Maschinen (M,, M,, M~) in Stunden je Produkt sind P1(5, 3, 8), P2(5, 3, 4), P3(12, 4, 2), P4(4, 2, 7) und P5(8, 2,9). Konkretisieren wir den Algorithmus nach Tabelle 10-2 f~ir diesen Fall.
278 9
.
-
10 Algorithmen aus der Natur
Tab. 10-3 Maschinenbelegungsoptimierung mit dem Ameisenalgorithmus
279
10.1
Der Ameisenalgorithmus eingetragen werden. Gib die beste LOsung an Zur Realisierung benutzen wir die ersten drei Spalten der Tabelle als Pheromonmatrix. In den nachfolgenden Spalten werden die Eingabedaten der Belegungszeiten for die Produkte auf den einzelnen Maschinen eingetragen. In den letzten beiden Spalten gebe ich die gefundenen Konstellationen einer Gruppe aus. Sie zeigen anschaulich die Funktion des Algorithmus. Mit einem Zwischenstopp des Programms k6nnen Sie die Ergebnisse jeder Gruppe beobachten.
,C_o_de !.0...:1 ..... ~ozeduren..zu~...B.est!mmun~...ejne~..Opt.!ma!.en..Mas;h~nenb~!egun~. Option Explicit
Dim Sub
Zeile
As
...........................................................................................
Integer
Maschinen_Neu () D i m m, p, i A s I n t e g e r Dim t As String ThisWorkbook. Worksheets ("Maschinenbelegung" Cells(l, i) = " F o l g e " Cells(l, 2) = " W e r t " C e l l s (i, 3) = " P h e r o m o n " m p
= InputBox ("Anzahl = InputBox("Anzahl
Maschinen" Produkte")
) .C e l l s . C l e a r
)
Cells(l, 5 + m) = " F o l g e " Cells(l, 6 + m) = " W e r t " t = " A I : " & C h r ( 6 4 + 6 + m) & "i" R a n g e (t ) .S e l e c t Selection. Font. Bold = True Selection. Font. Italic = True t = "DI:D" & LTrim(Str(p + i)) R a n g e (t ) .S e l e c t Selection. Font.Bold = True Selection. Font. Italic = True Range ( "DI" ) . Select Selection.NumberFormat ActiveCell.FormulaRiCl LTrim(Str
280
= "0" = LTrim(Str(p)) (m))
&
"/"
&
10 Algorithmen aus der Natur For
i =
1 To
Cells(l, Next i For
i
=
1 To
Cells(l Next i End Sub Sub
m 4
+
i)
=
"M"
&
LTrim(Str(i))
i,
4)
=
"P"
& LTrim(Str(i))
p
+
Maschinen_Test() ThisWorkbook.Worksheets("Maschinenbelegung").Cells.Clear Range("Dl").Select Selection.NumberFormat
=
"@"
ActiveCell.FormulaRlCl
=
"5/3"
Cells(l,
i)
=
"Folge"
Cells(l,
2)
=
"Wert"
Cells(l, 3) = " P h e r o m o n " Cells(l, 5 + 3) - " F o l g e " Cells(l, 6 + 3) = " W e r t " Range("Al-Ii").Select Selection. Font.Bold = True Selection. Font. Italic = True Range("D2-D6").Select
~
Selection.
Font.Bold
Selection.
Font. Italic
Cells(2,
4)
=
Cells(3,
4)
=
"P2"
Cells(4,
4)
=
"P3"
Cells(5, Cells(6, Cells(l, Cells(l, Cells(l,
4) 4) 5) 6) 7)
= = = = =
"p4" "p5" "MI" "M2" "M3"
Cells(2, Cells(2, Cells(2,
5) 6) 7)
= = =
5 3 8
Cells(3,
5)
=
5
Cells(3,
6)
=
3
= True = True
"Pl"
Cells(3,
7)
=
4
Cells(4, Cells(4, Cells(4,
5) 6) 7)
= = =
12 4 2
Cells(5, Cells(5,
5) 6)
= =
4 2
z Cells(5, 7) = 7 l...........................................................................................................................................................................................................................
]
281
Der Ameisenalgorithmus
10.1 ................. - c J i T i % - i
.......g ] ....
Cells(6, Cells(6, End
6) 7)
...................................................................................................................................................................................................
= 2 = 9
Sub
Sub Maschinen_Start () D i m g, m, n, p, q, r, v, D i m t, ts, z() A s S t r i n g D i m w, x, u(), s(), y(),
i,
j,
Min
k,
As
i,
f()
As
Integer
Double
Zeile = 1 x = 0 Randomize g n p m
= = = =
InputBox("Anzahl Gruppen") InputBox ("Anzahl Ameisen/Gruppe" ) Left(Cells(l, 4), I n S t r ( C e l l s ( l , 4), "/") - i) R i g h t ( C e l l s ( l , 4), I n S t r ( C e l l s ( l , 4), "/") - i)
ReDim For
z(n),
y(p,
2),
i = 1 To g F o r j = 1 To n F o r k = 1 To p y(k, i) = k y(k, 2) = 1 Next k
'A u s w a h l F o r k = 1 To p Do q = 0
f(p),
u(m),
s(n)
'O b e r 'Ober
alle alle
Gruppen Pseudoameisen
'Ober
alle
Produkte
'BerOcksichtigung der Pheromonanteile If k > 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<100 Ausgabe der LOsung Da auch hier, bedingt durch die Pseudozufallszahlen, unterschiedliche Ergebnisse zu erwarten sind, wollen wir in einer Berechnungsschleife unter ftinfzig LOsungen die beste aussuchen. ~o~!~:2 i
.......~ ! ~ e ~ ~ t ! ~ ~ n g . . ~ a c h J e ~ . . ~ v ~ ! u 3 ! e ~ t r ~ t t g ! t
!Option Sub
..........................................................................................................................................
Explicit
Trager_Optimierung() D i m x l a , y l a , x l n , y l n , dxl, d y l A s I n t e g e r D i m x 2 a , y 2 a , x 2 n , y 2 n , dx2, d y 2 A s I n t e g e r D i m i, j, ml, m2, m 3 A s I n t e g e r D i m x, a A s D o u b l e D i m lla, 12a, 13a, 14a, 1 5 a A s D o u b l e D i m lln, 12n, 13n, 14n, 1 5 n A s D o u b l e Dim gl2a, gl2n, g34a, g34n As Double Randomize For
j = 1 T o 50 xla = 0 yla = 0 x2a = 0 y2a = 0 a = i00 ml = 0:m2 = lla = a 12a = a 13a = a 14a = a 15a = Sqr(2)
0:m3
=
0
* a
Do
I ii
'i. gl2a x : dxl x = dyl xln yln
Knoten = lla + 12a R n d (x) = I n t ( x * 3 - i) R n d (x) : I n t ( x * 3 - i) : xla + dxl = yla + dyl
!
i,__........................................................................................................................................................................................................................... lln = Sqr((a - yln) ^ 2 + x l n ^ 2) i]"
291
10.2
Evolutionsstrategien 12n
:
gl2n
Sqr((a =
lln
= ml
+
1
If
gl2n
<
gl2a
ml
0
=
xln)
i)
=
xla
2)
=
yla
Cells(l,
3)
=
gl2a
'2.
yln
^
2)
^
+
(yln-
^
2)
Knoten
g34a
=
=
13a
+
14a
R n d (x)
dx2
=
x
R n d (x)
=
In t(x
*
3
-
i)
*
3
-
i)
dy2
:
Int(x
x2n
=
x2a
+
dx2
y2n
= y2a
+
dy2
13n
:
Sqr((a
- xln
14n
:
Sqr((a
- y2n)
g34n If
+
If
Cells(l,
m2
2
Then
Cells(l,
x
^
12n
ml
End
=
13n
+
+
1
g34n
<
g34a
End
=
+
x2n)
2
^
2
+
x2n
^
2
+
(a
y2n)
^
2)
14n
= m2 m2
Then
0
If
Cells(2,
i)
=
x2a
Cells
(2,
2)
=
y2a
Cells
(2,
3)
=
g34a
'l e t z t e 15n
=
Cells
Verbindung Sqr((a
(3,
3)
- x2n) =
m3
= m3
+
If
ml
0 And
= =
xln
yla
=
yln
lla
=
lln
12a
= =
y2a
= y2n
13a
=
14a
=
m2
=
0
Then
x2n 13n 14n =
:
2)
gl2n
x2a
15a
^
12n =
g34a
- y2n)
15n
1
xla
gl2a
l
+ +
g34n 15n
[...........................................................................................................................................................................................................................
292 9
9
,.
Z -~.,
.\~
i J
10 Algorithmen aus der Natur m3 = 0 E n d If L o o p W h i l e m3 < i00 Cells(j, 5) = C e l l s ( l , Cells(j, 6) = C e l l s ( l , Cells(j, 7) = C e l l s ( 2 , Cells(j, 8) = C e l l s ( 2 , Cells(j, 9) : C e l l s ( l , Cells(j, i0) = C e l l s ( 2 , Cells(j, Ii) : C e l l s ( 3 , Cells(j, 12) = C e l l s ( l , 3) Next j End Sub
i) 2) i) 2) 3) 3) 3) 3)
+ Cells(2,
3)
+ Cells(3,
...........................................................................................................................................................................................................................
J
Zum Aufruf der Prozedur benOtigen wir lediglich einen Mentipunkt.
Abb. 10-9 Menu zur Stabwerksoptimierung
Im vorderen Bereich A1:C3 werden die in der Berechnungsschleife ermittelten L6sungen mit Koordinaten und Stabwerksl~ingen angezeigt, w~ihrend alle L6sungen als Tabelle im Bereich El:L50 ausgegeben werden.
Abb. 10-10 Ergebnisse aus den Testdaten
Hier ist es die 46. L6sung, die die minimalste Stabwerksl~inge ausgibt. Sie betr~igt jetzt 408 mm im Vergleich zur Ausgangsl~inge von 541 mm. Das bedeutet eine Einsparung von fast 25%. Aller-
293
10.3
Genetische Algorithmen dings ist dies eine nur geometrisch optimierte L6sung, bei der die Stabe So, S, und S2 zusammenfallen.
Abb. 10-11 Das geometrischoptimierte Stabwerk
Ubungen Legen Sie die maximalen Zug- und Druckkr~ifte aus dem Ausgangsstabwerk fest und berticksichtigen Sie diese als Grenzwerte for die Stabwerksoptimierung. Bekommt das Stabwerk im Beispiel dadurch eine andere Form? Variieren Sie die Belastung und die Stabwerksform.
10.3
GenetischeAlgorithmen
Genetische Algorithmen
Ebenfalls in den 60er Jahren war es John Holland, der die Mechanismen adaptiver Systeme durch so genannte productive plans auf Computern implementierte. Erst sp~iter kam der Begriff Genetischer Algorithmus auf. Die genetischen Algorithmen sind heute in Forschung und Anwendung die dominierenden Algorithmen des Bereichs evolution~irer Algorithmen. Das Prinzip eines genetischen Algorithmus ist im nachfolgenden Struktogramm allgemein wiedergegeben. Tab. 10-6 Das Prinzip eines genetischen Algorithmus Codierung der Individuen Initialisiemng der Individuen der Startpopulation (oft zufallsbedingt)
294
10 Algorithmen aus der Natur
Bewertung der Individuen nach einer Funktion (Fitness) Selection
Auswahl der Elternpaare nach Fitness Kreuzung (Paarung)
Erzeuge Nachkommen durch Rekombination, Variation oder aus einer Bibliothek Mutation
Mutiere die erzeugten Nachkommen mit geringer Wahrscheinlichkeit einer Ver~.nderung Nachkommen
Ersetze die Individuen der aktuellen Generation nach einem Ersetzungsschema Wiederholung, bis ein Abbruchkriterium greift. Ausgabe der erzielten L6sung
Crossover, Mutation
Genetische Algorithmen imitieren evolution~re Prozesse. Dabei liegt die Betrachtung bei den genetischen Prozessen. Ein Genetischer Algorithmus arbeitet mit einer Menge Minstlicher Chromosomen, die meist Individuen oder Strings genannt werden. Jedes dieser Strings korrespondiert nun mit einer Variablen eines zu betrachtenden Optimiemngsproblems. Dazu ist es erforderlich, die Variable auf einem zugeordneten String bin~ir zu codieren (hier wird auch gerne der Gray-Code benutzt) und ihnen Grenzwerte zu geben. In einer Initialisierungsphase wird eine Ausgangspopulation stochastisch erzeugt. Diese wird in einem zweiten Schritt mittels einer Fitnessfunktion bewertet und danach erfolgt eine fitnessproportionale Selektion. Da alle Individuen eine positive Selektionswahrscheinlichkeit haben, k6nnen sie potentiell Nachkommen zeugen. Entgegen diskriminierender Evolutionsstrategien bei denen Populationen keine Chance erhalten, Nachkommen zu haben. Dann erfolgt das Erzeugen von Nachkommen durch Partnerwahl und den Variationsoperatoren Crossover und Mutation. Die erzielten Nachkommen werden bewertet und erg~nzen m6glicherweise die neue Population. Dieses Verfahren wird so lange wiederholt, bis ein entsprechendes Abbruchkriterium greift.
295
10.3
Genetische Algorithmen
Beispiel: Packproblem Packproblem
Dieses Packproblem ist in der Literatur als 0/1-Rucksackproblem bekannt und lautet wie folgt. Eine Menge von Gegenst~tnden soil so verpackt werden, dass die Gesamtmasse einen Grenzwert nicht tibersteigt und der Wert der verpackten Gegenst~inde ein Maximum erzielt. In diesem Fall wollen wir die einzelnen Schritte des genetischen Algorithmus auch einzeln betrachten. Zun~chst erzeugen wir wieder ein Formblatt und ftinfzig zufallsbedingte Testdaten mit Massen im Bereich von 1...50 und Werten im Bereich von 1...100. Die maximale Packmenge soil 200 betragen.
Code 10-3 Formblatt und Testdaten zum PP
:...........................................................................................................................................................................................................................
Option Sub
Explicit
P P _ N e u () ThisWorkbook.Worksheets Cells(l, i) = " M a x i m a l " Cells(l,
3)
=
"Massen-"
Cells
3)
=
"Werte-"
(2,
Cells(4,
i)
=
"Masse"
Cells(4,
2)
=
"Wert"
("Packproblem"
) .C e l l s . C l e a r
Cells(4, 3) = " C o d e s " R a n g e ( "AI" ) . S e l e c t Selection. Font.Bold = True Selection. Font. Italic = True R a n g e ( "A4 9D 4 " ) . S e l e c t Selection. Font. Bold = True Selection. Font. Italic = True R a n g e ( " C i - C 2 " ) .S e l e c t Selection. Font.Bold = True Selection. Font. Italic = True R a n g e ( " A 2 " ) .S e l e c t End
Sub
'Erzeugung von S u b P P _ T e s t () Dim
i As
Dim
x,
m,
50
zufallbedingten
Gegenst~nden
Integer w
As
Double
Randomize For
i
x m x
i
= 1 T o 50 = Rnd(x) = Int(x * 50) = R n d (x)
w
=
Int(x
* i00)
+
1 +
'Massen 1
'Werte
im im
Bereich Bereich
i...50 i...i00
-...........................................................................................................................................................................................................................
296
E j
10 Algorithmen aus der Natur
[
......................................... c a T G i T
! i i
.......7 ........: i i ..........
Cells(i
Next i Cells(2, i lEnd Sub
+ I)
4 =
..........= .......m ...........................................................................................................................................................................................................................
2)
= w i i i
200
[........................................................................................................................................................................................................................... I
In einem ersten Schritt erfolgt nun die Initialisierung der Individuen, so dass durch eine nachfolgende Selektion die Eltern bestimmt werden. Dazu erhalten die Spalten D bis G den genetischen Code in bin~irer Form (0/1). 1 bedeutet dabei die Auswahl des Gegenstandes und 0 seine Abwahl. Eine Spalte stellt somit das Chromosom eines Individuums dar, deren Gene die Auswahl bestimmen. Ahnlich einer D NA, deren Gene Erbinformationen speichern.
Chromosome u n d DNA
Allgemein ist immer darauf zu achten, dass die Codierung der Individuen in geeigneter Form auf die sp~.tere Anwendung genetischer Operatoren zielt. Nur so kann ein genetischer Algorithmus erfolgreich arbeiten. c.?.~..tl.0:_4.. ......In.!ti~_!is!.e~ng...~.er
'grzeugung Sub
der
PP_Elter
...E..!.te~ ...........................................................................................................................................................................................................................
Start-Eltern
()
Dim
i,
j,
k,
Dim
x,
g,
gl,
m,
n
w,
As
Integer
wl,
Max
As
Double
Randomize Max
= Cells(2,
i)
n
= ThisWorkbook.Worksheets
n
UsedRange. = n - 4
For
k
=
1 To
("Packproblem"
). _
Rows. Count
4
For
i = 1 To n 'Nullvektor Cells(i + 4, 3 + k) = 0 Next i 'Zufallsbedingte g
=
Auswahl
von
Genen
0
w
=
0
m
=
0
Do
i J
x
= Rnd(x)
j
:
Int(x
* n
+
i)
gl
= Cells(j
+
4,
i)
wl
= Cells(j
+
4
2)
297
10.3
Genetische Algorithmen
[...........................................................................................................................................................................................................................,
,i
m
i
If
=m+ g
1 + gl
<=
Max
g = g + gl w = w + wl Cells(j + 4, m = 0 i
Then
3
+ k)
=
1
End If Loop While m < 50 ' A b b r u c h k r i t e r i u m Cells(l, 3 + k) = g Cells(2 3 + k) = w
i I ii
i Next i End Sub
I
i
I
,!
k
i
9.............................................................................................................................................................................................................................
j
Jetzt erfolgt der erste Schritt der eigentlichen Iterationsschleife, die Selektion, auch Fitnesstest genannt. Es wird gepr~ft, ob die neue Generation die Optimierungskriterien besser erfOllt als die Eltern. Ist dies der Fall, so erfolgt ein Generationenwechsel.
Fitnesstest Code 1t)-5 Selektion 9 'Vergleich
der
Chromosomen
'ErfOllungskriterium Sub PP_Selection() Dim Dim
maximaler
i, j, k, n A s Max As Double
Wert
Integer
n
= ThisWorkbook.Worksheets UsedRange. Rows. Count n = n - 4 Max = Cells(2, i) For i = 1 To 2 If
Cells(l, For j = If
5 + 1 To
i) 2
Cells(2, For k =
End Next j End If Next i
!
= 2 = i If
+
<=
Max
3
+
). _
Then
5 + i) > C e l l s ( 2 , 1 To n + 4
Cells(k, Next k j i
( "Packproblem"
j)
3
= Cells(k,
+
j) 5 +
Then i)
1
i
i J
R a n g e ( " F - G " ) .S e l e c t Selection. Clear
I
j Range i End Sub
298 -
( "A2 " ) . S e l e c t
i ! i I
10 Algorithmen aus der Natur
Eine neue Population wird durch Rekombination (Kreuzung, Paarung, etc.) erzielt. Diese spielt bei den genetischen Algorithmen die bedeutende Rolle, die die Mutation bei der Evolutionsstrategie spielt. Die Wahl der geeigneten Rekombinationsmethode ist wesentlich ftir den Algorithmus. Es existieren eine Ftille solcher Verfahren, von denen einige Kreuzungen (CrossoverVerfahren) sind. Wir befassen uns an dieser Stelle mit dem einfachsten Verfahren, der Ein-Punkt-Kreuzung (engl. one-pointcrossover). Hier liegt auch das Problem unseres Algorithmus, wie Sie sp~tter beim Testen sicher noch feststellen werden.
Rekombination
Beim one-point-crossover ermittelt eine Pseudozufallszahl eine Bruchstelle in den Chromosomen der beiden Eltern und ftigt die Bruchstticke gekreuzt zu neuen Chromosomen zusammen. Code 10-6 Rekombination ' (one-point-crossover) Sub PP_Crossover () D i m i, j, n A s I n t e g e r D i m x, m, m l , w, w l A s
!
Double
Randomize n n
= ThisWorkbook.Worksheets UsedRange. Rows. Count = n - 4
x
: R n d (x)
j
=
I n t (x
* n
+
i)
'Vertauschungspunkt
6) 7)
= Cells(i = Cells(i
+ +
4, 4,
4) 5)
6) 7)
= Cells(i = Cells(i
+ +
4, 4,
5) 4)
). _
der
Chromosomen
For
I
!
i = 1 To j Cells(i + 4, Cells(i + 4, Next i For i = j To n Cells(i + 4, Cells(i + 4, Next i
("Packproblem"
i i
'Ermittlung For
{ !
i
=
der
1 To
m
=
w
=
0
For
j
neuen
Werte
2
0
If
:
1 To
n
Cells(j + 4, ml = Cells(j
5 + i) = + 4, i)
1 Then
299
Genetische Algorithmen
10.3 ! i
= Cells(j
wl m= w End
m+ = w
i
Next
2)
+ wl
If
Next j Cells(l, Cells(2,
!
+ 4,
ml
5 + 5 +
i) i)
= m : w
i
J End Sub Im Gegensatz zur Evolutionsstrategie, spielt die Mutation im genetischen Algorithmus eine untergeordnete Rolle. Sie erfOllt hier auch einen anderen Zweck, sie soil die zunehmende Konvergenz von Generationen verhindern. Die Mutation beschr~tnkt sich auf die Gen~inderung (Bitumwandlung) an einer zufallsbestimmten Stelle des Chromosoms. Eine Eins wird zur Null und umgekehrt. Die Mutation wird meist mit geringer Wahrscheinlichkeit ausgel6st. In unserem Fall liegt sie bei 20%. Code 10-7 Mutation
,. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Sub
PP_Mutation () D i m i, j, n A s I n t e g e r D i m x, m, m l , w, w l A s
;
Double
Randomize n n
= ThisWorkbook.Worksheets UsedRange. Rows. Count = n - 4
For
i = 1 To 2 x = Rnd(x) If x < 0.2 Then Mutation x = R n d (x) j
=
Int(x
* n +
4,
5 +
i)
:
0 Then
Cells(j
+
4,
5 +
i)
=
1
Else Cells(j
+
4,
5 +
i)
=
0
End
=
). _
einer
i)
If
If
Next i 'Ermittlung der For i = 1 To 2 m
+
Wahrscheinlichkeit
Cells(j
If
End
'20%
("Packproblem"
neuen
Werte
0
i i
i~... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .w. . . . . . . . . . . .=. . . . . . . . . . . 0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
300
i
...i
10 Algorithmen aus der Natur For
j = 1 To n If C e l l s ( j + 4, 5 + i) = 1 T h e n ml : Cells(j + 4, i) wl = Cells(j + 4, 2) m = m + ml w = w + wl E n d If Next j Cells(l, 5 + i) = m Cells(2, 5 + i) = w Next i End Sub
{ i
Nach der Mutation beginnt der Algorithmus wieder bei der Selektion. Dieser Kreislauf wird solange durchgeftihrt wie Populationen gewOnscht werden, bzw. bis ein Abbruchkriterium greift.
Abb. 10-12 Menii zum genetischen Algorithmus
Mit Hilfe der einzelnen Mentipunkte k6nnen Sie den Verlauf der Stationen des genetischen Algorithmus genau verfolgen und beurteilen. Um mehrere Populationen hintereinander ablaufen zu lassen, benutzen Sie den Mentipunkt Populationen und die nachfolgende Prozedur.
Sub
PP_Populationen () D i m i, n A s I n t e g e r n
i
=
For
InputBox("Anzahl i =
1 To
n
der
Populationen
eingeben[")
! i
i........................................................................................................................................................................................................................... j
301
10.3
Genetische Algorithmen Call
PP_Selection
Call
PP_Crossover
I
,E
Call i Next i l i End Sub i i
PP m M u t a t i o n
i
i i e
i...........................................................................................................................................................................................................................
J
Die Auswertung der Testdaten liefert als Ergebnis Beispieldaten, wie sie in Abbildung 10-13 dargestellt sind.
Abb. 10-13 Auswertung der Testdaten zum genetischen Algorithmus
Obungen Sie werden bei der Beurteilung feststellen, dass die hier benutzte Rekombination sehr einfach ist. Programmieren Sie daher einen n-Point-Crossover und beurteilen Sie die Ver~.nderungen. Oberlegen Sie aulgerdem, wie die Rekombination derart ver~indert werden kann, dass immer brauchbare Populationen entstehen. In diesem Beispiel werden nur zwei Eltern benutzt. Oftmals w/J.hlt man aber aus einem Pool die fittesten Paarungen aus. Erweitern Sie das Programm um diesen Aspekt. 302
11 Algorithmen als kRnstliche Intelligenz
1
Algorithmenals k(instlicheIntelligenz )~hnlich wie zu den Algorithmen gibt es auch ftir die ktinstliche Intelligenz keine einheitliche Definition. 1950 hat sich bereits Alan Turing in ,,Computing machinery and intelligence" mit maschineller Intelligenz besch~iftigt. Er schl~tgt einen empirischen Test vor, bei dem tiber Terminals ein Mensch und eine Maschine einen Dialog mit einer Prtifperson fC~hren. Wenn diese Pr~fperson nach dem Dialog nicht sagen kann, wer Mensch und wer Maschine ist, dann ist nach Turing diese Maschine intelligent.
11.1
Fuzzy Logic
Fuzzy Logic Der Einstieg in die Fuzzy Logic wird oft mit folgender Betrachtung begonnen. Werden mehrere Personen gefragt, welche Temperatur sie als angenehm empfinden, dann sind die Antworten recht unterschiedlich. FOr die eine Person sind dies 18 Grad Celsius und ftir eine andere 22 Grad Celsius. Im Sinne der klassischen Mengenlehre wtirde der Bereich von z.B. 18 bis 24 Grad als angenehm definiert werden k6nnen, der Bereich darunter als unangenehm, auch wenn es 17,9 Grad sind. Wir merken, ein scharfer Ubergang von unangenehm zu angenehm entspricht nicht dem menschlichen Empfinden. Im Jahre 1965 entwickelte Lotfi A. Zadeh an der Universit~t von Kalifornien die Theorie der unscharfen Mengen (fuzzy set theory) und erm6glichte es damit Computern mit unscharfen Mengen zu rechnen. Im Gegensatz zur klassischen Mengenlehre k6nnen Elemente bei Fuzzy Sets bis zu einem bestimmten Grad einer Menge angeh6ren. Dieser Zugeh6rigkeitsgrad wird durch eine Zahl im Intervall [0,1] ausgedrtickt. Dabei bedeutet 0 keine und 1 voile Zugeh6rigkeit.
303
11.1
Fuzzy Logic
Abb. 11-1 Menge der angenehmen Raumtemperatur
Unscharfe Mengen
So lassen sich auch unscharfe Begriffe wie ,,angenehm", ,,kalt", ,,zu tief", usw. durch unscharfe Mengen beschreiben. Sie werden als linguistische Werte bezeichnet. Einfache Formen von FuzzyMengen eignen sich besonders gut zur Auswertung.
Abb. 11-2 Formen von Fuzzy-Mengen
Fuzzy Sets
304
Damit die Variable einer Fuzzy-Anwendung korrekt arbeiten kann, muss jeder m6gliche Wert zumindest einer unscharfen Menge angeh6ren. Der Wertebereich wird daher in linguistische Werte aufgeteilt, die sich teilweise tiberdecken. Diese Aufteilung bezeichnet man als unscharfe Fuzzy-Zerlegung und die Mengen als Fuzzy-Sets.
11 Algoritbmen als kanstliche Intelligenz
Abb. 11-3 Beispiel einer Fuzzy-Zerlegung ftir Raumtemperatur
Fuzzy Mengen
Operationen mit Fuzzy-Mengen verlaufen genau so wie mit normalen Mengen. Teilmenge, Nullmenge und gleiche Menge definieren sich genauso. Mengenoperationen sind wie folgt definiert.
Abb. 11-4 Das Komplement A' einer Fuzzy-Menge A
Abb. 11-5 Die Vereinigungsmenge der Fuzzy-Mengen A und B
305
11.1
Fuzzy Logic
Abb. 11-6 Die Durchschnittsmenge der Fuzzy-Mengen A und B
Ein Fuzzy-Regelsystem besteht nun im Wesentlichen aus drei Fuzzyfizierung, Schritten: Inferenz, Defuzzyfizieru ng 9 Fuzzyfiziemng der Eingangsgr6gen 9
Inferenz und Komposition der Regeln
9
Defuzzyfizierung der Ausgangsgr61~en
Eine Eingangsgr6ge erh~ilt tiber die Fuzzy-Menge einen Zugeh~5rigkeitsgrad, und damit einen Wert aus dem Intervall [0,1]. Dieser Vorgang wird als Fuzzyfiziemng bezeichnet.
Abb. 11-7 Beispiel einer Fuzzyfizierung
Als Beispiel ist die Raumtemperatur von 18 Grad nach Abbildung 11-7 mit einer Wahrscheinlichkeit von 0,8 eine normale Temperatur und mit einer Wahrscheinlichkeit von 0,2 eine tiefe Temperatur. In den Bedingungen for eine Regelung werden linguistische Werte oft durch logische Operatoren miteinander verkn~ipft. Dieser, als Inferenz bezeichnete Vorgang, wird aus dem Zugeh6rigkeitsgrad der unterschiedlichen Fuzzy-Mengen gebildet. 306 .
.
.
.
.
.
.
,
11 A l g o r i t h m e n als kfinstliche I n t e l l i g e n z
Verknft'pfung ling u i s t i s c h e r Werte
Bei einer UND-Verkntipfung wird der gemeinsame Zugeh6rigkeitsgrad aus dem Minimum der einzelnen Zugeh{Srigkeitsgrade gebildet. Nach Abbildung 11-8 ist somit C = A v B = Min{O,6;O,3} = 0,3
(11.1.1)
C = A ^ B = Max{O,6;O,3} = 0,6.
(11.1.2)
und
Abb. 11-8 Verkntipfung linguistischer Werte
Bei einer ODER-Verkntipfung wird der gemeinsame Zugeh6rigkeitsgrad aus dem Maximum der einzelnen Zugeh~3rigkeitsgrade gebildet. In Fuzzy-Reglern werden oft mehrere Inferenzen ben6tigt, so dass diese wiederum zu einer Gesamtfunktion zusammengefasst werden mtissen. Diesen Vorgang bezeichnet man als Komposition. Es gibt mehrere solcher Methode, aber die gebrS.uchlichste wird als Maximum-Methode bezeichnet. Dabei ergibt sich die Gesamtfunktion als Summe aller Zugeh6rigkeitsfunktionen. Als letzten Schritt erfolgt eine Defuzzyfizierung zur Ermittlung der konkreten Ausgabegr61ge. Auch hier gibt es unterschiedliche Methoden. Die gebrS.uchlichste davon ist die SchwerpunktMethode. Zun~ichst wird der Schwerpunkt der Gesamtfunktionsfl~iche bestimmt, dessen Abszissenwert dann die Ausgangsgr61ge ist. Die nachfolgende Abbildung 11-9 zeigt noch einmal anschaulich den Ablauf einer Fuzzy-Regelung.
307
11.1
Fuzzy Logic
Abb. 11-9 Das Schema einer Fuzzy-Regelung
Beispiel: Fuzzy-Regelung eines Industrieofens Fuzzy-Regelung eines Industrieofens
Gesucht ist das Regelfeld for die Brennkammer eines Industrieofens. Zu regeln sind die Temperatur im Brennraum und der Druck, mit dem das Brenngas zugeleitet wird. Die notwendigen Daten ergeben sich aus den nachfolgenden Bildern. Dieses Beispiel ist aus den Ubungen meines Buches [3] entnommen.
Abb. 11-10 Fuzzy-Set Temperatur
308
11 Algorithmen als kfinstliche Intelligenz tief
normal
28
hoch
30
32
Druck in bar
Abb. 11-11 Fuzzy-Set Druck
1/4 auf
ZB
0
1/2 auf
314 auf
5 10 15 Durchfluss in m31h
auf
20
Abb. 11-12 Ventilstellung
FOr diese Wahrscheinlichkeiten definieren wir jetzt die Regeln in Form einer Inferenzen-Matrix. Tab. 11-1 Inferenzen-Matrix zur Ventileinstellung
Druck\ Temp.
sehr tief
tief
normal
hoch
sehr hoch
tief
auf
auf
3,4 auf
1/~ auf
1,4 auf
normal
auf
3,4 auf
1/2 auf
lk auf
zu
hoch
3a auf
lk auf
1,4 auf
zu
zu
309
11.1
Fuzzy Logic Tab. 11-2 Struktogrammzur Berechnung des Fuzzy-Reglers FOr alle Temperaturen T von 600 bis 1000 Grad Celsius jeweils um 50 Grad ver~indert FOr alle Drticke von tief bis hoch jeweils um 1A-Anteil ver~indert Fuzzyfizierung der Temperatur wT(i)=f(Temperatur-Set), i=0,...,4 Fuzzyfiziemng des Drucks wD(i)=f(Drticke-Set), i=0,...,2 Eintragung der Wahrheitswerte in eine Matrix M(0,i+ 1)=wT(i), i=0,...,4 M(i+ 1,0)=wD(i), i=0,... ,4 Auswertung der Matrix, Inferenzen M(i,j)=Minimum(M(i,0),M(0,j)), i=1,..,3, j=1,...,5 Normierung der Summen gleicher Ventilstellungen auf I v(i)=YMv(j,k), i=0,...,4, j=1,...,3, k=1,...,5 s=Yv(i), i=0,...,4 Vn(i)=v(i)/s
Bestlmmung des Gesamtschwerpunktes und damit der Stellgr61ge E v ( i ) 2 "S i U "-
i
s
2
Ausgabe der Temperatur, des Drucks und der errechneten Ventilstellung Grafische Anzeige des Kennfeldes
310 9
.
.
11 Algorithmen als kfinstliche Intelligenz FOr die A u s w e r t u n g legen wir ein neues Tabellenblatt an u n d ftir den Aufruf der A u s w e r t u n g ein Menti.
Abb. 11-13 Menti zur Fuzzy-Regelung
.Co..d....e_.l!.:1.........D!e_.A.,..m._.we...a....ungsprozgdure_n.zur_F.uzzy.:Rgg~lg.ng.......................................................................................................................................... Option Explicit Option Explicit D i m wT(4), wD(3)
As
Double
Sub A u s w e r t u n g ( ) D i m T, M(3, 5), v(4) As D o u b l e D i m i, il, i2, z As I n t e g e r D i m u, ul, u2, sv As D o u b l e D i m M y D o c As O b j e c t D i m Shp As S h a p 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 ( " F u z z y " ) MyDoc.Activate MyDoc.Cells.Clear 'alle C h a r t s 1 6 s c h e n For E a c h Shp In M y D o c . S h a p e s Shp. D e l e t e Next !
'Auswertungsstart z = 0 !
'Uber For
alle
T = 600
Temperaturen To
i000
Step
50
l
'Fuz zyf i z i e r u n g C a l l F u z z y T e m p e r a t u r (T) F o r i : 0 To 2 M(0, i + i) : wT(i) Next i z = z + 1 C e l l s ( l , z) = T ! ...........................................................................................................................................................................................................................
l
311
11.1
Fuzzy Logic 'Uber
alle
For
=
i
Call For
DrOcke
1 To
9
FuzzyDrOcke
(i)
il = 0 T o 2 M ( i l + i, 0)
Next
= wD(il)
i1
!
'I n f e r e n z e n F o r il = 1 T o 3 F o r i2 = 1 T o M(il, Next Next
i2)=
5 Minimum(M(il,
0),
M(0,
i2))
+ M(3,
2)
i2
i1
!
'D e f u z z y f i z i e r u n g v(4)
= M(I,
i)
+ M(I,
2)
+ M(2,
i)
v(3) v(2)
: M(I, : M(I,
3) 4)
+ M(2, + M(2,
2) 3)
+ M(3, + M(2,
i) 4)
v(1) = M(I, 5) + M ( 3 , 3) v(0) : M(2, 5) + M ( 3 , 4) + M ( 3 , 5) sv = v(0) + v(1) + v(2) + v(3) + v(4) F o r il = 0 T o 4 If
Not
sv
v(il) E n d If Next i1 ul = v(1) v(3) u2 = v(0) v(3) If N o t u 2 u = ul Else u = 0 E n d If
i i i
Cells(l Next Next End
0 Then
^ 2 ^ 2 ^ 2 ^ 2 = 0 / u2
i,
* 0.25 * 0.75 + v(1) + v(4) Then
z)
/ sv
+ v(2) ^ 2 + v(4) ^ 2 ^ 2 + v(2) ^ 2
* 0.5 + _ * 1 ^ 2 + _
= u
i
T
Sub
Function If
ii i i I
+
=
= v(il)
Minimum(a,
a <= b Minimum Else Minimum E n d If
b)
As
Double
Then = a = b
! i J
[........................................................................................................................................................................................................................... ]
312
11 Algorithmen als k~nstliche Intelligenz End F u n c t i o n Sub
FuzzyTemperatur(T) Dim i As Integer If
T
<
600
wT(0)
=
Then 1
Else If
T
<=
700
wT(0) Else wT(0) E n d If E n d If For
i =
(700
=
0
1 To
T < 700 wT(i) : Else T
<=
+ 0
T
(i
700
wT(i) Else If
- T)
/ i00
-
* I00
4
If
If
Then
:
=
+
i)
i
* i00
(T -
<=
700
(700 +
(i +
wT(i) Else
=
(700
wT(i) If
:
0
End E n d If E n d If Next i
+
Then
Then +
(i i)
(i +
-
i)
* i00 i)
* i00))
/ i00
Then
* i00
- T)
/ i00
If
T < 900 Then wT(4) = 0 Else If
T
<:
wT(4) Else wT(4) E n d If E n d If End Sub
i000
Then
=
(T -
=
1
900)
/ i00
J Sub FuzzyDr~cke(i) i Select Case i J I
Case
1
l
j wD(0) = i" w D ( 1 ) = 0- w D ( 2 ) = 0 ! j C a s e 2 i t........................................................................................................................................................................................................................... ]
313
11.1
Fuzzy Logic
.............................. ; ; i S - i ~ - i - ..... 7 ........~ 7 - g ;
j
=
0.5:
Case 4 wD(0)
=
0.25:
Case 5 wD(0)
=
0:
wD(1)
Case 6 wD(0)
=
0:
Case 7 wD(0)
=
Case 8 wD(0) Case 9 wD(0) End
i End
......- g B T - { i
Case 3 wD(0)
wD(1)
........= ......o - _ ~ g - g i 3 - / - ~ . - i -
=
wD(1)
0.5:
.........= - - - 6 ..............................................................................................
wD(2)
=
=
0.75:
wD(2)
=
i-
wD(2)
=
wD(1)
=
0.75:
0:
wD(1)
=
0.5:
=
0:
wD(1)
=
0.25:
=
0:
wD(1)
=
0:
= =
wD(2)
wD(2)
=
=
0
0
wD(2) wD(2)
0
0.25 0.5
=
0.75
1
Select
Sub
i...........................................................................................................................................................................................................................
Das Ergebnis der Auswertung ist das nachfolgend dargestellte Kennfeld.
Abb. 11-14 Berechnetes Kennfeld
Obungen Verfeinern Sie die Regelung durch eine feinere Aufteilung der Fuzzyfizierung und Defuzzyfizierung.
314 9
~
~ .
..
Literatur [1]
J.L. Adams, Ich habs! Wie man Denkblockaden mit Phantasie fiberwindet. Vieweg Verlag, 1984
[2]
R. Groner, Hypothesen im Denkprozess, Grundlagen einer verallgemeinerten Theorie auf der Basis elementarer Informationsverarbeitung, Huber Verlag, 1978
[3]
H. Nahrstedt, VBA for Maschinenbauer, Vieweg Verlag, 2005
[4]
J. Ziegenbalg, Algorithmen, Von Hammurapi bis G6del, Spektrum Akademischer Verlag, 1996
[5]
I.
[6]
E. Horowitz, S. Sahni, Algorithmen, Entwurf und Analyse, Springer Verlag, 1981
[7]
N. Wirth, Algorithmen und Datenstrukturen, Teubner Verlag, 2000
[81
W. Domschke, A. Drexl, Einffihrung in Operation Research, Springer Verlag, 2004
[9]
V. Heun, Grundlegende Algorithmen, Vieweg Verlag, 2003
Rechenberg, Evolutionsstrategie "94, Friedrich Frommann Verlag, Gtinther Holzboog, 1994
[10] Z. Michalewicz, Genetic Algorithms and Data Structures equal Evolution Programs, Springer Verlag, 1999 [11] N. Blum, Algorithmen und Datenstrukturen, Oldenbourg Verlag, 2004 [12] R. Sedgewick, Algorithmen, Addison-Wesley Verlag, 2002 [13] I. Wegener, Theoretische Informatik- eine algorithmenorientierte Einffihrung, Teubner Verlag, 1999 [14] A. Solymosi, U. Grude, Grundkurs Algorithmen und Datenstrukturen in Java, Vieweg Verlag, 2002 [15] E. Sch6neburg, Genetische Algorithmen und Evolutionsstrategien, AddisonWesley Verlag, 1993 [16] H. Pohlheim, Evolution~tre Algorithmen, Springer Verlag, 1999 315
[17] J. Orwant, Algorithmen in Perl, O'Reilly Verlag, 2000 [18] T. Peters, Rekursive Algorithmen, D/~mmlers Verlag, 1989 [19] M. Lusti, Wissensbasierte Systeme, Algorithmen, Datenstrukturen und Werkzeuge, 1990 [20] G. F. Barth, Sensors and Sensing in Biology and Engeneering, Springer Verlag, 2003 [21] U. K~ippers, H. Tributsch, Verpacktes Leben- verpackte Technik, Wiley-VCH, 2002 [22] W. Nachtigall, Bionik, Springer Verlag, 2002 [23] E. B6rger, Berechenbarkeit, Komplexit~it, Logik, Vieweg Verlag, 1998 [24] M. Bretz, Algorithmen und Berechenbarkeit, Vieweg Verlag, 1992 [25] D. Drechsel, Regelbasierte Interpolation und Fuzzy Control, Vieweg Verlag, 1998 [26] E. Seiffart, K. Manteufel, Lineare Optimierung, Harri Deutsch Verlag, 1997 [27] H. Normann, Lineare Optimierung, ein Rezeptbuch, UTB Verlag, 1996 [28] C. DrOsser, Fuzzy Logic, Methodische Einffihrung in krauses Denken, Rowohlt Taschenbuch Verlag, 1996 [29] L. Papula, Mathematik for Ingenieure und Naturwissenschaftler, Vieweg Verlag, 2001 [30] T. Ottmann, P. Widmayer, Algorithmen und Datenstrukturen, Spektrum Akademischer Verlag, 2002 [31] H. Nahrstedt, Programmieren von Maschinenelementen, Vieweg Verlag, 1985 [32] N. Boysen, Ameisenalgorithmus, Referat unter www.ameisenalgorithmus.de [33] J. Dankert, Numerische Methoden der Mechanik, Springer Verlag, 1987 [34] M. Lawo, G. Thierauf, Stabtragwerke, Matrizenmethoden der Statik und Dynamik, Vieweg Verlag, 1986 [35] G. Engeln-Mtillges, K. Niederdrenk, R. Wodicka, Springer Verlag, 2005
316 9
..
~
.
~. . . . .
Sa c h w o r t v e r z e i c h n is
Sachwortverzeichnis A Algorithmen
.............................................................................................. 1,2
A d a L o v e l a c e ................................................................................................ 2 Aktivit~tten u n d E r e i g n i s s e ........................................................................ 242 A l a n T u r i n g .................................................................................................. 3 A l g o r i t h m e n als M i n s t l i c h e I n t e l l i g e n z .................................................... 303 A l g o r i t h m e n a u s d e r N a t u r ...................................................................... 274 A l g o r i t h m e n in d e n W i s s e n s c h a f t e n ............................................................ 3 Algorithmen Eigenschaften
......................................................................... 3
A l g o r i t h m e n u n d Z u f a l l s z a h l e n ................................................................ 173 A m e i s e n a l g o r i t h m u s ................................................................................ 274 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 A r r a y s ....................................................................................................... 221 A u f t r a g s f o l g e n p r o b l e m ............................................................................ 256 A u s f l u s s z e i t v o n FlClssigkeiten .................................................................. 87
B Backtracking
............................................................................................ 262
Baugruppenst{ickliste
.............................................................................. 232
B~iume ...................................................................................................... 239 B e r e c h n u n g s o p e r a t o r .............................................................................. 120 Bewegungs~tnderung eines Massenpunktes
............................................ 96
B i n ~ r - C o d e ............................................................................................... 263 Bisektionsmethode
.................................................................................. 253
B l a c k b o x ..................................................................................................... 8 B l e c h z u s c h n i t t ............................................................................................. 31
C C h r o m o s o m e ............................................................................................ 297 CPM .......................................................................................................... 241 C r o s s o v e r .................................................................................................. 295
D Datenfelder
.............................................................................................. 221
Datenstrukturen
....................................................................................... 204
D e f u z z y f i z i e r u n g ...................................................................................... 306 D e t e r m i n a n t e e i n e r Matrix ...................................................................... 143 D e t e r m i n i s t i s c h e A l g o r i t h m e n ...................................................................... 5 Differentialgleichungen
............................................................................. 95
D i f f e r e n t i a l q u o t i e n t .................................................................................... 96 Differenzenapproximation
...................................................................... 120
D i f f e r e n z e n q u o t i e n t ............................................................................. 88, 96 317
Sach w o r t v e r z e i c h n is D i f f e r e n z e n v e r f a h r e n ftir g e w 6 h n l i c h e D i f f e r e n t i a l g l e i c h u n g e n .......... 158 D i s k r i m i n a n t e ............................................................................................. 13 D i v i d i e r t e D i f f e r e n z e n ............................................................................... 59 D N A .......................................................................................................... D r e h s c h w i n g u n g e n .................................................................................
297 111
E E i g e n s c h a f t e n d e r P s e u d o z u f a l l s z a h l e n ................................................. E i g e n w e r t p r o b l e m ................................................................................... E i n g e s p a n n t e M e m b r a n ........................................................................... Einschrittige C o d e s ftir die i n d u s t r i e l l e W e g m e s s u n g ...........................
173 164 121 263
Einseitig e i n g e s p a n n t e r Biegetr/iger ....................................................... E l e k t r o n e n r 6 h r e ....................................................................................... E l e m e n t e e i n e r Matrix ............................................................................. E n g p a l g p r o b l e m ........................................................................................
159 128 130 208
E n t s c h e i d u n g s a l g o r i t h m e n ........................................................................... 5 E r e i g n i s s e u n d Aktivit/iten ........................................................................ 242 E r s a t z s y s t e m ftir D r e h s c h w i n g u n g e n ..................................................... 116 E u k l i d ............................................................................................................. 1 E u l e r - C a u c h y - V e r f a h r e n ............................................................................ 95 E v o l u t i o n s s t r a t e g i e ................................................................................... 286 E x p e r i m e n t e l l e B e s t i m m u n g e i n e r F e d e r ............................................... 219 E x t r e m w e r t e ............................................................................................... 25
1a F e d e r p e n d e l .............................................................................................. 220 F e s t p u n k t m e t h o d e ..................................................................................... 74 F i t n e s s t e s t ................................................................................................. 298 Fl~che e i n e s Blechteils ............................................................................ 177 F l i e l g b a n d a r b e i t ........................................................................................ 207 Freie B i e g e s c h w i n g u n g e i n e s g e r a d e n Stabes ....................................... 164 Fritz Z w i c k y ................................................................................................. 9 F u n k t i o n ..................................................................................................... 58 F u z z y Logic .............................................................................................. 303 F u z z y M e n g e n .......................................................................................... 305 F u z z y Sets ................................................................................................. 304 F u z z y f i z i e m n g .......................................................................................... 306 F u z z y - R e g e l u n g ....................................................................................... 308
G G a u l g s c h e E l i m i n a t i o n ....................................................................... 37, 153 G e n e t i s c h e A l g o r i t h m e n ...................................................................... 6, 294 G e w 6 h n l i c h e D i f f e r e n t i a l g l e i c h u n g e n ...................................................... 95 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 G l e i c h u n g s s y s t e m e .................................................................................. 152 G o z i n t o g r a p h ............................................................................................ 241 G r a p h e n ................................................................................................... 239
318 .
_
9
Sac h wortverzeich n is G r a y - C o d e ................................................................................................263 G r e e d y - M e t h o d e ...................................................................................... 256
I-I H a s h - M e z h o d e ..........................................................................................256 H e u r i s t i k .......................................................................................................9 Heuristische Probleml6sungsmethoden
................................................... 11
H o m o g e n e s G l e i c h u n g s s y s t e m ................................................................. 37 H y b r i d e A l g o r i t h m e n ....................................................................................6
I I n d i k a t o r d i a g r a m m ................................................................................... 100 I n d u s t r i e l l e W e g m e s s u n g ........................................................................ 263 I n d u s t r i e o f e n r e g e l u n g ............................................................................. 308 I n f e r e n z .................................................................................................... 306 I n t e g r a t i o n n a c h d e r M o n t e Carlo M e t h o d e
.......................................... 173
I n t e r p o l a t i o n mittels k u b i s c h e r Splines .................................................... 65 I n t e r p o l a t i o n n a c h N e w t o n ....................................................................... 59 I n t e r p o l a t i o n v o n F u n k t i o n e n ................................................................... 58 I n v e r s e e i n e r Matrix ................................................................................. 147 Iterative A l g o r i t h m e n .................................................................................... 5
J Jeep-Problem
........................................................................................... 270
K Kleinste F e h l e r q u a d r a t e
............................................................................ 72
K n o t e n ...................................................................................................... 239 K o g n i t i v e A l g o r i t h m e n ..................................................................................6 K o m p l e m e n t ~ i r e Matrix ............................................................................ 147 K o r r e l a t i o n ............................................................................................... 213 K o r r e l a t i o n s k o e f f i z i e n t ............................................................................ 214 K o s t e n f u n k t i o n ..........................................................................................44 K u b i s c h e G l e i c h u n g e n .............................................................................. 17 K u b i s c h e Splines ........................................................................................ 65 K u g e l d r u c k p r o b e n a c h Brinell ................................................................. 13 K~instliche I n t e l l i g e n z .......................................................................... 7, 303 Kurt G 6 d e l .....................................................................................................3
I, L a g r a n g e I n t e r p o l a t i o n ............................................................................... 65 L a p l a c e - O p e r a t o r ..................................................................................... 120 L e b e n s d a u e r v o n P u m p e n v e n t i l e n ......................................................... 186 Leibnitz ..........................................................................................................2 Lineare A p p r o x i m a t i o n .............................................................................. 72 Lineare O p t i m i e r u n g
................................................................................. 44
Lineares G l e i c h u n g s s y s t e m .......................................................................37 319
Sac h wortverzeic h n is Linguistische W e r t e .................................................................................. 306 Listenstrukturen ....................................................................................... 228 L 6 s u n g e n v o n G l e i c h u n g e n ....................................................................... 13 L 6 s u n g e n v o n G l e i c h u n g e n h 6 h e r e r O r d n u n g ......................................... 23 L 6 s u n g e n v o n G l e i c h u n g s s y s t e m e n ....................................................... 151 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
M a s c h i n e n b e l e g u n g ................................................................................. 278 M a s c h i n e n w a r t u n g ................................................................................... 180 Matrix d e r K o f a k t o r e n ............................................................................. 147 Matrizen ............................................................................................ 130, 222 M a t r i z e n a d d i t i o n ...................................................................................... 134 M a t r i z e n p r o d u k t ...................................................................................... 141 M a t r i z e n s u b t r a k t i o n ................................................................................. 136 M a x i m a l e s V o l u m e n .................................................................................. 31 M e m b r a n .................................................................................................. 121 M e t h o d e d e r k l e i n s t e n F e h l e r q u a d r a t e ............................................ 72, 213 M e t h o d e v o n Mises ................................................................................. 166 M i n i m a l e r M a t e r i a l v e r b r a u c h .................................................................... 24 M o n t e Carlo M e t h o d e ...................................................................... 173, 276 M o r p h o l o g i s c h e r K a s t e n ............................................................................. 9 Mutation ..................................................................................................... 295
N N ~ i h e r u n g s p o l y n o m ................................................................................... 59 N e t z p l a n t e c h n i k ....................................................................................... 242 N e w t o n s c h e s N ~ t h e r u n g s v e r f a h r e n ........................................................... 31 N u m e r i s c h e A l g o r i t h m e n .............................................................................. 4 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 D i f f e r e n t i a l g l e i c h u n g e n ........... 95 N u m e r i s c h e B e h a n d l u n g partieller D i f f e r e n t i a l g l e i c h u n g e n ................. 119 N u m e r i s c h e I n t e g r a t i o n ............................................................................. 80 N u t z w e r t a n a l y s e ...................................................................................... 222
O O p e r a t i o n R e s e a r c h ...................................................................................... 6 O p t i m i e r u n g s a l g o r i t h m e n ............................................................................. 5
P P a c k p r o b l e m ............................................................................................ 296 Partielle D i f f e r e n t i a l g l e i c h u n g e n ............................................................ 119 P e r m u t a t i o n e n .......................................................................................... 204 PERT ......................................................................................................... 241 P h e r o m o n m a t r i x ...................................................................................... 276 P o l y n o m ..................................................................................................... 58 Probabilistische Simulation ..................................................................... 180 P r o b l e m l 6 s u n g .............................................................................................. 7
320
Sac h w o r t v e r z e i c h n is Produktionsoptimierung
............................................................................ 45
P r o d u k t s t r u k t u r .........................................................................................
232
Pseudozufallszahlen
173
................................................................................
Q Quadratische
Gleichung
............................................................................
Q u i c k s o r t ..................................................................................................
13 228
R Raimundus
L u l l u s ..........................................................................................
Regression
................................................................................................
2
213
R e g u l a F a l s i ................................................................................................ Rekombination
.........................................................................................
24 299
R e k u r s i v e A l g o r i t h m e n ................................................................................. Rekursive Prozeduren
5
.............................................................................
270
R C l c k v e r f o l g u n g ........................................................................................
262
R{ickw~irtsrechnen
270
...................................................................................
S Schema einer L6sungsfindung
.................................................................... 8
S c h l u p f ......................................................................................................
243
Schubkurbeltrieb
........................................................................................
97
Sensorkennlinie
.........................................................................................
74
Simplex-Methode Simulation
....................................................................................... 45
................................................................................................
Skalarprodukt
...........................................................................................
Stabwerkoptimierung
..............................................................................
180 138 287
S t a h l s e i l v e r l a u f ........................................................................................... 60 Standardabweichung
...............................................................................
243
StrukturstC~ckliste ...................................................................................... 238 S t ~ i c k l i s t e n o r g a n i s a t i o n ............................................................................ 231
T Taylor-Reihenentwicklung Teile und Herrsche Temperaturverteilung Torsionspendel
.......................................................................
163
..................................................................................
253
in e i n e m K a n a l
..................................................... 38
........................................................................................
118
Tr~iger g l e i c h e r Z u g f e s t i g k e i t .................................................................... 81 Transponierte Trapezregel
M a t r i x ............................................................................... ................................................................................................
Trichtervolumen
........................................................................................
131 80 22
IJ Unscharfe Mengen
...................................................................................
304
321
S a c h w o rt v e r z e i c h n is
V V e k t o r e n ................................................................................................... 130 Verhaltensalgorithmen
............................................................................ 253
V e r k n ~ i p f u n g l i n g u i s t i s c h e r W e r t e ........................................................... 307
W W a h r s c h e i n l i c h k e i t s t h e o r i e ...................................................................... 304 Warteschlangenproblem
M a s c h i n e n w a r t u n g .......................................... 180
W u r z e l ...................................................................................................... 214
Z Zeitsch~tzungen
....................................................................................... 242
Z i e l f u n k t i o n ................................................................................................ 44 Z u f a l l s z a h l e n ............................................................................................ 173 Zufallszahlengenerator Zuschnittoptimierung
322
............................................................................ 176 ................................................................................ 54