Думаю, более актуально решить эти уравнения методом последовательных приближений.
Оставьте в левой части уравнений неизвестную, а остальное все перенесите в правую часть.
Дальше предположите что решение это
некая константа.
Когда вы подставите вместо
в правую часть, получите некоторое
число, которое так же подставляете заново, проделайте это действие
раз, и вы
получите довольно точное практичное решение.
Конкретно в вашем случае, преобразуем первое уравнение к виду
Возьмем
И подставим в правую часть.
Лучше это быстро запрограммировать.
Код:
#include <iostream>
#include <cmath>
#define repeat(a) for (int i__; i__ < (a); ++i__)
double f(double x) {
return 1.0/(std::pow(x, 4) + 5*std::pow(x, 2) + 5);
}
#define ITERATION_NUM 32786
int main() {
double x = 17.0;
repeat(ITERATION_NUM) x = f(x);
std::cout << x << std::endl;
return 0;
}
Ответ
Если хотите еще точнее, можете увеличить количество выводимых
цифр после запятой или повысить количество итераций.
Этот же алгоритм можно применить и ко второму уравнению.
Но, возможно, у уравнения несколько решений, если хотите найти их
все надо изменять начальные значения
.