Решение нелинейного уравнения методом деления отрезка пополам (цикл While) - C (СИ)
Формулировка задачи:
Обчислить уровнение способом деления отрезка пополам используя цыкл While.
Дана точность ε<0,004. Отрезок xϵ[a;b] вводить с клавиатуры.
Решение задачи: «Решение нелинейного уравнения методом деления отрезка пополам (цикл While)»
textual
Листинг программы
- #include <stdio.h>
- #include <math.h>
- double equation(double x)
- {
- return (exp(-2*x)-x+1);
- }
- int main()
- {
- double e = 0.004;
- float a,b,c,x;
- printf("Insert left side of range a=");
- scanf("%f",&a);
- printf("Insert right side of range b=");
- scanf("%f",&b);
- while(fabs(b-a)>e)
- {
- c = (a+b)/2;
- if (equation(a)*equation(c) < 0)
- b = c;
- else a = c;
- printf("x=[%f..%f]\n",a,b);
- }
- }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с математическими функциями и вводом/выводом данных.
- Определение функции
equation(double x)
, которая выражает нелинейное уравнение. - Ввод значений переменных
a
иb
с помощью функцииscanf()
. Переменнаяa
обозначает левую границу интервала, а переменнаяb
- правую границу интервала, в котором ищется решение уравнения. - Организация цикла
while
, который будет выполняться до тех пор, пока разница междуb
иa
больше заданной точностиe
. - Вычисление промежуточной точки
c
, которая является серединным значением интервалаa
иb
. - Проверка значения функции
equation(a)
иequation(c)
. Если они имеют разные знаки, то значение переменнойb
присваивается значениеc
, иначе значение переменнойa
присваивается значениеc
. - Вывод интервала, в котором находится решение уравнения.
- После выполнения цикла
while
и достижения заданной точностиe
, программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д