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

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

Нужно найти 2 корня. Уравнение y1 = 3^(x-1) - 4 - x = 0; На отрезке -5 2 должно быть 2 корня (-3.995 и 2.736)... Что здесь не так?
double ur1(double x){
    return pow(3, x-1)- 4 - x;
}
 
double pr1(double x){
    return log(3) * pow(3, x-1) - 1;
}
 
int main(int argc, char *argv[])
{
    double x = 0, en = 0;
    double e = 0.001;
    int a, b;
    printf("Enter a, b: ");
    scanf("%d %d", &a, &b);
    en = abs(a - b);
    x = (double)b;
    int i = 1;
    do{
        x = x - (ur1(x) / pr1(x));
        printf("%d - %lf\n", i, x);
        en = abs(x - b);
        b = x;
        i = i+1;
    }while((abs(en)) > e);
 
    return 0;
}


textual

Код к задаче: «Найти 2 корня уравнения - C (СИ)»

#include <stdio.h>
#include <math.h>
#include <locale.h>
 
double y(double x)
{   return pow(3, x-1)- 4 - x;
}
 
double dy(double x)
{   return log(3.) * pow(3, x-1) - 1;
}
 
int main()
{   setlocale (LC_CTYPE, "Russian");
    double a = -5., step = 1., e = 1.E-6;
    double x0, x1;
    int i;
    
    while (a < 3.)
    {   i = 0;
        x0 = a;
        x1 = x0-y(x0)/dy(x0);
        printf("Точка входа х0 = %.1lf\n", x0);
        while (fabs(x1-x0)>e)
        {   x0 = x1;
            x1 = x0-y(x0)/dy(x0);
            i++;
        }
        printf("\tКоличество итераций i = %3d\n\tПолученный корень х = %lf\n\n", i, x1);
        a += step;
    }
 
    getchar();
    return 0;
}
Эта работа вам не подошла?

Вы всегда можете заказать любую учебную работу у наших авторов от 20 руб.


СДЕЛАЙТЕ РЕПОСТ

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

Источник