Калькулятор на MATLAB: от простых вычислений до собственного приложения

Команда 2+3*4, введённая в командное окно MATLAB, сразу возвращает результат 14 — среда вычисляет выражение по стандартным правилам приоритета операций, и это самый быстрый способ использовать MATLAB как калькулятор. Однако возможности среды намного шире: от инженерных расчётов с матрицами до создания собственного калькулятора с графическим интерфейсом в App Designer.

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

MATLAB как настольный калькулятор: базовые операции

Командное окно (Command Window) — это интерактивная строка, куда вводятся выражения. MATLAB поддерживает стандартные арифметические операторы: +, -, *, /, а также возведение в степень через ^. Скобки работают так же, как в обычной математике.

Результат последнего вычисления автоматически сохраняется в переменной ans, если вы не присвоили его другой переменной. Это удобно для цепочек вычислений: можно ссылаться на предыдущий ответ без повторного ввода числа.

sqrt(144) + log(10)

ans = 14.3026

Для более сложных расчётов доступны встроенные математические функции:

  • 🔢 sqrt(x) — квадратный корень, abs(x) — модуль числа;
  • 📐 sin(x), cos(x), tan(x) — тригонометрия в радианах;
  • 📊 log(x) — натуральный логарифм, log10(x) — десятичный;
  • 🔄 round(x), floor(x), ceil(x) — округление в разных режимах.

Форматы вывода чисел

По умолчанию MATLAB отображает числа с четырьмя знаками после запятой (формат short). Если нужна большая точность отображения, введите команду format long — будет показано больше значащих цифр. Важно понимать: формат влияет только на отображение, а не на точность внутренних вычислений — MATLAB всегда считает с двойной точностью.

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

КомандаНазначениеПример результата
format short4 знака после запятой3.1416
format longрасширенная точность вывода3.141592653589793
format bankденежный формат, 2 знака3.14
format compactубирает пустые строки в выводе

Работа с переменными и выражениями

Переменные создаются простым присваиванием: x = 5. Имя должно начинаться с буквы и может содержать буквы, цифры и подчёркивания. MATLAB различает регистр: Price и price — разные переменные.

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

a = 12;

b = 7;

result = (a^2 + b^2) / (a - b)

⚠️ Внимание: если вы случайно перезапишете встроенную функцию, назвав переменную, например, sum, одноимённая функция перестанет работать, пока вы не очистите переменную командой clear sum. Это частая причина «непонятных» ошибок у новичков.
📊 Как вы чаще всего используете MATLAB?
Быстрые вычисления в командном окне
Написание скриптов и функций
Создание приложений в App Designer
Учебные лабораторные работы

Создание калькулятора в App Designer

App Designer — встроенная среда MATLAB для создания приложений с графическим интерфейсом. Она открывается командой appdesigner в командном окне или через вкладку Apps. Визуальный редактор позволяет перетаскивать кнопки, поля ввода и метки на форму, а логика прописывается в колбэках (функциях обратного вызова).

Минимальный калькулятор обычно включает поле отображения результата (Edit Field), кнопки цифр и операций, а также кнопку «равно». Логика обработки нажатий строится на накоплении строки выражения и последующем её вычислении.

☑️ Этапы создания калькулятора в App Designer

Выполнено: 0 / 6

Для кнопки «равно» типичный подход — взять текст из поля ввода и вычислить его. На практике часто используют функцию str2double для простых выражений или парсинг строки для более сложных. Обработку ошибок ввода стоит предусмотреть заранее: пользователь может ввести некорректное выражение.

function EqualsButtonPushed(app, event)

expr = app.DisplayField.Value;

try

app.DisplayField.Value = num2str(eval(expr));

catch

app.DisplayField.Value = 'Ошибка';

end

end

⚠️ Внимание: функция eval выполняет любой введённый код, включая потенциально опасные команды. Если калькулятором будут пользоваться другие люди, безопаснее реализовать собственный парсер выражений, который принимает только числа и арифметические операторы.

Альтернативные способы: скрипт-калькулятор

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

a = input('Введите первое число: ');

op = input('Операция (+ - * /): ', 's');

b = input('Введите второе число: ');

switch op

case '+', r = a + b;

case '-', r = a - b;

case '', r = a b;

case '/'

if b == 0

disp('Деление на ноль невозможно');

return;

end

r = a / b;

otherwise

disp('Неизвестная операция');

return;

end

disp(['Результат: ', num2str(r)]);

Конструкция switch здесь удобнее цепочки if-else: она наглядно сопоставляет символ операции с действием. Обратите внимание на проверку деления на ноль — без неё MATLAB выдаст Inf вместо понятного сообщения.

Типичные ошибки и их решение

Начинающие пользователи MATLAB при создании калькуляторов сталкиваются с повторяющимися проблемами. Большинство из них связаны с типами данных и синтаксисом.

  • ❗ Ошибка Undefined function or variable — проверьте имя переменной и регистр букв, MATLAB чувствителен к регистру;
  • 🧮 Неверный результат при вводе из поля — данные из Edit Field приходят как строка, преобразуйте их через str2double;
  • 🔁 Колбэк кнопки не срабатывает — убедитесь, что функция привязана к событию ButtonPushed в свойствах компонента;
  • 📏 Матричные операции вместо поэлементных — для поэлементных вычислений используйте операторы с точкой: .*, ./, .^.

Если приложение в App Designer ведёт себя непредсказуемо, проверьте области видимости: переменные, нужные в нескольких колбэках, должны быть объявлены как свойства приложения (через раздел properties), а не как локальные переменные внутри одной функции.

Почему 0.1 + 0.2 не равно точно 0.3 в MATLAB

MATLAB использует двоичную арифметику с плавающей точкой (double). Числа 0.1 и 0.2 не представляются точно в двоичном виде, поэтому их сумма даёт результат вроде 0.30000000000000004. Для сравнения таких чисел используйте проверку с допуском, например abs(a - b) < 1e-10, вместо строгого равенства.

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

Можно ли использовать MATLAB как обычный калькулятор без программирования?

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

Чем App Designer отличается от GUIDE?

GUIDE — устаревший инструмент создания интерфейсов в MATLAB. MathWorks рекомендует использовать App Designer для новых проектов: он предлагает современные компоненты и более удобную структуру кода. В новых версиях MATLAB поддержка GUIDE постепенно сворачивается.

Как добавить в калькулятор память (M+, MR)?

Объявите свойство приложения, например app.Memory, в разделе properties. Кнопка M+ будет прибавлять текущее значение к этой переменной, а MR — подставлять сохранённое число в поле ввода.

Почему eval считается плохой практикой?

Функция eval исполняет произвольный код из строки, что создаёт риски безопасности и затрудняет отладку. Для учебного калькулятора это допустимо, но в приложениях для других пользователей лучше написать собственный разбор выражения, ограниченный числами и операторами.

Есть ли бесплатная альтернатива MATLAB для таких задач?

Да, GNU Octave — свободная среда с синтаксисом, во многом совместимым с MATLAB. Простые скрипты-калькуляторы обычно работают в ней без изменений, хотя App Designer там отсутствует.