Environmental Engineering Reference
In-Depth Information
if(fc*fa < 0)
b = c;
fb = fc;
else
a = c;
fa = fc;
end
end
y = 0.5*(a + b);
return
%
% Definition of U to X function, X_value
function X = X_value(U,mu,sigma,distri)
switch distri
case 'TruncNormal'
X = mu + sigma*norminv((1-normcdf(-mu/sigma))*U + normcdf(-mu/sigma));
case 'Lognormal'
X = exp(norminv(U)*sqrt(log(1 + sigma^2/(mu^2))) + log(mu)-
0.5*log(1 + sigma^2/(mu^2)));
case 'TruncGumbel'
a = 1.282549808/sigma;
b = mu-(0.5772156649/a);
X = b-log(-log(U*(1-exp(-exp(a*b))) + exp(-exp(a*b))))/a;
case 'Weibull'
k = k_solveWeibull(mu,sigma);
u = mu/gamma(1 + 1/k);
X = u*(-log(1-U)).^(1/k);
end
return
%
% Definition of Weibull distribution parameter k solving function,
% k_solveWeibull
function y = k_solveWeibull(mu,sigma)
a = 0.02;
b = 40;
eps = 1e-6;
fa = 1/sqrt(gamma(1 + 2/a)/gamma(1 + 1/a)^2-1)-mu/sigma;
fb = 1/sqrt(gamma(1 + 2/b)/gamma(1 + 1/b)^2-1)-mu/sigma;
if fa*fb > 0
disp('error:[a b] interval no solution, please re-enter a and b');
return
end
while b-a > eps
c = 0.5*(a + b);
fc = 1/sqrt(gamma(1 + 2/c)/gamma(1 + 1/c)^2-1)-mu/sigma;
if fc*fa < 0;
b = c;
fb = fc;
else
a = c;
fa = fc;
end
end
y = 0.5*(a + b);
return
Search WWH ::




Custom Search