How to create a function that lets me choose the output (euler,Rk2 or Rk4)?
2 views (last 30 days)
Show older comments
Danny Helwegen
on 22 Dec 2018
Edited: Danny Helwegen
on 23 Dec 2018
Hi guys, I have made an Euler solution, an RK2 and an RK4 solution for the same differential equation and now i want to put these all in one function so that i can choose from the command line which solution i want. I have tried several things, but I can't figure it out. Can anyone help me?
These are the codes for Euler, RK2 and RK4:
% Euler
function x = EULER(k,M,h,D) % Euler's method
...
return
% Runge Kutta 2
function x = rk2(k,M,N,D) % midpoint rule
..
return
% Runge Kutta 4
function x = rk4(k,M,N,D)
...
return
0 Comments
Accepted Answer
Cris LaPierre
on 22 Dec 2018
All your functions have 4 inputs and one output, so that works out nicely. I would probably create a function declaration with a 5th input for indicating the method to use. For simplicity, I'll keep the other inputs the same. Use a switch statement on method and either call the appropriate function or copy the code for that function into the case. For conciseness, this calls the existing functions.
function x = mySolver(k,M,h,D,method)
switch lower(method)
case 'euler'
x = EULER(k,M,h,D); % Euler's method
end
case 'rk2'
x = rk2(k,M,h,D) % Runge Kutta 2
end
case 'rk4'
x = rk2(k,M,h,D) % Runge Kutta 2
end
end
It would then be called doing something like
x = mySolver(k,M,h,D,'euler')
0 Comments
More Answers (2)
TADA
on 22 Dec 2018
Easiest Solution Would Be:
function x = solveDiffEq(k, M, step, D, method)
if nargin < 5; method = 'euler'; end
switch lower(method)
case 'euler'
x = EULER(k, M, step, D);
case 'rk2'
x = rk2(k, M, step, D);
case 'rk4'
x = rk4(k, M, step, D);
end
end
Now EULER IS The Default Method For solving, And If Specified Uses The Specified Method.
0 Comments
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!