"Ghulaam " <email@example.com> wrote in message <firstname.lastname@example.org>... > Hi would appreciate some assistance in speeding up the following code via vectorisation > > for h = 0.9:0.05:1.8 > for iv = 0.2:0.1:2 > y(1)=iv; > for k = 2:520 > y(k) = y(k-1)+h*(y(k-1)+0.5*h*y(k-1)*(1-y(k-1)))*(1-y(k-1)-0.5*h*y(k-1)*(1-y(k-1))); > end > plot(h*(ones(20,1)), y(501:520),'*'), set(gca(),"auto_clear","off") > end > end > > title('Modified Euler') > xlabel('h'), ylabel('last 20 y') > > set(gca(),"grid",[1 1]), set(gca(),"auto_clear","on")
First, have you preallocated y?
Second, try simplifying the expression, for example the first two terms are simply:
y(k) = y(k-1)*(1 + h) + ...
Once simplified, maybe you can find a way to use CUMSUM.