|
Текст подпрограммы и версий 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