Текст подпрограммы и версий zp54r_p.zip zp54e_p.zip |
Тексты тестовых примеров tzp54r_p.zip tzp54e_p.zip |
Вычисление присоединенного полинома Лежандра первого рода.
Подпрограмма - функция ZP54R вычисляет значение в точке X присоединенного полинома Лежандра первого рода
PLM(X) = (- 1)M (1 - X2)M/2 dM( PL(X) )/dXM ,
где PL (X) = ( 1/( 2L L!) ) dL( (X2 - 1)L )/dXL
является полиномом Лежандра первого рода L - й степени.
Справочник по специальным функциям. Под ред. Абрамовица М. и Стиган И. Изд - во "Наука", 1979.
function ZP54R(L :Integer; M :Integer; X :Real; var IERR :Integer): Real;
Параметры
L, M - | заданные значения L и M (тип: целый); |
X - | заданное значение агрумента (тип: вещественный); |
IERR - | целая переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы подпрограммы - функции; при этом: |
IERR=65 - | когда значения L и M не удовлетворяют соотношению 0 ≤ M ≤ L; |
IERR=66 - | когда значение X лежит вне отрезка [- 1, 1] |
Версии
ZP54E - | вычисление присоединенного полинома Лежандра первого рода в режиме расширенной (Extended) точности; при этом параметр X должен иметь тип Extended, и функция ZP54E также должна быть типа Extended. |
Вызываемые подпрограммы
UTZP12 - UTZP13 | подпрограммы выдачи диагностических сообщений при работе функций ZP54R и ZP54E соответственно. |
Замечания по использованию: нет
Unit tzp54r_p; interface uses SysUtils, Math, { Delphi } Lstruct, Lfunc, UtRes_p, ZP54R_p; function tzp54r: String; implementation function tzp54r: String; var IERR :Integer; X,R1,R2 :Real; begin Result := ''; { результат функции } X := 0.5; R1 := ZP54R(2,1,X,IERR); R2 := -3*Sqrt(1-X*X)*X; Result := Result + Format(' %20.16f %20.16f ',[R1,R2]) + #$0D#$0A; UtRes('tzp54r',Result); { вывод результатов в файл tzp54r.res } exit; end; end. Результаты: R1 = - 1.29904 IERR = 0