Вычисление корней нелинейного уравнения методом дихотомии - C (СИ)

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

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

Задание. Определить корни уравнения x^2 - e^(-x^2) = 0

Важное замечание: решить естественно методом деления отрезков пополам Что-то пошло не так и прога не работает. Помогите, пожалуйста, разобраться в причине. Возможно упустил важные моменты.
Листинг программы
  1. #include <stdio.h>
  2. #include <time.h>
  3. #include <math.h>
  4. main()
  5. {
  6. const double eps = 0.00001;
  7. const double exp = 2.7182818284590452;
  8. double a, b, m, f1, f2, f3;
  9. a = 0.5;
  10. b = 0.9;
  11. f1 = a * a - pow (exp, -a*a);
  12. f2 = b * b - pow (exp, -b*b);
  13. m = 0;
  14.  
  15. while (f1*f2 < 0 && abs(f1 - f2 > eps))
  16. {
  17. m = (a + b) / 2;
  18. f3 = m * m - pow(exp, -m*m);
  19. if (f1*f3 < 0)
  20. {
  21. b = m;
  22. f2 = m * m - pow (exp, -m*m);
  23. }
  24. else
  25. {
  26. a = m;
  27. f1 = m * m - pow (exp, -m*m);
  28. }
  29. }
  30. printf("%lf", m);
  31.  
  32. }

Спасибо!

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

textual
Листинг программы
  1. while (f1*f2 < 0  && abs(a-b) > eps)

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

  1. Начинается цикл while, который выполняется до тех пор, пока произведение f1 и f2 меньше нуля и разница между a и b больше eps.
  2. В первой части условия проверяется, что произведение f1 и f2 меньше нуля.
  3. Во второй части условия проверяется, что разница между a и b больше eps.
  4. Если условие выполняется, то происходит деление отрезка [a, b] пополам и присваивание полученных корней переменным f1 и f2.
  5. Если условие не выполняется, то происходит выход из цикла и присваивание значения переменной f1 корню уравнения.

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


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

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

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

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

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

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