Чисельні методи розв’язання нелінійних рівнянь на ПК
Чисельні методи розв’язання нелінійних рівнянь на ПК
Мета
роботи: ознайомитись з
методикою і вивчити різні алгоритми розв’язування нелінійних рівнянь на ЕОМ.
Завдання:
Методами поділу відрізка пополам,
методом хорд, методом дотичних та методом ітерацій знайти всі корені
нелінійного рівняння. Точність знаходження
коренів вважати рівною 0,0000001.
Методом
поділу відрізка пополам:
clear, clc
f = @(x) atan (2*x) - 0.2*((x-1)^4)+sin(x);% функция
exp = 0.0000001;% точность
a = 2;% нижний предел
b = 4;% верхний предел
fplot
(f, [a, b]), hold on% рисуем функцию
=f(a);=f(b);=(a+b)/2;=1;=f(p);abs(fp)>expfa*fp<0=p;=p;;=(a+b)/2;=n+1;=f(a);=f(p);;=
p;% корень(x0, f(x0),
'or')on(['x_0=', num2str(x0)])
Методом
хорд:
clear, clc = @(x) atan (2*x) - 0.2*((x-1)^4)+sin(x);=2;=4;=0.0001;(abs(a-b)>e)=a
- (f(a)*(b-a))/(f(b) - f(a));f(c)*f(b)>0=c;=c;;(['Ответ x=' num2str (c,
3)]);0 = с;% корень
plot (x0, f(x0), 'or')
grid on(['x_0=',
num2str(x0)])
Методом
дотичних:
clear, clc;
f = @(x) atan (2*x) - 0.2*((x-1)^4)+sin(x);= @(x) (2/(4*(x^2)+1)) -
0.8*((x-1)^3)+cos(x);
a=0; b=1; N=0;=f(a); y2=f(b);=df(a); z2=df(b);=4;
ezplot
(f, [a, b]), hold on
1=((z2*b
- z1*a) - (y2-y1))/(z2-z1);=f(s); z=df(s);= N + 2;z==0 | b-a <
2*e=s;;z>0=s; y2=y; z2=z;=s; y1=y; z1=z;
if
z~=0=(a+b)/2;=f(x);
fprintf
('Метод касательных \n \n');
fprintf
('x =%.5f \n', x);('y =%.5f \n \n', y);
fprintf
('Количество итераций:%i \n', N);
ezplot
(f, [-0.5 1]), hold on(x, y, 'or'), grid on
grid on
Метод
ітерацій:
clear,
clc = inline ('atan(2*x) - 0.2*((x-1)^4)+sin(x)');%ф.inline чтобы задать
строку = -10:0.01:10;
y = f(x);
plot (x, y); grid
% Метод простых
итераций= 1e-4;= 1;
% значение
производной в начальной точке:
L0 =
2e-6./(f (x0+1e-6) - f (x0-1e-6));= 0;= x0;= 100;abs(razn)>eps= x -
L0*f(x);=xn-x;=xn;=iter+1;on(x, f(x), 'or'), grid on
Обчислимо
вираз: =L0
де h =
10-6, отримаємо:
Комбінований:
clear, clc
syms x
f = x^3+6*x-5;
a=0.5;=1;=0.000001;=0;=(a+b)/2;=diff(f);=diff(f1);(abs(b-a)>eps)((subs
(f1, x, c)*subs (f2, x, c))>=0)=a - (b-a)*subs (f, x, a)/(subs (f, x, b) -
subs (f, x, a));=b-subs (f, x, b)/subs (f1, x, b);=a-subs (f, x, a)/subs (f1,
x, a);=b - (b-a)*subs (f, x, b)/(subs (f, x, b) - subs (f, x, a));=i+1;('b=% f
\n', double(b))(f, [0.5 1]), hold on(b, subs (f, x, b), 'or')
grid on
нелінійний
рівняння хорда ітерація
Висновок:
Я навчилась розв’язувати нелінійні
рівняння на ПК різними чисельними методами: половинного ділення, хорд,
дотичних(Ньютона), ітерацій (послідовних наближень), комбінаційний (хорд та
дотичних).