Текст подпрограммы и версий ( Фортран ) ia80r.zip |
Тексты тестовых примеров ( Фортран ) tia80r.zip |
Текст подпрограммы и версий ( Си ) ia80r_c.zip |
Тексты тестовых примеров ( Си ) tia80r_c.zip |
Текст подпрограммы и версий ( Паскаль ) ia80r_p.zip |
Тексты тестовых примеров ( Паскаль ) tia80r_p.zip |
Рациональная Чебышевская аппроксимация вещественной функции на конечном интервале.
IA80R вычисляет лучшую в смысле Чебышева рациональную аппроксимацию с некоторым весом вещественной непрерывной на отрезке [a, b] функции F (X) :
R*[PHI(X)] = ( P1 + P2* PHI(X) + ... + PN+1* PHI(X)N ) / / ( Q1 + Q2* PHI(X) + ... + QM+1* PHI(X)M ) ,
причем R* [ PHI (X)] обладает тем свойством, что на ней достигается минимум
max | R[PHI(X)] - F(X) | / | G(X) | . [A, B]
Минимизация проводится на классе рациональных функций R [ РНI (Х)], имеющих степенью числителя N, а степенью знаменателя M.
W.J.Cody, W.Fraser, J.F.Hart, Rational Chebyshev Approximation Using Linear Equations, Numerishe Mathematik, 12 (4), 1968.
SUBROUTINE IA80R (F, PHI, G, A, B, EPS, N, M, P, Q, RAB, IERR)
Параметры
F - | имя вещественной подпрограммы - функции вычисления функции F (X); |
PHI - | имя вещественной подпрограммы - функции вычисления функции PHI (X); |
G - | имя вещественной подпрограммы - функции вычисления функции G (X); |
A, B - | заданные нижняя и верхняя границы отрезка, на котоpом производится аппроксимация (тип: вещественный); |
EPS - | заданная точность вычисления аппроксимации (тип: вещественный); |
N, M - | заданные степень числителя и знаменателя (тип: целый); |
P - | вещественный вектоp длины N + 1, в который помещаются коэффициенты числителя; |
Q - | вещественный вектоp длины M + 1, в который помещаются коэффициенты знаменателя; |
RAB - | вещественный вектоp длины (N + M + 8) * (N + M + 2) , используемый в подпрограмме как рабочий; в RAB (1) помещается вычисленное значение наилучшего приближения; |
IERR - | целая переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы подпрограммы; при этом: |
IERR=65 - | когда заданная точность не может быть достигнута; |
IERR=66 - | когда алгоритм не сходится; возможно, что знаменатель имеет корень на заданном отрезке; |
IERR=67 - | когда сходимость не может быть достигнута в пределах 20 итераций; |
IERR=68 - | когда алгоритм не сходится из - за сингулярности матрицы системы уравнений для определения P и Q; |
IERR=69 - | когда получена хорошая аппроксимация, но не обязательно наилучшая в смысле Чебышева. |
Версии: нет
Вызываемые подпрограммы
UTIA10 - | подпрограмма выдачи диагностических сообщений при работе подпрограммы IA80R. |
Замечания по использованию
Если IERR = 65, то числитель и знаменатель имеют общие множители. B этом случае значения N и M следует уменьшить на 1. Bо всех других случаях, когда IERR ≠ 0, следует попытаться или уменьшить степени числителя и знаменателя, или изменить пределы отрезка, или уменьшить точность вычислений. |
Пусть требуется аппроксимировать функцию √ x на [0.5, 2.] следующим образом:
x / 4. + ( P1 + P2* x ) / ( Q1 + Q2* x ) . DIMENSION P(2), Q(2), RAB(40) EXTERNAL F, PHI, G A = 0.5 B = 2. EPS = 0.01 N = 1 M = 1 CALL IA80R (F, PHI, G, A, B, EPS, N, M, P, Q, RAB, IERR) . . . END FUNCTION F (X) F = SQRT(X) - X / 4.0 RETURN END FUNCTION PHI (X) PHI = X RETURN END FUNCTION G (X) G = SQRT(X) RETURN END Результаты: RAB (1) = -0.000319 ; IERR = 0 ; P (1) = 0.232604 , P (2) = 1.32410 ; Q (1) = 1. , Q (2) = 1.074789