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