|
Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://num-anal.srcc.msu.su/lib_na/cat/zp_htm_p/zp17r_p.htm
Дата изменения: Tue Nov 24 12:46:33 2015 Дата индексирования: Sun Apr 10 02:13:34 2016 Кодировка: Windows-1251 |
|
Текст подпрограммы и версий zp17r_p.zip zp17e_p.zip |
Тексты тестовых примеров tzp17r_p.zip tzp17e_p.zip |
Вычисление корней уравнения четвертой степени с вещественными коэффициентами.
Подпрограмма ZP17R вычисляет корни уравнения четвертой степени
A(1)*X4 + A(2)*X3 + A(3)*X2 + A(4)*X + A(5) = 0.0 ,
в котором коэффициенты А ( I ), I = 1, 2, 3, 4, 5 являются вещественными.
procedure ZP17R(var A :Array of Real; var NREAL :Integer;
var ROOT :Array of Real; var IERR :Integer);
Параметры
| A - | вещественный вектор длины 5, содержащий коэффициенты исходного уравнения; |
| NREAL - | целая переменная, значение которой в результате работы подпрограммы полагается равным числу вещественных корней уравнения; |
| ROOT - | вещественный вектор длины 4, содержащий вычисленные корни; |
| IERR - | целая переменная, значение которой в результате работы подпрограммы полагается равным 65, если коэффициент А (1) при старшей степени равен 0. |
Версии
| ZP17E - | вычисление корней уравнения четвертой степени с вещественными коэффициентами с расширенной (Extended) точностью. При этом векторы А и RООТ должны иметь тип Extended. |
Вызываемые подпрограммы
| ZP16R - | вычисление корней уравнения третьей степени с вещественными коэффициентами. Используется в подпрограмме ZР17R. |
| UTZP10 - | подпрограмма выдачи диагностических сообщений при работе подпрограммы ZР17R. |
| ZP16E - | вычисление корней уравнения третьей степени с вещественными коэффициентами с расширенной (Extended) точностью. Используется в подпрограмме ZР17E. |
| UTZP11 - | подпрограмма выдачи диагностических сообщений при работе подпрограммы ZР17E. |
Замечания по использованию
|
Если NReal = 0, то вычисленные корни имеют вид RООТ (1) ± RООТ (2) i и RООТ (3) ± RООТ (4) i, при этом RООТ (2) > 0. и RООТ (4) > 0. Если NReal = 2, то RООТ (1) ≤ RООТ (2), а вторая пара корней имеет вид RООТ (3) ± RООТ (4) i, при этом RООТ (4) > 0. Если NReal = 4, то RООТ (1) ≤ RООТ (2) ≤ RООТ (3) ≤ RООТ (4). |
Unit TZP17R_p;
interface
uses
SysUtils, Math, { Delphi }
Lstruct, Lfunc, UtRes_p, ZP17R_p;
function TZP17R: String;
implementation
function TZP17R: String;
var
_i,NREAL,IERR :Integer;
RООТ :Array [0..3] of Real;
const
A :Array [0..4] of Real = ( 1.0,-10.0,35.0,-50.0,24.0 );
begin
Result := ''; { результат функции }
Result := Result + Format('%s',[' TEST FOR SUBROUTINE ZP17R ']);
ZP17R(A,NREAL,ROOT,IERR);
Result := Result + Format('%s',[#$0D#$0A + ' COEFF: ']);
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 + Format('%s',[#$0D#$0A + ' REALS: ']);
Result := Result + Format('%5d ',[NREAL]);
Result := Result + Format('%s',[#$0D#$0A + ' ROOTS: ']);
Result := Result + #$0D#$0A;
for _i:=0 to 3 do
begin
Result := Result + Format('%20.16f ',[ROOT[_i]]);
if ( ((_i+1) mod 4)=0 )
then Result := Result + #$0D#$0A;
end;
Result := Result + #$0D#$0A;
Result := Result + Format('%s',[#$0D#$0A + ' IERR: ']);
Result := Result + Format('%5d ',[IERR]);
UtRes('TZP17R',Result); { вывод результатов в файл TZP17R.res }
exit;
end;
end.
Результаты:
RООТ(1) = 1. , RООТ(2) = 2. , RООТ(3) = 3. , ROOT(4) = 4. ,
NREAL = 4 , IERR = 0