Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЧМ ЛР2

.docx
Скачиваний:
18
Добавлен:
03.06.2018
Размер:
339.78 Кб
Скачать

ЛР2. Методы дихотомии, Ньютона, простых итераций

x = -10:0.1:10;

y = x.^3-3*x.^2-9*x-5;

hold on

grid on

plot(x,y)

>> p = [1, -3, -9, -5];

>> roots(p)

ans =

4.99999999999999

-0.999999999999999 + 2.23479059845967e-008i

-0.999999999999999 - 2.23479059845967e-008i

>> format short

>> roots(p)

ans =

5.0000

-1.0000 + 0.0000i

-1.0000 - 0.0000i

function f = fun(x)

f = x^3 - 3*x^2 - 9*x - 5;

end

a = -10;

b = 10;

n = 1;

eps = 0.01;

k = 0;

while (abs(b - a) > eps)

fa = fun(a);

fb = fun(b);

if (fa*fb < 0)

c = b - (b - a)/2;

fc = fun(c);

if (fc == 0)

disp(c)

disp(n)

k = 1;

break

end

if (fa*fc < 0)

b = c;

else

a = c;

end

else

if (fa == 0)

disp(a)

disp(n)

k = 1;

break

else

if (fb == 0)

disp(b)

disp(n)

k = 1;

break

else

disp('Roots do not exist')

disp(n)

k = 1;

break

end

end

end

n = n+1;

end

if (k == 0)

disp(c)

disp(n-1);

end

>> Dihotomia

5

2

function df = dfun(x0)

syms x;

df0 = diff(x^3 - 3*x^2 - 9*x - 5);

df = subs(df0, x0);

end

x0 = 4;

n = 1;

x = x0 - fun(x0)/dfun(x0);

while abs(x - x0) > 0.0001

x0 = x;

x = x0 - fun(x0)/dfun(x0);

n = n + 1;

end

disp(x)

disp(n)

>> Newton

586645646446/117329129289

5

>> 586645646446/117329129289

ans = 5.000000000008523

x0 = 0.5;

n = 1;

x = x0 - 2*(fun(x0)/dfun(x0));

while abs(x - x0) > 0.0001

x0 = x;

x = x0 - 2*(fun(x0)/dfun(x0));

n = n + 1;

end

disp(x)

disp(n)

>> Newton

-2195674191073/2195674191070

4

>> -2195674191073/2195674191070

ans = -1.000000000001366

function x = kor(a)

x0 = a;

x = 0.5*(a/x0 + x0);

n = 1;

while abs(x - x0) > 0.00000000000001

x0 = x;

x = 0.5*(a/x0 + x0);

n = n + 1;

end

x

n

end

>> kor(2)

x = 1.414213562373095

n = 6

>> sqrt(2)

ans = 1.414213562373095

>> fzero('x^3-3*x^2-9*x-5',[4,6])

ans = 5

>> fzero('x^3-3*x^2-9*x-5',[-2,6])

ans = -1

function f = fun(x)

f = sin(x) - x/2;

end

a = -2;

b = -1;

>> Dihotomia

-1.895493507385254

20

a = -1;

b = 1;

>> Dihotomia

0

1

a = 1;

b = 2;

>> Dihotomia

1.895493507385254

20

>> Newton

-1.8954942672087131979612086400169

3

>> Newton

0.0

1

>> Newton

1.8954942672087131979612086400169

3

>> fzero('sin(x)-x/2',-2)

ans = -1.895494267033981

>> fzero('sin(x)-x/2',0)

ans = 0

>> fzero('sin(x)-x/2',2)

ans = 1.895494267033981

Соседние файлы в предмете Численные методы