Вычисление корней нелинейного уравнения методом дихотомии - 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)

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

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

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


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

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

5   голосов , оценка 4 из 5
Похожие ответы