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