gpt4 book ai didi

java - Java 中的 Levenberg-Marquardt 最小化

转载 作者:行者123 更新时间:2023-11-29 03:32:22 24 4
gpt4 key购买 nike

我通常使用 MATLAB 编写代码,但出于某些原因我决定改用 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 导入,但我真的不知道如何通过应用上述工具来实现我的目标。因此,我欢迎任何关于如何克服这个问题的建议。

最佳答案

我建议使用现有的解决方案,例如 Apache Commons - 这是一个强大的库,包含许多您可能会觉得有用的工具。

LM优化方法实现by this class - 您可以直接使用它,也可以只是查看它以获取灵感。

关于java - Java 中的 Levenberg-Marquardt 最小化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17568010/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com