МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИИ
«УРАЛЬСКИЙ ГОСУДАРСТВЕННЫЙ ЭКОНОМИЧЕСКИЙ УНИВЕРСИТЕТ»
Отчет по лабораторной работе №2
«Метод хорд»
вариант 18
Выполнила: студентка гр. ЭМА-13
Савастьянова А.Мя
Проверил: Миронова Л.И.
Екатеринбург
2014
Метод хорд
Алгоритм
Вводим левый, правый концы - a, b, точность - e.
F1=f(a)
F2=f(b)
хорда алгоритм корень уравнение
Счетчик приближений (итераций) N=0.
Какой конец хорды неподвижен?
Если F1*F3 > 0, то неподвижен левый - а.
, p =2.
Иначе F1*F3 < 0, то неподвижен правый - b.
, p= 1.
F4=f()
Если p = 1, то ,
а если p = 2, то .
Печатаем N, , F4, F5.
N = N+1.
.
Если, то печатаем - корень. Конец задачи.
Иначе , переходим на ш.7.
Конец задачи.
Контрольный пример к алгоритму метода хорд:
Найти корень уравнения находящийся в промежутке [1;1,5] с точностью 0,002.
Решение.
Найдем вторую производную заданной функции.
Определим, какой конец интервала неподвижен. Для этого определим знак f(а) и f''(с). Найдем значения «а» и «с».
По условию задачи, а=1 и b=1,5.
Тогда . Подставим значения «а» и «b» в эту формулу.
Получим с=0,25.
Теперь получим f(1)=1-0,2-0,2-1,2=-0,6<0и f(0,25)=6*0,25-0,4>0.
Тогда знак произведения f(1)*f(0,25)<0. Значит, неподвижен конец хорды b, и для расчетов надо воспользоваться формулой 4.
После выполнения расчетов контрольного примера получим результаты, помещенные в таблицу.
N |
||||
0 |
1 |
-0.6 |
0.15 |
|
1 |
1.15 |
-0.173 |
0.040 |
|
2 |
1.190 |
-0.036 |
0.008 |
|
3 |
1.198 |
0.072 |
0.001 |
|
4 |
1.199 |
Уточненное значение корня заданного уравнения на интервале [1;1,5] с точностью 0,002 х=1,199.
Код программы контрольного примера:
programlab3;
usescrt;
vara, b, c, x0, x1, F1, F2, F3, F4, F5, e:real;
N,p:integer;
begin
writeln('f:=x^3-0.2*x^2-0.2*x-1.2');
writeln('Точность 0.002');
writeln('Введите левый конец отрезка:');
readln(a);
writeln('Введите правый конец отрезка:');
readln(b);
writeln('N - счётчик количества итераций');
e:=0.002;
F1:=a*a*a-0.2*a*a-0.2*a-1.2;
F2:=b*b*b-0.2*b*b-0.2*b-1.2;
c:=(a+b)/2;
F3:=6*c-0.4;
N:=0;
ifF1*F3>0 then
begin
x0:=b;
p:=2;
end
else
begin
x0:=a;
p:=1;
end;
repeat
F4:=x0*x0*x0-0.2*x0*x0-0.2*x0-1.2;
ifp=1 then F5:=(b-x0)*F4/(F2-F4);
ifp=2 then F5:=(x0-b)*F4/(F4-F2);
writeln('N=',N,', x1=',x0,', x0=',x1,', F4=',F4,', F5=',F5);
N:=N+1;
x0:=x0-F5;
x1:=x0+F5
untilabs(x0-x1)<e;
end.
Вариант №18
Найти корень уравнения с точностью 0,002.
Код программы для данного уравнения:
uses crt;
var a, b, c, x0, x1, F1, F2, F3, F4, F5, e:real;
N,p:integer;
begin
writeln('f:=x^4-18*x^2+6');
writeln('Точность 0.002');
writeln('Введите левый конец отрезка:');
readln(a);
writeln('Введите правый конец отрезка:');
readln(b);
writeln('N - счётчик количества итераций');
e:=0.002;
F1:=a*a*a*a-18*a*a+6;
F2:=b*b*b*b-18*b*b+6;
c:=(a+b)/2;
F3:=12*c*c-36;
N:=0;
if F1*F3>0 then
begin
x0:=b;
p:=2;
end
else
begin
x0:=a;
p:=1;
end;
repeat
F4:=x0*x0*x0*x0-18*x0*x0+6;
if p=1 then F5:=(b-x0)*F4/(F2-F4);
if p=2 then F5:=(x0-b)*F4/(F4-F2);
writeln('N=',N,', x1=',x0,', x0=',x1,', F4=',F4,', F5=',F5);
N:=N+1;
x0:=x0-F5;
x1:=x0+F5
until abs(x0-x1)<e;
readln;
end.