Р е ш е н и е н е л и н е й н ы х у р а в н е н и й м е т о д о м х о р д

Метод хорд является более быстрым способом нахождения корня уравнения f (x)=0 , нежели метод половинного деления (рис. 3).

Пусть функция f(x) непрерывна на отрезке ( а , в ) и f ( а ) Р е ш е н и е н е л и н е й н ы х у р а в н е н и й м е т о д о м х о р д - student2.ru f ( в ) < 0.

Для определения корня в первом приближении проведем прямую через две точки ( а , f (а) ) и ( в , f (в) ) и найдем точку пересечения x Р е ш е н и е н е л и н е й н ы х у р а в н е н и й м е т о д о м х о р д - student2.ru этой прямой с осью абсцисс . Если ½f(x Р е ш е н и е н е л и н е й н ы х у р а в н е н и й м е т о д о м х о р д - student2.ru )½ £ e , где e - малое число , опреде-ляющее точность решения уравнения, то х Р е ш е н и е н е л и н е й н ы х у р а в н е н и й м е т о д о м х о р д - student2.ru принимается за корень уравнения

Р е ш е н и е н е л и н е й н ы х у р а в н е н и й м е т о д о м х о р д - student2.ru

Рис. 3

Если ½f(x Р е ш е н и е н е л и н е й н ы х у р а в н е н и й м е т о д о м х о р д - student2.ru )½ > e , то находится произведение f(a) Р е ш е н и е н е л и н е й н ы х у р а в н е н и й м е т о д о м х о р д - student2.ru f (x Р е ш е н и е н е л и н е й н ы х у р а в н е н и й м е т о д о м х о р д - student2.ru ). Если f (а) Р е ш е н и е н е л и н е й н ы х у р а в н е н и й м е т о д о м х о р д - student2.ru f (x Р е ш е н и е н е л и н е й н ы х у р а в н е н и й м е т о д о м х о р д - student2.ru )>0 , то за неподвижный конец хорд принимается точка ( в, f(в)), если f(а) Р е ш е н и е н е л и н е й н ы х у р а в н е н и й м е т о д о м х о р д - student2.ru f(x Р е ш е н и е н е л и н е й н ы х у р а в н е н и й м е т о д о м х о р д - student2.ru ) < 0 , то - точка ( а , f( а )). Снова проведем хорду, которая пересечет ось

абсцисс ближе к точке пересечения кривой f(x) с осью x. При f (а) Р е ш е н и е н е л и н е й н ы х у р а в н е н и й м е т о д о м х о р д - student2.ru f(x Р е ш е н и е н е л и н е й н ы х у р а в н е н и й м е т о д о м х о р д - student2.ru ) > 0 хорда проводится через точки ( x Р е ш е н и е н е л и н е й н ы х у р а в н е н и й м е т о д о м х о р д - student2.ru , f(x Р е ш е н и е н е л и н е й н ы х у р а в н е н и й м е т о д о м х о р д - student2.ru ) , (в, f( в ) ) , т . е . роль точки а играет точка ( x Р е ш е н и е н е л и н е й н ы х у р а в н е н и й м е т о д о м х о р д - student2.ru , f(x Р е ш е н и е н е л и н е й н ы х у р а в н е н и й м е т о д о м х о р д - student2.ru )) . Чтобы получить координаты точки пересечения новой хорды с осью x Р е ш е н и е н е л и н е й н ы х у р а в н е н и й м е т о д о м х о р д - student2.ru достаточно в первоначальном уравнении хорды « а » заменить на x Р е ш е н и е н е л и н е й н ы х у р а в н е н и й м е т о д о м х о р д - student2.ru , а f(а) - на f(x Р е ш е н и е н е л и н е й н ы х у р а в н е н и й м е т о д о м х о р д - student2.ru ) . Аналогично обстоит дело и в случае f(а) Р е ш е н и е н е л и н е й н ы х у р а в н е н и й м е т о д о м х о р д - student2.ru f(x Р е ш е н и е н е л и н е й н ы х у р а в н е н и й м е т о д о м х о р д - student2.ru ) <0.

Теперь получим аналитическое выражение изложенных выше словесных рассуждений . Уравнение прямой , проходящей через заданные две точки , имеет вид

Р е ш е н и е н е л и н е й н ы х у р а в н е н и й м е т о д о м х о р д - student2.ru = Р е ш е н и е н е л и н е й н ы х у р а в н е н и й м е т о д о м х о р д - student2.ru

Разрешим это уравнение относительно x:

Р е ш е н и е н е л и н е й н ы х у р а в н е н и й м е т о д о м х о р д - student2.ru x -x Р е ш е н и е н е л и н е й н ы х у р а в н е н и й м е т о д о м х о р д - student2.ru = Р е ш е н и е н е л и н е й н ы х у р а в н е н и й м е т о д о м х о р д - student2.ru Р е ш е н и е н е л и н е й н ы х у р а в н е н и й м е т о д о м х о р д - student2.ru (y -y Р е ш е н и е н е л и н е й н ы х у р а в н е н и й м е т о д о м х о р д - student2.ru )

Учитывая, что в точке пересечения хорды с осью x у=0 , получаем:

x= x Р е ш е н и е н е л и н е й н ы х у р а в н е н и й м е т о д о м х о р д - student2.ru - y Р е ш е н и е н е л и н е й н ы х у р а в н е н и й м е т о д о м х о р д - student2.ru (x Р е ш е н и е н е л и н е й н ы х у р а в н е н и й м е т о д о м х о р д - student2.ru - x Р е ш е н и е н е л и н е й н ы х у р а в н е н и й м е т о д о м х о р д - student2.ru ) / (y Р е ш е н и е н е л и н е й н ы х у р а в н е н и й м е т о д о м х о р д - student2.ru - y Р е ш е н и е н е л и н е й н ы х у р а в н е н и й м е т о д о м х о р д - student2.ru )

По условию у Р е ш е н и е н е л и н е й н ы х у р а в н е н и й м е т о д о м х о р д - student2.ru =f(а); у Р е ш е н и е н е л и н е й н ы х у р а в н е н и й м е т о д о м х о р д - student2.ru = f(в), x Р е ш е н и е н е л и н е й н ы х у р а в н е н и й м е т о д о м х о р д - student2.ru = а; x Р е ш е н и е н е л и н е й н ы х у р а в н е н и й м е т о д о м х о р д - student2.ru = в.

С учетом этого получаем:

x= а - f(а ) ( в - а ) / ( f(в ) - f( а) ) ( 1 )

По этой формуле вычисляется значение корня уравнения в первом приближении. Проверяем точность вычисленного корня. Если Р е ш е н и е н е л и н е й н ы х у р а в н е н и й м е т о д о м х о р д - student2.ru £ e, то вычисления прекращаются. Если f(x)> e , то вычисляется произведение f(а) Р е ш е н и е н е л и н е й н ы х у р а в н е н и й м е т о д о м х о р д - student2.ru f(x) . Если f(а) Р е ш е н и е н е л и н е й н ы х у р а в н е н и й м е т о д о м х о р д - student2.ru f(x) > 0 , то принимается а = x f(а) = f(x) и по этим данным по формуле ( 1 ) вычисляется новое значение х. Если же f(a) Р е ш е н и е н е л и н е й н ы х у р а в н е н и й м е т о д о м х о р д - student2.ru f(x)<0 , то принимается в =x, f(в)=f(x) и по этим данным вычисляется новое значение х. Так продолжается до тех пор, пока не будет выполняться неравенство f (x) £ e, или пока два последовательных значения x не будут отличаться не более, чем на e Р е ш е н и е н е л и н е й н ы х у р а в н е н и й м е т о д о м х о р д - student2.ru , т.е. Р е ш е н и е н е л и н е й н ы х у р а в н е н и й м е т о д о м х о р д - student2.ru £ 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 )

Р е ш е н и е н е л и н е й н ы х у р а в н е н и й м е т о д о м х о р д - student2.ru

Рис. 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 .

Наши рекомендации