%Метод половинного деления
%19.05.2010
fx=inline('g^3-3^g+10');
e=input ('Введите относительную погрешность:');
a=input ('Введите левый край промежутка:');
b=input ('Введите правый край промежутка:');
x0=a:e:b;
y=x0.^3-3^x0.+10;
plot (x0,y),grid
xlabel('x'),ylabel('y')
fa=fx(a);
n=0;
if fa*fx(b)<0
d=2*e;
while d>e,
n=n+1;
x=0.5*(a+b);
if fa*fx(x)>0
a=x;
else
b=x;
end
d=(b-a)/abs(x);
end
disp(sprintf('Ответ:%g',x))
disp(sprintf('f(x)=%g',fx(x)))
disp(sprintf('Количество итераций:%g',n))
else
disp('На введенном интервале функция одного знака!');
end
% Решить систему Ax=b методом простой итерации
A = [-2 1 1; 1 -2 1; -1 3 -6];
b = [15;10;12];
e = eig(A);
% Вычислим итерационный параметр
tau = 2 / (min(e) + max(e));
r = 1;
% Выполняем метод простой итерации с начальным приближением x0
x0 = [0;0;0];
y = x0;
while r > 100 * eps
x = y - tau * (A * y - b);
r = norm(x-y);
y = x;
end
% Проверим полученное значение
A * x - b
>>
%Метод половинного деления
%19.05.2010
fx=inline('g^3-3^g+10');
e=input ('Введите относительную погрешность:');
a=input ('Введите левый край промежутка:');
b=input ('Введите правый край промежутка:');
x0=a:e:b;
y=x0.^3-3^x0.+10;
plot (x0,y),grid
xlabel('x'),ylabel('y')
fa=fx(a);
n=0;
if fa*fx(b)<0
d=2*e;
while d>e,
n=n+1;
x=0.5*(a+b);
if fa*fx(x)>0
a=x;
else
b=x;
end
d=(b-a)/abs(x);
end
disp(sprintf('Ответ:%g',x))
disp(sprintf('f(x)=%g',fx(x)))
disp(sprintf('Количество итераций:%g',n))
else
disp('На введенном интервале функция одного знака!');
end
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.