# Matlab "Not enough input arguments" error

I'm new to Matlab and am working on implementing Newton's method on a nonlinear system. I'm using a very simple example but when I call the function I create, I get the error: "Not enough input arguments. Error in function1 (line 2) f=x.^3-x.^2-1;"

# Here are my function definitions:

## Newton's method part:

function [new, iter] = Netn(function1,dfunction1,x) tol=0.0001; old=x; u=function1(x); v=dfunction1(x); new=old-u/v; iter=1; while (abs(new-old)>=tol) old=new; u=function1(old); v=dfunction1(old); new=old-u/v; iter=iter+1; end end

## Simple function definition

function f=function1(x) f=x.^3-x.^2-1; end

## Simple function derivative definition (for Newton's)

function f=dfunction1(x) f=3*x.^2-2*x; end

### Can someone please help me with where I'm going wrong? Typing things like "Netn(function1, dfunction1, 3)" in the command window gets the error. I'd appreciate anything, thanks!

You need to use function handles.

Netn(@function1, @dfunction1, 3)


Change you main function to (you need to use feval when evaluating the functions passed by function handles)

function [new, iter] = Netn(func1,dfunc1,x)
tol=0.0001;
old=x;
u=feval(func1,x);
v=feval(dfunc1,x);
new=old-u/v;
iter=1;
while (abs(new-old)>=tol)
old=new;
u=feval(func1,old);
v=feval(dfunc1,old);
new=old-u/v;
iter=iter+1;
end
end


Now you can also create other objective and derivative functions, with other names. And you pass those names as function handles in your call to Netn, without changing the code to Netn.

• perfect, thanks so much! May 26, 2018 at 0:48