Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+2

Программа на джаве

найти наибольшее и наименьшее значение функции y=3x2+x-4,если на заданном интервале [a,b] X изменяется с шагом 0.1

По дате
По рейтингу
Аватар пользователя

Так как парабола - это изогнутая штуковина, то в рамках отрезка минимум и максимум у неё могут располагаться исключительно в трёх точках: либо это начало отрезка, либо конец отрезка, либо вершина параболы. Посему совершенно необязательно проходиться по всем точкам, проверяя, что там меньше, а что больше. Достаточно вычислить значение функции в этих трёх точках и предоставить результат.

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
 public class Test { 
    private static final double a = 3; 
    private static final double b = 1; 
    private static final double c = -4; 
 
    private static final double intervalStartX = -2.15; 
    private static final double intervalEndX = 1.5; 
 
    public static void main(String[] args) { 
        double[] valuesOfY = calcValuesOfY(); 
        System.out.println("Функция: y = 3x^2 + x - 4"); 
        System.out.println("Отрезок [" + intervalStartX + "; " + intervalEndX + "]"); 
        System.out.println("Минимальное значение Y: " + findMinInArray(valuesOfY)); 
        System.out.println("Максимальное значение Y: " + findMaxInArray(valuesOfY)); 
    } 
 
    /** 
     * найти минимальное значение в массиве 
     */ 
    private static double findMinInArray(double[] array) { 
        double min = Double.MAX_VALUE; 
        for (double y : array) { 
            if (y < min) { 
                min = y; 
            } 
        } 
        return min; 
    } 
 
    /** 
     * найти максимальное значение в массиве 
     */ 
    private static double findMaxInArray(double[] array) { 
        double max = Double.MIN_VALUE; 
        for (double y : array) { 
            if (y > max) { 
                max = y; 
            } 
        } 
        return max; 
    } 
 
    /** 
     * рассчитать важные значения Y - 
     * так как минимум и максимум на отрезке параболы 
     * могут быть ытолько в трёх точках 
     * (начало отрезка, конец отрезка либо вершина параболы) 
     */ 
    private static double[] calcValuesOfY() { 
        double y1 = calcY(intervalStartX); 
        double y2 = calcY(intervalEndX); 
        double y3 = calcY(calcParabolaPeakX()); 
 
        return new double[]{ y1, y2, y3 }; 
    } 
 
    /** 
     * рассчитать X вершины параболы 
     */ 
    private static double calcParabolaPeakX() { 
        return -b / (2 * a); 
    } 
 
    /** 
     * рассчитать Y от X 
     */ 
    private static double calcY(double x) { 
        return a * x * x + b * x + c; 
    } 
}  
Аватар пользователя
Искусственный Интеллект
123456789101112131415161718192021
 public class Main { 
  public static void main(String[] args) { 
    double a = -10; 
    double b = 10; 
    double d = 0.1; 
    double x = a; 
    double y_min = y(x); 
    while(x <= b) { 
      double temp = y(x); 
      if (temp < y_min) { 
        y_min = temp; 
      } 
      x += d; 
    } 
    System.out.println("y_min = " + y_min); 
  } 
  
  public static double y(double x) { 
    return 3 * x * x + x - 4; 
  } 
} 

вбил какие-то конкретные значения для a и b
сам напиши ввод этих значений пользователем...

Аватар пользователя
Оракул

Достаточно посчитать от двух или трех значений

1234
 y(a)=?
y(b)=?
Если a<-1/6<b, то минимум тут
y(-1/6)=?