测试求导

西北逍遥 / 2023-08-02 / 原文

 

import java.util.Arrays;

public class FindTurningPoints {
    public static void main(String[] args) {
        // 定义函数 f(x)
        double[] x = {-1, 0, 1};
        double[] y = {-2, -1, 2};
        
        // 求函数的二阶导数
        double[][] dydx = new double[x.length][x.length];
        for (int i = 1; i < x.length; i++) {
            dydx[i][i] = (y[i+1] - y[i]) / (x[i+1] - x[i]);
        }
        
        // 找到二阶导数为零的点
        int[] indices = new int[2];
        for (int i = 1; i < x.length - 1; i++) {
            if (dydx[i][i] == 0 && dydx[i+1][i+1] != 0) {
                indices[0] = i;
                break;
            }
        }
        
        // 判断这些点的两侧的符号是否相反
        for (int i = 0; i < indices.length; i++) {
            if ((dydx[indices[i]+1][indices[i]+1] * dydx[indices[i]-1][indices[i]-1]) < 0) {
                System.out.println("Turning point: (" + x[indices[i]] + ", " + y[indices[i]] + ")");
            }
        }
    }
}

 

 

 

###