Приближенное вычисление корня уравнения методом деления отрезка пополам Вербицкая Ольга Владимировна, Заозерная школа 16
Вычисления корня уравнения f(x)=0 Вычисления на компьютере обладают большей гибкостью, чем привычные всем вычисления в математике. Рассмотрим для примера задачу вычисления корня уравнения f(x) = 0. В курсе школьной математики вам известен метод дискриминанта для уравнений вида: ax 2 + bx + c = 0, выражаемой по формуле. Однако, во многих случаях, ответ не выражается формулой (например, для корня уравнения cos(x) = x формулы просто нет). Но можно, не выводя точных формул, вычислить корень приближенно, с заданной точностью, например, до 0,0001. Мы рассмотрим один из приближенных методов вычисления корня уравнения – метод деления отрезка пополам.
Постановка задачи Дано уравнение f(x) = 0 и числа a и b: a < b, f(a) и f(b) имеют разные знаки на отрезке [a, b], т.е. f(a)* f(b) 0. Если V–точный корень уравнения f(V) = 0, a < V < b, то требуется найти W: |W – V| < E, a < W < b. Требуется определить корень уравнения W с точностью E > 0. Если V–точный корень уравнения f(V) = 0, a < V < b, то требуется найти W: |W – V| < E, a < W < b.
Алгоритм метода деления отрезка пополам 3) если |a – b| > E, то перейти к пункту 1). {если величина длины отрезка не достигла требуемой точности, то процесс деления отрезка продолжаем} Любая точка отрезка [a, b] при таком алгоритме даст приближенное решение с заданной точностью. |a-b|>E a:=c нет да начало a, b, E fa:= …… c:= (a+b)/2 fc:= …… a конец fc*fa
Когда можно применять метод деления отрезка пополам Что необходимо предварительно сделать, прежде чем применять этот алгоритм для нахождения корня уравнения? Необходимо, в первую очередь, проверить, удовлетворяет ли функция постановке задачи: является ли график функции непрерывной линией на отрезке [a, b], разные ли знаки имеет функция на концах отрезка [a, b]. Можно ли применять метод деления отрезка пополам для нахождения корней уравнений, на заданных отрезках a.x2 – 5 = 0, [0, 3] (ПО: функция непрерывна на отрезке и f(0) * f(3) < 0, применять метод можно) b.sin(x) – 0,2 = 0 [0, /2] (ПО: функция непрерывна на отрезке и f(0) * f( /2) < 0, применять метод можно) c.1/(x – 1) [–2, 2] (ПО: функция не существует в точке х=1, применять метод нельзя) d.x4 + cos(x) – 2 = 0 [0, 2] (ПО: функция непрерывна на отрезке и f(0)* f(2) < 0, применять метод можно) e.x5 – 1 = 0 [–5, 2] (ПО: функция непрерывна на отрезке и f(– 5) * f(2) < 0, применять метод можно)
Программа Program XXX; Uses Crt; Var a, b, e, fa, fc, c: Real; Begin ClrScr; a:=…; b:=…; e : = 0.001; fa : = … ; While Abs (a – b) > e do Begin c : = (a + b)/2; fc : = … ; If fc * fa < 0 Then b : = c Else Begin a : = c; fa : = fc; end; end; Writeln (Корень уравнения равен, a : 6 : 3); Readkey; End. Используя программу, вычислить на компьютере приближенные корни уравнения с точностью до следующих уравнений: a. x 2 cos(2x) + 1 = 0 [0, pi/2] b. x 3 + x 2 + x + 1 = 0 [–2,1] c. x 5 – 0,3 | x – 1 | = 0 [0,1] d. 2x – cos(x) = 0 [0, pi/4] e. tg(x) – (x + 1)/2 = 0 [0, pi/4] a. x 2 cos(2x) + 1 = 0 [0, pi/2] b. x 3 + x 2 + x + 1 = 0 [–2,1] c. x 5 – 0,3 | x – 1 | = 0 [0,1] d. 2x – cos(x) = 0 [0, pi/4] e. tg(x) – (x + 1)/2 = 0 [0, pi/4]