Spel15: Studsmatta

maxresdefault                                                           Följ dynamiken!

Svängningen av en studsmatta (eller trumskinn eller ett membran i en mikrofon eller högtalare) kan simuleras med följande utvidgning av modellen för den svängande gitarrsträngen i Möte 12:

  • v[i][j]=v[i]+dt*(u[i+1][j]+u[i,j+1]-4*u[i]+u[i-1][j]+u[i][j-1])/dx^2
  • u[i][j]=u[i][j]+dt*v[i][j]

för i,j=1,2,..,M, där u[i][j] med i,j=1,2,…,M, är en lista av vertikala ändringar av position av mattan/membranet och v[i][j] är en lista av motsvarande hastigheter med vissa utgångsvärden och randvärden för i,j=1 och i,j=M givna. Låt tex M=40, motsvarande en indelning av en matta av med sida 1 i små kvadrater av sida dx=1/40.

Programmera tidsstegningen med olika val av utgångshastighet v med säg u=0 och tidssteg dt.

Template 1: (Titta på den svängande studsmattan)

— Wave Motion 2d

uold = {}
unew = {}
vold = {}
vnew = {}
um = {}
M = 40
h=1/M
dt=h/2

for i=1,M do
uold[i]={}
unew[i]={}
vold[i]={}
vnew[i]={}
um[i]={}
end

for i=1,M do
for j=1,M do
uold[i][j]=0
unew[i][j]=0
vold[i][j]=0
vnew[i][j]=0
um[i][j]=0
end
end

for i=1,M do
for j=1,M do
uold[i][j]=math.sin(math.pi*i/M)*math.sin(math.pi*j/M)
end
end

function setup()
print(“Wave Motion 1d”)
end
function draw()

background(251, 251, 251, 255)
for m=1,4 do
for i = 1,M do
for j=1,M do
um[i][j]=(uold[i][j]+unew[i][j])/2
end
end
for i =2,M-1 do
for j=2,M-1 do
D2=(um[i+1][j]+um[i][j+1]-4*um[i][j]+um[i-1][j]+um[i][j-1])/h^2
vnew[i][j] = vold[i][j] + dt*D2
unew[i][j] = uold[i][j] + dt*(vold[i][j] + vnew[i][j])/2
end
end
end

for i=1,M do
for j=1,M do
uold[i][j] =unew[i][j]
vold[i][j] =vnew[i][j]
end
end

for i=1,M do
for j=1,M do
fill(255,0,0,255+255*uold[i][j])
ellipse(10*i,100+10*j+200*uold[i][j],10,10)
end
end

end

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s