Найти решение уравнения - C (СИ)

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

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

Нужно найти решение уравнения: 2 * x - ln(x) - 5 = 0 на отрезке [2;4] с точностью до 7 знака,методом деления пополам.Моя программа выдает результат чуть больше 2.7,но по графику видно,что решение чуть больше 3.Где она ошибается понять не могу,нужна помощь знатоков.
#include<stdio.h>
#include<math.h>
 
int F(double x)
{
    double F;
    int flag = 0;
    F = 2 * x - log10(x) - 5;
    if (F < 0) flag = 1;
    else flag = 0;
    return flag;
}
int main(void)
{
    double A = 2.0, B = 4.0, x0;
    int c, a, b;
    x0 = (A + B) / 2;
    while ((x0 - A) >= 1e-7)
    {
        c = F(x0);
        a = F(A);
        b = F(B);
        if (c == a) A = x0;
        else B = x0;
        x0 = (A + B) / 2;
    }
    printf("x0=%.7f\n", x0);
    system("PAUSE");
    return 0;
}

Решение задачи: «Найти решение уравнения»

textual
Листинг программы
double F(double x)
{
    return 2 * x - log(x) - 5;
}
 
int main()
{
    double a = 2.0, b = 4.0, c;
    c = (a + b) / 2;
    while (abs(b - a) >= 1e-7)
    {
        if (F(c) * F(a) > 0)
           a = c;
        else 
           b = c;
    c = (a + b) / 2;
    }
    printf("x=%.7f\n", c);
    printf("fx=%.10f\n", F(c));
    system("PAUSE");
    return 0;
}

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

  1. В функции F(double x) происходит вычисление значения функции 2*x - log(x) - 5.
  2. В функции main() инициализируются переменные a=2.0, b=4.0 и c=(a+b)/2.
  3. Задаётся условие цикла while, которое проверяет, что разница между a и b больше 1e-7.
  4. В цикле выполняется проверка: если произведение значений функции F(c) и F(a) положительно, то значение переменной a присваивается значение c.
  5. Если условие в предыдущем шаге не выполняется, то значение переменной b присваивается значение c.
  6. Значение переменной c обновляется как среднее арифметическое a и b.
  7. Цикл выполняется до тех пор, пока условие не будет выполнено.
  8. После выполнения цикла выводится значение переменной c и значение функции F(c).
  9. В конце программы выводится сообщение PAUSE и возвращается 0.

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


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

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

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