База ответов ИНТУИТ

Программирование

<<- Назад к вопросам

Пусть f(x) - целочисленная функция от целочисленногоаргумента. Определить,содержит ли следующий фрагмент программы ошибку(т.е. действительно ли тело цикла сохраняет инвариант):
// Программа корень функции    int a, b, c;    . . .    // утверждение: a < b  && f(a)*f(b) <= 0    // Значения функции на концах отрезка [a,b] разных знаков    while (b - a > 1) {        // Invariant: f(a)*f(b) <= 0        // Делим отрезок [a, b] пополам        c = (a + b)/2; // c - целая часть (a+b)/2        if (f(a) * f(c) < 0) {            b = c;     // выбираем левую половину отрезка        } else {            a = c;     // выбираем правую половину        }    }    // утверждение: a == b-1  &&    //              f(a)*f(b) <= 0

(Отметьте один правильный вариант ответа.)

Варианты ответа
Фрагмент программы содержит ошибку. (Верный ответ)
Ошибки нет, фрагмент программы корректный.
Похожие вопросы
Пусть f(x) - вещественная функция функцияот вещественногоаргумента. Определить,содержит ли следующий фрагмент программы ошибку(т.е. действительно ли тело цикла сохраняет инвариант):
// Программа корень функции    double a, b, c;    double eps = 0.000001;    . . .    // утверждение: a < b  && f(a)*f(b) <= 0.0    // Значения функции на концах отрезка [a, b] разных знаков    while (b - a > eps) {        // Invariant: f(a)*f(b) <= 0.0        // Делим отрезок [a, b] пополам        c = (a + b)/2.0; // c - середина отрезка [a, b]        if (f(a) * f(c) < 0.0) {            b = c;     // выбираем левую половину отрезка        } else {            a = c;     // выбираем правую половину        }    }    // утверждение: b - a <= eps  &&    //              f(a)*f(b) <= 0.0
Пусть a - целочисленный массив размера n(индекс элементов меняется от 0 до n-1),элементы которого строго возрастают:a[0] < a[1] <... < a[n-1].Определить, содержит ли следующий фрагмент программы ошибку(т.е. действительно ли тело цикла сохраняет инвариант):
// Программа Поиск    int n; int *a;    . . .    // дано: целое n;    //       целочисленный массив a[n],    //           элементы которого строго возрастают    //           a[0] < a[1] < ... < a[n-1]    // надо: найти элемент x в массиве    int x;          // искомый элемент    . . .           // рассматриваются исключительные случаи    // общий случай    // утверждение: a[0] < x  &&  x <= a[n-1];    int b = 0; int e = n - 1;    while (e - b > 1) {        Invariant: a[b] < x  &&  x <= a[e]        int c := (a + b)/2; // c - целая часть (a+b)/2        if (x < a[c]) {            e = c;  // выбираем левую половину отрезка        } else {            b = c;  // выбираем правую половину        }    }    // утверждение: b == e - 1   &&    //              a[b] < x  &&  x <= a[e]
Для приближения функции, заданной на отрезке [a, b],применяется сплайн-интерполяция. Для этого отрезок разбиваетсяна n частей точкамиx0, x1, x2, ..., xn,в которых заданы значения функцииy0, y1, y2, ..., yn,На каждом из этих маленьких отрезков[xi, xi+1] функция приближаетсямногочленом степени d, который на концах отрезка принимаетзаданные значения. Пусть, помимо значений функции в узлах интерполяцииyi,заданы также и значения ее производнойy'i в узлах; производная каждого интерполяционногомногочлена также должна принимать заданные значенияна концах отрезка [xi, xi+1].Чему должна быть равнастепень d интерполяционных многочленов, из которыхсоставляется искомый сплайн?
Пусть неизвестная функция определена на отрезке [a, b],причем на концах отрезка заданы ее значенияy0=f(a),y1=f(b),а также значения ее производнойy'0=f'(a),y'1=f'(b).Всегда ли существует многочлен степени 2 такой, чтона концах отрезка его значения и значения его производнойсовпадают со значениями и производной функции?
Пусть неизвестная функция определена на отрезке [a, b],причем на концах отрезка заданы ее значенияy0=f(a),y1=f(b),а также значения ее производнойy'0=f'(a),y'1=f'(b).Нужно приблизить функцию многочленом так, чтобы на концах отрезкаего значения, а также значения его производной совпадали созначениями и производной функции. Какой должна бытьстепень такого многочлена? (Укажите минимальнуюстепень, достаточную для решения этой задачи.)
Рассмотрим следующий фрагмент программы:
утверждение: A(x)цикл пока B(x)| инвариант: A(x)| x := T(x)конец цикла
Здесь через A(x) и B(x)обозначены условия, зависящие от переменной x.Какое условие выполняется по окончании цикла?
Функция с прототипом
double root(double a, double b, double eps);
находит корень фиксированной функции
double f(double x);
на отрезке [a, b] методом деления отрезка пополамс точностью eps.Пусть функция f(x) определена следующимобразом:
double f(double x) {    return sin(x);}
Каким будет приблизительное значение переменной xв результате выполнения следующего фрагмента программы:
    double x = root(-1., 9., 0.000001);
Функция с прототипом
double root(double a, double b, double eps);
находит корень фиксированной функции
double f(double x);
на отрезке [a, b] методом деления отрезка пополамс точностью eps.Пусть функция f(x) определена следующимобразом:
double f(double x) {    double p = 1.;    double r = 1.;    while (r < 5.5) {        p *= (x - r);        r += 1.;    }    return p;}
Каким будет приблизительное значение переменной xв результате выполнения следующего фрагмента программы:
    double x = root(0., 5.9, 0.000001);
Пусть функцияf(x) = p*x2 + q*x + r(многочлен степени 2), заданная на отрезке [a, b],принимает значенияy0, y1, y2в точках a, (a+b)/2, b(на концах и в середине отрезка). Чему равен интеграл от этойфункции по отрезку [a, b]?
Функция с прототипом
double root(double a, double b, double eps);
находит корень фиксированной функции
double f(double x);
на отрезке [a, b] методом деления отрезка пополамс точностью eps. Сколько примерно раз будет выполненотело цикла при поиске корня, когда используется следующий вызов:
    double x = root(1., 2., 0.001);