Undefined function 'matlabFunction' for input arguments of type 'double'.
12 views (last 30 days)
Show older comments
Brock Eubanks
on 4 Sep 2019
Commented: Walter Roberson
on 4 Sep 2019
I can't seem to figure out why I am getting the error for the code
function [r,n]= Problem25b(f,x1,tol,N)
if nargin<4 || isempty(N), N=20; end
if nargin<3 || isempty(tol), tol=1e-6; end
fp=matlabFunction(diff(f));
f2p=MatLabFunction(diff(f,2));
x=zeros(1,N+1);
x(1)=x1;
for n=1:N
x(n+1)=x(n)-(f(x(n))*fp(x(n)))/(fp(x(n)))^(2)-f(x(n))*f2p(x(n));
if abs(x(n+1)-x(n))<tol
r=x(n+1);
return
end
end
when I run it I get the error:
[r,n]=Problem25b('x^(3)+2x^(2)+x+2',-3,1e-6,20)
Undefined function 'matlabFunction' for input arguments of type 'double'.
Error in Problem25b (line 5)
fp=matlabFunction(diff(f));
0 Comments
Accepted Answer
Walter Roberson
on 4 Sep 2019
'x^(3)+2x^(2)+x+2'
is a character vector. diff() applied to a character vector gives numeric values:
ans =
-26 -54 11 -10 2 7 70 -26 -54 10 -9 2 77 -77 7
There is no matlabFunction() for numeric values.
You need to construct a symbolic expression out of the character vector that is passed in.
In older MATLAB releases, you could use sym() to convert character vectors into symbolic expressions. In newer MATLAB releases, you need to use str2sym()
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!