Создайте интерполяционные таблицы для синусоидальной функции

Введение

Разделы, которые следуют, объясняют, как использовать функциональный fixpt_look1_func_approx, чтобы создать интерполяционные таблицы. Это дает примеры, которые показывают, как создать интерполяционные таблицы для функционального sin (2πx) на интервале от 0 до 0,25.

Параметры для fixpt_look1_func_approx

Чтобы использовать функциональный fixpt_look1_func_approx, необходимо сначала задать его параметры. Обязательные параметры для функции

  • funcstr — Идеальная функция

  • Вход xmin — Minimum интереса

  • Вход xmax — Maximum интереса

  • xdt — x тип данных

  • xscale — x масштабирование данных

  • ydt — y тип данных

  • yscale — y масштабирование данных

  • rndmeth — Округление метода

Кроме того, существует три дополнительных параметра:

  • errmax — Максимальная позволенная ошибка интерполяционной таблицы

  • nptsmax — Максимальное количество точек интерполяционной таблицы

  • spacing — Разрядка позволенного между точками останова

Необходимо использовать по крайней мере один из параметров errmax и nptsmax. Следующий раздел, Устанавливая Параметры функции для Интерполяционной таблицы, дает типичные настройки для этих параметров.

Используя Только errmax

Если вы используете только параметр errmax без nptsmax, функция создает интерполяционную таблицу с наименьшим количеством точек, для которых ошибка худшего случая в большей части errmax. Смотрите Используя errmax с Неограниченным Интервалом.

Используя Только nptsmax

Если вы используете только параметр 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 после ввода этих команд, необходимо перепечатать их прежде, чем попробовать любой из других примеров в этом разделе.

Используя errmax с Неограниченным Интервалом

Первый пример показывает, как создать интерполяционную таблицу, которая имеет наименьшее количество точек данных для заданной ошибки худшего случая с неограниченным интервалом. Прежде, чем попробовать пример, введите те же значения параметров, данные в раздел 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)

Используя nptsmax с Неограниченным Интервалом

Следующий пример показывает, как создать интерполяционную таблицу, которая минимизирует ошибку худшего случая для заданного максимального количества точек данных с неограниченным интервалом. Прежде, чем запустить пример, введите те же значения параметров, данные в раздел 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, Ошибка и Использование памяти обсуждают компромиссы между различными опциями интервала.

Используя errmax с ровным Интервалом

Следующий пример показывает, как создать интерполяционную таблицу, которая равномерно расположила с интервалами точки останова и заданную ошибку худшего случая. Чтобы попробовать пример, необходимо сначала ввести значения параметров, данные в раздел 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);

Используя nptsmax с ровным Интервалом

Следующий пример показывает, как создать интерполяционную таблицу, которая равномерно расположила точки останова с интервалами и минимизирует ошибку худшего случая для заданного максимального количества точек. Чтобы попробовать пример, необходимо сначала ввести значения параметров, данные в раздел 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);

Используя errmax с Интервалом Степени двойки

Следующий пример показывает, как создать интерполяционную таблицу, которая имеет интервал степени двойки и заданную ошибку худшего случая. Чтобы попробовать пример, необходимо сначала ввести значения параметров, данные в раздел 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);

Используя nptsmax с Интервалом Степени двойки

Следующий пример показывает, как создать интерполяционную таблицу, которая имеет интервал степени двойки и минимизирует ошибку худшего случая для заданного максимального количества точек. Чтобы попробовать пример, необходимо сначала ввести значения параметров, данные в раздел 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

Если вы включаете и errmax и параметры nptsmax, функциональный fixpt_look1_func_approx пытается найти интерполяционную таблицу с в большинстве точек данных nptsmax, ошибка худшего случая которых в большей части errmax. Если это может найти интерполяционную таблицу, удовлетворяющую обоим условиям, это использует следующий заказ приоритета для разрядки:

  1. Степень двойки

  2. Даже

  3. Неограниченный

Если функция не может найти интерполяционную таблицу, удовлетворяющую оба условия, это игнорирует 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

errmax=2^-10

'unrestricted'

2^-10

16

2

nptsmax=21

'unrestricted'

2^-10.933

21

3

errmax=2^-10

'even'

2^-10.0844

20

4

nptsmax=21

'even'

2^-10.2209

21

5

errmax=2^-10

'pow2'

2^-11.3921

33

6

nptsmax=21

'pow2'

2^-9.627

17