Ім'я файлу: 1.docx
Розширення: docx
Розмір: 38кб.
Дата: 08.06.2023
скачати

ЛАБОРАТОРНАЯ РАБОТА 5-1

Задание 1

С помощью средств программной среды Matlab был найден отрезок локализации для наименьшего положительного корня:



Из рисунка видно, что график пересекает ось ОХ между 1 и 2, при этом меняя свой знак на противоположный. Значит отрезок локализации будет [1;2] удовлетворяя условие b - a = 1. В качестве начального приближение выберем значение 1.8. Приведем код соответствующей программы для расчёта в среде Matlab:

clear all;

x=-1:0.1:3;%сетка х

y=length(x);%сетка y

y=fun(x);%вызов функции для расчета сетки y

plot(x,y);%график для определения отрезка локализации

grid on;

%с графика видно, что отрезок локализации будет [1;2] для положительного корня

a=1;%нижняя граница

b=2;%верхняя граница

x00=1.8;%выберем начальное приближение на отрезке

x01=1.7;

d=1.7;%фиксированая точка

e0=1e-3;%погрешность 1

e1=1e-4;%погрешность 2

[x1,n1]=bisec(a,b,e0);%вызов функции для расчета по методу бисекции

q=abs(recur_fun_deriv(b-a));%проверили рекурсивную формулу на отрезке по условию Липшица

[x2,n2]=simple_iter(x00,e1);%вызов метода простой итерации

%найдем оптимальную скорость сходимости на отрезке для метода релаксации

g=a:0.1:b;

h=fun_deriv(g);

M=max(abs(h));

m=min(abs(h));

alpha=2/(M+m);%оптимальная скорость схождения

[x3,n3]=relaxation(x00,alpha,e1);%вызов метода релаксации

[x4,n4]=newton(x00,e1);%вызов метода ньютона

[x5,n5]=secant(x00,x01,e1);%вызов метода секущих

[x6,n6]=false_position(x00,d,e1);%вызов метода ложного положения
function y = fun(x)%функция

y=log(x+2)-x.^2;

end
function xi = recur_fun(x)%рекуррентная формула

xi=sqrt(log(x+2));

end
function y = fun_deriv(x)%производная от начальной фукнции

y=1./(x+2)-2.*x;

end
function [c,n] = bisec(a,b,e)

c=0;%инициализация начального значения

n=0;%инициализация начального значения

while 1

c=(a+b)/2;

if fun(c)==0

x=c;

break;

end

if (fun(c)*fun(a))<0

b=c;

else

a=c;

end

n=n+1;

if abs(b-a)<=e

break;

end

end

end
function [x,n] = simple_iter(x0,e)

x=0;

n=0;

prev=x0;

while 1

x=recur_fun(prev);

n=n+1;

if abs(prev-x)<=e

break;

end

prev=x;

end
function [x,n] = relaxation(x0, alpha, e)

x=0;

n=0;

prev=x0;

while 1

x=prev+alpha*fun(prev);

n=n+1;

if abs(prev-x)<=e

break;

end

prev=x;

end
function [x,n] = newton(x0,e)

x=0;

n=0;

prev=x0;

while

x=prev-fun(prev)/fun_deriv(prev);

n=n+1;

if abs(prev-x)<=e

break;

end

prev=x;

end

end
function [x,n] = secant(x0,x1,e)

x=0;

n=0;

prev0=x0;

prev1=x1;

while 1

x=prev1-(prev1-prev0)/(fun(prev1)-fun(prev0))*fun(prev1);

n=n+1;

if abs(prev1-x)<=e

break;

end

a=prev1;

prev1=x;

prev0=a;

end

end
function [x,n] = false_position(x0,d,e)

x=0;

n=0;

prev=x0;

while 1

x=prev-(d-prev)/(fun(d)-fun(prev))*fun(prev);

n=n+1;

if abs(prev-x)<=e

break;

end

prev=x;

end

end
Задание 2

  1. Метод бисекции относится к классу глобально-сходимых методов. Он имеет линейную сходимость и из-за этого достаточно медленный, что и видно по таблице. На поиск корня ушло наибольшее количество итераций при том, что требуемая точность была понижена.

  2. В случае нашей функции метод простой итерации оказался достаточно эффективным из-за малого коэффициента q - 0,159, что обеспечило приемлемую скорость сходимости почти что на уровне квадратической метода Ньютона.

  3. Метод релаксаций — это хороший инструмент в тех случаях, когда мы не можем воспользоваться другими итерационными методами из-за сложности нахождения рекурсивной функции или удовлетворения условий тех итерационных методов. Но он уступает в своей скорости другим итерационным методам, что и видно с полученных результатов.

  4. Метод Ньютона уже имеет отличную скорость нахождения корней (квадратическая сходимость) и показал наилучший результат по количеству итераций. Но стоит помнить о ряде ограничений при выборе данного метода. Во-первых, он чувствителен к начальному приближению и потому часто используется в комбинации с другими методами, например, бисекции, что позволяет задать правильное направление поиска корня. Во-вторых, порой расчет производных очень затруднительный или невозможный процесс, который стоит игнорировать. Для этого и есть модифицированные методы Ньютона, которые будут рассмотрены дальше.

  5. Метод секущих позволяет избавиться от производной, что во многих случаях может упростить расчеты и повысить скорость. Но он требует уже два начальных приближения и в последующих итерациях 2 предыдущих значения корня. В нашем случае этот метод не уступил по скорости методу Ньютона.

  6. Метод ложного положения позволяет получить сразу 2 преимущества над прошлыми методами: отсутствие производной при расчетах и 1 начальное приближение. Но за это он расплачивается, ведь имеет линейную сходимостью, уступив в нашем случае всем методам, кроме релаксаций и бисекции.

В нашем случае применение метода Ньютона и его модификации дало наилучшие результаты. Так же хорошо подошел метод простой итерации. Все другие методы достаточно медленны и можно ими пренебречь.


Задание 3

Вариант 2

Корень нелинейного уравнения

Метод

Значение корня

Количество итераций

Точность

Бисекции

1,0576

10

0.001

Простой итерации

1,0571

6

0.0001

Релаксаций

1,0571

8

0.0001

Ньютона

1,0571

5

0.0001

Секущих

1,0571

5

0.0001

Ложного положения

1,0571

8

0.0001

скачати

© Усі права захищені
написати до нас