UPD: Понял, что сам дурак, но выкидывать написанное решение жалко, пусть будет))
_______
Хочется умножить на (x - 2) и поднять в квадрат. Но выходит уродливое уравнение 4-й степени... не вижу других вариантов, кроме как отдельно рисовать два графика и смотреть где они пересекаются.
f(x) = 2√(2x² - 4x + 1)
g(x) = (x² - 1) / (x - 2)
Красное f(x), синее g(x), решений два (пересекаются в двух точках).
(Коорд-поле от -20 до 20)
x1 = 0.2679491924311227;
x2 = 3.73205080756887;
Использовал тупой перебор, через несколько итераций - нашел.
*Ага, нигде не написано, что программирование запрещено =) Перебирал руками, можно написать доп-цикл, который сам найдет решение. Лень)
(JavaScript)
function f(x) {
return 2 * Math.sqrt(2 * x**2 - 4 * x + 1);
}
function g(x) {
return (x**2 - 1) / (x - 2);
}
let min_d = 1000;
let x = { f: 0, g: 0 };
/***/
let FROM = 3.732;
let TO = 3.733;
let step = 0.0001;
// После каждого перебора уменьшал шаг step, сужал FROM / TO
if (step == 0) step = 1;
for (let i = FROM; i <= TO; i += step) {
let fi = f(i);
for (let k = FROM; k < TO; k += step) {
let gk = g(k);
let d = Math.hypot(Math.abs(k - i), Math.abs(fi - gk));
/* Расстояние между двумя точками.
Ищем минимальное */
if (d <= min_d) {
min_d = d;
/* Запоминаем, при каких `x` был достигнут минимум. */
x.f = i;
x.g = k;
}
}
}
console.log(min_d, x.f, x.g)
console.log(`f(${x.f}) =`, f(x.f))
console.log(`g(${x.g}) =`, g(x.g))