I'm not understanding why this error occurs: Error: Unexpected MATLAB expression

3 views (last 30 days)
Matt on 17 Oct 2013
Commented: Jan on 17 Oct 2013
What i entered in console and received
>> newton(x^3-x,3x^2-1,-1,1e-5,20)
??? newton(x^3-x,3x^2-1,-1,1e-5,20)
|
Error: Unexpected MATLAB expression.
function used is as follows
function [ x, ex ] = newton( f, df, x0, tol, nmax )
%
% NEWTON Newton's Method
% Newton's method for finding successively better approximations to the
% zeroes of a real-valued function.
%
% Input:
% f - input funtion
% df - derived input function
% x0 - inicial aproximation
% tol - tolerance
% nmax - maximum number of iterations
%
% Output:
% x - aproximation to root
% ex - error estimate
%
% Example:
% [ x, ex ] = newton( 'exp(x)+x', 'exp(x)+1', 0, 0.5*10^-5, 10 )
if nargin == 3
tol = 1e-4;
nmax = 1e1;
elseif nargin == 4
nmax = 1e1;
elseif nargin ~= 5
error('newton: invalid input parameters');
end
f = inline(f);
df = inline(df);
x(1) = x0 - (f(x0)/df(x0));
ex(1) = abs(x(1)-x0);
k = 2;
while (ex(k-1) >= tol) && (k <= nmax)
x(k) = x(k-1) - (f(x(k-1))/df(x(k-1)));
ex(k) = abs(x(k)-x(k-1));
k = k+1;
end
end

Jan on 17 Oct 2013
Edited: Jan on 17 Oct 2013
You are missing a multiplication operator:
Try
newton(x^3-x,3 * x^2-1,-1,1e-5,20)
^
inserted
Edit: I just noticed, that the function header of newton obviously expects strings ast input arguments. Like in the example given:
[ x, ex ] = newton( 'exp(x)+x', 'exp(x)+1', 0, 0.5*10^-5, 10 )
You will have to alter your function call accordingly. However, the Matlab error resulted from the missing multiplication operator.
Matt on 17 Oct 2013
Thank you very much, something so simple yet can be a pain. The life of syntax...
Jan on 17 Oct 2013
And the error message has been very specific.