Date Редакция Категория sci Теги matlab
% Пример Уилкинсона. Запишем полином 20-й степени с известными
% корнЯми. 
% Внесем небольшое изменение в полином. По идее, корни должны были
% бы также изменитьсЯ незначительно.
% Но это не так...
% Запишем полином 20-й степени с корнЯми: 1,2,3,...,20.

syms x
p = 1;
for i = 1:20
    p = p*(x-i);
end
p % так это выглЯдит

% Найдем корни аналитически (функциЯ solve).
first=solve(p);
p = expand(p);

% Запишем полином в виде вектора коэффициентов при степенЯх
% неизвестных.
s = sym2poly(p);

% Найдем корни полинома численными методами в численном виде
% (функциЯ roots).
second = roots(s);

% Внесем в коэффициент полинома при x^19 небольшую погрешность.
s(2) = s(2) + 2^(-23);

% Найдем корни _возмущенного_ полинома.
third = roots(s);
sprintf('%s %s %sn',['Analitika ','Chislo ','Vozmuschenie']) 
sprintf('%10.4f %10.4fn',double(first),second)


Комментарии

comments powered by Disqus