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

Введение

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

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

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

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

  • xmin — Минимальный вход интереса

  • xmax — Максимальный вход интереса

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

Найти новую максимальную погрешность после изменения ydataxmin или 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