最小値が正しく設定されていないという問題が発生しています。最大値は完全に設定されていますが、最小値が0未満であることがわかります。このスニペットを実行すると、最小値が決して設定されていないようです。何か案は?関数の極限を決定する
編集:ポイントは-1から3にする必要があります曲線はここでイメージだ:
public class FindingExtrema {
public static void main(String[] args) {
double lowestPoint = 0;
double highestPoint = 0;
double y;
double x = -1;
int timesCalculated = 0;
while (x <= 3) {
y = run(x);
if (y < lowestPoint) {
lowestPoint = y;
System.out.printf("y: %1$.5f", y);
}
if (y > highestPoint) {
highestPoint = y;
}
x += .00001;
timesCalculated++;
}
System.out.println("Done!");
System.out.printf("Lowest: %1$.5f, Highest: %2$.5f; Calculated %3$d times\n", lowestPoint, highestPoint, timesCalculated);
}
private static double run(double x) {
return Math.cbrt(2 * x) - Math.sqrt(8 * x) + x + 16;
}
}
あります。 Math.sqrt(8 * x)は虚数です。 Wolfram Alpha上の関数は、Javaコードで実際に使用している関数ではありません。 –
それでは、どうすれば解決できるのでしょうか? 'Math.sqrt(8 * x)を0に置き換えるだけですか? – kneeki
Javaで正しい関数を書くことで、それを解決しようとしています。なぜなら、ここにあるものは、あなたが提供したグラフのようには見えないからです。 –