Создание книги (выключить)

Обсуждение:Язык Си в примерах/Корень уравнения

Материал из Викиучебника

Перейти к: навигация, поиск

D-504 15:00, 24 августа 2009 (UTC) Алгоритм показанный здесь применим ни ко всем уравнениям,а точнее она может делать не всегда правильный выбор в

   if( f(c) * f(r) < 0 )
            l = c;
         else
            r = c;

т.к. здесь не учитывается тот факт, что в комьютерах числа представляются не совсем "обычным образом",так например при умножении ,например, ненулевого очень малого по модулю числа на ненулевое очень малое по модулю число, в компьютере возможно получение нуля! Так например если представить себе такой график кривой такой,что она при значениях аргумента, больших значения аргумента корня, имеет производную близкую к нули(т.к. фактически кривая "паралельна" оси ох)...а слева от корня имеет достаточно "большую" производную,тогда при нахождения корня данным алгоритмом мы получим некую точку,коротая может находиться на всевозможно так большом или малом растоянии,т.е. алгоритм не пременим. Для того чтобы данный алгоритм был применим к любому графику,который имеет одного знака первую производную и одного знака вторую производную на всём сегменте,надо производить другого рода сравнение.


    if( f(c) * f(с-eps) < 0 )
           l = c;
        else
           r = c;

Данное изменение решает данную проблему