1

fzeroMATLABを使用して、この暗黙の方程式を解こうとしています。コードを保持するファイルの名前"colebrook"は次のとおりです。これまでに入力したのは次のとおりです。

D = input('Please enter the pipe diameter in meters: ');
V = input('Please enter the fluid velocity in m/s: ');
rho = input('Please enter fluid density in kg/m^3: ');
mew = input('Please enter fluid viscosity in kg/m*s: ');
Re = D*V*rho/mew;

eps = input('Enter absolute roughness in milimeters: ');
eD = eps/(D*1000);

a = fzero(colebrookfunc,0.1);
fprintf(a);

解きたい方程式は という別の m-file に保存されて"colebrookfunc"おり、そこに含まれるコードは次のとおりです。

function F = colebrookfunc(x)
    F = x - 1./(-4 * log10(eD/3.7 + 1.256./(Re*x.^0.5))).^2;

実行すると、次のエラーが発生します。

??? Input argument "x" is undefined.

Error in ==> colebrookfunc at 2
F = x - 1./(-4 * log10(eD/3.7 + 1.256./(Re*x.^0.5))).^2;
Error in ==> colebrook at 28
a = fzero(colebrookfunc,0.1);

私の間違いは何ですか?

ありがとうございました。

4

1 に答える 1

3

関数ハンドルcolebrookfuncとして渡す必要があります。また、ネストされた関数として定義しない限り(明らかに、定義しない)、何らかの方法でパラメーターを関数に渡す必要があります。colebrookfunc

したがって、への呼び出しは次のfzeroようになります。

a = fzero(@(x)colebrookfunc(x,eD,Re),0.1)

そして、の最初の行coolebrookfunc

function F = colebrookfunc(x,eD,Re)
于 2011-04-16T18:14:30.853 に答える