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
'te verhogen totdat een specifieke eindwaarde is bereikt.

For I = 2 To 35
Cells(2, 2).Value = I
Next I

End Sub

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:


Het hierboven beschrevene is nu een goede basis om verder te gaan experimenteren met deze simulatie. We kunnen bv de vraag stellen wat er gebeurt als twee golf pulsen die in tegengestelde richting bewegen elkaar ontmoeten.

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
'en wat er gebeurd als ze in elkaar overlopen.

Dim I, J, K As Integer       'teller en waarde  

'For Next-Loop om de automatisch de waarde in cel b2 in de spreadsheet
'te verhogen totdat een specifieke eindwaarde is bereikt terwijl de waarde 
‘in cel c2 automatische verlaagd wordt.

K = 35  

For I = 2 To 35
Cells(2, 2).Value = I
J = K - I
Cells(2, 3).Value = J
Next I

End Sub


We definiëren een maximum waarde en laten de waarde in de ene cel daar naar toe lopen terwijl we de waarde in de andere cel daarvandaan laten dalen.

Uiteraard kunnen we weer een knop toekennen, en het geheel kan er dan weer uitzien zoals in onderstaande figuur.

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.

  1. Bootst de gebruikt beschrijving wel alle karakteristieken van een golf na of kunnen er onder bepaalde omstandigheden afwijkingen optreden?
  2. Het gebruikte model is zeer eenvoudig. Op welke punten wijken we af van de fysische werkelijkheid? We bootsen bv met deze formule nl. geen demping na die in werkelijkheid wel optreedt.
  3. Als een golfpuls tegen een barrière aanbotst zal er een faseverandering plaatsvinden. Kunnen we die ook met deze formule simuleren?

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:

  • De excelfile die hierboven beschreven wordt is te downloaden: golffunctie.xls

Literatuur:

  • Ole Anton Haugland; “Spreadsheet Waves”; The Physics Teacher; (37) Jan. 1999; p. 14.
  • R.J. Flink; “Fysische Optica – Natuurkunde voor het HBO”; Nijgh & Van Ditmar Educatief; 1ste druk 1992; ISBN 9023606728; p. 1-21.

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:

  • Visualiseer een fysisch mechanisme voor het proces gebaseerd op bekendheid met gerelateerde problemen in hetzelfde of in andere gebieden.
  • Zoek de natuurkundige wetten op die met het probleem te maken hebben, en dan vooral de mathematische formules.
  • Identificeer alle significante variabelen. Dimensieanalyse kan hier zeer nuttig zijn.
  • Kies een differentiaal element van tijd dt of ruimte dV of een increment langs een as en schrijf in wiskundige termen uit welke veranderingen in andere variabelen die veranderen in het betreffende differentiaalelement.
  • Verbind de differentiële veranderingen van de verschillende hoeveelheden door een toepasbare algemene wet voor het betreffende fenomeen. een algemeen gebruikte regel is de wet van behoud die als algemene vorm heeft:
    Input + bron = output + sink + accumulatie
    en zowel naar absolute hoeveelheden kan verwijzen als snelheden.
  • Herschik het resultaat als een differentiaalvergelijking door delen met dt of dV en en ga door naar de limieten.
  • Formuleer begin en grens condities om zo het fysieke probleem in zijn geheel te definiëren. In dit stadium is het noodzakelijk om zeer voorzichtig te zijn, vooral met partiele differentiaal vergelijkingen. Nadat dit gebeurt is  kan de vergelijking opgelost worden door jezelf, een wiskundige of een computer.

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