Find the roots of an expression
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaires
Réponse acceptée
Matt Fig
le 13 Avr 2011
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 commentaires
Matt Fig
le 13 Avr 2011
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
Plus de réponses (1)
Voir également
Catégories
En savoir plus sur Optimization dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!