Spel12: Svängande Strängen

313751.image0

En svängande gitarrsträng, eller ett rep som man skakar i ändarna, kan simuleras med tidsstegningen med tidssteget dt:

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

där u[1], u[2],…u[M] är en lista av vertikala ändringar av position av strängen/repet och v[1], v[2],…,v[M], är en lista av motsvarande hastigheter med vissa utgångsvärden och randvärden för i=1 och i=M givna. Låt tex M=100,  motsvarande en indelning av en sträng av längden 1 i delar av längden dx=1/M.

Programmera tidsstegningen och studera resultaten för olika val av M och dt, utgångsvärden och randvärden. Försök ge tidsstegningen en fysikalisk mening.

Jämför med Mechanics1 på App Store.

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

function setup()

print(“Wave Motion 1d”)

uold = {}
unew = {}
vold = {}
vnew = {}
um = {}
M = 50

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

for i=20,30 do
vold[i]=20
end
parameter.number(“F”,-10,10,0,function(n) print(“F set to “..n) end)
parameter.number(“A”,1,10,5,function(n) print(“A set to “..n) end)
parameter.number(“U”,-10,10,0,function(n) print(“U set to “..n) end)

end

— This function gets called once every frame
function draw()

background(40, 40, 50)
k=1/(M*A)
h=1/M
h2=h^2

for m=1,4 do
uold[100]=0.1*U
for i = 1,M do
um[i]=(uold[i]+unew[i])/2
end
for i =2,M-1 do
D2=A*(um[i+1]-2*um[i]+um[i-1])/h2+10*F
vnew[i] = vold[i]+ k*D2
unew[i] = uold[i]+ (vold[i]+vnew[i])*k/2
end
end

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

fill(100*uold[50], 0, 255, 255)
for i = 1,M-1 do
ellipse(8*i,500+200*uold[i],10,10)
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