Текст подпрограммы и версий qts2r_c.zip qts2d_c.zip |
Тексты тестовых примеров tqts2r_c.zip tqts2d_c.zip |
Вычисление определенного однократного интеграла от табличной функции, заданной на неравномерной сетке, по формуле Симпсона.
Вычисляется значение опредeлeннoго интеграла на отрезке [x1, xN] от табличной функции f (x), заданной на неравномерной сетке xi , i = 1, ..., N, по квадратурной формуле, точной для многочленов второй степени.
Н.С.Бахвалов. Численные методы, "Hаука", M., 1975.
int qts2r_c (real *rint, real *x, real *f, integer *n)
Параметры
rint - | вещественная переменная, содержащая вычисленное значение интеграла; |
x - | вещественный вектоp длины n, содержащий узлы неравномерной сетки; |
f - | вещественный вектоp длины n, содержащий значения функции f (x); |
n - | заданное число узлов сетки (тип: целый). |
Версии
qts2d_c - | вычисление с удвоенной точностью определенного однократного интеграла от табличной функции, заданной на неравномерной сетке, по формуле Симпсона. |
Вызываемые подпрограммы: нет
Замечания по использованию
Требуется, чтобы xi > xi - 1, i = 2, ..., n; n ≥ 3 . В подпрограмме qts2d_c параметры rint, x, f имеют тип double. |
int main(void) { /* Builtin functions */ double sin(double); /* Local variables */ static float rint, f[50], h__; static int i__; extern int qts2r_c(float *, float *, float *, int *); static int n; static float x[50], x1; int i__1; h__ = .064114081632653058f; n = 50; x[0] = 0.f; x[1] = h__ / 4.f; i__1 = n; for (i__ = 3; i__ <= i__1; ++i__) { /* l1: */ x[i__ - 1] = x[i__ - 3] + h__ * 2.f; } i__1 = n; for (i__ = 1; i__ <= i__1; ++i__) { x1 = x[i__ - 1]; /* l2: */ f[i__ - 1] = (float)sin(x1); } qts2r_c(&rint, x, f, &n); printf("\n %16.7e \n",rint); return 0; } /* main */ Результат: rint = 1.99884