# Error: Not enough input arguments

3 views (last 30 days)
Jamie Al on 2 May 2021
Edited: per isakson on 2 May 2021
I have the following error in my Runge-Kutta (4 stage) function:
Not enough input arguments.
Error in RK4
for j = 2:N-1 % ERROR HERE
Error in EulerMUSCL (line 94)
[U_RK] = RK4( U_T, Res, dx, dt, k);
My function:
function [ U_RK ] = RK4( U_T, Res, dx, dt, k,N )
%This function returns the consvar and applies 4th order RK.
U_RK = U_T;% size is 8 by 1001 (8 by N)
a = zeros(4,1);
a(1) = 0.25;
a(2) = 1.0/3.0;
a(3) = 0.5;
a(4) = 1.0;
for j = 2:N-1 %ERROR HERE
U_RK(:,j) = U_T(:,j)-a(k)*dt*Res/(dx);
end
end
Why does it say not enough inputs?? Thanks

per isakson on 2 May 2021
Edited: per isakson on 2 May 2021
Accourding to the definition
function [ U_RK ] = RK4( U_T, Res, dx, dt, k, N )
requires six input values. Your call of the function, RK4
[U_RK] = RK4( U_T, Res, dx, dt, k);
provides only five input values. A value for the last, N, is missing.
##### 2 CommentsShowHide 1 older comment
per isakson on 2 May 2021
This script returns a <8x100 double>; i.e. it doesn't throw an error.
%%
N = 1e2;
UT = randn( 8, N );
U_RK = RK4( UT, 1, 1e-2, 1e-2, 4, N );
Let me guess, you have switch the order between the inputs k and N. Compare the function declaration and your call-statement.
function [ U_RK ] = RK4( U_T, Res, dx, dt, k, N )
[U_RK] = RK4( U_T, Res, dx, dt,N, k);