Вычисление определенного интеграла по квадратурной формуле Гаусса с двумя узлами.
Подпрограмма 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