Учащимся 10-11 классов И.А. Ледовских, доцент кафедры информатики и информационных технологий ГОУ ВПО ДВГГУ Численное решение нелинейных уравнений с одной переменной При решении задач прикладного характера в разнообразных разделах физики, механики, техники и других областях возникает необходимость решения нелинейных уравнений с одной переменной. При этом многие уравнения не имеют аналитических решений. Это относится к большинству трансцендентных уравнений. Также доказано, что нельзя построить формулу, по которой можно было бы решить произвольное алгебраические уравнение выше четвертой степени. Уравнение будем называть линейным1, алгебраическим или трансцендентным в зависимости от того, имеет ли оно одно решение, n решений или неопределенное число решений. Нелинейные уравнения можно разделить на два класса – алгебраические и трансцендентные. Алгебраическими уравнениями называют уравнения, содержащие только алгебраические функции (целые, рациональные, иррациональные). Например, многочлен является целой алгебраической функцией. Уравнения, содержащие другие функции (тригонометрические, показательные, логарифмические и другие) называются трансцендентными.2 Методы решения нелинейных уравнений делятся на две группы: точные методы; итерационные методы. Точные методы позволяют записать корни в виде некоторого конечного соотношения (формулы). Из школьного курса алгебры известны такие методы для решения тригонометрических, логарифмических, показательных, а также простейших алгебраических уравнений. Если алгебраическое или трансцендентное уравнение достаточно сложное, то его корни сравнительно редко удается найти точно. Поэтому большое значение приобретают способы приближенного нахождения корней уравнения и оценки степени их точности. Если точно определить корни уравнения не представляется возможным, для их решения используют численные итерационные (iteration повторение) методы с заданной степенью точности. Далее будут рассмотрены несколько численных методов и приведены алгоритмы нахождения корней уравнений. В общем случае нелинейное уравнение можно записать в виде: F ( x) 0 (1) где функция F(x) - определена и непрерывна на некотором конечном или бесконечном интервале (a, b) Решение линейного уравнения с одной переменной получается достаточно просто и в этой статье не рассматривается. 2 Решение нелинейных уравнений <http://www.exponenta.ru/educat/systemat/hanova/equation/main.asp> 1 или в виде: f ( x) g ( x) (2) где функции f(x) и g(x) также определены и непрерывны на интервале (a, b) . Всякое число (a, b) обращающее уравнения (1) или (2) в верные числовые равенства называется корнем этого уравнения. Корни уравнения могут быть действительными и комплексными. В дальнейшем будет идти речь только о вычислении действительных корней. Решить уравнение численно значит: 1) установить имеет ли оно действительные корни; 2) отделить эти корни (то есть на числовой оси найти достаточно тесные промежутки, называемые интервалами изоляции корня3, содержащие только один корень данного уравнения); 3) уточнить отделенные корни, т.е. найти значения корней с заданной степенью точности . Последнее означает следующее. Пусть x* - точный корень уравнения и x* ( a, b) , то есть a x* b . Если (b a) , тогда числа a и b могут рассматриваться как приближенные значения корня x* соответственно с недостатком и с избытком с точностью до , так как x* a b a и x* b b a . Любое число, содержащееся между a и b , можно принять за приближенное значение корня x* с точностью до . Графические методы решения уравнений4 Пусть дано уравнение F (х) = 0. Построим график функции F (х). Абсциссы точек пересечения графика с осью Ох и являются корнями уравнения. Иногда для графического решения уравнения удобнее записать его в виде ( x) g ( x) и построить графики функций: y (x) и y g (x). Абсциссы точек пересечения этих графиков и являются корнями уравнения F (х) = 0 (рис. 1). Однако этот метод позволяет получить лишь грубо приближенные значения корней уравнения. Для получения значений корней с большей точностью применяются численные методы. Однако, графический метод очень удобен, так как он позволяет найти корни с точностью, достаточной для решения многих практических задач, а также достаточно нагляден, прост и доступен. Рис. 1 Численные методы решения уравнений Методы определения интервала изоляции корня основаны на следующем свойстве: если непрерывная функция f(x) на интервале [a,b] поменяла знак, т.е. f(a)*f(b)<0, то она имеет на этом интервале хотя бы один корень. 4 Пулькин С. П. Вычислительная математика: пособие для учащихся 9-10 классов по факультативному курсу. 3 Наиболее распространенными на практике численными методами решения уравнения (1) являются: метод половинного деления, метод хорд, метод касательных, метод простой итерации и т.д.5 Процесс численного решения уравнений разбивается на три этапа: 1. Отделение корней уравнения. Этот процесс можно сделать как графически, так и аналитически. Важно найти такие отрезки, которые бы содержали по одному корню уравнения (1). 2. Выбор метода решения и преобразование уравнения к виду, удобному для применения данного метода. 3. Уточнение корней с заданной точностью при помощи выбранного численного метода. Отделение корней6 Говорят, что корень x* уравнения отделен на отрезке a; b , если он содержится в данном отрезке, и если на этом отрезке других корней нет. Провести полное отделение всех корней уравнения – значит разбить всю область допустимых значений на интервалы (или на отрезки), в каждом из которых содержится ровно по одному корню (или не содержится ни одного корня). Отделение корней обычно начинают проводить графически. Для этого строят графики функций, получают интервалы, в которых находятся корни уравнения. Это предположение затем проверяют аналитически, пользуясь следующим свойством непрерывной функции F(x): если функция F (x) непрерывна на интервале a; b и на его концах имеет разные знаки ( F (a) F (b) 0. ), то между точками a и b имеется хотя бы один корень уравнения F ( x) 0 . При этом корней может оказаться и несколько, как показано на рис. 2. Рис.2 Для того, чтобы на интервале существовал только один корень, должно выполняться следующее свойство: если функция F (x) непрерывна и монотонна на отрезке a; b и принимает на концах отрезка значения разных знаков, то внутри отрезка a; b содержится корень уравнения F ( x) 0 и этот корень единственный (рис. 3, а, b). 5 Пулькин С. П., Никольская Л. Н., Дьячков А. С. Вычислительная математика: учебное пособие для студентовзаочников V курса физико-математических факультетов педагогических институтов / С. П. Пулькин, Л. Н. Никольская, А. С. Дьячков. – М. : Просвещение, 1980. -176с. 6 Заварыкин В. М., Житомирский В. Г., Лапчик М. П. Численные методы. – М. : Просвещение, 1990. Рис. 3 Пример 1: Отделить графически положительные корни уравнения e0,3x - 2 sin(2x) = 0 (3) Решение: Найдем приближенные значения корней уравнения графически. Для этого удобно представить уравнение в следующем виде: e0,3x = 2 sin(2x). Решением данного уравнения будет являться абсцисса x точки пересечения графиков следующих функций: y1(x) = 2 sin(2x); y2(x) = e0,3x y1 ( x) 2 sin( 2 x) y2 ( x) exp ( 0.3 x) 4 2 y1 ( x) y2 ( x) 1 0 1 2 3 4 2 x На рисунке видно, что графики функций y1(x) и y2(x) пересекаются в двух точках A и B, абсциссы которых положительны и лежат соответственно в промежутках 0; и ; . Следовательно, уравнение имеет два положительных корня x1 и x2, 4 4 2 которые лежат в промежутках 0; и ; . 4 4 2 Примечание: Графики функций можно строить с помощью компьютера, например, в электронных таблицах Excel или в свободно распространяемой системе компьютерной математики Scilab.7 Пример 2: Отделить аналитически корни уравнения x3 – 3x2 + 11x + 1 = 0 (4) Решение: Для аналитического отделения корней найдем производную функции f(x) = x3 – 3x2 + 11x + 1 Производная этой функции f’(x) = 3x2 -6x + 11 Scilab – свободно распространяемая программа, а значит бесплатная для конечного пользователя. Последнюю версию пакета всегда можно скачать на официальном сайте www.scilab.org. Существуют русскоязычные сайты, посвященные пакету Scilab: http://scilab.land.ru, http://teacher.dn-ua.com 7 ни в одной точке не обращается в нуль, т.к. D = 36 -4*3*11 < 0, поэтому для всех x из области определения значение производной больше нуля f’(x)>0, следовательно, функция f везде возрастает, и уравнение (4) может иметь один корень. Составим таблицу: x sign f(x) (знак функции) -1 0 - + + - Из таблицы видно, что f(-1)f(0) < 0, поэтому уравнение (4) имеет один корень, лежащий в интервале [-1;0]. Уточнение корней уравнения методом половинного деления (дихотомии). Метод половинного деления осуществляется на практике следующим образом. Пусть корень уравнения отделен - выбран интервал изоляции a; b (рис. 4). Примем за первое приближение корня точку c , которая является серединой отрезка a; b. Рис. 4 Далее будем действовать по следующему алгоритму: 1. находим точку c (a b) / 2 ; 2. находим значение f (c ) ; 3. Если f (a ) f (c) 0 , то корень лежит на интервале a; с , в других случаях он находится на интервале с; b ; начало 4. если величина интервала , то найден иначе возвращаемся к пункту корень с точностью , a,b, 1. Блок-схема алгоритма решения уравнения методом половинного деления приведена на рис. 5.8 c : (a b) / 2 половинного деления практически Метод неудобен для вычисления корня ручным способом, требуется выполнение нет f (c ) f ( a ) 0 большого объёма вычислительной нет да работы, но алгоритм решения уравнения этим методом прост a : c b : c и легко реализуется с помощью ЭВМ. a b да Славинская Л.В. Турбо Паскаль 7.0. – М.: ООО «Издательство Алексеев Е.Р., Чеснокова О.В., Павлыш В.Н., АСТ»: Издательство «НТ Пресс», 2004. – 270 с. 8 c конец Рис. 5 Алгоритм решения уравнения методом половинного деления (дихотомии) Пример 3: Уточнить корень уравнения x3 – 3x2 + 11x + 1 = 0 , который находится на отрезке [-1;0] (см. пример 2) методом половинного деления с точностью до 0,001. Решение: Рассмотрим функцию f(x) = x3 – 3x2 + 11x + 1 1. Так как корень уравнения находится на отрезке [-1;0], то примем a=-1 и b=0. Тогда с = (-1+0)/2 = -0,5 . Если f(c) = 0, то с – корень уравнения (4), если f(c) 0, то найдём знаки произведений f (a ) f (c) и f (c) f (b) : f(a)=f(-1)=(-1)3 -3*(-1)2 + 11*(-1) + 1 = -14; f(b)=f(0)=03 -3*02 + 11*0 + 1 = 1; f(c)=f(-0,5)=(-0,5)3 -3*(-0,5)2 + 11*(-0,5) + 1 = -5,375; f (a ) f (c) = 75,25; f (c) f (b) = -5,375. Т.к. f (c) f (b) < 0, то корень уравнения (4) находится на отрезке [c;b] = [-0,5;0]. 2. Т.к. корень уравнения находится на отрезке [-0,5;0], то примем a1=-0,5 и b1=0. Тогда с1 = (-0,5+0)/2 = -0,25 . Если f(c1) = 0, то с1 – корень уравнения (4), если f(c1) 0, то найдём знаки произведений f (a1 ) f (c1 ) и f (c1 ) f (b1 ) : f(a1)=f(-0,5)= -5,375; f(b1)=f(0)= 1; f(c1)=f(-0,25)=(-0,25)3 -3*(-0,25)2 + 11*(-0,25) + 1 = -1,9531; f (a1 ) f (c1 ) = 10,498; f (c1 ) f (b1 ) = -1,9531. Т.к. f (c1 ) f (b1 ) < 0, то корень уравнения (4) находится на отрезке [c1;b1]=[-0,25;0]. И так далее, путем деления отрезка пополам всё более уточняем корень. На каждом n-ом шаге используем формулы для вычислений (см. рис.5 алгоритм решения уравнения методом половинного деления). Вычисления можно выполнять путем составления программы на любом языке программирования, в электронных таблицах Excel или в системе Scilab. Если выполнять вычисления в электронных таблицах, то вычисления удобно представлять в виде таблицы: № шага 0 1 a -1 -0,5 b 0 0 c -0,5 -0,25 2 -0,25 0 -0,125 3 4 5 6 7 8 -0,125 -0,125 -0,0938 -0,0938 -0,0938 -0,0898 0 -0,0625 -0,0625 -0,0781 -0,0859 -0,0859 -0,0625 -0,0938 -0,0781 -0,0859 -0,0898 -0,0879 9 10 -0,0898 -0,0889 -0,0879 -0,0879 -0,0889 -0,0884 f(a) -14 -5,375 1,95313 0,42383 -0,4238 -0,0584 -0,0584 -0,0584 -0,0132 -0,0132 1 1 f(с) -5,375 -1,9531 f(a)f(с) 75,25 10,4980 F(с)(b) -5,375 -1,9531 1 -0,4238 0,8278 -0,4238 0,25 1 0,3005 0,3005 0,1218 0,0319 0,0319 0,3005 -0,0584 0,1218 0,0319 -0,0132 0,0093 -0,1274 0,0248 -0,0071 -0,0019 0,0008 -0,0001 0,125 0,0625 0,03125 0,015625 0,007813 0,003906 0,0093 -0,0019 0,00003 0,3005 -0,0176 0,0366 0,0039 -0,0004 0,0003 0,00002 f(b) e 1 0,5 0,001953 0,000977 Когда в последнем столбце будет стоять требуемая точность, то ответ будет находиться в столбце «с». Ответ: x 0,088 0,001 Существует ещё множество методов решения уравнений: метод хорд, метод касательных, комбинированный метод хорд и касательных, метод простой итерации (iteration – повторение, лат.), метод секущих и т.д. Но и рассмотренный метод позволяет получить решение большого класса уравнений с заданной точностью. Практические задания: Для приведенных ниже уравнений выполнить следующие действия: 1. Отделить корни уравнений графически (вычислить интервалы изоляции корней уравнения f(x) = 0 ). 2. Составить программу вычисления корней уравнения с погрешностью =0,001 методом половинного деления (используя соответствующий алгоритм решения уравнений). 3. Уточнить методом половинного деления один из корней уравнения с точностью до 0,001. x lg x 0,5; x 3 3x 1 0. x 2 4 sin x 0 ; tg(0,4 x 0,3) x 2