Р е ш е н и е н е л и н е й н ы х у р а в н е н и й м е т о д о м х о р д
Метод хорд является более быстрым способом нахождения корня уравнения f (x)=0 , нежели метод половинного деления (рис. 3).
Пусть функция f(x) непрерывна на отрезке ( а , в ) и f ( а ) f ( в ) < 0.
Для определения корня в первом приближении проведем прямую через две точки ( а , f (а) ) и ( в , f (в) ) и найдем точку пересечения x этой прямой с осью абсцисс . Если ½f(x )½ £ e , где e - малое число , опреде-ляющее точность решения уравнения, то х принимается за корень уравнения
Рис. 3
Если ½f(x )½ > e , то находится произведение f(a) f (x ). Если f (а) f (x )>0 , то за неподвижный конец хорд принимается точка ( в, f(в)), если f(а) f(x ) < 0 , то - точка ( а , f( а )). Снова проведем хорду, которая пересечет ось
абсцисс ближе к точке пересечения кривой f(x) с осью x. При f (а) f(x ) > 0 хорда проводится через точки ( x , f(x ) , (в, f( в ) ) , т . е . роль точки а играет точка ( x , f(x )) . Чтобы получить координаты точки пересечения новой хорды с осью x достаточно в первоначальном уравнении хорды « а » заменить на x , а f(а) - на f(x ) . Аналогично обстоит дело и в случае f(а) f(x ) <0.
Теперь получим аналитическое выражение изложенных выше словесных рассуждений . Уравнение прямой , проходящей через заданные две точки , имеет вид
=
Разрешим это уравнение относительно x:
x -x = (y -y )
Учитывая, что в точке пересечения хорды с осью x у=0 , получаем:
x= x - y (x - x ) / (y - y )
По условию у =f(а); у = f(в), x = а; x = в.
С учетом этого получаем:
x= а - f(а ) ( в - а ) / ( f(в ) - f( а) ) ( 1 )
По этой формуле вычисляется значение корня уравнения в первом приближении. Проверяем точность вычисленного корня. Если £ e, то вычисления прекращаются. Если f(x)> e , то вычисляется произведение f(а) f(x) . Если f(а) f(x) > 0 , то принимается а = x f(а) = f(x) и по этим данным по формуле ( 1 ) вычисляется новое значение х. Если же f(a) f(x)<0 , то принимается в =x, f(в)=f(x) и по этим данным вычисляется новое значение х. Так продолжается до тех пор, пока не будет выполняться неравенство f (x) £ e, или пока два последовательных значения x не будут отличаться не более, чем на e , т.е. £ e1 . На основе этого алгоритма составлена подпрограмма H O R D , текст которой приведен в приложении 3 .
Пример решения уравнения методом хорд приведен также в приложении 3 .
Р е ш е н и е н е л и н е й н ы х у р а в н е н и й м е т о д о м
К а с а т е л ь н ы х
Метод касательных , называемый также методом Ньютона, широко используется при построении итерационных алгоритмов. Его попу-лярность объясняется быстрой сходимостью при хорошем начальном приближении . Метод Ньютона основан на замене небольшой дуги кривой у=f(х) касательной , проведенной в некоторой точке этой кривой (рис. 4) .
Зададимся некоторой точкой хо ,уо , лежащей на кривой у=f(х) , и найдем уравнение касательной к этой кривой в выбранной точке. Касательная имеет наклон к оси абсцисс , обусловленный видом кривой f(х), т.е. при проведении касательной , кроме координат точки , должен быть выдержан и угол наклона кривой в выбранной точке. Таким образом, уравнение касательной - это уравнение прямой , проходящей через заданную точку с заданным угловым коэффициентом . Общий вид такого уравнения известен из курса аналитической геометрии :
у – уо = к ( х – хо) , ( 1 )
где к- угловой коэффициент, т.е. тангенс угла между прямой и осью х.
Найдем точку пересечения этой прямой с осью абсцисс . Для точки , лежащей на оси х , у = 0 . Подставляя это значение у в ( 1 ) , получаем
- уо = кх - кхо ; кхо - уо = кх ; х = хо - уо / к . ( 2 )
Поскольку точка ( хо , уо ) лежит на кривой у = f (х) , то уо = f (хо) , а
к = tga = dy / dx = f ‘(x o) . Подставляя найденные значения уо и к в формулу ( 2 ) , получаем :
х = хо - f’(хо) / f (хо) ( 3 )
Рис. 4
Для выбора начального приближения в методе Ньютона необходимо проверить выполнения условия:
f (с) / (с) > 0, с = b или с = а. (4)
касательная к точке C проводится со стороны выпуклости функции. За начальное приближение итерационного процесса выбирается тот из конца отрезка (а, b) в котором выполняется условие (4).
Найденное значение х считаем значением корня уравнения у = f (х) в первом приближении , т.е. х1 = х0 – f(хо) / f’ (хо ). Для получения корня во втором приближении надо найти значение функции f ( х1) , провести каса-
тельную к кривой f (х) в точке В1 ( х1 , у1 ) и найти точку пересечения новой касательной с осью х . Абсцисса этой точки найдется по формуле
х2 = х1 - f(х1) /f’ (х1)
Обобщая эту формулу , можно для любого приближения записать
хn+1 = xn – f(xn) / f‘(xn) . ( 4 )
Процесс вычислений по формуле (4) прекращается , если два после-довательных значения х близки, т.е. если ½хn+1 – хn½£ e , где e - малое число, определяющее требуемую точность решения уравнения . Процесс вычислений может быть прекращен и в том случае , если ½f(хn+1)½£ e1 .
Скорость сходимости процесса последовательных приближений по методу Ньютона в большой мере зависит от удачного выбора исходной точки . Если численное значение производной f' (х) вблизи кор-ня мало, то процесс вычисления корня может оказаться длительным . Если же в окрестности корня график функции имеет большую крутизну, то процесс быстро сходится. Следовательно, если определен отрезок , внутри которого находится корень уравнения, то в качестве начального приближения корня следует принять тот конец отрезка , на котором модуль первой производной½f' (х)½ имеет большее значение .
Из всего сказанного следует , что для решения уравнений методом Ньютона необходимо иметь : уравнение функции f(х) , уравнение производной f' (х) , начальное приближение корня уравнения хо , значение малой величины e , определяющей момент выхода из итерационного процесса , счетчик итераций , позволяющий автоматически прервать расчет , если количество итераций превысит заданное значение . Алгоритм решения уравнения может быть представлен в следующем виде :
1) выбрать начальное значение корня хn ;
2) по формуле ( 4 ) вычислить хn+1 ;
3) если ½хn+1 - xn½£ e , то перейти к п. 7;
4) вычислить f (xn+1 ) ;
5) если ½f (xn+1 )½£ e , то перейти к п. 7 ;
6) положить хn = xn+1 и перейти к п. 2 ;
7) закончить расчет .
Этот алгоритм реализован в виде подпрограммы SUBROUTINE NEWTO ( A, B, EPS, X, K ).Текст подпрограммы приведен в приложении 4 .