From d4660bb996f1177593d90ac4c518c436fe621156 Mon Sep 17 00:00:00 2001 From: Vasil Zlatanov Date: Fri, 17 Feb 2017 14:43:22 +0000 Subject: general approximation techniques developed from exercise sheets --- general/ralston.m | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 general/ralston.m (limited to 'general/ralston.m') 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 -- cgit v1.2.3-54-g00ecf