Fictional Modelling?

Stel dat 1 sec van de ware tijd t overeenkomt met N sec van de slow motion tijd T. Dan geldt er:

[imath] T = \mathrm{N} \cdot t \,\,\,\,\,\,\,\,\,\,\,\, (5) [/imath]

Verder schrijven we X = X(T) voor de positie van de massa als functie van de slow motion tijd T; schrijven we V =V(T) voor de slow motion snelheid [imath] \frac{\mathrm{d} X}{\mathrm{d} T} [/imath] als functie van de slow motion tijd T; en schrijven we A =A(T) voor de slow motion versnelling [imath] \frac{\mathrm{d}^2 X}{\mathrm{d} T^2} [/imath] als functie van de slow motion tijd T.

Dan hebben we als systeem vergelijkingen uitgedrukt in de slow motion tijd:

[imath] \mathrm{N}^2 \frac{\mathrm{d}^2 X}{\mathrm{d} T^2} = - \frac{\mathrm{R}}{\mathrm{m}} \cdot X \,\,\,\,\,\,\,\,\,\,\,\, (1') [/imath]

[imath] \mathrm{N}^2 \frac{\mathrm{d} V}{\mathrm{d} T} = - \frac{\mathrm{R}}{\mathrm{m}} \cdot X \,\,\,\,\,\,\,\,\,\,\,\,\,\,\, (2') [/imath]

[imath] \mathrm{X}(T_0 + \Delta T) \approx \mathrm{X}(T_0) + \mathrm{V}(T_0) \Delta T \,\,\,\,\,\,\,\,\,\,\,\, (3') [/imath]

[imath] \mathrm{V}(T_0 + \Delta T) \approx \mathrm{V}(T_0) + \mathrm{A}(T_0) \Delta T \,\,\,\,\,\,\,\,\,\,\,\, (4') [/imath]


(Ik hoop maar dat hier geen foutje in zit, want bij dergelijk ongein van het veranderen van variabelen is dat maar zo gemaakt.)
 
[imath] \frac{\mathrm{d}^2 x}{\mathrm{d} t^2} = - \frac{\mathrm{R}}{\mathrm{m}} \cdot x \,\,\,\,\,\,\,\,\,\,\,\, (1) [/imath]

We proberen: [imath] x = \hat{\mathrm{x}} \sin(\omega t) [/imath]. Dan komt er:

[imath] \frac{\mathrm{d} x}{\mathrm{d} t} = \hat{\mathrm{x}} \cos(\omega t) \cdot \omega[/imath]

[imath] \frac{\mathrm{d}^2 x}{\mathrm{d} t^2} = - \hat{\mathrm{x}} \sin(\omega t) \cdot \omega^2 [/imath]

[imath] \frac{\mathrm{d}^2 x}{\mathrm{d} t^2} = - x \cdot \omega^2 [/imath]

[imath] - \frac{\mathrm{R}}{\mathrm{m}} \cdot x = - x \cdot \omega^2 [/imath]

[imath] \frac{\mathrm{R}}{\mathrm{m}} = \omega^2 [/imath]

[imath] \omega = \sqrt{\frac{\mathrm{R}}{\mathrm{m}}} \,\,\,\,\,\,\,\,\,\,\,\, (6) [/imath]

En dat is de hoekfrequentie van ons massa en veer systeem.
 
Is het niet zo dat het massa veer systeem instabiel wordt (dus gaat oscilleren met een steeds grotere amplitude) omdat er geen of niet genoeg demping in het model is opgenomen?

Mijn vermoeden was dat het exploderen van het signaal samen zou gaan met een toenemende vervorming vanwege een te kleine [imath] \Delta t [/imath], maar daarvan is in Audacity niets te zien. Dus wellicht dat er toch op de een of andere frequentieafhankelijke manier sprake is van een negatieve demping. Dit is allemaal zeer interessant, maar ik wil hier in dit topic niet standaard nachtwerk van gaan maken. Dus tot later...
 
Moet formule 1 niet dit zijn :

D2x/dt2 = -R/m * x/m
 
Moet formule 1 niet dit zijn :

D2x/dt2 = -R/m * x/m

Dat kunnen we controleren door te kijken naar de eenheden. Links krijg je met jouw formule: [imath] m/s^2 [/imath]. En rechts: [imath] \frac{\mathrm{N}/\mathrm{m}}{ \mathrm{kg} } * \frac{\mathrm{m}}{\mathrm{kg}} = \frac{\mathrm{N}}{ \mathrm{kg}^2 } = \frac{\mathrm{kg} \, \mathrm{m} \, \mathrm{s}^{-2}}{ \mathrm{kg}^2 } = \frac{ \mathrm{m} / \mathrm{s}^2}{ \mathrm{kg} } [/imath]. Dus je formule kan niet juist zijn.
 
Ik vind dit soort "vinger oefeningen" hardstikke leuk, helaas ben ik niet wiskundig aange- en onder-legd.

Zodra er interessante geluiden te melden zijn, zal ik die hier plaatsen zodat het topic voor zo veel mogelijk lezers interessant blijft. ;-)

En wie Csound op zijn computer geïnstalleerd heeft kan uiteraard ook de geposte progjes afspelen.
 
Dat kunnen we controleren door te kijken naar de eenheden. Links krijg je met jouw formule: [imath] m/s^2 [/imath]. En rechts: [imath] \frac{\mathrm{N}/\mathrm{m}}{ \mathrm{kg} } * \frac{\mathrm{m}}{\mathrm{kg}} = \frac{\mathrm{N}}{ \mathrm{kg}^2 } = \frac{\mathrm{kg} \, \mathrm{m} \, \mathrm{s}^{-2}}{ \mathrm{kg}^2 } = \frac{ \mathrm{m} / \mathrm{s}^2}{ \mathrm{kg} } [/imath]. Dus je formule kan niet juist zijn.
Volgens mij deel je m weg bij je berekeningen. Dan moet je dat wel zowel links als rechts van het = teken doen toch ?
 
Edit: en dus niet alleen bij de -R maar ook voor de x
 
Bereken -R/m * x/m eens voor R = 1 N/m, m = 1 kg en x = 1 m? Wat vind je dan?
 
Bereken -R/m * x/m eens voor R = 1 N/m, m = 1 kg en x = 1 m? Wat vind je dan?
-1*1 ?

Ik heb niet naar de eenheden gekeken eerlijk gezegd hoor :)

Maar als je rechts van het = teken deelt door m krijg je dx2/dt2. Dan moet je het links ook doen en dan krijg je (-R*x)/m
 
Als je niet naar de eenheden kijkt weet je ook niet wat je berekent. Stel dat je voor -R/m * x/m de uitkomst -1 vindt, wat is dat dan? Is dat -1 m/s^2 of -1 kg of -1 N? Of misschien wel -1 km/uur?

Maar als je rechts van het = teken deelt door m krijg je dx2/dt2. Dan moet je het links ook doen en dan krijg je (-R*x)/m

En waarin verschilt dat van formule (1)?
 
Ow ok zie het nu haha. Ok notitie aan mijzelf: niet in de ochtend naar formules gaan kijken 😂

Excuus
 
Geeft niet - je tip om naar de demping te kijken is wel bruikbaar. Ben dat nu in een Csound programma aan het toepassen.
 
Dit ziet er al veelbelovend uit:

Code:
<CsoundSynthesizer>

<CsOptions>
-o dac
</CsOptions>

<CsInstruments>
sr = 44100
ksmps =  1
nchnls = 2
0dbfs = 1

 
instr 1
;steps of 1 sample time
kdelta_t = 1/sr

;input R/m
ka = 1000000

;measuring time passed
kres timeinsts

if kres < 0.0001 then
kx_old = 1.0
kv_old = 0
else
kx_new = kx_old + kv_old*kdelta_t
kv_new = kv_old + -1*ka*kx_old*kdelta_t

kx_old = kx_new
kv_old = kv_new
endif

aOut = kx_old
outs aOut, aOut

; damping kd plus correction
kd = 0
kx_old = kx_old/(1.0 + (kd + 0.00000012)*(0.017*kv_old*kv_old + abs(kv_old)))


endin

</CsInstruments>

<CsScore>
i 1 0 6
</CsScore>

</CsoundSynthesizer>

Maar ik moet zo dadelijk weg, dus later weer verder...
 
Het progje nog wat vereenvoudigd:

Code:
<CsoundSynthesizer>

<CsOptions>
-o dac
</CsOptions>

<CsInstruments>
sr = 44100
ksmps =  1
nchnls = 2
0dbfs = 1

 
instr 1
;steps of 1 sample time
kdelta_t = 1/sr

;input R/m
ka = 7643021

;measuring time passed
kres timeinsts

if kres < 0.0001 then
kx_old = 1.0
kv_old = 0
else
kx_new = kx_old + kv_old*kdelta_t
kv_new = kv_old + -1*ka*kx_old*kdelta_t

kx_old = kx_new
kv_old = kv_new
endif

;correction of amplitude drift
kx_old limit kx_old, -1, 1

aOut = kx_old
outs aOut, aOut

endin

</CsInstruments>

<CsScore>
i 1 0 5
</CsScore>

</CsoundSynthesizer>

En zo klinkt het:



En zo zien het begin en eind eruit:

begin.png



eind.png
 
Laatst gewijzigd:
Het progje van de vorige post heeft:

Code:
;input R/m
ka = 7643021

Dus: [imath] \mathrm{R}/\mathrm{m} = 7643021\, \mathrm{s}^{-2} [/imath]

Een dergelijk massa veer systeem trilt volgens (6) met een hoekfrequentie [imath] \omega [/imath] van:

[imath] \omega = \sqrt{7643021} = 2764,6 \, \mathrm{rad}/\mathrm{s} [/imath]

En dus vinden we als trillingsfrequentie f dat:

[imath] \mathrm{f} = \frac{\omega}{2 \pi} = 440 \, \mathrm{Hz} [/imath]

Klopt dit met het geluid dat het progje heeft opgeleverd? Zo op het gehoor wel, maar hoe precies is het?
 
Ha, er is geluid! :) Probeer 'ns een frequentie van 441Hz, bij een samplerate van 44,1kHz is één periode 100 samples, wat je kunt natellen. Ik denk dat het wel klopt, wat je nu hebt. Het signaal clipped wel wat.
 
OK - zal ik proberen. Dat clippen is het gevolg van het inzetten van de limit opcode en dat is de prijs die we moeten betalen voor het onderdrukken van de exploderende amplitude. Ik begrijp nog steeds niet waarom die amplitude aangroeit en waarom de snelheid van aangroeien frequentie-afhankelijk is. Het gebruik van de limit opcode lijkt mij de simpelste en minst ingrijpende manier om die ongewenste explosie van het gegenereerde signaal te voorkomen.
 
Misschien kun je testen of de frequentie waar het mis gaat te maken heeft met de veer constante.

Wat gebeurt er als je de veer extreem stijf of slap maakt?
 
Back
Top