Вычисление определенного интеграла по квадратурной формуле Гаусса с двумя узлами.
Подпрограмма qsg0r_c вычисляет интеграл
B
∫ f (x) dx
A
по квадратурной формуле Гаусса с двумя узлами.
Л.Г. Васильева. Набор стандартных программ численного интегрирования с фиксированным распределением узлов. Сб. "Численный анализ на ФОРТРАНе", вып. 8, Изд-во МГУ, 1974.
int qsg0r_c (real *rint, real *a, real *b, R_fp f)
Параметры
| rint - | вещественная переменная, содержащая вычисленное значение интеграла; |
| a, b - | заданные нижний и верхний пределы интегрирования (тип: вещественный); |
| f - | имя вещественной подпрограммы - функции вычисления подинтегральной функции f (x). |
Версии
| qsg1r_c - | формула Гаусса по четырем узлам. |
| qsg2r_c - | формула Гаусса по шести узлам. |
| qsg3r_c - | формула Гаусса по восьми узлам. |
| qsg4r_c - | формула Гаусса по десяти узлам. |
| qsg5r_c - | формула Гаусса по двенадцати узлам. |
| qsg6r_c - | формула Гаусса по шестнадцати узлам. |
| qsg7r_c - | фомула Гаусса по двадцати четырем узлам. |
| qsg8r_c - | формула Гаусса по тридцати двум узлам. |
| qsg9r_c - | формула Гаусса по соpока восьми узлам. |
| qsgar_c - | формула Гаусса по шестидесяти четырем узлам. |
| qsgbr_c - | формула Гаусса по девяносто шести узлам. |
| qsg0d_c - | вычисление с удвоенной точностью определенного интеграла по квадратурной формуле Гаусса с двумя узлами. |
| qsg1d_c - | формула Гаусса с удвоенной точностью по четырем узлам. |
| qsg2d_c - | формула Гаусса с удвоенной точностью по шести узлам. |
| qsg3d_c - | формула Гаусса с удвоенной точностью по восьми узлам. |
| qsg4d_c - | формула Гаусса с удвоенной точностью по десяти узлам. |
| qsg5d_c - | формула Гаусса с удвоенной точностью по двенадцати узлам. |
| qsg6d_c - | формула Гаусса с удвоенной точностью по шестнадцати узлам. |
| qsg7d_c - | фомула Гаусса с удвоенной точностью по двадцати четырем узлам. |
| qsg8d_c - | формула Гаусса с удвоенной точностью по тридцати двум узлам. |
| qsg9d_c - | формула Гаусса с удвоенной точностью по соpока восьми узлам. |
| qsgad_c - | формула Гаусса с удвоенной точностью по шестидесяти четырем узлам. |
| qsgbd_c - | формула Гаусса с удвоенной точностью по девяносто шести узлам. |
Вызываемые подпрограммы: нет
Замечания по использованию
|
Интегралы считаются по квадратурной формуле Гаусса с узлами и весами Гаусса для отрезка [- 1, 1], к котоpому приводится заданный отрезок интегрирования. В подпрограмме qsg0d_c ( версиях: qsg1d_c, qsg2d_c, qsg3d_c, qsg4d_c, qsg5d_c, qsg6d_c, qsg7d_c, qsg8d_c, qsg9d_c, qsgad_c, qsgbd_c ) параметры rint, a, b, f имеют тип double. |
int main(void)
{
/* Local variables */
extern int qsg0r_c(float *, float *, float *, R_fp),
qsg1r_c(float *, float *, float *, R_fp),
qsg2r_c(float *, float *, float *, R_fp),
qsg3r_c(float *, float *, float *, R_fp),
qsg4r_c(float *, float *, float *, R_fp);
static float a, b;
extern int qsg5r_c(float *, float *, float *, R_fp),
qsg6r_c(float *, float *, float *, R_fp),
qsg7r_c(float *, float *, float *, R_fp);
extern float f_c();
extern int qsg8r_c(float *, float *, float *, R_fp),
qsg9r_c(float *, float *, float *, R_fp),
qsgar_c(float *, float *, float *, R_fp);
static float int__;
a = 0.f;
b = 1.f;
qsg0r_c(&int__, &a, &b, (R_fp)f_c);
printf("\n %16.7e \n",int__);
qsg1r_c(&int__, &a, &b, (R_fp)f_c);
printf("\n %16.7e \n",int__);
qsg2r_c(&int__, &a, &b, (R_fp)f_c);
printf("\n %16.7e \n",int__);
qsg3r_c(&int__, &a, &b, (R_fp)f_c);
printf("\n %16.7e \n",int__);
qsg4r_c(&int__, &a, &b, (R_fp)f_c);
printf("\n %16.7e \n",int__);
qsg5r_c(&int__, &a, &b, (R_fp)f_c);
printf("\n %16.7e \n",int__);
qsg6r_c(&int__, &a, &b, (R_fp)f_c);
printf("\n %16.7e \n",int__);
qsg7r_c(&int__, &a, &b, (R_fp)f_c);
printf("\n %16.7e \n",int__);
qsg8r_c(&int__, &a, &b, (R_fp)f_c);
printf("\n %16.7e \n",int__);
qsg9r_c(&int__, &a, &b, (R_fp)f_c);
printf("\n %16.7e \n",int__);
qsgar_c(&int__, &a, &b, (R_fp)f_c);
printf("\n %16.7e \n",int__);
return 0;
} /* main */
float f_c(float *x)
{
/* System generated locals */
float ret_val;
/* Builtin functions */
double sqrt(double);
ret_val = (float)sqrt(*x);
return ret_val;
} /* f_c */
Результат: int__ = 0.67388733868