1

通常は 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'});

パッケージが Java にインポートされていることは承知していFortranますが、上記のツールを適用して目標を達成する方法がまったくわかりません。したがって、この問題を克服する方法についての提案を歓迎します。

4

1 に答える 1

4

Apache Commonsのような既存のソリューションを使用することをお勧めします。Apache Commonsは、役に立つと思われる多くのツールを含む堅牢なライブラリです。

LM 最適化メソッドは、このクラスによって実装されます。直接使用することも、インスピレーションを得るために見ることもできます。

于 2013-07-10T10:22:09.777 に答える