Текст подпрограммы и версий zp60r_p.zip zp60e_p.zip |
Тексты тестовых примеров tzp60r_p.zip tzp60e_p.zip |
Вычисление значений полиномов Чебышева от последовательности значений аргументов.
Пусть задана последовательность значений X = (x1, x2,..., xM). Подпрограмма ZP60R вычисляет значения полиномов Чебышева Tk ( xi ), k = 0, 1,..., N, которые размещаются в двумерном массиве T размеров N + 1 на M следующим образом:
| T0( x1 ), T0( x2 ), ... , T0( xM ) | | T1( x1 ), T1( x2 ), ... , T1( xM ) | T = . . . . . . . . . . . . . . (1) | TN( x1 ), TN( x2 ), ... , TN( xM ) |
Вычисления выполняются по рекуррентному соотношению
Tk( xi ) = 2 xi Tk-1( xi ) - Tk-2( xi ), k = 2, 3,..., N
Бахвалов Н.С. Численные методы. М.: Наука, 1977.
procedure ZP60R(var X :Array of Real; M :Integer; N :Integer; var N1 :Integer; var T :Array of Real);
Параметры
X - | вещественный одномерный массив, длины M, содержащий заданные значения аргументов; |
M - | длина массива X (тип: целый); |
N - | заданное максимальное значение степеней полиномов Чебышева, значения которых необходимо вычислить на заданной сетке X (тип: целый); |
N1 - | заданное значение, равное N+1 (тип: целый); |
T - | вещественный двумерный массив размеров N1 на M, в котором размещаются вычисленные значения полиномов Чебышева в виде (1). |
Версии
ZP60E - | вычисление значений полиномов Чебышева от последовательности значений аргументов в режиме расширенной (Extended) точности; при этом параметры X и T должны иметь тип Extended. |
Вызываемые подпрограммы: нет
Замечания по использованию: нет
Unit tzp60r_p; interface uses SysUtils, Math, { Delphi } Lstruct, Lfunc, UtRes_p, ZP60R_p; function tzp60r: String; implementation function tzp60r: String; var M,N,N1,J,I :Integer; T :Array [0..29] of Real; const X :Array [0..5] of Real = ( 0.0,1.0,2.0,3.0,4.0,5.0 ); begin Result := ''; { результат функции } M := 6; N := 4; N1 := 5; ZP60R(X,M,N,N1,T); Result := Result + #$0D#$0A; for I:=1 to 5 do begin for J:=1 to 6 do begin Result := Result + Format('%20.16f ',[T[(I-1)+(J-1)*5]]) + #$0D#$0A; end; end; Result := Result + #$0D#$0A; UtRes('tzp60r',Result); { вывод результатов в файл tzp60r.res } exit; end; end. Результаты: | 1 1 1 1 1 1 | | 0 1 2 3 4 5 | T = | -1 1 7 17 31 49 | | 0 1 26 99 244 485 | | 1 1 97 577 1921 4801 |