Моя конечная цель - минимизация определенной и заданной одномерной функции. Для этого я использую Apache Commons Math.Минимизировать одномерную функцию в Java
Поэтому я на самом деле есть такой класс, как:
import org.apache.commons.math3.analysis.UnivariateFunction;
import com.imsl.math.JMath;
public class FindRoughness implements UnivariateFunction {
final private double hubWindSpeed;
final private double hubHeight;
final private double latitude;
final private double sigma_target;
final private double OMEGA = 72.9E-06;
FindRoughness(double v, double z, double lat, double ti){
this.hubWindSpeed = v;
this.hubHeight = z;
this.latitude = lat*(JMath.PI/180);
this.sigma_target = ti*this.hubWindSpeed/100;
}
private double calc_sigma(double z0){
final double F = 2*OMEGA*JMath.sin(this.latitude);
double ustar = (.4*this.hubWindSpeed - 34.5*F*this.hubHeight)/JMath.log(this.hubHeight/z0);
double mu = 1 - ((6*F*this.hubHeight)/(ustar));
double p = JMath.pow(mu, 16);
return (sigma_target - ((7.5*mu*ustar*JMath.pow((.538 + .09*JMath.log(this.hubHeight/z0)), p))/(1.0 + .156*JMath.log(ustar/(F*z0)))) );
}
public double value(double z0){
return calc_sigma(z0);
}
public UnivariateFunction find_z0(){
return new UnivariateFunction(){
public double value(double z0){
return calc_sigma(z0);
}
};
}
}
Так заданных параметров конструктору, и начальное значение z0
, я хотел бы узнать точное значение z0
, которые пусть calc_sigma
получить 0
.
Хотя у меня было больше, чем просто взгляд на API, я до сих пор не понимаю, как действовать и получить результаты, на которые я нацелен.
Я отредактировал ваш вопрос немного для вас. Как правило, вы должны сделать первые предложения своего вопроса описанием фактической проблемы, с которой вы столкнулись, вместо того, чтобы идти «Я искал дни», «Я новичок», «Я использую эту библиотеку». – millimoose
И проблема в том, что ...? – Dahaka
@ Дахака: я не понимаю, как действовать, вот в чем проблема! – fpe