How to solve implicit function without using solve() function?

I searched online how to solve a implicit function in Matlab and here is the link it sent me to, https://www.mathworks.com/matlabcentral/answers/247461-best-way-to-solve-for-a-implicit-equation. I attempted to use the example in the link, but I get an error.
Exiting fzero: aborting search for an interval containing a sign change
because complex function value encountered during search.
(Function value at -0.28 is 15.0459-1.88983i.)
Check function or try again with a different starting value.
I was thinking about using the solve() function in Matlab, however I would need to purchase the symbolic math toolbox. :/ If there isn't a solution for this I may just re-write the equation in explicit form.
Attached is an image of the equation. I want to solve for 'f'.
func = (1 / sqrt(f5)) - 2 * log((eps / D) / 3.7) + ((2.51) / (Re * sqrt(f5)));
f5 = solve(func, 1)

 採用された回答

Star Strider
Star Strider 2019 年 1 月 27 日

0 投票

If you have the Optimization Toolbox, use the fsolve function:
D = something;
Re = something_else;
func = @(f5) (1 / sqrt(f5)) - 2 * log((eps / D) / 3.7) + ((2.51) / (Re * sqrt(f5)));
f5 = fsolve(func, 1)

2 件のコメント

Zachary Dunagan
Zachary Dunagan 2019 年 1 月 27 日
I don't have the Optimization Toolbox. Thanks for answering my question and letting me know which toolbox I need to get.
Star Strider
Star Strider 2019 年 1 月 27 日
My pleasure.
That, and the Global Optimization Toolbox are both worth getting, for their robust optimization routines.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by