|
Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://num-anal.srcc.msu.ru/lib_na/cat/sf_htm_c/sf14r_c.htm
Дата изменения: Thu Mar 5 09:55:46 2015 Дата индексирования: Sun Apr 10 02:29:46 2016 Кодировка: Windows-1251 |
|
Текст подпрограммы и версий sf14r_c.zip sf14d_c.zip |
Тексты тестовых примеров tsf14r_c.zip tsf14d_c.zip |
Вычисление полных эллиптических интегралов первого рода.
Функция sf14r_c производит вычисление следующих интегралов
π/2
(1) y = ∫ (1 - x sin2 t) -1/2 dt для 0 ≤ x < 1
0
π/2
(2) y = ∫ (1 - x2 sin2 t) -1/2 dt для -1 < x < 1
0
π/2
(3) y = ∫ (1 - (1 - x) sin2 t) -1/2 dt для 0 < x ≤ 1
0
Алгоритм реализованный в функции, изложен в статье
W.J.Cody, Chebyshev Approximations for the Complete Elliptic Integrals K and E, Math. Comp., 19, 1965.
real sf14r_c (real *x, integer *l, integer *ierr)
Параметры
| x - | заданное значение аргумента x (тип: вещественный); |
| l - | задает режим работы функции (тип: целый); при этом: если |
| l = 1 - | вычисляется интеграл (1); |
| l = 2 - | вычисляется интеграл (2); |
| l = 3 - | вычисляется интеграл (3); |
| ierr - | целая переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы функции; при этом: |
| ierr=65 - | когда значение l меньше 1 или больше 3; значение функции полагается равным 3.4e38; |
| ierr=66 - | когда значение аргумента меньше 0. При l = 1; значение функции полагается pавным 3.4e38; |
| ierr=67 - | когда значение аргумента больше или pавно 1. При l = 1 и l = 2; значение функции полагается равным 3.4e38; |
| ierr=68 - | когда значение аргумента больше 1. При l = 3; значение функции полагается pавным 3.4e38; |
| ierr=69 - | когда значение аргумента меньше или pавно 0. При l = 3; значение функции полагается равным 3.4e38. |
Версии
| sf14d_c - | вычисление полных эллиптических интегралов первого рода с повышенной точностью. |
Вызываемые подпрограммы
| utsf10_c - | подпрограмма выдачи диагностических сообщений при работе функции sf14r_c. |
| utsf11_c - | подпрограмма выдачи диагностических сообщений при работе функции sf14d_c. |
Замечания по использованию
|
Область допустимых значений аргумента для функции sf14r_c и sf14d_c указана выше при описании параметра ierr. Для функции sf14d_c аргумент x имеет тип двойной точности и при нарушении области допустимых значений функция sf14d_c полагается равной 1.7e308. |
int main(void)
{
/* Local variables */
extern float sf14r_c(float *, int *, int *);
static int ierr, l;
static float x, y;
l = 1;
x = 0.f;
y = (float)sf14r_c(&x, &l, &ierr);
printf("\n %16.7e %5i \n",x,l);
printf("\n %5i %16.7e \n",ierr,y);
return 0;
} /* main */
Результаты:
y = 1.57079632679, ierr = 0