Текст подпрограммы и версий zp32r_p.zip zp32e_p.zip |
Тексты тестовых примеров tzp32r_p.zip tzp32e_p.zip |
Вычисление коэффициентов полинома, проходящего через заданные точки плоскости.
ZP32R вычисляет коэффициенты полинома степени NР
A(1) + A(2)*X + A(3)*X2 + ... + A(NP + 1)*XNP ,
проходящего через заданные точки плоскости (Х ( I ), Y ( I )), I = 1, 2, 3, ..., NР + 1.
Другими словами, коэффициенты полинома вычисляются по заданным соотношениям:
NP+1 Y( I ) = ∑ A( J )*X( I )(J - 1) , I = 1, 2, 3, ..., NP+1 J=1
procedure ZP32R(NP :Integer; var X :Array of Real; var Y :Array of Real; var A :Array of Real; var RAB1 :Array of Real; var RAB2 :Array of Real);
Параметры
NP - | заданная степень полинома (тип: целый); |
X, Y - | вещественные векторы длины NР + 1, содержащие координаты заданных точек плоскости; |
A - | вещественный вектор длины NР + 1, содержащий вычисленные коэффициенты полинома в порядке возрастания степеней; |
RAB1 - RAB2 | вещественные векторы длины NР + 1, используемые в подпрограмме как рабочие. |
Версии
ZP32E - | вычисление коэффициентов полинома, проходящего через заданные точки плоскости, с расширенной (Extended) точностью. Параметры Х, Y, А, RАВ1, RАВ2 имеют тип Extended. |
Вызываемые подпрограммы
ZP30R - | вычисление значения полинома с вещественными коэффициентами от заданного вещественного аргумента. Используется в подпрограмме ZР32R. |
ZP31R - | вычисление коэффициентов полинома по заданным его вещественным корням. Используется в подпрограмме ZР32R. |
ZP30E - | вычисление значения полинома с вещественными коэффициентами от заданного вещественного аргумента с расширенной (Extended) точностью. Используется в подпрограмме ZР32E. |
ZP31E - | вычисление коэффициентов полинома по заданным его вещественным корням с расширенной (Extended) точностью. Используется в подпрограмме ZР32E. |
Замечания по использованию: нет
Unit tzp32r_p; interface uses SysUtils, Math, { Delphi } Lstruct, Lfunc, UtRes_p, ZP32R_p; function tzp32r: String; implementation function tzp32r: String; var NP,_i :Integer; A :Array [0..4] of Real; RAB1 :Array [0..4] of Real; RAB2 :Array [0..4] of Real; const X :Array [0..4] of Real = ( 0.0,1.0,2.0,3.0,4.0 ); Y :Array [0..4] of Real = ( 24.0,0.0,0.0,0.0,0.0 ); begin Result := ''; { результат функции } NP := 4; ZP32R(NP,X,Y,A,RAB1,RAB2); Result := Result + Format('%10d ',[NP]) + #$0D#$0A; Result := Result + #$0D#$0A; for _i:=0 to 4 do begin Result := Result + Format('%20.16f ',[X[_i]]); if ( ((_i+1) mod 4)=0 ) then Result := Result + #$0D#$0A; end; Result := Result + #$0D#$0A; Result := Result + #$0D#$0A; for _i:=0 to 4 do begin Result := Result + Format('%20.16f ',[Y[_i]]); if ( ((_i+1) mod 4)=0 ) then Result := Result + #$0D#$0A; end; Result := Result + #$0D#$0A; Result := Result + #$0D#$0A; for _i:=0 to 4 do begin Result := Result + Format('%20.16f ',[A[_i]]); if ( ((_i+1) mod 4)=0 ) then Result := Result + #$0D#$0A; end; Result := Result + #$0D#$0A; Result := Result + #$0D#$0A; for _i:=0 to 4 do begin Result := Result + Format('%20.16f ',[RAB1[_i]]); if ( ((_i+1) mod 4)=0 ) then Result := Result + #$0D#$0A; end; Result := Result + #$0D#$0A; Result := Result + #$0D#$0A; for _i:=0 to 4 do begin Result := Result + Format('%20.16f ',[RAB2[_i]]); if ( ((_i+1) mod 4)=0 ) then Result := Result + #$0D#$0A; end; Result := Result + #$0D#$0A; UtRes('tzp32r',Result); { вывод результатов в файл tzp32r.res } exit; end; end. Результаты: А(1) = 24.0 , А(2) = - 50.0 , А(3) = 35.0 , A(4) = - 10.0 , A(5) = 1.0