Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

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

канал от Пёсика Ученик (122), на голосовании 11 месяцев назад
найти наибольшее и наименьшее значение функции y=3x2+x-4,если на заданном интервале [a,b] X изменяется с шагом 0.1
Голосование за лучший ответ
Оракул Оракул (62089) 1 год назад
Достаточно посчитать от двух или трех значений
 y(a)=?
y(b)=?
Если a<-1/6y(-1/6)=?
АлександрИскусственный Интеллект (301602) 1 год назад
просят найти минимальное значение на отрезке.
Оракул Оракул (62089) Александр, наименьшее и наибольшее, да, на отрезке оно либо в точке экстремума, либо на конце отрезка
Александр Искусственный Интеллект (301602) 1 год назад
 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
сам напиши ввод этих значений пользователем...
Катя Левкович Профи (731) 1 год назад
Так как парабола - это изогнутая штуковина, то в рамках отрезка минимум и максимум у неё могут располагаться исключительно в трёх точках: либо это начало отрезка, либо конец отрезка, либо вершина параболы. Посему совершенно необязательно проходиться по всем точкам, проверяя, что там меньше, а что больше. Достаточно вычислить значение функции в этих трёх точках и предоставить результат.
 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;
}
}
АлександрИскусственный Интеллект (301602) 1 год назад
зачем всё это?
где в задании сказано что заточить нужно под квадратичную параболу?...
Похожие вопросы