
пример задания 1.ppt
- Количество слайдов: 17
Задание 1 Приближенное вычисление корня уравнения на отрезке [a, b] методом деления отрезка пополам. 1
Приближенное решение уравнения на отрезке Известно, что уравнение F(x)=0 (*) на отрезке [A, B] имеет ровно один корень. Требуется найти приближенное значение корня с точностью : |x*-xпр|< , где x* - точное значение корня, xпр – приближенное значение корня. 2
Приближенное решение уравнения на отрезке y=F(x) A x* B x Если уравнение (*) имеет на отрезке [A, B] ровно один корень, то F(A)*F(B) 0. 3
Метод деления отрезка пополам (дихотомии) y=F(x) A x=(a+b)/2 x 1 x* x 2 B x 3 x Если F(x)*F(B) 0, то x* [x, B] корень надо искать на правой половине отрезка: A=x; иначе x* [A, x] корень надо искать на левой половине отрезка: B=x. Далее деление пополам нового отрезка. 4
Метод деления отрезка пополам (дихотомии) i-ая итерация (цикл): вычисление xi - середины i -го отрезка и выбор его левой или правой половины. {xi} x* при i . Условие продолжения цикла: B-A>. 5
Метод деления отрезка пополам (дихотомии) начало ввод A, B, x=(A+B)/2 - F(x)*F(B) 0 B=x + A=x + B-A> - вывод x конец Алгоритм для идеального случая: на [A, B] ровно один корень. Более надежный алгоритм учитывает ограничение на число итераций: если число итераций больше некоторого предельного значения, то цикл завершается с выводом сообщения о некорректной постановке задачи. 6
Вариант-образец. Задание. Вычислить значение корня уравнения Sin(x)-X+2=0 на отрезке [2, 3] методом деления отрезка пополам. Для вычисления значения процедуру, которая использует функцию как параметр. 7
Структура программы Program TR 4; Type Tfunc = function(x: real): real; // процедурный тип function F(xp: real): real; // описание функции begin F: =sin(xp)-xp+2; end; procedure root(A, B, E: real; Np: integer; Func: Tfunc; var X: real; var N: integer); // описание процедуры. . . End; Var A, B, E, x: real; Np, N: integer; Fp: Tfunc; // переменная процедурного типа Begin Fp: =F; writeln('Input A, B, E, Np: '); read(A, B, E, Np); root(A, B, E, Np, Fp, X, N); writeln('root= ', x: 8: 6, ' N= ', N); writeln('y= ', fp(x): 8: 3); end. 8
Состав данных 9
Блок-схема процедуры root 10
Текст программы program example 17_4; Type Tfunc = function(x: real): real; Var A, B, E, x: real; Np, N: integer; Fp: Tfunc; function F(xp: real): real; begin F: =sin(xp)-xp+2; end; 11
Текст программы. Процедура root procedure root(A, B, E: real; Np: integer; Func: Tfunc; var X: real; var N: integer); Var Fa, FB, Fx: real; Fl: boolean; begin FA: =Func(A); FB: =Func(B); if FA*FB>0 then begin writeln('Interval [A, B] is invalid'); readln; end else begin Fl: =true; N: =0; 12
Текст программы. Процедура root while (Fl) do begin N: =N+1; x: =(A+B)/2; FX: =Func(x); if FX*FB<=0 then A: =x else B: =x; if(abs(B-A)<=E) then Fl: =false else if (N>Np) then begin Fl: =false; writeln('N>Np'); readln; end end; // конец процедуры root 13
Текст программы. Раздел операторов. begin Fp: =F; writeln('Input A, B, E, Np: '); read(A, B, E, Np); root(A, B, E, Np, Fp, X, N); writeln('root= ', x: 8: 6, ' N= ', N); writeln('y= ', Fp(x): 8: 3); readln; end. 14
Результаты выполнения программы 15
Определение корней уравнения с помощью построения таблицы функции sin(Х)-X+2 = 0 (MS Excel) 16
Приближенное вычисление корня на отрезке - метод подбора параметра (Excel) 17
пример задания 1.ppt