A function without any argument

2 visualizaciones (últimos 30 días)
Wissem-Eddine KHATLA
Wissem-Eddine KHATLA el 5 de Abr. de 2022
Comentada: Voss el 5 de Abr. de 2022
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 comentarios
Wissem-Eddine KHATLA
Wissem-Eddine KHATLA el 5 de Abr. de 2022
@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 el 5 de Abr. de 2022
Editada: Jan el 5 de Abr. de 2022
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"?

Iniciar sesión para comentar.

Respuesta aceptada

Voss
Voss el 5 de Abr. de 2022
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 comentarios
Wissem-Eddine KHATLA
Wissem-Eddine KHATLA el 5 de Abr. de 2022
@_ Thank you for your help : it worked now. I didn't pay attention to this line : thanks !
Voss
Voss el 5 de Abr. de 2022
You're welcome!

Iniciar sesión para comentar.

Más respuestas (0)

Community Treasure Hunt

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

Start Hunting!

Translated by