A function without any argument

조회 수: 1 (최근 30일)
Wissem
Wissem 2022년 4월 5일
댓글: Voss 2022년 4월 5일
Hello everyone,
Could someone help me to understand why I got this error while running my script :
>> shoot4nl
Not enough input arguments.
My script is the following :
function shoot4nl
% Shooting method for nonlinear 4th-order boundary
% value problem
global XSTART XSTOP H % Make these params. global.
XSTART = 0; XSTOP = 1; % Range of integration.
H = 0.1; % Step size.
freq = 1; % Frequency of printout.
u = [-1 1]; % Trial values of u(1)
% and u(2).
x = XSTART;
u = newtonRaphson2(@residual,u);
[xSol,ySol] = runKut5(@dEqs,x,inCond(u),XSTOP,H);
printSol(xSol,ySol,freq)
function F = dEqs(x,y) % Differential equations.
F = zeros(1,4);
F(1) = y(2); F(2) = y(3); F(3) = y(4);
if x < 10.0e-4; F(4) = -12*y(2)*y(1)^2;
else; F(4) = -4*(y(1)^3)/x;
end
function y = inCond(u) % Initial conditions; u(1)
y = [0 0 u(1) u(2)]; % and u(2) are unknowns.
function r = residual(u) % Bounday residuals.
global XSTART XSTOP H
r = zeros(length(u),1);
x = XSTART;
[xSol,ySol] = runKut5(@dEqs,x,inCond(u),XSTOP,H);
lastRow = size(ySol,1);
r(1) = ySol(lastRow,3);
r(2) = ySol(lastRow,4) - 1;
I am trying to implement a shooting method algorithm for solving a non-linear equation.
Thank you for your help,
Best regards.
  댓글 수: 7
Wissem
Wissem 2022년 4월 5일
@Torsten@Jan This is the complete error obtained :
>> shoot4nl
Not enough input arguments.
Error in runKut5 (line 53)
if e <= eTol
Error in shoot4nl>residual (line 34)
[xSol,ySol] = runKut5(@dEqs,x,inCond(u),XSTOP,H);
Error in newtonRaphson2>jacobian (line 35)
f0 = feval(func,x);
Error in newtonRaphson2 (line 19)
[jac,f0] = jacobian(func,x);
Error in shoot4nl (line 14)
u = newtonRaphson2(@residual,u);
I wille edit my post to share the other functions in order to run properly what I wrote.
Thanks
Jan
Jan 2022년 4월 5일
편집: Jan 2022년 4월 5일
Fine. This is useful. The problem occurs inside "runKut5". Most likely this function expects more inputs, than you provide in:
[xSol,ySol] = runKut5(@dEqs,x,inCond(u),XSTOP,H);
Please post the code of the failing function. What is "e" and "eTol"?

댓글을 달려면 로그인하십시오.

채택된 답변

Voss
Voss 2022년 4월 5일
There is a line in runKut5 that looks like it accidentally got commented out due to a comment on the previous line:
if nargin < 6; eTol = 1.0e-6; end
This line sets eTol to 1e-6 if it is not given as an input argument (it is the 6th input). Your calling function calls runKut5 with 5 inputs, so making this change should avoid the error. Updated runKut5.m is attached here.
  댓글 수: 2
Wissem
Wissem 2022년 4월 5일
@_ Thank you for your help : it worked now. I didn't pay attention to this line : thanks !
Voss
Voss 2022년 4월 5일
You're welcome!

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Numeric Solvers에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by