Error using fzero (line 184) FUN must be a function, a valid character vector expression, or an inline function object. What is the issue here?

vi = 600;
v = 0:0.01:1000;
sig = input('Input sigma value: ');
w = input('Input weight of airfoil: ');
f = @(v) 0.01*sig*v.^2 + (0.95/sig)*((w.^2)./(v.^2));
fvi = f(vi);
root = fzero(fvi, vi)
I have no idea why I'm encountering this error, can someone please help me.

1 Comment

Actually nvm I made a silly mistake, this does not cross the x axis, its derivative does. got confused my bad.

Sign in to comment.

Answers (1)

v is the variable of the function. You do not have to deine it as a vector.
fzero expects a function handle, but f(vi) is a number.
vi = 600;
sig = input('Input sigma value: ');
w = input('Input weight of airfoil: ');
f = @(v) 0.01*sig*v.^2 + (0.95/sig)*((w.^2)./(v.^2));
root = fzero(f, vi)

1 Comment

Yeah I realised this too, fixed it up a few hours ago:
vi = 500;
sig = input('Input sigma value: ');
w = input('Input weight of airfoil: ');
f = @(v) 0.02*sig*v - (1.90/sig)*((w^2)/(v^3)); %deriv. of Drag Eqn
dfdv = @(v) 0.02*sig + (5.70/sig)*((w^2)/(v^4)); %double deriv. of Drag Eqn
fvi = f(vi);
mi = dfdv(vi);
while abs(fvi) > 0
vi_new = vi - fvi/mi;
vi = vi_new
fvi = f(vi);
mi = dfdv(vi);
end
root = fzero(f, 600)

Sign in to comment.

Categories

Asked:

on 1 Oct 2021

Commented:

on 1 Oct 2021

Community Treasure Hunt

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

Start Hunting!