Здравствуйте. А в цикле вайл обязательно высчитывать по второму разу F(a) и F(b)? Это несет какой-то смысл? Я их закомментировал. Все также работает вроде как. public static double findRoot(Function equation, double a, double b, double err) { double aValue = equation.apply(a); double bValue = equation.apply(b); if (aValue * bValue > 0) { throw new IllegalArgumentException("Initial approximation error"); } double cValue; while (true) { double c = (a + b) / 2; aValue = equation.apply(a); bValue = equation.apply(b); cValue = equation.apply(c); if (Math.abs(cValue) < err) { return c; }
Добрый день. Эти значения вычислять обязательно. Полученные значения на концах отрезка позволяют сдвинуть границу к требуемой части отрезка. Вот эта часть сдвигает границы if (aValue * cValue < 0) { b = c; } else { a = c; } Без этой части, в половине случаев решение будет не верное или программа будет зацикливаться.
Ну как возводить в отрицательную степень и что такое экспонента это уже где то класс 8. Но да вы вычислили неверно. Если подставить и подсчитать (-1)^2 - exp(-1) = 0.6321... Вот доказательство - www.wolframalpha.com/input?i=%28-1%29%5E2+-+exp%28-1%29
"Е" это Основание натурального логарифма, математическая константа, иррациональное и трансцендентное число. Приблизительно равно 2,71828.. Не благодарите за разъяснение...
Спасибо большое за все видео! Очень понятно и доступно объясняете. Очень помогли!🥰🤩
спасибо вам огромное!! не хватает visual basic((( пожелайте удачи на сессии! всех благ
Безусловно желаю вам удачи на сессии и не только. Надеюсь все сдадите на отлично :)
@@oleksandrtsymbaliuk ☺спасибо
спасибо, очень помогло!
Всё понял 👍
Здравствуйте. А в цикле вайл обязательно высчитывать по второму разу F(a) и F(b)?
Это несет какой-то смысл? Я их закомментировал. Все также работает вроде как.
public static double findRoot(Function equation, double a, double b, double err) {
double aValue = equation.apply(a);
double bValue = equation.apply(b);
if (aValue * bValue > 0) {
throw new IllegalArgumentException("Initial approximation error");
}
double cValue;
while (true) {
double c = (a + b) / 2;
aValue = equation.apply(a);
bValue = equation.apply(b);
cValue = equation.apply(c);
if (Math.abs(cValue) < err) {
return c;
}
Добрый день. Эти значения вычислять обязательно. Полученные значения на концах отрезка позволяют сдвинуть границу к требуемой части отрезка. Вот эта часть сдвигает границы
if (aValue * cValue < 0) {
b = c;
} else {
a = c;
}
Без этой части, в половине случаев решение будет не верное или программа будет зацикливаться.
а как получилось приблизительно 0.63
Так просто подставили значение -1 в полученную функцию и вычислили.
@@oleksandrtsymbaliuk Я подставил -1 и получил 1. Наверное мне нужно подтягивать математику с 5 класса. Это же алгебра?
Ну как возводить в отрицательную степень и что такое экспонента это уже где то класс 8. Но да вы вычислили неверно. Если подставить и подсчитать (-1)^2 - exp(-1) = 0.6321...
Вот доказательство - www.wolframalpha.com/input?i=%28-1%29%5E2+-+exp%28-1%29
"Е" это Основание натурального логарифма, математическая константа, иррациональное и трансцендентное число. Приблизительно равно 2,71828.. Не благодарите за разъяснение...