Hello all - This code will run, but it bogs down my computer when I run it for finer and finer time increments and more generations. I was wondering if there is a better way to write my loops so that this wouldn't happen. Thanks!
-Tyler ################# # Bifurcation diagram # Using Braaksma system of equations # We have however used a Fourier analysis # to get a forcing function similar to # cardiac action potential... ################# require(odesolve) # We get this s_of_t function from Maple ws s_of_t = function(t) { (1/10) * (( (1/2) + (1/2) * (sin((1/4)*pi*t))/(abs(sin((1/4)*pi*t)))) * ( 6.588315815*sin((1/4)*pi*t) - 1.697435362*sin((1/2)*pi*t) - 1.570296922*sin ((3/4)*pi*t) + 0.3247901958*sin(pi*t) + 0.7962749105*sin((5/4)*pi*t) + 0.07812230515*sin((3/2)*pi*t) - 0.3424877143*sin((7/4)*pi*t) - 0.1148306748* sin(2*pi*t) + 0.1063696962*sin((9/4)*pi*t) + 0.02812403009*sin((5/2)*pi*t))) } ModBraaksma = function(t, n, p) { dx.dt = (1/0.01)*(n[2]-((1/2)*n[1]^2+(1/3)*n[1]^3)) dy.dt = -(n[1]+p["alpha"]) + 0.032 * s_of_t(t) list(c(dx.dt, dy.dt)) } initial.values = c(0.1, -0.02) alphamin = 0.01 alphamax = 0.02 alphas = seq(alphamin, alphamax, by = 0.00001) TimeInterval = 100 times = seq(0.001, TimeInterval, by = 0.001) plot(1, xlim = c(alphamin, alphamax), ylim = c(0,0.3), type = "n",xlab = "Values of alpha", ylab = "Approximate loop size for a limit cycle", main = "Bifurcation Diagram") for (i in 1:length(alphas)){ params = c(alpha=alphas[i]) out = lsoda(initial.values, times, ModBraaksma, params) X = out[,2] Y = out[,3] for(j in 200:length(times)){ if (abs(X[j]) < 0.001) { points(alphas[i], Y[j], pch = ".") } } } [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.