Разделы, которые следуют, объясняют, как использовать функциональный fixpt_look1_func_approx
, чтобы создать интерполяционные таблицы. Это дает примеры, которые показывают, как создать интерполяционные таблицы для функционального sin (2πx) на интервале от 0 до 0,25.
Чтобы использовать функциональный fixpt_look1_func_approx
, необходимо сначала задать его параметры. Обязательные параметры для функции
funcstr
— Идеальная функция
Вход xmin
— Minimum интереса
Вход xmax
— Maximum интереса
xdt
— x тип данных
xscale
— x масштабирование данных
ydt
— y тип данных
yscale
— y масштабирование данных
rndmeth
— Округление метода
Кроме того, существует три дополнительных параметра:
errmax
— Максимальная позволенная ошибка интерполяционной таблицы
nptsmax
— Максимальное количество точек интерполяционной таблицы
spacing
— Разрядка позволенного между точками останова
Необходимо использовать по крайней мере один из параметров errmax
и nptsmax
. Следующий раздел, Устанавливая Параметры функции для Интерполяционной таблицы, дает типичные настройки для этих параметров.
Если вы используете только параметр errmax
без nptsmax
, функция создает интерполяционную таблицу с наименьшим количеством точек, для которых ошибка худшего случая в большей части errmax
. Смотрите Используя errmax с Неограниченным Интервалом.
Если вы используете только параметр nptsmax
без errmax
, функция создает интерполяционную таблицу с в большинстве точек nptsmax
, который имеет самую маленькую худшую ошибку случая. Смотрите Используя nptsmax с Неограниченным Интервалом.
Раздел Specifying Both errmax и nptsmax описывают, как функция ведет себя, когда вы задаете и errmax
и nptsmax
.
Можно использовать дополнительный параметр spacing
, чтобы ограничить интервал между точками останова интерполяционной таблицы. Опции
'unrestricted'
— Значение по умолчанию.
'even'
— Расстояние между любыми двумя смежными точками останова является тем же самым.
pow2
Расстояние между любыми двумя смежными точками останова является тем же самым, и расстояние является степенью двойки.
Раздел Restricting the Spacing и примеры, которые следуют за ним, объясняют, как использовать параметр интервала.
Чтобы сделать примеры в этом разделе, необходимо сначала установить значения параметров для функции fixpt_look1_func_approx
. Для этого введите следующее в подсказке MATLAB®:
funcstr = 'sin(2*pi*x)'; % Define the sine function xmin = 0; % Set the minimum input of interest xmax = 0.25; % Set the maximum input of interest xdt = ufix(16); % Set the x data type xscale = 2^-16; % Set the x data scaling ydt = sfix(16); % Set the y data type yscale = 2^-14; % Set the y data scaling rndmeth = 'Floor'; % Set the rounding method errmax = 2^-10; % Set the maximum allowed error nptsmax = 21; % Specify the maximum number of points
Если вы выходите из программного обеспечения MATLAB после ввода этих команд, необходимо перепечатать их прежде, чем попробовать любой из других примеров в этом разделе.
Первый пример показывает, как создать интерполяционную таблицу, которая имеет наименьшее количество точек данных для заданной ошибки худшего случая с неограниченным интервалом. Прежде, чем попробовать пример, введите те же значения параметров, данные в раздел Setting Function Parameters для Интерполяционной таблицы, если вы уже не сделали так в этом сеансе работы с MATLAB.
Вы задаете максимальную позволенную ошибку путем ввода
errmax = 2^-10;
Чтобы создать интерполяционную таблицу, ввести
[xdata, ydata, errworst] = fixpt_look1_func_approx(funcstr, ...
xmin,xmax,xdt,xscale,ydt,yscale,rndmeth,errmax,[]);
Обратите внимание на то, что nptsmax
и параметры spacing
не заданы.
Функция возвращает три переменные:
xdata
, вектор точек останова интерполяционной таблицы
ydata
, вектор, найденный путем применения идеала, функционирует sin (2πx) к xdata
errworst
, который задает максимальную возможную ошибку в интерполяционной таблице
Значение errworst
меньше чем или равно значению errmax
.
Можно найти количество X точек данных путем ввода
length(xdata)
ans = 16
Это означает, что 16 точек требуются, чтобы аппроксимировать sin (2πx) к в допуске, заданном errmax
.
Можно отобразить максимальную погрешность путем ввода errworst
. Это возвращается
errworst
errworst = 9.7656e-04
Можно построить вывод функционального fixpt_look1_func_plot
путем ввода
fixpt_look1_func_plot(xdata,ydata,funcstr,xmin,xmax,xdt, ...
xscale,ydt,yscale,rndmeth);
Верхний график показывает идеальный функциональный sin (2πx) и приближение поиска фиксированной точки между точками останова. В этом примере идеальная функция и приближение состоят так близко друг к другу в том, что эти два графика, кажется, совпадают. Более низкий график отображает ошибки.
В этом примере точки данных Y, возвращенные функциональным fixpt_look1_func_approx
как ydata
, равны идеальной функции, применился к точкам в xdata
. Однако можно задать различное множество значений для ydata
после выполнения fixpt_look1_func_plot
. Это может иногда уменьшать максимальную погрешность.
Можно также изменить значения xmin
и xmax
в порядке оценить интерполяционную таблицу на подмножестве исходного интервала.
Найти новую максимальную погрешность после изменения ydata
, xmin
или xmax
, типа
errworst = fixpt_look1_func_plot(xdata,ydata,funcstr,xmin,xmax, ... xdt,xscale,ydt,yscale,rndmeth)
Следующий пример показывает, как создать интерполяционную таблицу, которая минимизирует ошибку худшего случая для заданного максимального количества точек данных с неограниченным интервалом. Прежде, чем запустить пример, введите те же значения параметров, данные в раздел Setting Function Parameters для Интерполяционной таблицы, если вы уже не сделали так в этом сеансе работы с MATLAB.
Вы задаете количество точек останова в интерполяционной таблице путем ввода
nptsmax = 21;
Затем, введите
[xdata, ydata, errworst] = fixpt_look1_func_approx(funcstr, ...
xmin,xmax,xdt,xscale,ydt,yscale,rndmeth,[],nptsmax);
Пустые скобки, []
, говорят функции игнорировать параметр errmax
, который не используется в этом примере. Исключение errmax
заставляет функциональный fixpt_look1_func_approx
возвращать интерполяционную таблицу размера, заданного nptsmax
с самой маленькой ошибкой худшего случая.
Функция возвращает векторный xdata
с 21 точкой. Можно найти максимальную погрешность для этого набора точек путем ввода errworst
в посдказке MATLAB.
errworst
errworst = 5.1139e-04
Чтобы построить интерполяционную таблицу наряду с ошибками, ввести
fixpt_look1_func_plot(xdata,ydata,funcstr,xmin,xmax,xdt, ...
xscale,ydt,yscale,rndmeth);
В предыдущих двух примерах функциональный fixpt_look1_func_approx
создает интерполяционные таблицы с неограниченным интервалом между точками останова. Можно ограничить интервал, чтобы повысить вычислительную эффективность интерполяционной таблицы, с помощью параметра интервала.
Опции для разрядки
'unrestricted'
— Значение по умолчанию.
'even'
— Расстояние между любыми двумя смежными точками останова является тем же самым.
pow2
Расстояние между любыми двумя смежными точками останова является тем же самым и является степенью двойки.
И степень двойки и даже располагающий увеличение с интервалами вычислительная скорость интерполяционной таблицы и использования меньше постоянной памяти (ROM) команды. Однако определение любого из ограничений интервала наряду с errmax
обычно требует большего количества точек данных в интерполяционной таблице, чем делает неограниченный интервал, чтобы достигнуть той же степени точности. Раздел Effects of Spacing on Speed, Ошибка и Использование памяти обсуждают компромиссы между различными опциями интервала.
Следующий пример показывает, как создать интерполяционную таблицу, которая равномерно расположила с интервалами точки останова и заданную ошибку худшего случая. Чтобы попробовать пример, необходимо сначала ввести значения параметров, данные в раздел Setting Function Parameters для Интерполяционной таблицы, если вы уже не сделали так в этом сеансе работы с MATLAB.
Затем, в типе посдказки MATLAB
spacing = 'even'; [xdata, ydata, errworst] = fixpt_look1_func_approx(funcstr, ... xmin,xmax,xdt,xscale,ydt,yscale,rndmeth,errmax,[],spacing);
Можно найти число точек в интерполяционной таблице путем ввода:
length(xdata)
ans = 20
Чтобы построить интерполяционную таблицу наряду с ошибками, ввести
fixpt_look1_func_plot(xdata,ydata,funcstr,xmin,xmax,xdt, ...
xscale,ydt,yscale,rndmeth);
Следующий пример показывает, как создать интерполяционную таблицу, которая равномерно расположила точки останова с интервалами и минимизирует ошибку худшего случая для заданного максимального количества точек. Чтобы попробовать пример, необходимо сначала ввести значения параметров, данные в раздел Setting Function Parameters для Интерполяционной таблицы, если вы уже не сделали так в этом сеансе работы с MATLAB.
Затем, в типе посдказки MATLAB
spacing = 'even'; [xdata, ydata, errworst] = fixpt_look1_func_approx(funcstr, ... xmin,xmax,xdt,xscale,ydt,yscale,rndmeth,[],nptsmax,spacing);
Результат требует, чтобы 21 равномерно расположенная с интервалами точка достигла максимальной абсолютной погрешности 2^-10.2209
.
Чтобы построить интерполяционную таблицу наряду с ошибками, ввести
fixpt_look1_func_plot(xdata,ydata,funcstr,xmin,xmax,xdt, ...
xscale,ydt,yscale,rndmeth);
Следующий пример показывает, как создать интерполяционную таблицу, которая имеет интервал степени двойки и заданную ошибку худшего случая. Чтобы попробовать пример, необходимо сначала ввести значения параметров, данные в раздел Setting Function Parameters для Интерполяционной таблицы, если вы уже не сделали так в этом сеансе работы с MATLAB.
Затем, в типе посдказки MATLAB
spacing = 'pow2'; [xdata, ydata, errworst] = ... fixpt_look1_func_approx(funcstr,xmin, ... xmax,xdt,xscale,ydt,yscale,rndmeth,errmax,[],spacing);
Чтобы узнать, сколько точек находится в интерполяционной таблице, ввести
length(xdata)
ans = 33
Это означает, что 33 точки требуются, чтобы достигать ошибки худшего случая, заданной errmax
. Чтобы проверить, что эти точки равномерно расположены с интервалами, ввести
widths = diff(xdata)
Это генерирует вектор, записи которого являются различиями между последовательными точками в xdata
. Каждая запись widths
2-7.
Чтобы найти максимальную погрешность для интерполяционной таблицы, ввести
errworst
errworst = 3.7209e-04
Это - меньше, чем значение errmax
.
Чтобы отобразить данные об интерполяционной таблице на графике наряду с ошибками, ввести
fixpt_look1_func_plot(xdata,ydata,funcstr,xmin,xmax,xdt, ...
xscale,ydt,yscale,rndmeth);
Следующий пример показывает, как создать интерполяционную таблицу, которая имеет интервал степени двойки и минимизирует ошибку худшего случая для заданного максимального количества точек. Чтобы попробовать пример, необходимо сначала ввести значения параметров, данные в раздел Setting Function Parameters для Интерполяционной таблицы, если вы уже не сделали так в этом сеансе работы с MATLAB:
spacing = 'pow2'; [xdata, ydata, errworst] = ... fixpt_look1_func_approx(funcstr,xmin, ... xmax,xdt,xscale,ydt,yscale,rndmeth,errmax,[],spacing);
Результат требует, чтобы 17 точек достигли максимальной абсолютной погрешности 2^-9.6267.
Чтобы построить интерполяционную таблицу наряду с ошибками, ввести
fixpt_look1_func_plot(xdata,ydata,funcstr,xmin,xmax,xdt, ...
xscale,ydt,yscale,rndmeth);
Если вы включаете и errmax
и параметры nptsmax
, функциональный fixpt_look1_func_approx
пытается найти интерполяционную таблицу с в большинстве точек данных nptsmax
, ошибка худшего случая которых в большей части errmax
. Если это может найти интерполяционную таблицу, удовлетворяющую обоим условиям, это использует следующий заказ приоритета для разрядки:
Степень двойки
Даже
Неограниченный
Если функция не может найти интерполяционную таблицу, удовлетворяющую оба условия, это игнорирует nptsmax
и возвращает интерполяционную таблицу с неограниченным интервалом, ошибка худшего случая которого в большей части errmax
. В этом случае функция ведет себя то же самое, как будто параметр nptsmax
был не использован.
Используя параметры, описанные в разделе Setting Function Parameters для Интерполяционной таблицы, следующие примеры иллюстрируют результаты использования различных значений для nptsmax
, когда вы входите
[xdata ydata errworst] = fixpt_look1_func_approx(funcstr, ... xmin,xmax,xdt,xscale,ydt,yscale,rndmeth,errmax,nptsmax);
Результаты для трех различных настроек для nptsmax
следующие:
nptsmax = 33;
— Функция создает интерполяционную таблицу с 33 точками, имеющими интервал степени двойки, как в Примере 3.
nptsmax = 21;
— Поскольку errmax
и условиям nptsmax
нельзя соответствовать интервалом степени двойки, функция создает интерполяционную таблицу с 20 точками, имеющими даже интервал, как в Примере 5.
nptsmax = 16;
— Поскольку errmax
и условиям nptsmax
нельзя соответствовать или степенью двойки или даже интервалом, функция создает интерполяционную таблицу с 16 точками, имеющими неограниченный интервал, как в Примере 1.
Следующая таблица обобщает результаты для примеров. Обратите внимание на то, что, когда вы задаете errmax
, даже интервал требует большего количества точек данных, чем неограниченный, и интервал степени двойки требует большего количества точек, чем ровный интервал.
Пример | Опции | Разрядка | Ошибка худшего случая | Число точек в таблице |
---|---|---|---|---|
1 |
|
| 2^-10 | 16 |
2 |
|
| 2^-10.933 | 21 |
3 |
|
| 2^-10.0844 | 20 |
4 |
|
| 2^-10.2209 | 21 |
5 |
|
| 2^-11.3921 | 33 |
6 |
|
| 2^-9.627 | 17 |