基本上,为了找到方程的根,我想使用fsolve命令。我想我应该创建一个函数句柄,以“右手-左手=0”的形式来计算这个方程,但是我一直在努力让这个方程发挥作用。有人知道怎么做吗?
方程本身为1/sqrt(f) = -1.74_log((1.254/((1.273_10^8)_sqrt(f)))+((1_10^-3)/3.708)).因此,我想通过使用fsolve对1/sqrt(f)+(1.74_log((1.254/((1.273_10^8)_sqrt(f)))+((1_10^-3)/3.708))) =0进行求解来找出左右两面的交点。
非常感谢!
目前为止的代码(根本不起作用)
f = @(x) friction(x,rho,mu,e,D,Q, tol, maxIter) ;
xguess = [0, 1];
sol = fsolve(x, xguess ) ;
function y = friction(x,rho,mu,e,D,Q, tol, maxIter)
D = 0.1;
L = 100
rho = 1000;
mu = 0.001;
e = 0.0001;
Q = 0.01;
U = (4*Q)/(pi*D^2);
Re = (rho*U*D)/mu ;
y = (1/sqrt(x))-(-1.74*log((1.254/(Re*sqrt(x)))+((e/D)/3.708)))
end错误消息:
错误使用lsqfcnchk (第80行)乐趣必须是一个函数,一个有效的字符矢量表达式,或内联函数对象。
(第238行) funfcn =lsqfcnchk中的错误(有趣,‘FUN’,长度(Varargin),funValCheck,grad频);
错误在无题(第6行)溶胶=f解决(x,x猜测);
发布于 2021-02-18 23:07:18
第一个参数应该是函数,而不是变量。取代:
sol = fsolve(x, xguess );使用
sol = fsolve(f, xguess );在定义f之前定义Rho,mu,e等(而不是在摩擦函数中)。
发布于 2021-02-19 00:20:48
opt = optimset('Display', 'Iter');
sol = fsolve(@(x) friction(x), 1, opt);
function y = friction(x)
D = 0.1;
L = 100; % note -- unused
rho = 1000;
mu = 0.001;
e = 0.0001;
Q = 0.01;
U = (4*Q)/(pi*D^2);
Re = (rho*U*D)/mu ;
y = (1/sqrt(x))-(-1.74*log((1.254/(Re*sqrt(x)))+((e/D)/3.708)));
endsol = 0.0054
https://stackoverflow.com/questions/66268305
复制相似问题