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 visualizaciones (últimos 30 días)
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.

Respuestas (1)

Jan
Jan el 1 de Oct. de 2021
Editada: Jan el 1 de Oct. de 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)
  1 comentario
Broden Tripcony
Broden Tripcony el 1 de Oct. de 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)

Iniciar sesión para comentar.

Community Treasure Hunt

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

Start Hunting!

Translated by