Дипломы, курсовые, рефераты, контрольные...
Срочная помощь в учёбе

Чисельні методи розв"язання нелінійних рівнянь на ПК

Лабораторная работаПомощь в написанииУзнать стоимостьмоей работы

Висновок: Я навчилась розв’язувати нелінійні рівняння на ПК різними чисельними методами: половинного ділення, хорд, дотичних (Ньютона), ітерацій (послідовних наближень), комбінаційний (хорд та дотичних). Завдання: Методами поділу відрізка пополам, методом хорд, методом дотичних та методом ітерацій знайти всі корені нелінійного рівняння. Точність знаходження коренів вважати рівною 0,1. Мета… Читать ещё >

Чисельні методи розв"язання нелінійних рівнянь на ПК (реферат, курсовая, диплом, контрольная)

Чисельні методи розв’язання нелінійних рівнянь на ПК

Мета роботи: ознайомитись з методикою і вивчити різні алгоритми розв’язування нелінійних рівнянь на ЕОМ.

Завдання: Методами поділу відрізка пополам, методом хорд, методом дотичних та методом ітерацій знайти всі корені нелінійного рівняння. Точність знаходження коренів вважати рівною 0,1.

Методом поділу відрізка пополам:

clear, clc

f = @(x) atan (2*x) — 0.2*((x-1)^4)+sin (x);% функция

exp = 0.1;% точность

a = 2;% нижний предел

b = 4;% верхний предел

fplot (f, [a, b]), hold on% рисуем функцию

fa=f (a);

fb=f (b);

p=(a+b)/2;

n=1;

fp=f (p);

while abs (fp)>exp

if fa*fp<0

b=p;

else

a=p;

end;

p=(a+b)/2;

n=n+1;

fa=f (a);

fp=f (p);

end;

x0 = p;% корень

plot (x0, f (x0), 'or')

grid on

title (['x0=', num2str (x0)])

Методом хорд:

clear, clc

f = @(x) atan (2*x) — 0.2*((x-1)^4)+sin (x);

a=2;

b=4;

e=0.0001;

while (abs (a-b)>e)

c=a — (f (a)*(b-a))/(f (b) — f (a));

if f (c)*f (b)>0

b=c;

else

a=c;

end;

end

disp (['Ответ x=' num2str (c, 3)]);

x0 = с;% корень

plot (x0, f (x0), 'or')

grid on

title (['x0=', num2str (x0)])

Методом дотичних:

clear, clc;

e = 0.1;

f = @(x) atan (2*x) — 0.2*((x-1)^4)+sin (x);

df = @(x) (2/(4*(x2)+1)) — 0.8*((x-1)^3)+cos (x);

a=0; b=1; N=0;

y1=f (a); y2=f (b);

z1=df (a); z2=df (b);

N=4;

ezplot (f, [a, b]), hold on

while 1

s=((z2*b — z1*a) — (y2-y1))/(z2-z1);

y=f (s); z=df (s);

N = N + 2;

if z==0 | b-a < 2*e

x=s;

break;

elseif z>0

b=s; y2=y; z2=z;

else

a=s; y1=y; z1=z;

end

end

if z≅0

x=(a+b)/2;

y=f (x);

end

fprintf ('Метод касательных n n');

fprintf ('x =%.5f n', x);

fprintf ('y =%.5f n n', y);

fprintf ('Количество итераций:%i n', N);

ezplot (f, [-0.5 1]), hold on

plot (x, y, 'or'), grid on

grid on

Метод ітерацій:

clear, clc

f = inline ('atan (2*x) — 0.2*((x-1)^4)+sin (x)');%ф.inline чтобы задать строку

x = -10:0.01:10;

y = f (x);

plot (x, y); grid

% Метод простых итераций

eps = 1e-4;

x0 = 1;

% значение производной в начальной точке:

L0 = 2e-6./(f (x0+1e-6) — f (x0−1e-6));

iter = 0;

x = x0;

razn = 100;

while abs (razn)>eps

xn = x — L0*f (x);

razn=xn-x;

x=xn;

iter=iter+1;

end

x

iter

hold on

plot (x, f (x), 'or'), grid on

Обчислимо вираз: =L0

похідну обчислюємо приблизно, за допомогою невеликого прирісту:

де h = 10-6, отримаємо:

Комбінований:

clear, clc

syms x

f = x3+6*x-5;

a=0.5;

b=1;

eps=0.1;

i=0;

c=(a+b)/2;

f1=diff (f);

f2=diff (f1);

while (abs (b-a)>eps)

if ((subs (f1, x, c)*subs (f2, x, c))>=0)

a=a — (b-a)*subs (f, x, a)/(subs (f, x, b) — subs (f, x, a));

b=b-subs (f, x, b)/subs (f1, x, b);

else

a=a-subs (f, x, a)/subs (f1, x, a);

b=b — (b-a)*subs (f, x, b)/(subs (f, x, b) — subs (f, x, a));

end

i=i+1;

end

fprintf ('b=% f n', double (b))

ezplot (f, [0.5 1]), hold on

plot (b, subs (f, x, b), 'or')

grid on

нелінійний рівняння хорда ітерація

Висновок: Я навчилась розв’язувати нелінійні рівняння на ПК різними чисельними методами: половинного ділення, хорд, дотичних (Ньютона), ітерацій (послідовних наближень), комбінаційний (хорд та дотичних).

Показать весь текст
Заполнить форму текущей работой