Решить уравнение, параметр которого вводится с клавиатуры - Pascal
Формулировка задачи:
Программа решает уравнение вида exp(-x)=ax, где параметр уравнения a вводится с клавиатуры.
Решение задачи: «Решить уравнение, параметр которого вводится с клавиатуры»
textual
Листинг программы
function f(x, a: real): real; begin f := exp(-x) - a * x end; function root(xmin, xmax, a, eps: real): real; var fc, fm, xc: real; begin repeat xc := (xmin + xmax) / 2; fc := f(xc, a); fm := f(xmax, a); if ((fc >= 0) and (fm >= 0)) or ((fc <= 0) and (fm <= 0)) then xmax := xc else xmin := xc until abs(xmax - xmin) < eps; root := (xmin + xmax) / 2 {можно просто root := xmin, или root := xmax} end; var a, eps: real; begin repeat write('Точность вычисления > 0; eps = '); readln(eps) until eps > 0; write('Параметр a = '); readln(a); if a > 0 then writeln('x = ', root(0, 1 / a, a, eps)) else if a = 0 then writeln('x стремится к бесконечности') else if a > -exp(1) then writeln('При данном параметре корней не существует.') else if a = -exp(1) then writeln('x = ', -1.0) else writeln('x1 = ', root(-ln(-a), 0, a, eps), ', x2 = ', root(-2 * ln(-a), -ln(-a), a, eps)); readln end.
Объяснение кода листинга программы
- Создается функция f(x, a), которая решает уравнение exp(-x) - a*x.
- Создается функция root(xmin, xmax, a, eps), которая ищет корень уравнения f(x, a) в заданном диапазоне xmin, xmax, при заданной точности eps и параметре a.
- Переменные fc и fm инициализируются значениями f(xc, a) и f(xmax, a) соответственно, где xc=(xmin+xmax)/2.
- Выполняется цикл повторений, пока abs(xmax-xmin)<eps. В каждой итерации xmax и xmin сравниваются, и если условие выполняется, то xmax присваивается xc, иначе xmin присваивается xc.
- После завершения цикла, значение xmin+xmax равно среднему корню уравнения, и это значение присваивается переменной root.
- Переменные a и eps инициализируются значениями, введенными пользователем.
- Пользователю предлагается ввести значение точности eps.
- Запрашивается значение параметра a.
- Выводится сообщение с значением a.
- Если a>0, выводится значение x, которое является корнем уравнения.
- Если a=0, выводится сообщение, что x стремится к бесконечности.
- Если a>-exp(1), выводится сообщение, что при данном параметре корней не существует.
- Если a=-exp(1), выводится значение x=-1.0.
- Если a=-exp(2), выводятся значения корней x1 и x2, найденные функцией root.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д