Страница 423 - гдз по алгебре 10 класс учебник Мерзляк, Номировский

Авторы: Мерзляк А. Г., Номировский Д. А., Поляков В. М.
Тип: Учебник
Серия: алгоритм успеха
Издательство: Вентана-граф
Год издания: 2017 - 2025
Уровень обучения: углублённый
Цвет обложки: розовый
ISBN: 978-5-360-10851-1
Популярные ГДЗ в 10 классе
Cтраница 423

№1.6 (с. 423)
Условие. №1.6 (с. 423)

1.6. На основании теорем 5.1 и 5.2 сделайте вывод о том, какие инструменты графического редактора полезны для построения графика чётной функции; нечётной функции.
Решение. №1.6 (с. 423)
Вывод можно сделать, основываясь на геометрических свойствах графиков чётных и нечётных функций, которые, по-видимому, описываются в теоремах 5.1 и 5.2.
- Для построения графика чётной функции
Теорема о графике чётной функции (предположительно, теорема 5.1) гласит, что график чётной функции симметричен относительно оси ординат (оси OY). Это следует из определения: для чётной функции $f(x)$ выполняется равенство $f(-x) = f(x)$. Это означает, что если точка $(x, y)$ принадлежит графику, то и точка $(-x, y)$ также ему принадлежит.
Благодаря этому свойству, для построения графика достаточно нарисовать его часть для $x \geq 0$, а затем, чтобы получить часть для $x < 0$, отразить построенный фрагмент зеркально относительно оси OY.
Следовательно, в графическом редакторе для этой задачи подходят инструменты, выполняющие зеркальное отражение.
Ответ: Для построения графика чётной функции полезны инструменты "Отразить по горизонтали" (Horizontal Flip) или "Симметрия" (Symmetry) с вертикальной осью симметрии.
- Для построения графика нечётной функции
Теорема о графике нечётной функции (предположительно, теорема 5.2) гласит, что график нечётной функции симметричен относительно начала координат (точки $O(0,0)$). Это следует из определения: для нечётной функции $f(x)$ выполняется равенство $f(-x) = -f(x)$. Это означает, что если точка $(x, y)$ принадлежит графику, то и точка $(-x, -y)$ также ему принадлежит.
Симметрия относительно точки эквивалентна повороту на $180^\circ$ вокруг этой точки. Поэтому для построения графика достаточно нарисовать его часть для $x \geq 0$, а затем повернуть этот фрагмент на $180^\circ$ вокруг начала координат, чтобы получить часть графика для $x < 0$.
Следовательно, в графическом редакторе для этой задачи подходит инструмент поворота.
Ответ: Для построения графика нечётной функции полезен инструмент "Поворот на 180°" (Rotate 180°) вокруг начала координат. Также этого эффекта можно достичь последовательным применением инструментов "Отразить по горизонтали" и "Отразить по вертикали".
№1.7 (с. 423)
Условие. №1.7 (с. 423)

1.7.* Функция задана таблично. Запишите алгоритм для поиска наибольшего и наименьшего значений функции.
Решение. №1.7 (с. 423)
Пусть функция задана таблицей, которая представляет собой набор из $n$ значений функции: $Y = \{y_1, y_2, \dots, y_n\}$. Для нахождения наибольшего и наименьшего значений в этом наборе данных можно использовать следующий алгоритм.
- Инициализация переменных. Взять первое значение из набора, $y_1$, и присвоить его двум переменным: $y_{max}$ для хранения текущего максимального значения и $y_{min}$ для хранения текущего минимального значения.
$y_{max} \leftarrow y_1$
$y_{min} \leftarrow y_1$ - Итерация по набору данных. Организовать цикл, который последовательно перебирает все оставшиеся значения функции из набора, от $y_2$ до $y_n$. Обозначим текущий рассматриваемый элемент как $y_i$, где $i$ пробегает значения от 2 до $n$.
- Сравнение и обновление. На каждом шаге цикла выполнять два сравнения для текущего элемента $y_i$:
- Если текущее значение $y_i$ больше, чем значение в переменной $y_{max}$, то обновить $y_{max}$, присвоив ему значение $y_i$:
Если $y_i > y_{max}$, то $y_{max} \leftarrow y_i$ - Если текущее значение $y_i$ меньше, чем значение в переменной $y_{min}$, то обновить $y_{min}$, присвоив ему значение $y_i$:
Если $y_i < y_{min}$, то $y_{min} \leftarrow y_i$
- Если текущее значение $y_i$ больше, чем значение в переменной $y_{max}$, то обновить $y_{max}$, присвоив ему значение $y_i$:
- Получение результата. После того как цикл завершит работу и все элементы набора будут проверены, переменная $y_{max}$ будет содержать искомое наибольшее значение функции, а переменная $y_{min}$ — наименьшее.
Ответ: Представленный алгоритм, основанный на последовательном переборе элементов с обновлением текущих экстремумов, позволяет найти наибольшее и наименьшее значения для функции, заданной таблично.
№1.8 (с. 423)
Условие. №1.8 (с. 423)

1.8.! Предположим, что у вас есть подпрограмма, позволяющая вычислить значение некоторой функции в любой точке. Можно ли с помощью этой подпрограммы найти наибольшее и наименьшее значения этой функции?
Решение. №1.8 (с. 423)
Вопрос о возможности нахождения наибольшего и наименьшего значений функции с помощью подпрограммы, вычисляющей ее значение в любой точке, не имеет однозначного ответа. Все зависит от дополнительной информации о функции и ее области определения.
Рассмотрим два основных случая.
1. Общий случай: функция с неизвестными свойствами на произвольной области определения.
Если у нас нет никакой дополнительной информации о функции (например, о ее непрерывности, гладкости, ограниченности) или ее области определения (например, она может быть всей числовой прямой $R$), то гарантированно найти наибольшее и наименьшее значения невозможно. Вот почему:
• Бесконечная область определения. Если функция определена на всей числовой прямой, например, $f(x) = x$ или $f(x) = e^x$, она может не иметь ни наибольшего, ни наименьшего значения (быть неограниченной). Любой алгоритм будет работать конечное время и проверять конечное число точек, но всегда найдется точка за пределами проверенного диапазона, где значение функции будет больше (или меньше) уже найденного.
• Разрывные функции. Функция может иметь разрывы. Представьте себе функцию, которая равна 0 во всех точках, кроме одной, например, $x = \pi$, где ее значение равно 1. $f(x) = \begin{cases} 1, & x = \pi \\ 0, & x \neq \pi \end{cases}$. Чтобы найти ее максимум, нужно передать в подпрограмму точное значение $\pi$. Однако, перебирая рациональные числа или числа с конечным числом знаков после запятой, мы никогда не попадем в эту точку. Вероятность "угадать" иррациональную точку равна нулю.
• "Игольчатые" пики. Даже если функция непрерывна, она может иметь очень узкие пики. Например, функция может быть близка к нулю почти везде, но иметь очень высокий и очень узкий пик в какой-то точке. Если шаг, с которым мы проверяем точки, окажется больше ширины этого пика, мы его просто пропустим.
Ответ: В общем случае, не имея дополнительной информации о функции и ее области определения, гарантированно найти наибольшее и наименьшее значения невозможно.
2. Частный случай: непрерывная функция на замкнутом отрезке.
Ситуация кардинально меняется, если нам известно, что функция непрерывна и мы ищем ее экстремумы на замкнутом отрезке $[a, b]$. Согласно теореме Вейерштрасса, любая непрерывная на отрезке функция достигает на нем своего наибольшего и наименьшего значений.
В этом случае мы можем найти эти значения, но, как правило, лишь приближенно, с любой наперед заданной точностью. Точное аналитическое значение найти в общем случае все равно нельзя, так как для этого нужно было бы решить уравнение $f'(x) = 0$, а у нас есть только подпрограмма для вычисления $f(x)$.
Простейший алгоритм для поиска приближенного значения:
1. Задать достаточно малый шаг $h$, который определяет точность поиска.
2. Разбить отрезок $[a, b]$ на множество точек: $x_0 = a, x_1 = a+h, x_2 = a+2h, \dots, x_n = b$.
3. Вычислить значение функции в каждой из этих точек с помощью данной подпрограммы.
4. Найти максимальное и минимальное значения среди полученных $f(x_i)$. Они и будут приближенными наибольшим и наименьшим значениями функции на отрезке.
Чем меньше шаг $h$, тем точнее будет результат, но тем больше вычислений потребуется. Таким образом, можно достичь любой желаемой точности, но за счет увеличения времени работы программы.
Существуют и более эффективные численные методы (например, метод золотого сечения), которые позволяют найти приближенный экстремум быстрее, чем простой перебор, но они также требуют выполнения определенных условий (например, унимодальности функции).
Ответ: Да, если известно, что функция непрерывна и задана на замкнутом отрезке, можно найти ее наибольшее и наименьшее значения с любой наперед заданной точностью, но не всегда точно.
№1.9 (с. 423)
Условие. №1.9 (с. 423)

1.9. Придумайте самостоятельно и выполните задания, иллюстрирующие построение графика $y = f(kx)$ с помощью табличного редактора и с помощью графического редактора. Какие отдельные случаи надо рассмотреть?
Решение. №1.9 (с. 423)
Для иллюстрации построения графика функции $y = f(kx)$ выберем в качестве исходной функции $f(x) = \sin(x)$. Таким образом, мы будем строить графики функции $y = \sin(kx)$ для различных значений коэффициента $k$. Это преобразование представляет собой горизонтальное сжатие или растяжение графика исходной функции относительно оси OY.
Какие отдельные случаи надо рассмотреть?При построении графика функции $y=f(kx)$ из графика $y=f(x)$ необходимо рассмотреть различные случаи для коэффициента $k$, так как от его значения зависит вид преобразования.
- $k = 1$: Это базовый случай. График $y=f(1 \cdot x)$ совпадает с графиком $y=f(x)$.
- $k > 1$: Происходит горизонтальное сжатие графика к оси OY в $k$ раз. Например, для $k=2$ график функции $y=f(2x)$ будет в 2 раза "уже", чем график $y=f(x)$.
- $0 < k < 1$: Происходит горизонтальное растяжение графика от оси OY в $1/k$ раз. Например, для $k=0.5$ график функции $y=f(0.5x)$ будет в $1/0.5 = 2$ раза "шире", чем график $y=f(x)$.
- $k = -1$: График $y=f(-x)$ является симметричным отражением графика $y=f(x)$ относительно оси OY.
- $k < -1$: Это комбинация двух преобразований: сжатие к оси OY в $|k|$ раз и симметричное отражение относительно оси OY. Например, $y=f(-2x)$ — это график $y=f(2x)$, отраженный относительно OY.
- $-1 < k < 0$: Это комбинация растяжения от оси OY в $1/|k|$ раз и симметричного отражения относительно оси OY. Например, $y=f(-0.5x)$ — это график $y=f(0.5x)$, отраженный относительно OY.
- $k = 0$: Это вырожденный случай. Функция становится константой: $y=f(0 \cdot x) = f(0)$. Графиком является горизонтальная прямая $y=c$, где $c=f(0)$. Для нашего примера $f(x)=\sin(x)$, получим $y=\sin(0)=0$.
Ответ: Необходимо рассмотреть случаи, когда $k=1$; $k>1$; $0<k<1$; $k=-1$; $k<-1$; $-1<k<0$; $k=0$. Эти случаи описывают соответственно: отсутствие преобразования, горизонтальное сжатие, горизонтальное растяжение, отражение относительно оси OY, сжатие с отражением, растяжение с отражением и вырождение в константу.
Построение с помощью табличного редактораРассмотрим построение графиков $y=\sin(x)$, $y=\sin(2x)$ и $y=\sin(0.5x)$ в табличном редакторе (например, Microsoft Excel или Google Sheets).
- Создание таблицы значений.
В первом столбце (A) создадим набор значений для аргумента $x$. Например, от $-2\pi$ до $2\pi$ с шагом 0,2. В ячейку A1 введем "x". В ячейку A2 введем формулу для вычисления $-2\pi$ (в русскоязычном Excel это `=-2*ПИ()`). В ячейку A3 введем `=A2+0,2` и протянем эту формулу вниз до получения значения, близкого к $2\pi$ (примерно 6,28).
Во втором столбце (B) вычислим значения для $y=\sin(x)$. В ячейку B1 введем заголовок "sin(x)". В ячейку B2 введем формулу `=SIN(A2)` (или `=SIN(A2)` в зависимости от языковых настроек) и скопируем ее вниз для всех значений $x$.
В третьем столбце (C) вычислим значения для $y=\sin(2x)$ (случай $k=2$, сжатие). В C1 введем "sin(2x)". В C2 введем формулу `=SIN(2*A2)` и скопируем ее вниз.
В четвертом столбце (D) вычислим значения для $y=\sin(0.5x)$ (случай $k=0.5$, растяжение). В D1 введем "sin(0.5x)". В D2 введем формулу `=SIN(0.5*A2)` и скопируем ее вниз.
- Примерный вид таблицы:
A (x) B (sin(x)) C (sin(2x)) D (sin(0.5x)) -6,283 0,000 0,000 0,000 -6,083 0,200 0,395 0,100 -5,883 0,389 0,746 0,198 ... ... ... ... - Построение графика.
Выделите все столбцы с данными (A, B, C, D). В меню редактора выберите "Вставка" -> "Диаграмма". Выберите тип диаграммы "Точечная с гладкими кривыми".
- Анализ результата.
На полученной диаграмме будут видны три графика. График $y=\sin(2x)$ будет иметь период в два раза меньше, чем у $y=\sin(x)$ (сжатие к оси OY). График $y=\sin(0.5x)$ будет иметь период в два раза больше (растяжение от оси OY). Все графики будут пересекаться в точках, где $x$ кратен $\pi$.
Ответ: Для построения графика в табличном редакторе необходимо создать столбцы со значениями аргумента $x$ и соответствующими значениями функций $f(x)$ и $f(kx)$ для разных $k$, а затем на основе этих данных построить точечную диаграмму с гладкими кривыми.
Построение с помощью графического редактораИспользование специализированного графического редактора для построения функций (например, Desmos, GeoGebra или других онлайн-построителей графиков) является наиболее наглядным способом.
- Построение базового графика.
В поле для ввода формул введите исходную функцию:
y = sin(x)
. Программа немедленно отобразит ее график. - Построение преобразованных графиков.
В новых полях для ввода последовательно введите формулы для различных случаев $k$:
y = sin(2x)
(для $k=2$): вы увидите, что график сжался по горизонтали, его период уменьшился вдвое.y = sin(0.5x)
(для $k=0.5$): график растянулся по горизонтали, его период увеличился вдвое.y = sin(-x)
(для $k=-1$): график отразился относительно оси OY. (Так как синус - нечетная функция, $\sin(-x) = -\sin(x)$, этот график также будет являться отражением исходного относительно оси OX).
Редактор обычно позволяет раскрасить графики в разные цвета для удобства сравнения.
- Использование интерактивного элемента (слайдера).
Самый эффективный способ — использовать параметр. Введите функцию в виде
y = sin(k*x)
. Программа предложит создать "слайдер" для переменной $k$.Перемещая ползунок слайдера, вы можете в реальном времени наблюдать, как меняется график функции в зависимости от значения $k$. Это позволяет наглядно изучить все рассмотренные случаи:
- Когда вы двигаете $k$ от 1 в сторону увеличения, график сжимается к оси OY.
- Когда $k$ находится в интервале $(0, 1)$, график растягивается от оси OY.
- Когда $k$ становится отрицательным, график отражается относительно оси OY.
- Когда $k=0$, график превращается в прямую линию $y=0$.
Ответ: В графическом редакторе для построения функций достаточно ввести формулы $y=f(x)$ и $y=f(kx)$ в поля для ввода. Использование слайдера для коэффициента $k$ позволяет динамически наблюдать за преобразованием графика (сжатием, растяжением, отражением) при изменении $k$.
№1.10 (с. 423)
Условие. №1.10 (с. 423)

1.10. Задайте таблично некоторую функцию с помощью табличного редактора. С помощью средств табличного редактора задайте обратную к ней функцию.
Решение. №1.10 (с. 423)
Для выполнения этого задания мы воспользуемся табличным редактором (например, Microsoft Excel или Google Sheets) и рассмотрим весь процесс на примере конкретной функции.
Задайте таблично некоторую функцию с помощью табличного редактора.
В качестве примера выберем обратимую линейную функцию $y = 2x + 5$.
Чтобы задать её таблично в редакторе, необходимо выполнить следующие шаги:
- Создать два столбца. В первый столбец (назовем его A) будем вносить значения аргумента $x$. Во второй (B) — вычисленные значения функции $y$.
- Заполнить столбец A некоторым набором значений аргумента. Для примера возьмем целые числа в диапазоне от -5 до 5.
- В ячейку B2, которая находится напротив первого значения $x$ (в ячейке A2), ввести формулу для расчета значения функции. Для нашего примера $y = 2x + 5$ формула будет выглядеть как
=2*A2+5
. - Скопировать (протянуть) эту формулу на все ячейки столбца B, соответствующие заданным значениям $x$ в столбце A. Редактор автоматически изменит адреса ячеек в формуле.
Ответ: В результате выполнения этих действий мы получим таблицу, которая задает функцию $y = 2x + 5$:
$x$ | $y = 2x + 5$ |
---|---|
-5 | -5 |
-4 | -3 |
-3 | -1 |
-2 | 1 |
-1 | 3 |
0 | 5 |
1 | 7 |
2 | 9 |
3 | 11 |
4 | 13 |
5 | 15 |
С помощью средств табличного редактора задайте обратную к ней функцию.
По определению, обратная функция $f^{-1}$ "меняет местами" аргумент и значение исходной функции $f$. Если $y = f(x)$, то $x = f^{-1}(y)$. В табличном представлении это означает, что для получения таблицы обратной функции нужно поменять местами столбцы со значениями $x$ и $y$ из таблицы для исходной функции.
Для этого в табличном редакторе можно использовать стандартные средства копирования и вставки:
- Выделить и скопировать столбец со значениями $y$ из таблицы исходной функции (в нашем примере это диапазон B2:B12).
- Вставить эти значения в новый столбец (например, D). Этот столбец будет содержать значения аргумента обратной функции.
- Выделить и скопировать столбец со значениями $x$ из таблицы исходной функции (диапазон A2:A12).
- Вставить эти значения в столбец рядом (например, E). Этот столбец будет содержать значения обратной функции.
Таким образом, мы используем средства редактора (копирование и вставка) для получения табличного представления обратной функции.
Ответ: В результате мы получим таблицу, задающую функцию, обратную к $y=2x+5$. Аналитически эта функция записывается как $y = \frac{x-5}{2}$. Таблица для обратной функции будет выглядеть следующим образом:
$x$ (аргумент) | $y$ (значение) |
---|---|
-5 | -5 |
-3 | -4 |
-1 | -3 |
1 | -2 |
3 | -1 |
5 | 0 |
7 | 1 |
9 | 2 |
11 | 3 |
13 | 4 |
15 | 5 |
№1.11 (с. 423)
Условие. №1.11 (с. 423)

1.11.!* Запишите алгоритм, который для функции, заданной таблично, определяет, является ли она обратимой.
Решение. №1.11 (с. 423)
Функция является обратимой тогда и только тогда, когда она является биективной. Биекция — это отображение, которое одновременно является инъективным и сюръективным.
1. Инъективность (взаимная однозначность) означает, что разным значениям аргумента соответствуют разные значения функции. Математически: если $x_1 \neq x_2$, то $f(x_1) \neq f(x_2)$. Для функции, заданной таблично, это означает, что все значения во втором столбце (или второй строке), т.е. все значения $y$, должны быть уникальными. Если хотя бы два значения $y$ совпадают, функция не является инъективной и, следовательно, не является обратимой.
2. Сюръективность означает, что каждый элемент множества прибытия (области значений) является образом хотя бы одного элемента из множества отправления (области определения). Когда функция задана таблицей, ее область значений состоит только из тех значений, что перечислены в таблице. Поэтому такая функция по определению является сюръективной на свою область значений.
Таким образом, для функции, заданной таблично, проверка на обратимость сводится к проверке на инъективность, то есть к проверке уникальности всех значений функции.
Алгоритм для определения обратимости функции, заданной таблично:
- Взять все значения функции (второй столбец или вторая строка таблицы). Пусть это будет массив (список) $Y = \{y_1, y_2, \dots, y_n\}$.
- Создать пустую структуру данных для хранения уже проверенных значений (например, множество или хеш-таблицу), назовем ее `seen_values`. Использование множества является наиболее эффективным.
- Начать перебор всех элементов массива $Y$ от первого до последнего. Для каждого элемента $y_i$:
- Проверить, содержится ли элемент $y_i$ в `seen_values`.
- Если $y_i$ уже есть в `seen_values`, это означает, что найдено повторяющееся значение. Функция не является инъективной и, следовательно, не обратима. Завершить алгоритм с результатом "Функция не является обратимой".
- Если $y_i$ отсутствует в `seen_values`, добавить его в эту структуру и перейти к следующему элементу массива $Y$.
- Если перебор всех элементов массива $Y$ завершен и не было найдено ни одного повторения, это означает, что все значения функции уникальны. Следовательно, функция является обратимой. Завершить алгоритм с результатом "Функция является обратимой".
Пример:
Таблица 1:
x | 1 | 2 | 3
y | 5 | 8 | 2
Значения $Y = \{5, 8, 2\}$ все уникальны. Функция обратима.
Таблица 2:
x | 1 | 2 | 3
y | 4 | 9 | 4
Значения $Y = \{4, 9, 4\}$. Значение 4 повторяется. Функция не обратима.
Ответ: Для определения обратимости функции, заданной таблично, необходимо проверить, являются ли все значения функции (значения $y$) в таблице уникальными. Если все значения уникальны, функция обратима. Если есть хотя бы одно повторяющееся значение, функция не является обратимой.
№1.12 (с. 423)
Условие. №1.12 (с. 423)

1.12.!* Запишите алгоритм, который для двух функций, заданных таблично, определяет, являются ли они взаимно обратными.
Решение. №1.12 (с. 423)
Две функции $f(x)$ и $g(x)$ называются взаимно обратными, если для всех $x$ из области определения $f$ выполняется равенство $g(f(x)) = x$, и для всех $y$ из области определения $g$ выполняется равенство $f(g(y)) = y$.
Когда функции заданы таблично, это означает, что для каждой пары $(x, y)$ в таблице функции $f$, где $y = f(x)$, в таблице функции $g$ должна существовать соответствующая пара $(y, x)$, где $x = g(y)$, и наоборот.
Таким образом, задача сводится к проверке того, является ли одна таблица "перевернутой" версией другой, при совпадении их размеров.
АлгоритмПусть первая функция $F$ задана таблицей из $n$ пар $\{(x_1, y_1), (x_2, y_2), ..., (x_n, y_n)\}$, а вторая функция $G$ — таблицей из $m$ пар $\{(a_1, b_1), (a_2, b_2), ..., (a_m, b_m)\}$.
- Проверка размеров. Сравнить количество пар в обеих таблицах ($n$ и $m$). Если $n \neq m$, функции не являются взаимно обратными на заданных областях определения. Алгоритм завершается с результатом "нет".
- Проверка на взаимную обратность пар. Для каждой пары $(x_i, y_i)$ из таблицы функции $F$ (где $i$ пробегает значения от 1 до $n$) выполнить следующие действия:
- Осуществить поиск в таблице функции $G$ такой пары $(a_j, b_j)$, для которой одновременно выполняются два условия: $a_j = y_i$ и $b_j = x_i$.
- Если в результате поиска такая пара не найдена, то функции не являются взаимно обратными. Алгоритм прекращает работу с результатом "нет".
- Вынесение решения. Если цикл из шага 2 был полностью пройден и для каждой пары из таблицы $F$ была найдена соответствующая "перевернутая" пара в таблице $G$, то функции являются взаимно обратными. Алгоритм завершается с результатом "да".
Пусть функция $F$ задана набором пар: $\{(1, 5), (2, -3), (4, 0)\}$.
А функция $G$ задана набором пар: $\{(5, 1), (0, 4), (-3, 2)\}$.
Применение алгоритма:
- Проверка размеров. В таблице $F$ 3 пары. В таблице $G$ 3 пары. $3 = 3$. Проверка пройдена.
- Проверка пар:
- Берем пару $(1, 5)$ из $F$. Ищем пару $(5, 1)$ в $G$. Найдена.
- Берем пару $(2, -3)$ из $F$. Ищем пару $(-3, 2)$ в $G$. Найдена.
- Берем пару $(4, 0)$ из $F$. Ищем пару $(0, 4)$ в $G$. Найдена.
- Вынесение решения. Цикл завершился успешно. Функции являются взаимно обратными.
Ответ: Функции являются взаимно обратными, если их таблицы содержат одинаковое количество пар, и для каждой пары $(x, y)$ из таблицы первой функции в таблице второй функции найдется пара $(y, x)$.
№1.13 (с. 423)
Условие. №1.13 (с. 423)

1.13. Приведите примеры того, как при составлении алгоритмов следует учитывать область определения используемых выражений. Какой может быть реакция компьютера, если этого не сделать? Приведите примеры наиболее распространённых ошибок.
Решение. №1.13 (с. 423)
При составлении алгоритмов крайне важно учитывать область определения (или область допустимых значений, ОДЗ) для всех используемых математических выражений и операций. Область определения — это множество входных значений, для которых выражение имеет смысл и может быть вычислено, возвращая корректный результат.
Примеры того, как при составлении алгоритмов следует учитывать область определения используемых выражений
1. Деление. Выражение $a/b$ определено только при $b \neq 0$. Алгоритм, вычисляющий частное, должен включать проверку знаменателя. Например, при вычислении $y = 1/(x-5)$, необходимо проверить, не равен ли $x$ пяти.
Пример фрагмента алгоритма:ЕСЛИ x = 5 ТО
вывод "Ошибка: деление на ноль!"
ИНАЧЕ
y := 1 / (x - 5)
КОНЕЦ ЕСЛИ
2. Извлечение квадратного корня. Выражение $\sqrt{a}$ в области действительных чисел определено только при $a \ge 0$. Например, при решении квадратного уравнения $ax^2 + bx + c = 0$ по формуле $x = \frac{-b \pm \sqrt{D}}{2a}$, где дискриминант $D = b^2 - 4ac$, алгоритм должен сначала вычислить $D$ и проверить его знак.
Пример фрагмента алгоритма:D := b*b - 4*a*c
ЕСЛИ D < 0 ТО
вывод "Действительных корней нет"
ИНАЧЕ
x1 := (-b + sqrt(D)) / (2*a)
x2 := (-b - sqrt(D)) / (2*a)
КОНЕЦ ЕСЛИ
3. Логарифм. Выражение $\log_b(a)$ определено при $a > 0$, $b > 0$ и $b \neq 1$. Алгоритм, использующий логарифмы, должен проверять, что его аргумент строго положителен.
4. Арксинус и арккосинус. Функции $\arcsin(x)$ и $\arccos(x)$ определены только для $x$ в диапазоне $[-1, 1]$. Алгоритм должен гарантировать, что аргумент попадает в этот отрезок.
5. Индексация массива. При обращении к элементу массива, например A[i]
, индекс i
должен находиться в допустимом диапазоне (обычно от 0 до N-1, где N — размер массива). Алгоритм должен гарантировать, что индекс не выйдет за эти пределы.
Какой может быть реакция компьютера, если этого не сделать
Если не проверять входные данные выражений на принадлежность их области определения, реакция компьютера может быть разной, но почти всегда нежелательной:
- Аварийное завершение программы (сбой, "вылет"). Это частая реакция на целочисленное деление на ноль или выход за границы массива. Операционная система или среда выполнения обнаруживает критическую ошибку и принудительно останавливает программу, часто с выводом сообщения об ошибке (например, Floating point exception или Segmentation fault).
- Генерация исключения (Runtime Error). В современных языках программирования (Java, Python, C#) такие ситуации приводят к генерации исключения (например,
ArithmeticException
,ZeroDivisionError
,IndexOutOfBoundsException
). Если в программе не предусмотрен специальный блок для обработки этого исключения, программа также аварийно завершится. - Получение некорректных результатов. Иногда программа не останавливается, но результат операции становится бессмысленным. Например, в операциях с числами с плавающей точкой:
- Деление на ноль может дать в результате специальные значения:
Infinity
(бесконечность) или-Infinity
. - Извлечение корня из отрицательного числа или логарифм отрицательного числа может дать
NaN
(Not a Number — не число).
- Деление на ноль может дать в результате специальные значения:
- Неопределённое поведение (Undefined Behavior). В языках низкого уровня, таких как C/C++, некоторые ошибки (например, выход за границы массива) могут привести к неопределённому поведению. Это означает, что результат непредсказуем: программа может случайно сработать правильно, может выдать неверный результат, "зависнуть" или создать уязвимость в безопасности.
Примеры наиболее распространённых ошибок
Исходя из вышесказанного, можно выделить следующие типичные ошибки, связанные с неучётом области определения:
- Деление на ноль: Попытка выполнить операцию $x/y$, когда переменная $y$ в результате предыдущих вычислений или из-за неверных входных данных приняла нулевое значение.
- Извлечение квадратного корня из отрицательного числа: Попытка вычислить $\sqrt{D}$ при $D < 0$ без предварительной проверки знака $D$.
- Выход за границы массива: Обращение к элементу массива по индексу, который меньше минимально допустимого (обычно 0) или больше либо равен размеру массива. Часто возникает из-за ошибки в условиях завершения цикла (например,
i <= N
вместоi < N
для массива размером N). - Вычисление логарифма от неположительного числа: Попытка вычислить $\ln(x)$ при $x \le 0$.
Ответ: При составлении алгоритмов необходимо учитывать область определения используемых выражений, добавляя в программу проверки на допустимость входных данных для таких операций, как деление (знаменатель не должен быть равен нулю), извлечение корня (подкоренное выражение должно быть неотрицательным), вычисление логарифма (аргумент должен быть положительным), индексация массива (индекс должен быть в пределах границ массива) и др. Если этого не сделать, реакцией компьютера может быть аварийное завершение программы, генерация исключения, получение некорректных результатов (таких как Infinity
или NaN
) или неопределённое поведение. Наиболее распространёнными ошибками являются деление на ноль, извлечение корня из отрицательного числа и выход за границы массива.
№1.14 (с. 423)
Условие. №1.14 (с. 423)

1.14.* Предположим, что у вас есть подпрограмма, позволяющая вычислить значение некоторой непрерывной функции в любой точке, и известны все нули этой функции.
1) Запишите алгоритм, который выдаёт все промежутки знакопостоянства этой функции.
2) Запишите алгоритм построения графического изображения нулей и промежутков знакопостоянства этой функции (см. рисунки к § 8).
Решение. №1.14 (с. 423)
1) Запишите алгоритм, который выдаёт все промежутки знакопостоянства этой функции.
Пусть у нас есть подпрограмма $f(x)$ для вычисления значения функции и известный список всех её нулей. Алгоритм для нахождения промежутков знакопостоянства будет следующим:
1. Сортировка нулей. Получаем на вход список всех нулей функции. Сортируем этот список в порядке возрастания. Пусть отсортированный список нулей — это $x_1, x_2, \dots, x_n$, где $x_1 < x_2 < \dots < x_n$.
2. Формирование интервалов. Отсортированные нули разбивают всю числовую ось на $n+1$ открытый промежуток:
$(-\infty, x_1)$, $(x_1, x_2)$, $(x_2, x_3)$, $\dots$, $(x_{n-1}, x_n)$, $(x_n, +\infty)$.
Поскольку функция непрерывна, на каждом из этих интервалов она сохраняет свой знак (либо строго положительна, либо строго отрицательна).
3. Определение знака на каждом интервале. Для каждого полученного интервала необходимо определить знак функции. Для этого достаточно вычислить значение функции в одной произвольной (тестовой) точке внутри этого интервала.
- Для интервала $(-\infty, x_1)$ выбираем любую тестовую точку $t_0 < x_1$ (например, $t_0 = x_1 - 1$) и вычисляем знак $f(t_0)$.
- Для каждого интервала $(x_i, x_{i+1})$, где $i$ изменяется от 1 до $n-1$, выбираем тестовую точку $t_i$ такую, что $x_i < t_i < x_{i+1}$ (например, середина отрезка $t_i = (x_i + x_{i+1})/2$) и вычисляем знак $f(t_i)$.
- Для интервала $(x_n, +\infty)$ выбираем любую тестовую точку $t_n > x_n$ (например, $t_n = x_n + 1$) и вычисляем знак $f(t_n)$.
4. Вывод результата. Сформировать и выдать список, состоящий из пар: интервал и соответствующий ему знак ('+' или '-').
Ответ: Алгоритм состоит из сортировки нулей функции, формирования интервалов между ними (и крайних интервалов до $\pm\infty$), выбора тестовой точки в каждом интервале для вычисления знака функции и вывода списка интервалов с их знаками.
2) Запишите алгоритм построения графического изображения нулей и промежутков знакопостоянства этой функции (см. рисунки к § 8).
Данный алгоритм использует результаты, полученные в предыдущем пункте (отсортированный список нулей и знаки на интервалах), и предназначен для визуализации методом интервалов.
1. Построение числовой оси. Начертить горизонтальную прямую — ось абсцисс (ось $Ox$). Указать на ней направление.
2. Отметка и подпись нулей. Взять отсортированный список нулей $x_1, x_2, \dots, x_n$. Нанести на числовую ось точки, соответствующие этим нулям, сохраняя их порядок и примерный масштаб. Под каждой точкой подписать её числовое значение.
3. Расстановка знаков. Используя информацию о знаках на интервалах, полученную в алгоритме из пункта 1, проставить над каждым интервалом на оси соответствующий знак: '+' (если функция положительна) или '-' (если функция отрицательна).
4. Изображение кривой знаков (опционально). Для большей наглядности можно нарисовать схематическую волнообразную кривую ("змейку"), которая:
- Пересекает числовую ось в точках, соответствующих нулям функции ($x_1, x_2, \dots, x_n$).
- Проходит выше оси на тех интервалах, где стоит знак '+'.
- Проходит ниже оси на тех интервалах, где стоит знак '-'.
Ответ: Алгоритм включает в себя рисование числовой оси, отметку на ней отсортированных нулей функции, простановку знаков ('+' или '-') над интервалами между нулями в соответствии с результатами предыдущего алгоритма, и, для наглядности, проведение схематической кривой, отражающей смену знаков.
№1.15 (с. 423)
Условие. №1.15 (с. 423)

1.15.!* Предположим, что у вас есть подпрограмма, позволяющая вычислить значение некоторой функции в любой точке. Можно ли с помощью этой подпрограммы найти все нули этой функции? Для каких функций это возможно? Сделайте вывод об особенностях решения уравнений с помощью компьютера. Найдите в Интернете информацию о численных методах решения уравнений.
Решение. №1.15 (с. 423)
Можно ли с помощью этой подпрограммы найти все нули этой функции?
Нет, в общем случае найти все нули произвольной функции с помощью такой подпрограммы невозможно. Это связано с фундаментальными ограничениями вычислительной техники при работе с непрерывными областями.
Основные причины:
- Непрерывность против дискретности: Компьютер может проверить значение функции только в конечном числе точек. Область определения функции (например, все действительные числа) непрерывна и содержит бесконечное множество точек. Между любыми двумя точками, которые мы проверим, может находиться нуль функции, который мы пропустим.
- Поведение функции: Функция может касаться оси, но не пересекать ее (например, $f(x) = (x-\sqrt{2})^2$). В этом случае значения функции по обе стороны от корня будут одного знака, и методы, основанные на смене знака, не найдут этот корень.
- Бесконечное число нулей: Некоторые функции имеют бесконечное число нулей (например, $f(x) = \sin(x)$ на всей числовой оси). Программа не может завершить свою работу, перечислив их все.
Ответ: В общем случае найти все нули функции невозможно.
Для каких функций это возможно?
Нахождение всех нулей возможно для ограниченного класса функций, о которых у нас есть дополнительная априорная информация.
- Многочлены (полиномы): Для многочлена степени $n$ известно, что он имеет не более $n$ действительных корней. Если мы сможем найти $n$ различных действительных корней, мы можем быть уверены, что нашли их все. Существуют алгоритмы, которые позволяют гарантированно находить все корни многочлена (включая комплексные), но они требуют знания коэффициентов многочлена, а не просто "черного ящика" для вычисления его значения.
- Функции с известным числом корней на заданном интервале: Если из аналитического исследования функции известно, что на отрезке $[a, b]$ она имеет ровно один корень (например, если функция на этом отрезке непрерывна и строго монотонна, а $f(a) \cdot f(b) < 0$), то его можно найти с любой заданной точностью.
- Функции, для которых удалось выполнить "изоляцию корней": Если удалось разбить область определения функции на конечное число отрезков, в каждом из которых содержится ровно один корень, то можно последовательно найти каждый из них.
Ответ: Это возможно для функций, для которых заранее известно конечное число корней или для которых можно аналитически определить интервалы, содержащие ровно по одному корню.
Сделайте вывод об особенностях решения уравнений с помощью компьютера.
Решение уравнений вида $f(x)=0$ с помощью компьютера имеет ряд ключевых особенностей, отличающих его от аналитического (символьного) решения:
- Приближенный характер решений: Компьютерные методы, как правило, находят не точное значение корня, а его приближение с некоторой заданной точностью $\epsilon$. Результатом является не число, а интервал, в котором гарантированно лежит корень.
- Итеративность: Большинство численных методов являются итерационными. Они начинают с начального приближения и на каждом шаге (итерации) уточняют его, приближаясь к истинному корню.
- Необходимость априорной информации: Для успешной работы многих алгоритмов требуется дополнительная информация о функции: интервал, на котором находится корень, хорошее начальное приближение, непрерывность функции, наличие производной и т.д.
- Отсутствие универсальности: Не существует единого численного метода, который был бы эффективен для решения абсолютно всех уравнений. Выбор метода зависит от свойств функции и требований к точности и скорости вычислений.
- Невозможность доказать отсутствие корней: С помощью численного перебора невозможно доказать, что у функции нет корней на некотором интервале. Можно лишь утверждать, что в проверенных точках значение функции не равно нулю.
Ответ: Особенность решения уравнений на компьютере заключается в том, что оно почти всегда является численным (приближенным) и итерационным, требует предварительного анализа функции и не гарантирует нахождения всех решений в общем случае.
Найдите в Интернете информацию о численных методах решения уравнений.
Существует множество численных методов для нахождения корней уравнения $f(x)=0$. Вот некоторые из наиболее известных:
1. Метод дихотомии (метод деления пополам)
Это самый простой и надежный метод. Он требует, чтобы был задан отрезок $[a, b]$, на концах которого непрерывная функция $f(x)$ принимает значения разных знаков ($f(a) \cdot f(b) < 0$). Суть метода: отрезок делится пополам точкой $c = (a+b)/2$. Далее выбирается та половина отрезка, на концах которой функция по-прежнему имеет разные знаки, и процесс повторяется. Метод гарантированно сходится, но довольно медленно.
2. Метод Ньютона (метод касательных)
Один из самых быстрых методов. Он требует знания не только самой функции $f(x)$, но и ее производной $f'(x)$. Исходя из начального приближения $x_0$, следующее приближение находится как точка пересечения касательной к графику функции в точке $(x_0, f(x_0))$ с осью абсцисс. Итерационная формула: $x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)}$. Метод сходится очень быстро (квадратичная сходимость) при удачном выборе начального приближения, но может расходиться, если $x_0$ выбрано плохо.
3. Метод секущих
Модификация метода Ньютона для случаев, когда производную сложно или невозможно вычислить. Вместо касательной используется секущая, проведенная через две последние приближенные точки. Формула: $x_{n+1} = x_n - f(x_n) \frac{x_n - x_{n-1}}{f(x_n) - f(x_{n-1})}$. Этот метод требует двух начальных приближений. Скорость сходимости выше, чем у метода дихотомии, но ниже, чем у метода Ньютона. Сходимость также не всегда гарантирована.
4. Метод простой итерации (метод последовательных приближений)
Исходное уравнение $f(x)=0$ преобразуется к эквивалентному виду $x = \phi(x)$. Затем, начиная с начального приближения $x_0$, строится последовательность $x_{n+1} = \phi(x_n)$. Метод сходится, если на интервале, содержащем корень, выполняется условие $|\phi'(x)| < 1$. Успех метода сильно зависит от того, как именно уравнение было приведено к виду $x = \phi(x)$.
Ответ: К основным численным методам решения уравнений относятся метод дихотомии, метод Ньютона, метод секущих и метод простой итерации.
№1.16 (с. 423)
Условие. №1.16 (с. 423)


1.16.!* Известно, что $f(x)$ и $g(x)$ — многочлены. Предположим, что у вас есть подпрограммы, позволяющие вычислить значения функций $f(x)$ и $g(x)$ в любой точке. Запишите алгоритм, который выдает промежутки знакопостоянства функции $\frac{f(x)}{g(x)}$. Будем пользоваться такими договорённостями:
1) считать нулём функции точку, в которой значение функции меньше 0,001;
2) соседние нули функции расположены на расстоянии не менее 0,1 друг от друга. Зачем нужны эти договорённости?
Решение. №1.16 (с. 423)
Запишите алгоритм, который выдаёт промежутки знакопостоянства функции $\frac{f(x)}{g(x)}$
Для нахождения промежутков знакопостоянства функции $H(x) = \frac{f(x)}{g(x)}$, необходимо сначала найти все её критические точки. Этими точками являются нули числителя $f(x)$ (нули функции $H(x)$) и нули знаменателя $g(x)$ (точки разрыва/вертикальные асимптоты). Алгоритм будет численно сканировать числовую ось для поиска этих точек.
Алгоритм состоит из следующих этапов:
1. Инициализация. Определяем параметры для поиска:
– Диапазон поиска: от $X_{min}$ до $X_{max}$ (например, от -1000 до 1000).
– Шаг сканирования: $h$. Шаг должен быть меньше минимального расстояния между нулями, чтобы не пропустить их. Согласно условию 2, выберем $h < 0,1$, например, $h = 0,01$.
– Создаем пустой список для хранения критических точек: `critical_points`.
2. Поиск критических точек.
– Начинаем цикл, в котором переменная $x$ изменяется от $X_{min}$ до $X_{max}$ с шагом $h$.
– На каждом шаге проверяем, является ли текущая точка $x$ "нулём" для $f(x)$ или $g(x)$, используя договорённость 1: проверяем условия $|f(x)| < 0,001$ или $|g(x)| < 0,001$.
– Если одно из условий выполнено, значит, мы нашли критическую точку. Добавляем значение $x$ в список `critical_points`.
– Чтобы не добавлять несколько очень близких точек, соответствующих одному и тому же нулю (из-за того, что условие $|f(x)| < 0,001$ может выполняться на целом небольшом интервале), используем договорённость 2: после нахождения критической точки $x$ увеличиваем её значение на $0,1$ ($x = x + 0,1$) и продолжаем сканирование с этой новой позиции. Это гарантирует, что следующая найденная точка будет находиться на расстоянии не менее $0,1$.
3. Формирование промежутков и определение знака.
– После завершения сканирования сортируем список `critical_points` по возрастанию. Пусть отсортированные точки это $z_1, z_2, \ldots, z_n$.
– Эти точки разбивают числовую ось (или наш диапазон $[X_{min}, X_{max}]$) на промежутки: $(X_{min}, z_1), (z_1, z_2), \ldots, (z_n, X_{max})$.
– Для каждого промежутка $(z_i, z_{i+1})$ выбираем пробную точку $x_{probe}$ (например, середину интервала $x_{probe} = (z_i + z_{i+1}) / 2$).
– Вычисляем знак функции $H(x)$ в этой точке: $sign(H(x_{probe})) = sign(\frac{f(x_{probe})}{g(x_{probe})})$.
– Выводим результат: промежуток и знак функции на нём (+ или -).
Ответ: Вышеописанный алгоритм позволяет численно найти критические точки функции $H(x)$ и, на их основе, определить и вывести промежутки, на которых функция сохраняет свой знак.
Зачем нужны эти договорённости?
Эти договорённости (условия) являются ключевыми для того, чтобы алгоритм, основанный на численных методах, мог корректно и эффективно работать в реальных условиях вычислений на компьютере.
1. Считать нулём функции точку, в которой значение функции меньше 0,001.
Эта договорённость вводит понятие допустимой погрешности (или эпсилон-окрестности нуля). При работе с вещественными числами на компьютере (числами с плавающей запятой) практически невозможно получить точное значение, равное нулю. Например, корень уравнения $x^2 - 2 = 0$ равен $\sqrt{2}$, что является иррациональным числом. Компьютер может найти лишь его приближение, при подстановке которого в функцию результат будет очень близок к нулю (например, $10^{-15}$), но не равен ему в точности. Данное условие позволяет считать такие точки "нулями" и делает задачу решаемой численными методами.
2. Соседние нули функции расположены на расстоянии не менее 0,1 друг от друга.
Эта договорённость решает две проблемы:
a) Гарантия обнаружения. Она позволяет выбрать конечный шаг сканирования $h$. Зная, что между нулями есть минимальное расстояние, мы можем выбрать шаг $h$ меньше этого расстояния (например, $h=0,01$) и быть уверенными, что наш алгоритм не "перепрыгнет" через корень, не заметив его. Без этого условия нули могли бы находиться сколь угодно близко, и для их нахождения потребовался бы бесконечно малый шаг, что делает алгоритм невыполнимым.
b) Устранение дубликатов. Из-за первой договорённости "нулём" считается не одна точка, а целый небольшой интервал вокруг истинного корня. Данное условие позволяет нам, найдя первую точку в этом интервале, считать корень найденным и "перепрыгнуть" через остальную часть этого интервала (на 0,1), чтобы не добавлять в список критических точек множество почти одинаковых значений, относящихся к одному и тому же корню. Это делает алгоритм более эффективным и результат — более чистым.
Ответ: Данные договорённости необходимы для адаптации математической задачи к реалиям компьютерных вычислений: первая вводит допустимую погрешность для нахождения корней, а вторая гарантирует, что алгоритм с конечным шагом сможет эти корни найти и не будет дублировать их.
Помогло решение? Оставьте отзыв в комментариях ниже.