Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Программа метода дихотомии.






function [x1, err, k, y]=dixot(fun, x0, x1, epsilon, max1);

%Метод дихотомии. Точность задана по абсолютной %разности корней.

%Шаг делится пополам сразу, но при этом известно, что %функция на концах интервала разного знака.

%Вызов из основной программы

%[x1, err, k, y]= dixot1('fun', 0, 3, 0.0001, 100)

for k=1: max1

deltax=(x1-x0)/2;

x2=x1;

x1=x0+deltax;

y=feval(fun, x1);

if y< 0, x0=x1; x1=x2;

end;

err=abs(x1-x0);

if err< epsilon, break, end;

end;

Программа fun. m файла для метода дихотомии

function y=fun(x)

y=-5-2*x+x^3;

Программа метода простых итераций .

function [k, p, err, P]=priter(funit, p0, epsilon, max1)

%Метод итераций. Точность задана по абсолютной %разности корней

%Вызов из основной программы %[k, p, err, P]=priter('funit', 1.6, 0.00001, 20)

P(1)=p0;

for k=2: max1

P(k)=feval(funit, P(k-1));

err=abs(P(k)-P(k-1));

relerr=err/(abs(P(k))+eps);

p=P(k);

if(err< epsilon)|(relerr< epsilon), break; end

end

if k==max1

disp('число итераций исчерпано')

end

P=p';

Программа funit. m файла для метода итераций.

function p=funit(p)

p=1+p - p.^2/4;

 

Программа метода Бэрстоу.

function [p, q]=berst

A=[1 4 6 4 1]; n=5;

b=zeros(1, n+2);

c=zeros(1, n+2);

p=-1.5; q=-0.9; dp=1;; dq=1;

while ((abs(dp)> 10^-15) & (abs(dq)> 10^-15))

for k=3: n+2

b(k)=A(k-2)+p*b(k-1)+q*b(k-2);

c(k)=b(k)+p*c(k-1)+q*c(k-2);

end

dp1=b(n+2)*c(n-1)-b(n+1)*c(n);

dp2=c(n)*c(n)-c(n+1)*c(n-1);

dq1=b(n+1)*c(n+1)-b(n+2)*c(n);

dp=dp1/dp2;

dq=dq1/dp2;

p=p+dp; q=q+dq;

end

Программа метода хорд.

function [c, err, yc, k]=hord(funh, a, b, delta, epsilon, max1)

%Вход: funh-функция,

% a, b-начальный интервал,

% delta-допустимое отклонение для корня,

% epsilon-допустимое отклонение для y,

% max1- максимальное число итераций.

%Выход: с-приближение к корню,

% err- ошибка вычисления точки c,

% yс- значение функции в точке c,

% k- число итераций.

%Обращение из программы %[c, err, yc, k]=hord('funh', 0, 2, 0.0001, 0.0001, 10)

ya=feval(funh, a);

yb=feval(funh, b);

if ya*yb> 0 disp('знаки совпадают'), break, end

for k=1: max1

dx=yb*(b-a)/(yb-ya);

c=b-dx;

ac=c-a;

yc=feval(funh, c);

if yc==0, break;

elseif yb*yc> 0 b=c; yb=yc;

else a=c; ya=yc; end

dx=min(abs(dx), ac);

if abs(dx)< delta, break, end

if abs(yc)< epsilon, break, end

end

c;

err=abs(b-a)/2;

yc=feval(funh, c);

Программа funh.m файла для метода хорд.

function y=funh(x)

y=x*sin(x)-1;

Программа метода секущих.

function [p1, err, k, y]=sekusch(funs, p0, p1, delta, epsilon, max1)

%Вход funs-функция

% p0, p1-начальные приближения

% delta-допустимое отклонение p1

% epsilon-допустимое отклонение y

% max1- максимальное число итераций

%Выход p1-приближение к корню

% err- ошибка вычисления

% k- число итераций

% y- значение функции

%Обращение из программы [p1, err, k, y]=sekusch('funs', -2.6, -%2.4, 0.0001, 0.0001, 10)

for k=1: max1

p2=p1-feval(funs, p1)*(p1-p0)/(feval(funs, p1)-feval(funs, p0));

err=abs(p2-p1);

relerr=2*err/(abs(p2)+delta);

p0=p1;

p1=p2;

y=feval(funs, p1);

if (err< delta)|(relerr< delta)|(abs(y)< epsilon), break, end

end

Программа funs.m файла для метода секущих.

function y=funs(x)

y=2-3*x+x.^3;

 

 

Глава 2






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.