Divyat
Divyat

Reputation: 161

fsolve error: no function or method found

I wrote this code in octave:

syms z;
f=z-2;
fsolve("f",0.)

Then this gives the error

@f: no function and no method found.

Also using fsolve(@f,0) gives the same error

When I write code as:

syms z;
f=z-2;
fsolve(f,0.)

Then this gives the error

ind2sub: subscript indices must be either positive integers less than 2^31 or logicals.

Please explain to me how to actually use fsolve.

Upvotes: 0

Views: 1900

Answers (1)

Adriaan
Adriaan

Reputation: 18187

% syms z;      % Not needed, actually slows down the code
f=@(z)(z-2); 
fsolve(f,0.)

You're missing the @ symbol, which is a function handle. This tells Octave that f is not a variable, but actually is a(n anonymous) function, in this case of z, which is the first argument.

You'll probably want to have z to be a regular variable, because making it symbolic turns MATLAB from a speeding race car to a drudging farm vehicle. Unless there's a specific reason to have z symbolic (I cant think of any in case of usage with fsolve)' it's best to avoid symbolic maths.

Upvotes: 4

Related Questions