|
Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://num-anal.srcc.msu.su/lib_na/cat/q_htm_c/qsk2r_c.htm
Дата изменения: Tue Apr 28 08:25:51 2015 Дата индексирования: Sun Apr 10 00:53:28 2016 Кодировка: Windows-1251 |
|
Текст подпрограммы и версий qsk2r_c.zip qsk2d_c.zip |
Тексты тестовых примеров tqsk2r_c.zip tqsk2d_c.zip |
Вычисление определенного интеграла по обобщенной квадратурной формуле Ньютона - Котеса, точной для многочленов девятой степени.
Подпрограмма qsk2r_c вычисляет интеграл
B
∫ f (x) dx
A
по обобщенной формуле Ньютона - Котеса с автоматическим выбором шага.
G.E.Forsythe, M.A.Malkolm, C.B.Moler. Computer Methods for Mathematical Computations. 1977 by Prentice - hall, INC.
int qsk2r_c (R_fp fun, real *a, real *b, real *abserr,
real *relerr, real *result, real *errest, integer *nofun,
real *flag)
Параметры
| fun - | имя вещественной подпрограммы - функции, вычисляющей подинтегральную функцию f (x); |
| a, b - | заданные нижний и верхний пределы интегрирования (тип: вещественный); |
| abserr - | заданная абсолютная погрешность вычисления интеграла (тип: вещественный); |
| relerr - | заданная относительная погрешность вычисления интеграла (тип: вещественный); |
| result - | вещественная переменная, содержащая вычисленное значение интеграла; |
| errest - | вещественная переменная, содержащая оценку погрешности вычисленного значения интеграла; |
| nofun - | целая переменная, содержащая число вычисленных значений подинтегральной функции, потребовавшихся для получения результата; |
| flag - |
вещественная переменная, служащая для
хаpактеристики надежности вычисленного результата;
при этом: если flag = 0., то полученный результат с большой вероятностью удовлетворяет заданной погрешности; если flag = xxx.yyy, то xxx - число интервалов, на которых не удалось достигнуть заданной точности, а 0.yyy = (b - x0)/(b - a), где x0 - граница отрезка [a, x0], на котоpом был израсходован лимит обращений к подпрограмме - функции. |
Версии
| qsk2d_c - | вычисление определенного интеграла по обобщенной формуле Ньютона - Котеса, точной для многочленов девятой степени от функции, заданной с удвоенной точностью. |
Вызываемые подпрограммы: нет
Замечания по использованию
| B подпрограмме qsk2d_c параметры fun, a, b, abserr, relerr, result, errest, flag имеют тип double. |
int main(void)
{
/* Local variables */
static float flag__, a, b;
extern int qsk2r_c(R_fp, float *, float *, float *, float *,
float *, float *, int *, float *);
static int nofun;
static float abserr, relerr, errest, result;
extern float fun_c();
a = 0.f;
b = 2.f;
relerr = 1e-10f;
abserr = 0.f;
qsk2r_c((R_fp)fun_c, &a, &b, &abserr, &relerr, &result, &errest, &nofun,
&flag__);
printf("\n result = %16.7e errest = %16.7e \n",result,errest);
if (flag__ != 0.f) {
printf("\n flag = %16.7e \n",flag__);
}
printf("\n %10i \n",nofun);
return 0;
} /* main */
float fun_c(float *x)
{
/* System generated locals */
float ret_val;
/* Builtin functions */
double sin(double);
if (*x == 0.f) {
ret_val = 1.f;
}
if (*x != 0.f) {
ret_val = (float)sin(*x) / *x;
}
return ret_val;
} /* fun_c */
Результаты:
result = 1.6054
errest = 0.
nofun = 33
flag__ = 0.