Решить уравнение, параметр которого вводится с клавиатуры - Pascal

Узнай цену своей работы

Формулировка задачи:

Программа решает уравнение вида exp(-x)=ax, где параметр уравнения a вводится с клавиатуры.

Решение задачи: «Решить уравнение, параметр которого вводится с клавиатуры»

textual
Листинг программы
  1. function f(x, a: real): real;
  2. begin
  3.   f := exp(-x) - a * x
  4. end;
  5.  
  6. function root(xmin, xmax, a, eps: real): real;
  7. var fc, fm, xc: real;
  8. begin
  9.   repeat
  10.     xc := (xmin + xmax) / 2;
  11.     fc := f(xc, a);
  12.     fm := f(xmax, a);
  13.     if ((fc >= 0) and (fm >= 0)) or ((fc <= 0) and (fm <= 0))
  14.       then xmax := xc
  15.       else xmin := xc
  16.   until abs(xmax - xmin) < eps;
  17.   root := (xmin + xmax) / 2 {можно просто root := xmin, или root := xmax}
  18. end;
  19.  
  20. var a, eps: real;
  21.  
  22. begin
  23.   repeat
  24.     write('Точность вычисления > 0;  eps = ');
  25.     readln(eps)
  26.   until eps > 0;
  27.   write('Параметр a = ');
  28.   readln(a);
  29.   if a > 0
  30.     then writeln('x = ', root(0, 1 / a, a, eps))
  31.     else if a = 0
  32.       then writeln('x стремится к бесконечности')
  33.       else if a > -exp(1)
  34.         then writeln('При данном параметре корней не существует.')
  35.         else if a = -exp(1)
  36.         then writeln('x = ', -1.0)
  37.         else writeln('x1 = ', root(-ln(-a), 0, a, eps), ', x2 = ', root(-2 * ln(-a), -ln(-a), a, eps));
  38.   readln
  39. end.

Объяснение кода листинга программы

  1. Создается функция f(x, a), которая решает уравнение exp(-x) - a*x.
  2. Создается функция root(xmin, xmax, a, eps), которая ищет корень уравнения f(x, a) в заданном диапазоне xmin, xmax, при заданной точности eps и параметре a.
  3. Переменные fc и fm инициализируются значениями f(xc, a) и f(xmax, a) соответственно, где xc=(xmin+xmax)/2.
  4. Выполняется цикл повторений, пока abs(xmax-xmin)<eps. В каждой итерации xmax и xmin сравниваются, и если условие выполняется, то xmax присваивается xc, иначе xmin присваивается xc.
  5. После завершения цикла, значение xmin+xmax равно среднему корню уравнения, и это значение присваивается переменной root.
  6. Переменные a и eps инициализируются значениями, введенными пользователем.
  7. Пользователю предлагается ввести значение точности eps.
  8. Запрашивается значение параметра a.
  9. Выводится сообщение с значением a.
  10. Если a>0, выводится значение x, которое является корнем уравнения.
  11. Если a=0, выводится сообщение, что x стремится к бесконечности.
  12. Если a>-exp(1), выводится сообщение, что при данном параметре корней не существует.
  13. Если a=-exp(1), выводится значение x=-1.0.
  14. Если a=-exp(2), выводятся значения корней x1 и x2, найденные функцией root.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.333 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы