singlepost

можете помочь с программой в си? << На главную или назад  

можете помочь с прогой в си?
задание: написать функцию нахождения корня уравнения F(x)=0 методом половинного деления на заданном интервале от 0 до 1 (от a до b). уравнение такое F(x)=ln(x^2+1/2). точность эпсилон должна спрашиваться у пользователя. и в проге надо использовать классы… ну по сути там один класс и функции-члены. я написал и она работает но при разных значениях эпсилон (я его как "e" обозначил) выдаёт один и тот же корень. текст того что у меня получилось выложу позже-сейчас такой возможности нет

10 ответов в теме “можете помочь с программой в си?”

  1. 10
    Їїїї-Їїїїїї Її-Ї-Їїїїїї-Її-Ї ответил:

    а.. ну примерно понел как пользоваться-тоесть он по частям выполняет прогу.. и надо найти где он неправильно выполняет

  2. 9
    Їїїї-Їїїїїї Її-Ї-Їїїїїї-Її-Ї ответил:

    призаться чесно-нет… не приходилось ни разу=(

  3. 8
    Жека Кирпичев ответил:

    Use the debugger, Luke!
    Умеешь?

  4. 7
    Їїїї-Їїїїїї Її-Ї-Їїїїїї-Її-Ї ответил:

    нет-не помогла замена знака "<=" на ">"=((
    при классе точности к примеру 0.05-выдаёт
    log: SING error
    и ещё некоторые, к примеру Floating point error: Overflow
    =(
    это при том что в задании указан как пример-взять класс точности 0.05

  5. 6
    Їїїї-Їїїїїї Її-Ї-Їїїїїї-Її-Ї ответил:

    блин-сейчас на чужом компьютере… а может ктонибудь проверить-работает она или нет, если в этой строке "while (abs(f(x))<=e)"написать так "while (abs(f(x))>e)"?

  6. 5
    Їїїї-Їїїїїї Її-Ї-Їїїїїї-Її-Ї ответил:

    и попутно: насколько я понял-функция логарифма не работает с переменными кроме типа "double".да? просто я до этого их сделал как числа с плавающей точкой, и программа при выполнении выдавала ошибку

  7. 4
    Жека Кирпичев ответил:

    while (abs(f(x))<=e)

    Почему <=, а не > ?

  8. 3
    Їїїї-Їїїїїї Її-Ї-Їїїїїї-Її-Ї ответил:

    хм… опечатался… посмотрю

  9. 2
    Їїїї-Їїїїїї Її-Ї-Їїїїїї-Її-Ї ответил:

    #include<iostream.h>
    #include<stdio.h>
    #include<conio.h>
    #include<math.h>

    class solution
    {
    float e;
    double x;
    public: double f(double r);
    double dichotomy(void);
    };

    double solution::f(double r)
    {
    double l;
    double z;
    z=r*r+1/2;
    l=log(z);
    return l;
    }

    double solution::dichotomy(void)
    {
    x=0.5;
    int a=0;
    int b=1;
    float e;
    float w;
    printf ("BBEDNTE KJIACC TO4HOCTN:");
    scanf("%f", &e);
    while (abs(f(x))<=e)
    {
    x=(a+b)/2;
    w=f(a)*f(x);
    if(w>=0) a=x;
    if(w<=0) b=x;
    }
    return x;
    }

    void main()
    {
    clrscr();
    printf("LN(x^2+1/2)=0\n");
    solution ln;
    printf("OTBET: %1.2f\n", ln.dichotomy());
    }

  10. 1
    Жека Кирпичев ответил:

    Пока ты не выложил текст, возможности помочь тебе также нет. Выкладывай, не стесняйся.

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.