Spel11: Kampen mellan Färgerna

Aspidites_ramsayi-RD-example

Kampen mellan två motstridiga sidor, säga röda och blå, kan simuleras med tidsstegningen:

u[i]=u[i]+A*(u[i+1]-2*u[i]+u[i-1])+u[i]*(1-u[i]^2)  för i=1,…,M,

där u[1], u[2],…u[M] är en lista av värden med utgångsvärden mellan -1 och +1 (tex med u[i]=1-2*math.random()), där u[i]=-1 betyder röd och u[i]=1 betyder blå och u[1]=1 och u[M]=-1.

Programmera tidsstegningen och studera kampen mellan röda och blå. Välj tex M=100 och A=0.1 till att börja med och se vad som händer då Du ändrar A (tex genom att lägga upp den som en parameter i Codea och sedan styra den interaktivt under tidsstegningen). Koppla till mönstret på ormens skinn i bilden. Försök ge en fysikalisk mening till tidsstegningen. Jämför med Biology1 på App Store.

Template 1: (Titta på kampen)

function setup()

uold = {}
unew = {}
um = {}
M =100

for i=1,M do
uold[i]=1-2*math.random()
unew[i]=uold[i]
um[i]=0
end

uold[1]=1
unew[1]=1
uold[M]=-1
unew[M]=-1

print(“Wave Motion 1d”)
parameter.number(“A”,1,10,1,function(n) print(“A set to “..n) end)
parameter.number(“N”,1,200,200,function(n) print(“A set to “..n) end)

end

function draw()

background(237, 237, 241, 255)

k=1/N

for m=1,4 do
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])+(um[i]-um[i]^3)
unew[i] = uold[i]+ k*D2
end
end

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