SIMULEREN
VAN EEN GOLF PULS IN EEN KOORD |
Datum: mei 2003
Principe:
Met behulp van excel en VBA golf pulsen simuleren.
Werkwijze:
Moderne
spreadsheets bevatten krachtige grafische mogelijkheden en zeer
gebruikersvriendelijke programmeer faciliteiten. Deze mogelijkheden kunnen we
perfect gebruiken voor simulaties b.v. het simuleren van golven. Meer
exact geformuleerd de beweging van een golfpuls door een koord. Om zulk een golfpuls te kunnen
simuleren hebben we een wiskundige vergelijking nodig die een golfpuls
beschrijft. In eerste instantie zou je aan de gebruikelijke sinus functie
kunnen denken maar een betere beschrijving wordt verkregen met een Gauss
functie. Een functie die in de statistiek gebruikt wordt om een normaal
verdeling weer te geven. De golffunctie die we gaan
gebruiken is:
Hierin is x0 de
x-waarde waar het maximum plaatsvindt. In de spreadsheet plaatsen we x0
in cel B2 en laten de golfpuls bewegen door de waarde in deze cel te
verhogen. De x-kolom die vanaf cel A4 naar beneden loopt geeft de x-coördinaat
langs het koord weer terwijl de corresponderende waarde van de golffunctie
wordt gegeven in de B kolom.
In cel B4 schrijven we “EXP(-A4-$B$2)^2)”. We refereren absoluut naar
cel B2 aangezien we de formule kopiëren naar de andere cellen in de
kolom. In dezelfde sheet maken we nu
een xy scattergrafiek waarin we de A kolom op de x-as en de b-kolom op
y-as weergeven. Men kan ook kiezen voor een 3D-line-grafiek. Met enige
nabewerking kan het er dan uitzien als in onderstaande figuren. Momenteel kunnen we de golfpuls
door handmatig de waarde in cel B2 te veranderen. We kunnen de golfpuls
echter automatisch laten bewegen. De makkelijkste manier om dat te doen is
een klein V(isual)B(asic for)A(pplications) te schrijven. Het VBA programma (de editor)
kunnen we opstarten door ALT-F11 in te drukken. Via de menu balk doen we
nu “Insert – Module”. In het linker venster kun je nu zien dat er
een Module aangemaakt is onder Modules. In het rechter venster staat nu de
tekst “Option Explicit”. Type in het rechter scherm nu
de tekst “Sub Counter” en “enter” dan. Je ziet dat automatisch de
tekst “End Sub” erbij wordt geschreven. Counter is de naam van het
programmaatje dat we gaan schrijven. De programma code plaatsen we tussen
“Sub” en “End Sub”. Het is altijd verstandig om een programma dat
je schrijft uitvoerig van commentaar te voorzien zodat je achteraf nog
kunt begrijpen wat het precies is dat je gemaakt hebt. Commentaar regels
kun je toevoegen door een regel tekst te laten beginnen met “ ‘ ”. Type nu de onderstaande tekst
over zodat in het rechter scherm precies hetzelfde staat. |
Option Explicit Sub Counter() Dim I As Integer
'teller en waarde 'For Next-Loop om de
automatisch de waarde in cel b2 in de spreadsheet For I = 2 To 35 |
Op zich is dit voldoende om de simulatie te laten draaien. We kunnen het starten van de simulatie echter gemakkelijker maken door in de spreadsheet een start-knopje te installeren. Ga naar de spreadsheet selecteer View-Toolbars-Forms. Er verschijnt nu een klein extra menukeuzevenstertje. |
|
Selecteer daar het “button” knopje door er op te klikken en klik daarna in de spreadsheet op de plaats waar je het wilt plaatsen. Laat je de knop nu los dan verschijnt er ook een venster “Assign Macro”. In het lijstje van Macro’s zie je nu ook “counter” staan. Door deze te selecteren kennen we ons VBA programma ook wel Macro genoemd toe aan de knop. We kunnen nu de naam van het knopje veranderen
door erop te gaan staan en op de linker muisknop te drukken. In het midden
van het venstertje staat “Edit Text”, selecteer dat item en je kunt nu
de tekst veranderen. Het geheel kan er dan uiteindelijk zoals in de
onderstaande figuur komen uit te zien: |
|
|
|
Vanuit de theorie over golven
weten we dat we golven bij elkaar kunnen optellen en datzelfde principe
kunnen we nu weer toepassen. We definiëren in een nieuw werkblad nu twee
golf pulsen op exact dezelfde manier als hierboven beschreven. We
definiëren een derde rij waarin we de resultaten van de pulsen bij elkaar
optellen. Dus bv in Cel B4 de x coordinaat, in Cel C4 staat dan “=EXP(-(A4-$B$2)*(A4-$B$2))”,
in Cel D4 “=EXP(-(A4-$C$2)*(A4-$C$2))” en in Cel E4 “=B4+C4”. In
een 3D grafiek die we enigszins draaien plotten we nu alle drie de rijen. Uiteraard moet het programma
ook een beetje aangepast worden, maar uiteindelijk is het maar een kleine
verandering. |
Option Explicit Sub Superpositie() 'Programma om twee tegengesteld
gerichte golven te simuleren Dim I, J, K As Integer
'teller en waarde 'For Next-Loop om de
automatisch de waarde in cel b2 in de spreadsheet K = 35 For I = 2 To 35 |
|
|
Discussie en conclusie:
Door een relatief eenvoudige
mathematische beschrijving van een golf puls te simuleren kunnen we golf/trillings
effecten visueel nabootsen. Op het eerste gezicht ziet het er allemaal ook
kloppend uit. De amplitude verdubbeld bv als twee pulsen zich op precies
dezelfde plaats bevinden. Op zich ben je er met deze simulatie niet. Er heeft nl.
geen echter validatie plaatsgevonden. Belangrijke vragen zijn nog niet eenduidig
beantwoordt.
En het belangrijkste validatie
aspect is natuurlijk of ik werkelijke meetgegevens kan beschrijven met het
hierboven opgebouwde model. Een simulatie model bouwen
hoeft in principe niet moeilijk te zijn. Het probleem zit hem meer in de
validatiefase, komt het model dat we gebouwd hebben wel overeen met de
werkelijkheid zoals we deze meten? |
Opmerkingen:
|
Literatuur:
|
Achtergrondinformatie:
Het type modelleren of
simuleren dat hier behandeld wordt behelst de wiskundige weergave van gedrag of
processen op natuurwetenschappelijk gebied.
Als deze processen een snelheidscomponent en/of gradiënt bevatten,
hetgeen vaak het geval is, zal het model een differentiaalvergelijking bevatten,
andere relaties en enkele empirische parameters. De oplossing zal dan de twee
brede klassen van variabelen, input en response verbinden. Het succesvol modelleren van
natuurwetenschappelijke processen vereist een begrip of afschatting van de
betrokken mechanismen en inzicht in overeenkomstige processen op verschillende
technologische gebieden. Er is geen standaardrecept dat gevolgd kan worden voor
het formuleren van differentiaalvergelijkingen en er zijn slechts een paar
algemene principes:
De meeste chemische processen
zijn dermate gecompliceerd in hun werking dat ze niet volledig weergegeven
kunnen worden door mathematische modellen of door modellen die exact oplosbaar
zijn. Modellen kunnen variëren van enkele vergelijkingen zoals degene die de
val van een deeltje in stilstaande lucht beschrijft of dat van een roterende
droger die een systeem van duizenden vergelijkingen en ongelijkheden dat de
evenwichtstoestand van een raffinaderij beschrijft. Bij het bouwen van een model
reduceren we de werkelijkheid van een proces naar zijn
essentiële kenmerken. Alle belangrijke factoren die invloed uitoefenen
op het proces moeten meegenomen worden alhoewel het model niet mag verdrinken in
secundaire factoren die de oplossing bemoeilijken en dus ook de evaluatie
bemoeilijken. Het kan zelfs beter zijn om met een in verre mate vereenvoudigd
model te beginnen om zo de belangrijkste kenmerken van de oplossing te kunnen
onderzoeken en vervolgens gaandeweg meer factoren op te nemen. Hoe ver men moet
gaan is een kwestie van beoordelen. Vereenvoudigingen die bereikt worden door
variabelen te elimineren of ze te vervangen door analytische benaderingen zal de
nauwkeurigheid van het model beïnvloeden of zelfs volledig onbruikbaar kunnen
maken. Grove, snelle methodes moeten
altijd in het begin verwogen worden. Oplossingen van limiterende gevallen
kunnen inzichten geven voor een meer compleet model. Men kan bv een
isotherm probleem oplossen i.p.v. een adiabatisch of een isentroop i.p.v. een
met wrijving of een steady-state i.p.v. een transient. Als de basis proces variabelen
afhankelijk zijn van zowel tijd als plaats of alleen plaats met twee of meer
dimensies wordt het proces weergegeven door gedistribueerde parameters ook wel
microscopisch model genoemd, in wiskundige termen door partiele differentiaal
vergelijkingen (bv gebruikt voor gepakte bedden, flow reactors, etc). Als de
basis proces variabelen alleen variëren met de tijd of in maar een enkele
dimensie wordt het proces weergegeven met een “lumped” parameter ook wel
macroscopisch model genoemd, wiskundig weergegeven door gewone
differentiaalvergelijkingen (bv gemengde vloeistoffen in tanks, elektrische
circuits, eendimensionale mechanische vibraties, etc.). Statische modellen negeren
veranderingen in de tijd. Dynamische modellen bevatten de tijd als een
onafhankelijke variabele. Rigide modellen beschrijven deterministische processen
zonder gebruik te maken van waarschijnlijkheidsverdelingen. Probabilistische of
stochastische modellen maken juist wel gebruik van
waarschijnlijkheidsverdelingen. In “black box” oftwel “zwarte doos”
modellen kunnen de interne relaties niet vastgesteld worden of worden genegeerd.
Het enige dat men kan doen is om input en respons te relateren. Het kan dan
mogelijk zijn om deel data van dit type model experimenteel te verkrijgen en in
een model te stoppen waarmee men kan interpoleren of extrapoleren. |
17-01-2017