Графический калькулятор

График показывает поведение функции целиком: где она пересекает ось, где сравнивается со второй кривой и как меняется от коэффициентов. Калькулятор строит график по вашему выражению, ищет нули, точки пересечения и локальные экстремумы, а точку на кривой можно двигать и читать f(x), g(x) и их разность.

Функции и параметры

Запишите функцию от x. Допустимы числа, x, параметры a, b, c, знаки + − * / ^, скобки и функции sin, cos, tan, asin, acos, atan, sqrt, abs, exp, ln, log, а также pi и e. Пустое поле считается ошибкой, а не нулём.

Степень записывают как x^3. Умножение — звёздочкой: 3*x.

Пересечения f(x) = g(x) отмечены на графике и посчитаны ниже.

Готовые функции

График

—

Колесо мыши меняет масштаб, перетаскивание сдвигает окно. С клавиатуры: стрелки сдвигают, «+» и «−» масштабируют, «0» возвращает исходное окно.

График функции f(x) и второй функции g(x) Координатные оси с подписями делений, красная кривая f(x), голубая кривая g(x), отмеченные нули и точки пересечения, вертикаль курсора.
—

Точка и найденные значения

f(x₀)
—
g(x₀)
—
f(x₀) − g(x₀)
—
Нули f(x) в окне
—
Пересечения f(x) = g(x)
—
Локальные экстремумы
—

Нули и пересечения ищутся по смене знака на выборке из N интервалов (ползунок в опыте ниже, по умолчанию 1000) и уточняются делением отрезка. Экстремумы уточняются по трём соседним точкам выборки. Совпадающие точки показываются один раз.

Опыт: хватает ли выборки

Число нулей зависит от того, как часто вы смотрите на функцию. Уменьшите выборку и посмотрите, сколько нулей останется у быстрых колебаний.

Найденные нули f(x) при разной плотности выборки
NНулейПервые нули

—

Что считает калькулятор

Калькулятор строит график функции, которую вы записали сами, и отвечает на вопросы, которые обычно задают по картинке: где кривая пересекает ось x, где она встречается со второй функцией, где у неё локальные максимумы и минимумы, чему равно значение в выбранной точке. Рядом с графиком стоит точка x₀: её можно двигать ползунком и смотреть, как меняются f(x₀), g(x₀) и их разность.

Под графиком перечислены найденные нули, точки пересечения и экстремумы, и каждое из этих чисел можно проверить подстановкой. Окно по вертикали подбирается по значениям функции в видимой части.

Как записать функцию

В поле f(x) вводится выражение от x. Кроме x доступны параметры a, b и c: их значения задаются ползунками ниже, и одно и то же выражение можно быстро перебрать с разными коэффициентами. Степень записывается знаком ^, умножение звёздочкой: a*x^3 + b*x + c. Скобки работают как обычно, унарный минус тоже: -x^2 читается как минус квадрат, а не как квадрат минуса.

Из функций поддерживаются sin, cos, tan, asin, acos, atan, sqrt, abs, exp, ln и log. Логарифм log десятичный, ln натуральный. Числа π и e записываются как pi и e. Неявное умножение допускается в простых случаях: 2x, 3(x+1), 2sin(x) разбираются правильно, но привычку ставить звёздочку лучше сохранить, потому что xy будет ошибкой: двухбуквенных имён в выражении нет.

Пустое поле, незакрытая скобка, неизвестное имя функции или знак в конце выражения дают сообщение об ошибке под полем. Прежний график при этом остаётся на месте, чтобы не терять результат из-за случайной опечатки, но подпись под графиком прямо говорит, что показан прежний расчёт.

Вторая функция g(x) включается галочкой сравнения. Она рисуется голубой пунктирной линией, и на графике отмечаются точки, где f(x) = g(x).

Как получается результат

Кривая строится по выборке: окно по x делится на N интервалов, в каждой точке вычисляется значение функции, соседние точки соединяются отрезками. Для рисунка берётся 1000 интервалов, этого хватает, чтобы линия выглядела гладкой. Точки, где функция не определена, разрывают линию: у 1/x получаются два отдельных куска вместо вертикальной черты через ноль.

Нули ищутся по смене знака. Если на соседних точках значения разного знака, между ними есть корень, и калькулятор уточняет его делением отрезка пополам: 80 итераций уменьшают отрезок настолько, что дальше уже не позволяет точность чисел двойной записи. Найденный корень дополнительно проверяется значением функции: у полюса вроде 1/x около нуля знак тоже меняется, но значение там не близко к нулю, и такая точка корнем не считается. Совпадающие корни, попавшие в допуск (xmax − xmin)·10⁻⁶, показываются один раз.

Экстремумы ищутся по трём соседним точкам выборки: если функция росла и начала падать, между ними локальный максимум, если падала и начала расти, минимум. Положение вершины уточняется по параболе, проведённой через эти три точки, поэтому для x³ − 3x на экране видно (−1; 2) и (1; −2), а не приблизительные значения с шага сетки.

Вертикальное окно подбирается по значениям в видимой части: берётся минимум и максимум выборки, добавляется запас 4% с каждой стороны, затем границы расширяются до целых делений. Шаг делений выбирается из ряда 1, 2, 2,5, 5, 10 с нужным множителем, чтобы подписи не слипались. Для кубической функции на отрезке от −3 до 3 получается окно от −20 до 20 с шагом 5.

Пример, который можно повторить

Откройте страницу: в поле f(x) стоит a*x^3 + b*x + c, ползунки дают a = 1, b = −3, c = 0, то есть f(x) = x³ − 3x. Вторая функция g(x) = 0,5x включена, окно по x от −3 до 3.

Нули функции: −1,732, 0 и 1,732. Проверка подстановкой: (√3)³ − 3√3 = 3√3 − 3√3 = 0. Локальный максимум в точке (−1; 2), минимум в (1; −2): производная 3x² − 3 обращается в ноль при x = ±1, а значения там 1 − 3 = −2 и −1 + 3 = 2.

Возьмите x₀ = 2. На экране f(2) = 8 − 6 = 2, g(2) = 1, разность 1. Точка на графике стоит выше голубой линии, и это видно без вычислений.

Пересечения двух функций дают −1,871, 0 и 1,871. Это корни уравнения x³ − 3x = 0,5x, то есть x(x² − 3,5) = 0, откуда x = 0 и x = ±√3,5 ≈ ±1,8708.

Опыт с плотностью выборки

Ползунок N в последней панели задаёт, на сколько интервалов делится окно при поиске нулей, пересечений и экстремумов. На кубической функции число нулей от N не зависит: три корня находятся и при 20, и при 1000 интервалах.

Другое дело быстрые колебания. Выберите готовую функцию «быстрые колебания», это sin(20x). На отрезке от −3 до 3 у неё 39 нулей: это kπ/20 при целом k от −19 до 19. При N = 40 и N = 1000 калькулятор находит все 39. А при N = 20 шаг выборки равен 0,3, что почти совпадает с периодом 0,314, поэтому колебания попадают почти в одну фазу и находится один ноль из 39.

Так ведёт себя любой график, построенный по точкам: чем быстрее меняется функция, тем плотнее нужна выборка. Поэтому в таблице опыта рядом стоят три значения N и разница между ними видна сразу.

Где модель останавливается

Калькулятор работает с действительными числами и не ищет комплексные корни. Касание оси без смены знака может остаться незамеченным: у x² на отрезке от −1 до 1 ноль есть, но при 1000 интервалах он попадает ровно в точку выборки и находится, а при 999 интервалах функция касается нуля между точками и смены знака не происходит.

Вертикальные асимптоты не размечаются, разрыв просто разрывает линию. Экстремум ищется только локальный и только там, где он виден на выборке: очень узкий пик между двумя точками останется незамеченным. Значения у краёв экрана не считаются экстремумами, даже если функция там самая большая.

Масштаб ограничен: ширина и высота окна держатся в пределах от 10⁻⁶ до 10⁹, дальше кнопки зума перестают действовать. Это защита от того, чтобы случайное вращение колеса не увелило график в пустоту.

Ещё одно ограничение связано с записью выражения. Степень вычисляется через возведение в степень с плавающей точкой, поэтому x^3 при отрицательном x считается правильно, а выражение вроде x^0,5 при отрицательном x даёт не число, и такая точка просто не рисуется. Запись sqrt(x) ведёт себя так же.

Калькулятор не строит графики в полярных координатах, не работает с параметрическими кривыми и не показывает производную как отдельную функцию. Для касательной и секущей есть отдельный калькулятор производной, для площади под кривой отдельный калькулятор интеграла.