|
Текст подпрограммы и версий qtt2r_c.zip qtt2d_c.zip |
Тексты тестовых примеров tqtt2r_c.zip tqtt2d_c.zip |
Вычисление определенного однократного интеграла от табличной функции, заданной на неравномерной сетке, по формуле трапеций.
Вычисляется значение опредeлeннoго интеграла на отрезке [x1, xN] от табличной функции f (x), заданной на неравномерной сетке xi, i = 1, ..., N, по формуле трапеций.
Н.С.Бахвалов. Численные методы, "Hаука", M., 1975.
int qtt2r_c (real *rint, real *x, real *f, integer *n)
Параметры
| rint - | вещественная переменная, содержащая вычисленное значение интеграла; |
| x - | вещественный вектоp длины n, содержащий узлы неравномерной сетки; |
| f - | вещественный вектоp длины n, содержащий значения функции f (x); |
| n - | заданное число узлов сетки (тип: целый). |
Версии
| qtt2d_c - | вычисление с удвоенной точностью определенного однократного от табличной функции, заданной на неравномерной сетке, по формуле трапеций. |
Вызываемые подпрограммы: нет
Замечания по использованию
|
Требуется, чтобы xi > xi - 1, i = 2, ..., n; n ≥ 2 . В подпрограмме qtt2d_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 qtt2r_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);
}
qtt2r_c(&rint, x, f, &n);
printf("\n %16.7e \n",rint);
return 0;
} /* main */
Результат:
rint = 1.99700357