我通常在MATLAB中编写代码,但由于某些原因,我决定切换到JAVA方法。Levenberg-Marquardt Java中的最小化
的问题是很简单:我想了解如何以下MATLAB代码转换成工作JAVA的一个。
在MATLAB我有一个目标函数调用findZ0
:
function F = findZ0(V, Z, Latitude, TI, x)
%%% Inputs
% V = Average Wind Speed at Hub Height
% Z = Hub Height;
% Latitude = Specific Site Latitude (default value equal to 50 deg);
% x = Tryout Roughness length;
% TI = Target Turbulent Intensity;
%%% Outputs
% F = Roughness Length tuned to match Target Turbulent Intensity
Latitude = deg2rad(Latitude);
omega = 72.9E-06;
f = 2*omega*sin(Latitude);
ustar = (0.4*V - 34.5*f*Z)/log(Z/x);
mu = 1 - ((6*f*Z)/(ustar));
p = mu^(16);
sigmaTarget = (V*TI)/100;
F = sigmaTarget - ((7.5*mu*ustar*((0.538 + .09*log(Z/x))^p))/(1 + .156*log(ustar/(f*x))));
end
我当时叫这个行:
Uhub = 8;
HubHt = 90;
Latitude = 50;
x_trial = 0.01;
TI_target = 24;
find_z0 = @(x) findZ0(Uhub,HubHt,Latitude,TI_target, x);
z0 = fsolve(find_z0,x_trial,{'fsolve','Jacobian','on','levenberg-marquardt',.005,'MaxIter',15000,'TolX',1e-07,'TolFun',1E-07,'Display','off'});
我知道Fortran
包已经在Java中被导入,但我不”我真的不知道如何通过应用上述工具来实现我的目标。因此,我欢迎任何有关如何解决这个问题的建议。
我只有现在的时间来检查你什么建议,并且该类不幸弃用。 – fpe
你说得对 - 他们正在重新设计优化软件包。我已经更新了我的答案中的链接,指向正确的课程。 – dratewka