summaryrefslogtreecommitdiffstats
path: root/assignments/hw02/euler_mod.jl
diff options
context:
space:
mode:
Diffstat (limited to 'assignments/hw02/euler_mod.jl')
-rw-r--r--assignments/hw02/euler_mod.jl143
1 files changed, 143 insertions, 0 deletions
diff --git a/assignments/hw02/euler_mod.jl b/assignments/hw02/euler_mod.jl
new file mode 100644
index 0000000..65446d1
--- /dev/null
+++ b/assignments/hw02/euler_mod.jl
@@ -0,0 +1,143 @@
+
+using Winston
+
+function doPlot(V_in, k_l, k_p, K_m)
+
+ dt = 0.2
+ tlast = 1000
+
+ iterations = integer(round(tlast/dt))
+ ATPall = zeros(Float64, (iterations, 1))
+ Gall = zeros(Float64, (iterations, 1))
+
+ ATP = 4
+ G = 3
+ for i = 1:iterations
+ ATPall[i] = ATP
+ Gall[i] = G
+
+ dATPdt = 2 * k_l * G * ATP - (k_p * ATP) / (ATP + K_m)
+ dGdt = V_in - k_l * G * ATP
+
+ ATP = ATP + dATPdt * dt
+ G = G + dGdt * dt
+ end
+
+ tall = dt*(0:iterations-1)'
+ figure()
+ hold(true)
+ plot(tall, ATPall, color="red")
+ plot(tall, Gall, color="blue")
+ hold(false)
+ xlabel("Time")
+
+ println("max(G) = ", maximum(Gall))
+ println("max(ATP) = ", maximum(ATPall))
+ # max(G) = 20.97673324771467
+ # max(ATP) = 18.65978074314273
+ title("")
+end
+
+doPlot(0.36, 0.02, 6, 12.0)
+
+function doXY(V_in, k_l, k_p, K_m)
+
+ dt = 0.2
+ tlast = 1000
+
+ iterations = integer(round(tlast/dt))
+ ATPall = zeros(Float64, (iterations, 1))
+ Gall = zeros(Float64, (iterations, 1))
+
+ ATP = 4
+ G = 3
+ for i = 1:iterations
+ ATPall[i] = ATP
+ Gall[i] = G
+
+ dATPdt = 2 * k_l * G * ATP - (k_p * ATP) / (ATP + K_m)
+ dGdt = V_in - k_l * G * ATP
+
+ ATP = ATP + dATPdt * dt
+ G = G + dGdt * dt
+ end
+
+ tall = dt*(0:iterations-1)'
+ figure()
+ hold(true)
+ plot(Gall, ATPall, color="red")
+ hold(false)
+ xlabel("G")
+ ylabel("ATP")
+end
+
+function testStability(V_in, k_l, k_p, K_m)
+
+ dt = 0.05
+ tlast = 2000
+
+ iterations = integer(round(tlast/dt))
+ ATPall = zeros(Float64, (iterations, 1))
+ Gall = zeros(Float64, (iterations, 1))
+
+ ATP = 4
+ G = 3
+ for i = 1:iterations
+ ATPall[i] = ATP
+ Gall[i] = G
+
+ dATPdt = 2 * k_l * G * ATP - (k_p * ATP) / (ATP + K_m)
+ dGdt = V_in - k_l * G * ATP
+
+ ATP = ATP + dATPdt * dt
+ G = G + dGdt * dt
+ end
+
+ #deltaATP = maximum(ATPall[length(ATPall)/2:end]) - minimum(ATPall[length(ATPall)/2:end])
+ #deltaG = maximum(Gall[length(Gall)/2:end]) - minimum(Gall[length(Gall)/2:end])
+ #return (deltaATP, deltaG)
+ return (maximum(ATPall[length(ATPall)/2:end]),
+ minimum(ATPall[length(ATPall)/2:end]),
+ maximum(Gall[length(Gall)/2:end]),
+ minimum(Gall[length(Gall)/2:end]), )
+end
+
+function doBistable()
+ x = 0.1:0.05:1.6
+ varATP = zeros(length(x))
+ varG = zeros(length(x))
+ ATP_h = zeros(length(x))
+ ATP_l = zeros(length(x))
+ G_h = zeros(length(x))
+ G_l = zeros(length(x))
+ for i=1:length(x)
+ (a_h, a_l, g_h, g_l) = testStability(x[i], 0.02, 6, 12.0)
+ varATP[i] = a_h - a_l
+ varG[i] = g_h - g_l
+ ATP_h[i] = a_h
+ ATP_l[i] = a_l
+ G_h[i] = g_h
+ G_l[i] = g_l
+ println((a_h, g_h))
+ end
+ figure()
+ hold(true)
+ plot(x, varG, color="blue")
+ plot(x, varATP, color="red")
+ xlabel("V_in")
+ ylabel("Stability")
+ hold(false)
+ title("Stability plot")
+
+ figure()
+ hold(true)
+ plot(x, G_h, color="blue")
+ plot(x, G_l, color="blue")
+ plot(x, ATP_h, color="red")
+ plot(x, ATP_l, color="red")
+ xlabel("V_in")
+ ylabel("Value")
+ hold(false)
+ title("Values plot")
+end
+