How could I make a script for this ecuation where i can solve for f?

28 次查看(过去 30 天)
  5 个评论
Walter Roberson
Walter Roberson about 22 hours 前
编辑:Walter Roberson about 22 hours 前
rng(655321)
epsilon = rand
epsilon = 0.3140
D = rand
D = 0.3864
Re = rand
Re = 0.1855
eqn = @(x) x + 2*log10(epsilon/D/3.7+2.51*x/Re);
X = fzero(eqn, [0 1e5])
X = 0.0533

请先登录,再进行评论。

回答(1 个)

Walter Roberson
Walter Roberson about 23 hours 前
编辑:Walter Roberson about 22 hours 前
syms f epsilon D Re
Q = @(v) sym(v);
eqn = 1/sqrt(f) == -Q(2.0) * log(epsilon/D/Q(3.7) + Q(2.51)/(Re*sqrt(f)))
F = solve(eqn, f)
Warning: Solutions are only valid under certain conditions. To include parameters and conditions in the solution, specify the 'ReturnConditions' value as 'true'.
disp(char(F))
(86248369*D^2)/(1000*Re*epsilon - 18574*wrightOmega((500*Re*epsilon)/(9287*D) - log(251/(50*Re)))*D)^2
wrightOmega is a function in the Symbolic Toolbox
rng(655321)
epsilon = rand
epsilon = 0.3140
D = rand
D = 0.3864
Re = rand
Re = 0.1855
f = subs(F)
disp(char(vpa(f)))
322.8497917132456879511724468922
subs(eqn)
disp(char(vpa(ans)))
0.055654430712142653567619972363646 == 0.055654430712142653567619972363646

类别

Help CenterFile Exchange 中查找有关 Calculus 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by