|
Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://num-anal.srcc.msu.ru/lib_na/cat/q_htm_c/qsr2r_c.htm
Дата изменения: Thu Apr 9 08:20:00 2015 Дата индексирования: Sun Apr 10 01:41:59 2016 Кодировка: Windows-1251 |
|
Текст подпрограммы и версий qsr2r_c.zip |
Тексты тестовых примеров tqsr2r_c.zip |
Вычисление определенного интеграла по квадратурной формуле Pомберга с заданной абсолютной погрешностью.
qsr2r_c вычисляет интеграл
b
∫ f (x) dx
a
по квадратурной формуле Pомберга с заданной абсолютной погрешностью.
Бахвалов H.C. "Численные методы", т.1, "Hаука", 1973.
int qsr2r_c (real *rint, real *a, real *b, R_fp f, real *e,
integer *ierr)
Параметры
| rint - | вещественная переменная, содержащая вычисленное значение интеграла; |
| a, b - | заданные нижний и верхний пределы интегрирования (тип: вещественный); |
| f - | имя вещественной подпрограммы - функции, вычисляющей подинтегральную функцию f (x); |
| e - | заданная абсолютная погрешность вычисления интеграла (тип: вещественный); |
| ierr - | целая переменная, указывающая причину окончания вычислений; если интеграл сосчитан, то ierr = 0, в противном случае ierr = 65. |
Версии: нет
Вызываемые подпрограммы
| utqs11_c - | подпрограмма выдачи диагностических сообщений при работе подпрограммы qsr2r_c. |
Замечания по использованию
| Если интеграл не может быть вычислен с точностью e, выдается диагностическое сообщение "заданная точность не может быть достигнута". |
int main(void)
{
/* Local variables */
static int ierr;
static float rint, a, b, e;
extern float f_c();
extern int qsr2r_c(float *, float *, float *, R_fp, float *, int *);
a = 0.f;
b = 1.f;
e = 1e-10f;
qsr2r_c(&rint, &a, &b, (R_fp)f_c, &e, &ierr);
printf("\n %16.7e %5i \n",rint,ierr);
return 0;
} /* main */
float f_c(float *x)
{
/* System generated locals */
float ret_val;
/* Builtin functions */
double exp(double);
if (*x <= 0.f) {
goto l1;
} else {
goto l2;
}
l1:
ret_val = 1.f;
goto l3;
l2:
ret_val = *x / ((float)exp(*x) - 1.f);
l3:
return ret_val;
} /* f_c */
Результаты: rint = 0.77750463411 , ierr = 0