решение неявного уравнения с fzero на MATLAB - PullRequest
1 голос
/ 16 апреля 2011

Я пытался решить это неявное уравнение, используя fzero в MATLAB.Файл, содержащий код, называется "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-файле с именем "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);

В чем моя ошибка?

Спасибовы.

1 Ответ

2 голосов
/ 16 апреля 2011

Вы должны передать colebrookfunc как дескриптор функции . Кроме того, если вы не определите colebrookfunc как вложенную функцию (что, по-видимому, вы не делаете), вам нужно каким-то образом передать параметры в функцию.

Таким образом, ваш звонок на fzero должен выглядеть следующим образом:

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

И первая строка coolebrookfunc должна быть

function F = colebrookfunc(x,eD,Re)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...