Текст подпрограммы и версий ia83r.zip , ia83d.zip |
Тексты тестовых примеров tia83r.zip , tia83d.zip |
Текст подпрограммы и версий ( Си ) ia83r_c.zip , ia83d_c.zip |
Тексты тестовых примеров ( Си ) tia83r_c.zip , tia83d_c.zip |
Текст подпрограммы и версий ( Паскаль ) ia83r_p.zip , ia83e_p.zip |
Тексты тестовых примеров ( Паскаль ) tia83r_p.zip , tia83e_p.zip |
Построение алгебраического полинома наилучшего равномерного приближения для таблично заданной функции.
Пусть в узлах сетки x1 < x2 < ...< xM заданы значения табличной функции y : y1, y2 ..., yM. Требуется построить алгебраический полином
N P*(x) = ∑ ak xk k =0
заданной степени N ≤ M - 2, который минимизирует максимальное отклонение
h ( y,P ) = max | yk - P(x) | 1≤k≤M
среди всех полиномов P (x) степени N.
Среди узлов x1, x2, ..., xM существуют точки альтернанса x1* < x2* < ... < x*N + 2, в которых
yk - P* (xk*) = (- 1)k h* , где h* = max | yk - P*(xk ) | , 1≤k≤M
h* - максимальное отклонение полинома наилучшего приближения P* (x).
Задача решается на основе итерационного R - алгоритма В.Н.Малоземова, требующего задания начального набора N + 2 точек x1 < x2 < ...< xN + 2, каждая из которых должна совпадать с одним из узлов исходной сетки. Подпрограмма находит точки альтернанса x1* < x2* < ...< x*N + 2, не обязательно совпадающие с начальным набором точек.
Сб. "Вопросы теории и элементы программного обеспечения минимаксных задач", под ред. Демьянова В.Ф., Малоземова В.Н., Л., Изд - во Ленингр. ун - та, 135 - 138, 1977.
SUBROUTINE IA83R (M, N, X, Y, IN, ITER, A, AX, JN, RAB, IERR)
Параметры
M - | заданное число узлов сетки (тип: целый); |
N - | заданная степень полинома, N ≤ M - 2 (тип: целый); |
X - | вещественный вектор длины M, в котором задаются значения узлов сетки; |
Y - | вещественный вектор длины M, в котором задаются значения табличной функции; |
IN - | целый вектор длины N + 2 номеров начального набора точек; может изменяться самой программой в процессе вычисления; |
ITER - | число выполненных при решении задачи итераций (тип: целый); |
A - | вещественный вектор длины N + 1 вычисленных значений коэффициентов полинома наилучшего приближения, A ( I ) = aI, I = 1, 2, ...,N + 1; |
AX - | вещественный вектор длины N + 2 вычисленных значений точек альтернанса; |
JN - | целый вектор длины N + 2 номеров вычисленных значений точек альтернанса; |
RAB - | вещественный двумерный массив размера 2 * (N + 2), используемый как рабочий; после окончания работы подпрограммы RAB (1, 1) = h*; |
IERR - | целая переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы подпрограммы; при этом |
IERR=65 - | когда M < N + 2; |
IERR=66 - | когда номера начального набора точек не упорядочены строго по возрастанию; или упорядоченность нарушается в процессе работы программы; |
IERR=67 - | когда значения узлов сетки xi, i = 1, 2, ..., M не упорядочены строго по возрастанию. |
IERR=68 - | сходимость не может быть достигнута в пределах 30 итераций. |
Версии
IA83D - | построение алгебраического полинома наилучшего равномерного приближения для таблично заданной функции в режиме вычислений с удвоенной точностью. |
Вызываемые подпрограммы
UTIA10 - | подпрограмма выдачи диагностических сообщений при работе IA83R. |
UTIA11 - | подпрограмма выдачи диагностических сообщений при работе IA83D. |
Замечания по использованию: нет
DIMENSION X(51), Y(51), IN(9), A(8), AX(9), JN(9), RAB(2,9) DATA IN /1, 6, 11, 16, 21, 26, 31, 36, 51/ M = 51 N = 7 H = 2./(M - 1) DO 5 K = 1, M X(K) = - 1. + (K - 1)*H Y(K) = ABS(X(K)) 5 CONTINUE CALL IA83R (M, N, X, Y, IN, ITER, A, AX, JN, RAB, IERR) Результаты: IERR = 0; ITER = 6; RAB(1,1) = 0.04587; A = (0.04587, 0., 2.8698, 0., - 4.18189, 0., 2.31212, 0.); AX = (- 1., -.880, -.56, -.2, 0., .2, .56, .88, 1.); JN = (1, 4, 12, 21, 26, 31, 40, 48, 51)