Вычисление корней нелинейного уравнения методом дихотомии - C (СИ)
Формулировка задачи:
Задание. Определить корни уравнения x^2 - e^(-x^2) = 0
Листинг программы
- #include <stdio.h>
- #include <time.h>
- #include <math.h>
- main()
- {
- const double eps = 0.00001;
- const double exp = 2.7182818284590452;
- double a, b, m, f1, f2, f3;
- a = 0.5;
- b = 0.9;
- f1 = a * a - pow (exp, -a*a);
- f2 = b * b - pow (exp, -b*b);
- m = 0;
- while (f1*f2 < 0 && abs(f1 - f2 > eps))
- {
- m = (a + b) / 2;
- f3 = m * m - pow(exp, -m*m);
- if (f1*f3 < 0)
- {
- b = m;
- f2 = m * m - pow (exp, -m*m);
- }
- else
- {
- a = m;
- f1 = m * m - pow (exp, -m*m);
- }
- }
- printf("%lf", m);
- }
Спасибо!
Решение задачи: «Вычисление корней нелинейного уравнения методом дихотомии»
textual
Листинг программы
- while (f1*f2 < 0 && abs(a-b) > eps)
Объяснение кода листинга программы
- Начинается цикл while, который выполняется до тех пор, пока произведение f1 и f2 меньше нуля и разница между a и b больше eps.
- В первой части условия проверяется, что произведение f1 и f2 меньше нуля.
- Во второй части условия проверяется, что разница между a и b больше eps.
- Если условие выполняется, то происходит деление отрезка [a, b] пополам и присваивание полученных корней переменным f1 и f2.
- Если условие не выполняется, то происходит выход из цикла и присваивание значения переменной f1 корню уравнения.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д