Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ к лаб.раб..doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
1.22 Mб
Скачать

Лабораторная работа № 4 Тема: Решение нелинейных уравнений методом Ньютона (касательных)

Цель работы: Уточнить корни нелинейных уравнений методом Ньютона (касательных) с заданной точностью.

1. Теоретические сведения

Метод Ньютона (касательных) применяется для нахождения корня нелинейного уравнения f (x) = 0, лежащего на отрезке [a,b] и выполнении условия f (a) f (b) < 0.

В качестве начального приближения корня х0 может быть принята одна из границ отрезка [a,b]. Если функция f (x) выпукла со стороны левой границы, то х0=а, если выпукла со стороны правой границы, то х0=b.

Графически последовательные приближения корня получают проведением касательных к кривой f (x) в точках В00, f (х0,)], В11, f (х1,)],….. Вnn, f (хn,)] до пересечения с осью абсцисс.

Выражения для последовательных приближений корня уравнения может быть получено из уравнения касательной. Так для касательной в точке В00, f (х0,)] оно имеет вид

(1)

Полагая у = 0 и х = х1 получим

х1 = х0 - (2)

Тогда формула для вычисления последующих приближений корня примет вид

xn+1 = хn - (3)

При правильно выбранном начальном приближении корня необходимо выполнение следующего условия

(4)

Из (3) следует, что чем больше значение f (х) в окрестности корня, тем быстрее происходит его уточнение, т.е. метод Ньютона эффективен при большой крутизне f (х).

2. Порядок выполнения работы

  1. Последовательно используя компьютерную программу из Приложения, уточнить каждый корень с заданной точностью.

  2. Выполнить проверку для каждого корня, подставляя их значения в соответствующее уравнение.

  3. Все вычисления проводить с количеством разрядов в дробной части десятичного числа минимум на один разряд больше, чем заданная точность.

3. Задание к лабораторной работе

3.1. Выбрать два уравнения в соответствии с номером варианта.

1.x-sin(x)=0.25 x3 -3x2 +9x-8=0

2. tg(0.58x+0.1)=x x3 -6x2-8=0

3. x-cos(0.387x)=0 x3 -3x2 +6x+3=0

4. tg(0.4x+0.4)=x2 x3-0.1x2+0.4x-1.5=0

5. lg(x)-7/(2x+6)=0 x3-3x2+9x+2=0

6. tg(0.5x+0.2)=x2 x3+x2-5=0

7. 3x-cos(x)-1=0 x3+0.2x2+0.5x-1.2=0

8. x+lg(x)=0.5 x3+3x2+1=0

9. tg(0.5x+0.1)=x2 x3+0.2x2+0.5x-2=0

10. 1+x+4sin(x)=0 x3-3x2+12x-9=0

11. ctg(1.05x)-x2 =0 x3-0.2x2+0.3x-1.2=0

12. tg(0.4x+0.3)=x2 x3-3x2+6x-2=0

13. x lg(x)-1.2=0 x3-0.1x2+0.4x-1.5=0

14. 1.8x2-sin(10x)=0 x3+3x2+6x-1=0

15. ctg(x)-x/4=0 x3+0.1x2+0.4x-1.2=0

16. tg(0.3x+0.4)=x2 x3+4x2-6=0

17. x-20sin(x)=0 x3+0.2x2+0.5x+0.8=0

18. ctg(x)-x/3=0 x3-3x2 +12x-12=0

19. tg(0.47x+0.2)=x2 x3-0.2x2 +0.3x+1.2=0

20. x2+4sin(x)=0 x3-2x2+4=0

21. ctg(x)-x/2=0 x3-0.2x2 +0.5x-1.4=0

22. 2x-lg(x)-7=0 x3-3x2 +6x-5=0

23. tg(0.44x+0.3)=x2 x3-0.1x2 +0.4x+1.2=0

24. 3x-cos(x)-1=0 x3-0.2x2 +0.5x-1=0

25. ctg(x)-x/10=0 x3+3x2 +12x+3=0

26. x2+4sin(x)=0 x3-0.1x2 +0.4x+2=0

27. tg(0.36x+0.4)=x2 x3-0.2x2 +0.4x-1.4=0

28. x+lg(x)=0.5 x3+0.4x2 +0.6x-1.6=0

29. ctg(x)-x/5=0 x3+x2-3=0

30. 2lg(x)-x/2+1=0 x3-0.2x2 +0.5x+1.4=0

3.2. Уточнить корни уравнений с точностью 0,001.

3.3. Оформить отчет по лабораторной работе.

Приложение

program labrab4;

Var

d,e,f,xn,xm,xp:real;

label 10;

function fun(x:real):real;

begin

{В эту строку записать после знака равно выражение для уравнения}

fun:=x*x*x-0.1*x*x+0.4*x-1.5;

end;

function fun1(x:real):real;

begin

{В эту строку записать после знака равно выражение для

первой производнойуравнения}

fun1:=3*x*x+0.2*x+0.4;

end;

function fun2(x:real):real;

begin

{В эту строку записать после знака равно выражение для

второй производнойуравнения}

fun2:=6*x

end;

begin

cls;

writeln('Решение нелинейных уравнений методом Ньютона (касательных)');

writeln;

begin

writeln ('Введите данные');

write ('a=');read(d);

write ('b=');read(e);

write ('Точность=');read(f);

writeln('Значения функции на концах исходного интервала');

write('f(a)=',fun(d),' ','f(b)=',fun(e));

writeln; writeln;

if (fun(d)*fun(e)>0) then

begin

writeln('На указанном интервале нет корня');

goto 10;

end;

if (fun(d)*fun2(d)>0) then

xn:=d

else

xn:=e;

repeat

xm:=xn-(fun(xn)/fun1(xn));

xp:=xn;

xn:=xm;

writeln ('Текущее приближение корня: ',xm:8:4);

until abs(fun(xp)/fun1(xp))<f;

writeln ('Корень уравнения ',xm:8:4);

end;

10:end.