Решение уравнения - C (СИ) (150407)
Формулировка задачи:
Здравствуйте! Подскажите, как программно решить уравнение: 2*x^3 + 9*x^2 = 52
Решение задачи: «Решение уравнения»
textual
Листинг программы
#include <stdio.h>
#include <math.h>
double f(double x) {
return 2.0 * x * x * x + 9.0 * x * x - 52.0;
}
int main(void) {
double a = -9e99, b = 9e99;
double epsilon = 1e-9; // accuracy of computations
while (b - a > epsilon) {
double guess = a + (b - a) / 2.0; // avoiding overflow. in this case can be simply (a + b) / 2.0
if (f(guess) > 0.0) {
b = guess;
} else {
a = guess;
}
}
printf("%lf\n", a);
return 0;
}
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы для работы с математическими функциями и вводом/выводом данных.
- Определяется функция
f(x), которая представляет собой выражение вида2.0*x*x*x + 9.0*x*x - 52.0. - В функции
mainинициализируются переменныеaиbкак границы для поиска корня уравнения. - Также задается значение точности вычислений
epsilon. - В цикле
whileпроисходит поиск корня уравнения методом деления отрезка пополам. - Внутри цикла определяется промежуточная переменная
guess, которая является центром текущего интервала. - Затем проверяется знак значения функции
f(guess). - Если значение положительное, то промежуточная переменная
bприсваивается значениеguess. - Если значение отрицательное, то промежуточная переменная
aприсваивается значениеguess. - После выхода из цикла
whileвыводится найденное значение корня уравнения. - Функция
mainвозвращает 0, что означает успешный исход работы программы.