используется многочлен наилучшего приближения 12го, вроде, порядка. Этого оказывается достаточно для точности где-то
. Правда, еще надо уметь найти этот многочлен
Найти наилучший многочлен не просто, а очень просто. Вот код на Матлабе построения многочлена 12-й степени для отрезка $0;\frac{\pi}{2}]):
a=0; b=pi/2;
n=11; k=0:n;
% Стандартные чебышёвские узлы:
z=cos((pi+2*pi*k)/(2*n+2));
% Перемасштабируем на нужный отрезок:
x=(a+b)/2 - z*(b-a)/2;
% Корректируем вручную первый узел:
x(1)=x(1) + (x(2)-x(1))*0.06;
%x(3)=x(3) + (x(3)-x(2))*0.03;
% Находим коэффициенты многочлена:
p=polyfit(x, sin(x)./x, n);
% Отладочный вывод на экран:
t=a+1e-8:(b-a)/1000:b;
r=sin(t)./t - polyval(p, t);
plot(t,r, x,x*0,'o'), grid, pause
% Это пока был sin(x)/x. Умножаем на икс:
p=[p,0]'
% Отладочный вывод на экран:
t=a+1e-8:(b-a)/1000:b;
r=sin(t) - polyval(p, t);
plot(t,r, x,x*0,'o'), grid
Результат:
Максимальная относительная погрешность -- где-то
. Поскольку многочлен всё-таки не совсем наилучший, этот результат можно улучшить где-то процентов на 20..30, но не более того, и для этого уже придётся потрудиться; а стоит ли?... Другое дело, что что этот способ получения многочлена -- неграмотный. Слагаемые очень сильно различаются по масштабу, что приводит к увеличению погрешностей округления и при построении многочлена, и при его использовании. По-хорошему надо было бы строить интерполяционную систему уравнений вручную, беря в качестве базисных многочлены Чебышёва и вычисляя значения полученного многочлена тоже не в явном виде, а в виде разложения по многочленам Чебышёва. Но это уже требует некоторого действительно программирования, хотя и несложного. Впрочем, результат окажется не шибко лучше -- для данного набора параметров. Вот если искать, скажем, многочлен 15-й степени, то Матлаб собственными средствами уже не справится, и придётся действительно программировать самостоятельно.
На всякий случай -- распечатка результата (вдруг я чего напортил при редактировании):
Код:
p =
1.369970812617591e-009
-3.041501739019810e-008
1.231369474597185e-008
2.737603227735816e-006
1.774771739477244e-008
-1.984243441621931e-004
5.051048313043363e-009
8.333331938139212e-003
2.289140935408664e-010
-1.666666666863060e-001
6.781558769758184e-013
9.999999999999953e-001
0