如何在另一个函数中循环一个函数,直到双方相等?
例如
在我找到这个“f”之后
f = (1/(-1.8*log(((epsilon/D)/3.7)^2 + 6.9/Re)))^2;
我想使用 f 的值并在此处输入
f = (1/ -2.0*log((epsilon/D) + (2.51/Re*sqrt(***f***))))^2
该程序应该循环直到双方相等或相对接近。可接受的准确度或误差是0.00001
.
以及如何显示给 mme wha 的 f 值
如何在另一个函数中循环一个函数,直到双方相等?
例如
在我找到这个“f”之后
f = (1/(-1.8*log(((epsilon/D)/3.7)^2 + 6.9/Re)))^2;
我想使用 f 的值并在此处输入
f = (1/ -2.0*log((epsilon/D) + (2.51/Re*sqrt(***f***))))^2
该程序应该循环直到双方相等或相对接近。可接受的准确度或误差是0.00001
.
以及如何显示给 mme wha 的 f 值
I'm assuming that's fix point iteration you are attempting to use there, with your first code line being a starting estimate and your second code line being the actual fixed point iteration.
In this case you need to simply repeat that second statement while testing the difference between successive iterations. Something like this for example.
f = 1;
df = 1;
while abs(df) > 0.0001
fnew = log(20/f);
df = fnew - f;
f = fnew;
end;
BTW. The above is a simple example of fixed point iteration to solve f*exp(f)=20, [or equivalently f = ln(20/f)]. Apply the same logic to your particular equation for "f", but beware that not all equations are amenable to fixed point iteration.
在我看来,您正在尝试解决表达式
f = somefun(f);
其中 f 的初始值由下式给出
f = (1/(-1.8*log(((epsilon/D)/3.7)^2 + 6.9/Re)))^2
您最好的选择(如果您可以使用)是使用 Matlab 的优化工具箱,您可以在其中将要最小化的函数设置为
f - somefun(f)
以及您可以在哪里设置公差使用optimset('TolFun', 1e-5);
如果您没有工具箱,那么 drN 在使用牛顿方法的评论中的建议可能与任何其他方法一样好 - 您将通过自己的操作学到更多。