Перейти к содержимому

Научный калькулятор: степени, корни и тригонометрия

Онлайн-научный калькулятор со степенями, корнями, логарифмами и ln, синусом, косинусом и тангенсом в градусах или радианах, факториалами, процентами и памятью.

Scientific Calculator

Evaluates a typed or tapped expression with the usual order of operations, including powers, roots, logarithms, trigonometry and factorials.

Use + - * / for arithmetic, ^ for powers, ! for factorial and % for percent.

Type an expression or use the keypad to see a result.

Keypad

How this calculator reads an expression

Percent divides by 100 wherever it appears, so 100+10% is 100.1, not 110. Powers group from the right: 2^3^2 is 2^9, which is 512. A minus sign in front of a power is applied last, so -2^2 is -4. Two things written side by side are multiplied, and that multiplication ranks with division, so both are read left to right: 1/2pi means (1/2) times pi, and 6/2(1+2) is 9. Some scientific calculators read 1/2pi the other way, as 1/(2 times pi), so use brackets when the meaning matters. In Degrees mode the tangent is refused at 90 degrees and every odd multiple of it, because it has no value there.

History

No calculations yet. Press = to add one.

Калькулятор загрузки...
📚

Документация

Научный калькулятор

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

Что делает калькулятор

Выражение вводят в поле «Выражение» или составляют с помощью клавиатуры. Калькулятор считывает его сразу после изменения, поэтому для просмотра ответа не нужна клавиша равенства. Клавиша = вместо этого добавляет вычисление в список истории.

Он принимает:

  • цифры, десятичную точку и числа в экспоненциальной форме, например 1.5e-3;
  • операторы +, -, *, / и ^ (возведение в степень), а также скобки;
  • константы pi и e;
  • функции sin, cos, tan, asin, acos, atan, log, ln, sqrt и cbrt;
  • постфиксные знаки ! (факториал) и % (процент).

Символы клавиатуры преобразуются в обычные эквиваленты, поэтому ×, ÷, и π означают то же, что *, /, - и pi.

log — логарифм по основанию 10, а ln — натуральный логарифм по основанию e. Именно такие обозначения используются на научных калькуляторах TI и Casio и в Цифровой библиотеке математических функций NIST, в разделе 4,2.

Порядок операций

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

1expression := term (('+' | '-') term)*
2term       := unary (('*' | '/' | juxtaposition) unary)*
3unary      := ('-' | '+') unary | power
4power      := postfix ('^' unary)?
5postfix    := primary ('!' | '%')*
6primary    := number | constant | name '(' expression ')' | '(' expression ')'
7

В виде списка, от выполняемого первым к выполняемому последним:

  1. всё, что находится внутри скобок, и функция, применённая к скобкам;
  2. ! и %;
  3. ^;
  4. начальный знак - или +;
  5. *, / и два элемента, записанные рядом;
  6. + и -.

Эти правила соответствуют стандарту ISO 80000-2:2019 и статье «Порядок операций» в Википедии:

ЗаписьЧитается какЗначение
2^3^22^(3^2)512
-2^2-(2^2)-4
2^-22^(-2)0,25
2^3!2^(3!)64
100+10%100 + (10/100)100,1
1/2pi(1/2) * pi1,57079632679
6/2(1+2)(6/2) * (1+2)9

Два числа или имени, записанные рядом, перемножаются, поэтому работают выражения 2pi, 2(3+4) и 3sin(30). Это неявное умножение имеет тот же приоритет, что * и /, поэтому соседние элементы и деление читаются слева направо. Многие портативные научные калькуляторы задают для неявного умножения более высокий приоритет, читая 1/2pi как 1/(2*pi), что даёт другой ответ. Различие описано в Википедии в статье «Способы ввода в калькуляторах». В случаях, где это важно, используются скобки.

% делит на 100 в любом месте выражения. Поэтому 20% — это 0,2, а 200*15% — 30. Это не клавиша «процент от текущей суммы» на кассовом аппарате и не оператор остатка от деления.

Пример расчёта

Выражение sin(30)+2^3*ln(4) в режиме градусов вычисляется в следующем порядке:

  1. sin(30) равно 0,5, поскольку 30 градусов — это половина прямого угла, а его синус равен одной второй.
  2. 2^3 равно 8. Возведение в степень выполняется до умножения.
  3. ln(4) равно 1,38629436112.
  4. 8 * 1.38629436112 равно 11,090354889.
  5. 0.5 + 11.090354889 равно 11,590354889.

Калькулятор показывает 11,590354889.

Второй пример показывает правило вычисления слева направо. В выражении 6/2(1+2) сначала вычисляются скобки, что даёт 6/2*3. Деление и неявное умножение имеют одинаковый приоритет, поэтому сначала выполняется деление: 6/2 равно 3, а 3*3 равно 9.

Градусы и радианы

Настройка единицы угла определяет, как sin, cos и tan интерпретируют входное значение и в каких единицах asin, acos и atan возвращают результат. В режиме градусов полный оборот равен 360. В режиме радиан полный оборот равен 2pi, то есть примерно 6,28318530718. Одно и то же выражение в этих режимах может давать совершенно разные ответы: sin(30) равно 0,5 в режиме градусов и -0,988031624093 в режиме радиан.

Как хранятся и отображаются числа

Каждое значение представляет собой число двойной точности IEEE 754 binary64 — числовой тип, описанный в ECMA-262, спецификации языка ECMAScript, разделе 6.1.6.1. Число двойной точности хранит примерно от 15 до 17 десятичных цифр. Для отображения на экране ответ однократно округляется до 12 значащих цифр. Значения меньше 0,000001 или равные 1 000 000 000 000 и больше отображаются в экспоненциальной форме, поэтому 0.0000001 означает 1E-7.

Сохранённое число сохраняет полную точность. В памяти хранится точный результат, а не 12 цифр на экране, и MR вставляет обратно самый короткий текст, который читается как то же число. Отрицательное значение из памяти вставляется в скобках, поэтому после 2 оно читается как умножение, а не как вычитание.

Округление никогда не используется для принятия решений. Крошечный остаток от предыдущих вычислений является действительным числом и обрабатывается как таковое. 0.1*3-0.3 в двоичной системе не равен нулю; он составляет примерно 5,55111512313E-17, поэтому 5/(0.1*3-0.3) даёт 9,00719925474E16, а не сообщение о делении на ноль.

По той же причине sin(180) в режиме градусов показывает 1,22464679915E-16, а не 0. Погрешность составляет примерно одну стотысячную миллиардной миллиардной долю и остаётся настолько малой. Исключением является тангенс; он рассматривается ниже.

Что калькулятор отклоняет

Калькулятор показывает сообщение вместо ответа, если:

  • знаменатель в точности равен нулю, включая записанное число, слишком малое для числа двойной точности, например 1e-400, которое уже становится нулём при считывании;
  • функции sqrt передано отрицательное число;
  • функции log или ln передано число, не превышающее ноль;
  • функции asin или acos передано число вне диапазона от -1 до 1, указанного в разделе 4,14 NIST DLMF;
  • tan используется при 90 градусах или любом нечётном кратном этого значения, где функция не имеет значения;
  • факториал запрашивается для числа, не являющегося целым числом от 0 до 170;
  • число содержит вторую десятичную точку, например 1.2.3;
  • выражение длиннее 512 символов.

Ограничение 170 связано с типом чисел, а не с предпочтениями: факториал 170 примерно равен 7,25741561531E306 и всё ещё помещается в число двойной точности, а факториал 171 — уже нет. Ограничение в 512 символов проверяется в коде, поскольку именно длина выражения определяет объём работы калькулятора.

Перед проверкой тангенса угол округляется до 9 знаков после десятичной точки. Это возвращает погрешность от предыдущих вычислений к точной асимптоте ценой окна отказа шириной около 5e-10 градусов с каждой стороны. tan(89.9999999994) возвращает 95 493 592 025, а tan(89.9999999995) отклоняется. В режиме радиан такая проверка не выполняется, поскольку введённое значение в радианах около половины числа pi — это просто ещё одно число, не имеющее особого статуса.

Часто задаваемые вопросы

Что здесь делает клавиша %? Она делит на 100 в любом месте выражения. 100+10% равно 100,1, поскольку означает 100 плюс 0,1. Процент не вычисляется от всего, что стояло перед ним.

2^3^2 равно 64 или 512? 512. Степени группируются справа, поэтому выражение означает 2^(3^2), то есть 2^9. Это соответствует стандарту ISO 80000-2:2019.

Почему 6/2(1+2) равно 9, а не 1? Неявное умножение имеет тот же приоритет, что и деление, а операции с одинаковым приоритетом читаются слева направо. Калькуляторы, задающие для соседних элементов более высокий приоритет, дают ответ 1. Скобки устраняют неоднозначность.

Почему sin(180) не показывает 0? Потому что сначала 180 градусов преобразуются в радианы, а число pi нельзя точно записать в двоичной системе. Ответ составляет примерно 1.2e-16 — это истинное значение синуса числа, фактически использованного машиной.

Чем отличаются log и ln? log имеет основание 10, поэтому log(1000) равно 3. ln имеет основание e, поэтому ln(e) равно 1. Обозначения на клавиатуре соответствуют той же традиции, что и на научных калькуляторах TI и Casio.

Почему факториал больше 170 отклоняется? Факториал 171 больше любого числа, которое может храниться в числе двойной точности, поэтому результатом была бы бесконечность, а не число. Калькулятор сообщает об этом вместо вывода бессмысленного результата.

Источники

  • IEEE 754-2019, стандарт IEEE для арифметики с плавающей точкой.
  • ECMA-262, спецификация языка ECMAScript, раздел 6.1.6.1, «Тип Number».
  • ISO 80000-2:2019, «Величины и единицы», часть 2: математические знаки и символы.
  • Цифровая библиотека математических функций NIST, разделы 4,2 и 4,14.
  • Википедия, «Порядок операций».
  • Википедия, «Способы ввода в калькуляторах».