summaryrefslogtreecommitdiff
path: root/general/ralston.m
diff options
context:
space:
mode:
Diffstat (limited to 'general/ralston.m')
-rw-r--r--general/ralston.m27
1 files changed, 27 insertions, 0 deletions
diff --git a/general/ralston.m b/general/ralston.m
new file mode 100644
index 0000000..2d18571
--- /dev/null
+++ b/general/ralston.m
@@ -0,0 +1,27 @@
+function [xa, ya] = ralston(derivative, x_initial, y_initial, step, x_final)
+ % Define intial values for x and y
+ %x_initial=0;
+ %y_initial=2;
+
+ %% Set the step size between calculations
+ %step=0.0003;
+
+ %% Define an endpoint
+ %x_final=1;
+
+ %% Define a dy/dx
+ %derivative=@(x,y) x+y;
+
+ % Determine how many times to step forward
+ N=round((x_final-x_initial)/step); % use this determine size
+
+ % Define and initialise arrays to contain coordinates
+ ya=zeros(1,N); xa=zeros(1,N);
+ xa(1)=x_initial; ya(1)=y_initial;
+
+ % da is the value of the derivative at xa, ya
+ for j=1:N-1 % loop for N-1 steps
+ da = feval(derivative, xa(j), ya(j));
+ ya(j+1)=ya(j) + step/4*(da + 3*feval(derivative, xa(j)+2/3*step, ya(j)+2/3*step*da)) ;
+ xa(j+1)=xa(j)+step; % increase x by stepsize
+ end