【问题标题】:Determine extrema of function确定函数的极值
【发布时间】:2016-04-11 22:26:18
【问题描述】:

我遇到了未正确设置最小值的问题。最大值设置得很好,但我知道最小值应该小于 0。运行这个 sn-p,似乎从来没有设置最小值。有什么想法吗?

编辑:曲线点应该从 -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;
    }
}

【问题讨论】:

  • 你的函数没有为 x
  • 那我该如何解决呢?只需将 `Math.sqrt(8 * x) 替换为 0?
  • 你可以通过在 Java 中编写正确的函数来解决这个问题,因为你在这里看到的和你提供的图表完全不一样。
  • 这条曲线在我看来就像一个立方。该公式应涉及Math.pow(..., 3)Math.pow(..., 2),而不是sqrtcbrt
  • 应该是2 * x * x * x - 8 * x * x + x + 16

标签: java calculus


【解决方案1】:

但我知道最小值应该小于 0。

如果你用图表的话,它不是。我将你的函数插入谷歌,范围为 0 到 3,最小值为 15.431。

【讨论】:

  • 如果我将最低点的默认值设置为 100,我确实看到它设置为 15.xxxx,但这是不对的。 -.-
  • @kneeki 这是您用 Java 编写的函数的正确值,但我认为这不是您想要编写的函数。
【解决方案2】:

表达式

Math.cbrt(2 * x) - Math.sqrt(8 * x) + x + 16;

不等于图表方程的右侧 - 您将立方根与立方混淆,将平方根与平方混淆。

正确的表达方式是

(2 * x * x * x) - (8 * x * x) + x + 16

【讨论】:

    【解决方案3】:

    如下所示制作你的最低点。

        double lowestPoint = 1000;
    

    你能把原方程写出来吗?你找不到负值的平方根。

    平方 public static double sqrt(double a)

    返回双精度值的正确舍入正平方根。特殊情况: ◦如果参数为 NaN 或小于零,则结果为 NaN。 ◦如果参数是正无穷大,那么结果是正无穷大。 ◦如果参数为正零或负零,则结果与参数相同。 否则,结果是最接近参数值的真正数学平方根的双精度值。参数:a - 一个值。返回:a 的正平方根。如果参数为 NaN 或小于零,则结果为 NaN。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多