# 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?

4 views (last 30 days)
Broden Tripcony on 1 Oct 2021
Commented: Broden Tripcony on 1 Oct 2021
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)
Broden Tripcony on 1 Oct 2021
Actually nvm I made a silly mistake, this does not cross the x axis, its derivative does. got confused my bad.

Jan on 1 Oct 2021
Edited: Jan on 1 Oct 2021
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)
Broden Tripcony on 1 Oct 2021
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)