Not enough Input arguments in integral function

5 views (last 30 days)
Alix DUMAS on 15 Oct 2021
Commented: Alix DUMAS on 15 Oct 2021
Good afternoon,
I am trying to compute the exact Wagner function on MATLAB with the following equation : , where c(k) is the Theodorsen function. I already created a function computing c(k), but I am having trouble computing the integral. I have defined k = 0.1 and s = linspace(0,100,100).
For now I have tried two options with the integral(fun, xmin, xmax) function of MATLAB :
1) Create a function in another matlab script and then write W = (2./pi).*integral(fun_W,0, Inf). The result was an error saying :
"Not enough input arguments.
Error in W_integrande (line 2)
f = F_k(k).*sin(k.*s)./k;
Error in HMWK3_DUMAS (line 14)
W = (2./pi).*integral(W_integrande,0, Inf)"
2) On another forum I saw people using
"fun_W = @(k,s) real(c_k(k)).*sin(k.*s)./k;
W = (2./pi).*integral(fun_W,0, Inf)"
So I tried it and this time the error is
"Not enough input arguments.
Error in HMWK3_DUMAS>@(k,s)real(c_k(k)).*sin(k.*s)./k (line 13)
fun_W = @(k,s) real(c_k(k)).*sin(k.*s)./k;
Error in integralCalc/iterateScalarValued (line 314)
fx = FUN(t);
Error in integralCalc/vadapt (line 132)
[q,errbnd] = iterateScalarValued(u,tinterval,pathlen);
Error in integralCalc (line 83)
[q,errbnd] = vadapt(@AToInfInvTransform,interval);
Error in integral (line 87)
Q = integralCalc(fun,a,b,opstruct);
Error in HMWK3_DUMAS (line 14)
W = (2./pi).*integral(fun_W,0, Inf);"
I don't understand why I am getting the error "not enough input arguments", could someone help me with this ?
Thank you in advance !
Alix DUMAS on 15 Oct 2021
Sure ! My function for c(k) is :
function[c] = c_k(k)
c = besselh(1,2,k)./(besselh(1,2,k)+j.*besselh(0,2,k));

Sign in to comment.

Accepted Answer

David Hill
David Hill on 15 Oct 2021
for t=1:numel(s)
function c= c_k(k)
c = besselh(1,2,k)./(besselh(1,2,k)+1j.*besselh(0,2,k));%need 1j

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!