Физический калькулятор
Данная программа представляет собой интерпретатор специального языка для задания математических выражений. Поддерживаются следующие функции:
- Арифметические операции с числами с плавающей точкой
- Поддержка переменных и функций
- Предопределенные математические и физические константы (π, e, k, g...) и функции (sin, log, arcsin...)
- Вычисление с учетом погрешностей в линейном приближении (5,1±0,3)
- Вычисление с векторами (поточечное применение любых числовых операций, и предопределенные функции для работы с целыми векторами)
- Функция загрузки программ из файла
- Загрузка данных из файла CSV
- Управление через консоль
Комманды
def
def var-name = expression-value def func-name([arg1[, ...] ]) = expression-value Example: def x=100 def len(x,y) = x^2 + y^2
Команда определяет новую переменную или функцию. Если объект с таким именем уже существует, возникает ошибка.
undef
undef name
Удаляет определение объекта name
.
eval
eval expression
Вычисляет значение выражения. Результат печатает в консоль. Не влияет на определенные переменные или функции.
print name
Печатает определение объекта name
.
help
Печатает справку по командам в консоль.
exit
Выход из программы.
load
load file-path
Загружает программу из файла file-path
и импортировать символы из нее.
csv-load
csv-load file-path var1[,var2[, ...]] Example: csv-load data1.csv id,x,y
Загружает CSV файл в переменные (вектора).
file-path
не должен содержать пробелов.
Переменные, в которые будут загружены вектора значений соответсвующих столбцов CSV-файла,
перечисляются через запятую без пробелов.
Пример:
csv-load data1.csv id,x,y
Содержимое файла data1.csv
:
1,2.0,20.0 2,3.0,30.0 3,4.0,41.0
Результат:
eval id {1,2,3} eval x {2,3,4} eval y {20,30,41}
Язык
Основы. Математические выражения записываются в инфиксной нотации. Для управления приоритетом опреаций используются круглые скобки. Аргументы при вызове функции передаются в круглый скобках через запятую.
4+5*(3+1) Sin(x)
Арифметические операции. Приоритеты.
Приоритет | Знак | Операция |
4 | ^ | степень |
3 | * | умножение |
/ | деление | |
2 | + | сложение |
- | вычитание | |
1 | = | присвоение |
Запись чисел
Число без погрешностей записывается десятичной записью с использованием точки
(3.14159265
), возможно с использованием экспоненциальной формы
(6.02e+23
). Для записи погрешностей используются два знака
'
— для абсолютной погрешности, и
~
— для относительной погрешности (0.01
означает погрешность 1 %)
(например, 3.142'0.001
, 3.142~0.01
).
При указании погрешности в экспоненциальной форме, e
пишется после указания погрешности
(например, 6.02'0.01e+23
).
Определения переменных и функций, например:
x = 1.5 y = x + 2.0 len(x,y) = Sqrt( x*x + y*y )
Встроенные константы
Обозначение | Название | Значение | Единицы |
_PI | Число π | 3.14159265358979323846 | |
_E | Число e | 2.71828182845904523536 | |
_c | Скорость света | 299792458 | м/с |
_g | Гравитационное ускорение | 9.80665 | м/с |
_G | Гравитационная постоянная | 6.67384·10−11 | Н·м2·кг−2 |
_Vm | Молярный объем ид. газа | 2.24141·10−2 | м3·моль−1 |
_NA | Число Авогадро | 6.02214078·1023 | моль−1 |
_e | Заряд электрона | 1.60217656535·10−19 | Кл |
_me | Масса электрона | 9.1093829140·10−31 | кг |
_mp | Масса протона | 1.67262177774·10−27 | кг |
_h | Постоянная Планка | 6.6260692729·10−34 | Дж·с |
_k | Постоянная Больцмана | 1.380648813·10−23 | Дж·К−1 |
Встроенные функции
Вызов | Название | Описание |
Sqrt(x) | Квадратный корень | |
Abs(x) | Модуль числа | |
Log(x) | Натуральный логарифм | |
Exp(x) | Экспонента | |
Sin(x) | Синус | Аргумент в радианах |
Cos(x) | Косинус | Аргумент в радианах |
Tan(x) | Тангенс | Аргумент в радианах |
ArcSin(x) | Арсинус | Результат в радианах |
ArcCos(x) | Арккосинус | Результат в радианах |
ArcTan(x) | Арктангенс | Результат в радианах |
ArcTan2(y,x) | Арктангенс | =ArcTan(y/x), с сохранением четверти |
Mean(x) | Среднее арифм. | Ошибка считает как стандартное отколонение |
Average(x) | Среднее арифм. | Погрешность считает, как средняя погрешность элементов вектора |
Length(x) | Длина вектора | Возвращает число элементов в векторе |
Sum(x) | Сумма | Сумма элементов вектора |
Dot(x,y) | Скалярное произведение | |
Norm(x) | Эвклидова норма вектора |