Solving an implicit equation with fzero in a function.

13 views (last 30 days)
I am trying to solve an implicit equation using the fzero command. The implicit function includes a few variables. When I set up the function and fzero command with those variables hard-coded everything works. I can't figure out how to create a function that includes the fzero command, so I can solve my original equation implicitly for different values of the variables. Here are my two functions...
function y = weir_height2(h,weir_height,total_weir_length,total_weir_discharge)
y = (2/3) * sqrt(2 * 32.174) * (0.611 + (0.08 * (h./weir_height))) * total_weir_length * (h.^1.5) - total_weir_discharge;
and
function y = weir_height_all(weir_height,h0,total_weir_length,total_weir_discharge)
fun = @weir_height2;
x0 = h0;
z = fzero(fun,x0);
end
I keep getting different errors. Can someone please help me fix my two functions?

Accepted Answer

Matt J
Matt J on 14 May 2025
fun = @(h) weir_height2(h,weir_height,total_weir_length,total_weir_discharge)
  4 Comments
Steven Lord
Steven Lord on 14 May 2025
function y = weir_height_all(weir_height2,h0,total_weir_length,total_weir_discharge)
fun = @(h) weir_height2(h,weir_height,total_weir_length,total_weir_discharge);
%snip
I believe you intend for the fun anonymous function you've defined to call the weir_height2 function. But the first input argument to weir_height_all is named weir_height2, so that anonymous function actually tries to index into that variable. Rename the first input argument of weir_height_all to weir_height instead of weir_height2.
Allen Hammack
Allen Hammack on 14 May 2025
Thank you! I fixed the typo you noticed, and everything is working now!

Sign in to comment.

More Answers (0)

Products


Release

R2022b

Community Treasure Hunt

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

Start Hunting!