Find the roots of an expression
1 次查看(过去 30 天)
显示 更早的评论
Is there a function that can find the root(s) of an expression, which is not a polynomial? My constants and my final expression (for which I want to find the root) are listed below.
%Declare constants
Dw = 0.0000076;
S = 0.000239;
rho = 1.1;
h = 0.0030;
Nm=20,000;
Wo = 0.0025;
c1 = Dw*S/rho/h;
c2 = (3*Wo/(4*Nm*3.14159*rho))^(1/3);
c3 = (3*Wwf/(4*Nm*3.14159*rho))^(1/3);
twf=20;
%Need to determine the value of Wwf in the following expression
((c2 - c3 - h*log((h + c2)/(h + c3)))/c1)-twf=0;
0 个评论
采纳的回答
Matt Fig
2011-4-13
FZERO can be used to find roots.
Dw = 0.0000076;
S = 0.000239;
rho = 1.1;
h = 0.0030;
Nm=20000;
Wo = 0.0025;
c1 = Dw*S/rho/h;
c2 = (3*Wo/(4*Nm*3.14159*rho))^(1/3);
c3 = @(Wwf) (3*Wwf/(4*Nm*3.14159*rho)).^(1/3);
twf=20;
G = @(Wwf) ((c2 - c3(Wwf) - h*log((h + c2)./(h + c3(Wwf))))/c1)-twf;
rt = fzero(G,.01)
5 个评论
Matt Fig
2011-4-13
Try this:
Dw = 0.0000076;
S = 0.000239;
rho = 1.1;
h = 0.0030;
Nm=20000;
Wo = 0.0025;
c1 = Dw*S/rho/h;
c2 = (3*Wo/(4*Nm*3.14159*rho))^(1/3);
%initializations
twf(1)=1;
c3=@(Wwf) (3*Wwf/(4*Nm*3.14159*rho)).^(1/3);
rt = zeros(1,10800);
rt(1) = Wo;
for ii=2:10800
G = @(Wwf) ((c2 - c3(Wwf) - h*log((h + c2)./(h + c3(Wwf))))/c1)-(ii-1);
try
rt(ii) = fzero(G,rt(ii-1));
catch
disp('No value found, aborting....')
rt = rt(1:ii-1);
break
end
end
更多回答(1 个)
另请参阅
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!