Уважаемые пользователи! Для корректности вычислений рекомендуем
использовать браузеры следующих типов: Google Chrome, Opera и FireFox.
К сожалению, популярные браузеры Internet Explorer и Microsoft Edge часто
работают не корректно. Калькулятор разработан полностью на Google Chrome.
Калькулятор КАН. Инструкция пользователя
Как пользоваться
Операции
Выражения
Представление чисел
Функции
Встроенные константы
Вычисление с переменными
Вывод значений переменных. Оператор val()
Формат выводимых чисел. Оператор format()
Массивы
Комплексные числа
Циклы
Оператор запрета вывода таблицы - noTab
Графики
Условный оператор
Логические выражения
Пользовательские функции
Отладка программы. Оператор stop
Матрицы и вектора
Комментарии
Сохранение программы и результатов расчёта
Сводка операторов калькулятора КАН
Данный калькулятор представляет собой сочетание редактора текста и калькулятора.
В отличие от традиционных калькуляторов он позволяет вводить сложные числовые выражения,
выражения с переменными, а также текстовые пояснения. С его помощью можно выполнять циклические программы.
Поддерживаются действия над комплексными числами и матрицами. Калькулятор КАН можно также рассматривать
как удобную среду программирования для решения типовых задач в математике, физике и в технических науках.
Программу и результаты вычислений можно скопировать в редактор Word, сохранить и, при необходимости, скопировать
обратно в окно калькулятора и продолжить вычисления.
Калькулятор постоянно совершенствуется. Последняя версия выкладывается на сайте калькулятор.нехаев.рф.
Как пользоваться
В простейшем случае введите числовое выражение и знак "=". Затем кнопку "Вычислить".
Например, ввести выражение:
2+3=
и нажать кнопку "Вычислить".
В выражении допустимы пробелы. Признаком окончания выражения является знак "=",
после которого на данной строке не должно быть никаких символов, кроме возможных
комментариев, отделяемых от выражения точкой с запятой.
2+3 = ; по идее должно получиться 5, хотя, кто его знает?
Операции
+ сложение
- вычитание
/ деление
* умножение
^ возведение в степень
Выражения
Пример простых выражений
2+3=
20/3=
Виды выражений
1. Выражение вида
2 + 3 + ... =
называется выражением арифметического типа. Оно должно заканчиваться знаком "=" ,
за которым может следовать комментарий. Действие калькулятора сводятся к вычислению
данного выражения и выдачи результата после знака равно. В выражении допустимо
использование переменных, значение которых должно быть присвоено ранее (т.е. выше по тексту программы).
Например:
x = 3
y = 7
2 + x + y =
Другие примеры выражений арифметического типа:
3 + 3^2 - sin(30) =
1 + lg(10)/2 =
cos(30 + x) =
exp(-x/y) =
Во всех случаях переменные в выражении должны быть определены ранее.
В тригонометрических функциях не забываем устанавливать опции:
"Угол градусах" либо "Угол в радианах".
2. Выражение вида
x = 2 + 3
называется выражением присвоения. Действие калькулятора сводятся к вычислению выражения стоящего
справа от знака равно и присвоению полученного значения переменной, стоящей слева от знака равно.
Например, выражение x = x + 1 означает, что значение переменной в правой части увеличивается на 1 и
новое значение присваивается этой же переменной.
Примеры выражения присвоения:
y1 = 3 + 3^2 - sin(30)
x = 1 + lg(10)/2
fa1 = cos(30 + x)
переменная_на_русском_языке = exp(-x/y)
x = -x
Во всех случаях переменные, стоящие в выражении справа от знака "=" , должны быть определены ранее,
т.е. выше по тексту. Значение переменной присвоения, может быть использовано в последующих выражениях
(в этом и смысл выражения присвоения). Значения переменных, может быть просмотрено с помощью оператора
val().
Пример:
x = 2
y = x + 3
val(x, y)
Калькулятор выдаст:
x = 2
y = x + 3
val(x, y): x = 2, y = 5
В цикловых конструкциях это не работает. В этом случае оператор val() применяется для
вывода данных в таблицу, которая появится после выполнения программы.
Вместо использования оператора val() можно в конце выражения поставить второй знак равно:
x = 2
y = x + 3 =
Калькулятор выдаст:
x = 2
y = x + 3 = 5
2. Выражения вида
2 + 3 = 5 + 2 = 7 - 3 + 2= 6 ... и т.д.
называются цепочными выражениями. Т.е. к результату можно добавлять новые члены, ставить знак "=" и затем
нажимать кнопку "Вычислить". Цепочные выражения состоят из частных выражений. При изменении любого члена в любом
частном выражении, пересчитывается вся цепочка выражений. Результаты расчётов частных выражений выделяются
жирным шрифтом.
Присваивать результат расчёта цепочного выражения переменной нельзя. Т.е. выражение присвоения типа
x = 2 + 3 = 5 + 2 = 7 - 3 + 2= 6
работать не будет. Точнее калькулятор отбросит все частные выражения после второго знака "=" и присвоит
переменной x значение равное 5.
Представление чисел
Целые числа: Пример - 22345
Числа с дробной частью: Пример - 2.304
Экспоненциальное представление очень малых и очень больших чисел:
Пример - 2.1E-5 (эквивалентно 0.000021), 2.1E+5 (эквивалентно 210000)
Комплексное число типа 2 + i3 представляется в калькуляторе как 2 + !3 (см. ниже)
Функции
^ - возведение в степень. Пример: 10^0.3 - (10 в степени 0.3)
abs() - абсолютное значение числа. Пример: abs(-3) = 3
ln() - натуральный логарифм
lg() - десятичный логарифм
log(a,b) - логарифм a по основанию b
exp() - экспонента. Работает как для действительных так и комплексных аргументов.
int() - взятие целой части числа, int(2.67) = 2, int(-2.67) = -2
round() - округление числа до ближайшего целого, round(2.67) = 3, round(-2.67) = -3
sqr() - взятие квадратного корня
mod(x,y) - = sqr(x^2 + y^2), где x, y - действительные числа
modC(z) - модуль комплексного числа z = x + !y (соотв. z = x + iy)
argC(z) - угол комплексного числа z = x + !y (соотв. z = x + iy)
reC(z) - действительная часть комплексного числа
imC(z) - мнимая часть комплексного числа
parC(z1,z2) - значение параллельного сопротивления (в общем случае комплексного),
parC(z1,z2) = z1*z2/(z1 + z2)
sin() - тригонометрическая функция синус.
cos() - тригонометрическая функция косинус
tg() - тригонометрическая функция тангенс
ctg() - тригонометрическая функция котангенс
Угол в тригонометрических функциях можно представлять как в градусах, так и в радианах, для
чего нужно установить соответствующую опцию на панели калькулятора (по умолчанию - в радианах).
Для перевода углов из градусов в радианы и наоборот используются выражения:
x(рад) = x(град)*pi/180
x(град) = x(рад)*180/pi
В калькуляторе для удобства имеются встроенные функции:
grad_to_rad() - переводит градусы в радианы
rad_to_grad() - переводит радианы в градусы
Совет. Представление угла в градусах используйте в простых, главным образом однострочных текстах;
в многострочных текстах (программах) во избежание путаницы рекомендуется иметь дело с радианами.
Обратные тригонометрические функции:
arcsin() - функция, обратная синусу
arccos() - функция, обратная косинусу
arctg() - функция, обратная тангенсу
arcсtg() - функция, обратная котангенсу
Примечание.
Обратные тригонометрические функции не однозначны:
Равенства:
arcsin(sin(x))=x,
arctg(tg(x))=x
- справедливы только для углов в интервале (-90,+90)
Равенства:
arccos(cos(x))=x,
arcctg(ctg(x))=x
- справедливы только для углов в интервале (0,180)
Более подробно по тригонометрическим функциям см. здесь
sh() - гиперболический синус
ch() - гиперболический косинус
th() - гиперболический тангенс
cth() - гиперболический котангенс
arsh() - обратный гиперболический синус
arch() - обратный гиперболический косинус
arth() - обратный гиперболический тангенс
arcth() - обратный гиперболический котангенс
Более подробно по гиперболическим функциям см. здесь
fct() - факториал. fct(n) = n! = 1*2*...*n, где n - целое неотрицательное число (0! = 1, 1! = 1, 2! = 2, 3! = 6, ...)
cmb(m,n) - число сочетаний (combinations). cmb(m,n) = n!/(m!*(n-m)!), причём m<=n
prm(m,n) - число размещений (permutations). prm(m,n) = n!/(n-m)!, причём m<=n
- здесь "!" - означает факториал.
Примеры выражений, содержащих функции
sqr(3^2 + 4^2)=
(235 + ln(2))^0.25=
sin(30) + cos(60)=
В тригонометрических функциях не забываем устанавливать опции:
"Угол градусах" либо "Угол в радианах".
Встроенные константы
В калькуляторе имеется одна встроенная константа:
pi = 3.141592653589793.
Пример: sin(pi/2)=1
в данном случае угол представлен в радианах, pi/2 соответствует 90 градусам.
Вычисление с переменными
Часто удобнее использовать выражения с символьными переменными, которые задаются
перед выражением, т.е. выше него по тексту.
Например:
x = 2
y = 3
(x - y)/(x + y)=
Здесь в числовом выражении пришлось бы дважды подставлять числовые значения переменных,
причем делать это всякий раз при использовании других значений. Имя переменной может содержать
несколько букв (латинских или кирилличных) и цифр, а также символ «_» (подчёркивание).
Первым символом должна быть буква. Регистр (строчная, либо прописная буквы) имеет значение:
X1 и x1 - это разные переменные. Последовательность строк с заданными переменными называется блоком.
В приведенном примере блок состоит из трёх строк. Если после блока имеются две пустые строки,
то все, что ниже них будет отсечено. Иными словами, в тексте программы допустимы только одиночные
пустые строки.
Вывод значений переменных. Оператор val()
Для вывода значений переменных, применяется оператор val(список_переменных).
Пример:
x = 2
y = x + 3
z = x + y
val(x, y, z): x = 2, y = 5, z = 7
val вывел через запятую значения переменных, указанных в списке.
Если оператор val() находится внутри цикла, то значения переменных выводятся в виде таблицы:
[x=1:5
y = 2*x
z = x^2
u = x^3
val(x,z,u)
]
---------------- Таблица данных ------------
стр. x z u
1 1 1 1
2 2 4 8
3 3 9 27
4 4 16 64
5 5 25 125
Максимальное количество столбцов в таблице равно 11. Поскольку первый столбец - это номера строк,
то столбцов для значений переменных максимально 10.
В цикле может быть только один оператор val(), поскольку результатом цикла является таблица,
создаваемая этим оператором. Это ограничение действует и в том случае если цикл содержит вложенные циклы.
Значения переменных, указанных в списке оператора val(), одновременно выводятся и на график ввиде
зависимостей от переменной, указанной в списке первой. Если, по каким либо причинам, нет необходимости
вывода значений той или иной переменной на график, то перед именем переменной следует установить звёздочку *.
Например, если в указанном выше примере применить val(x,*z,u), то значения переменной z на график
выводиться не будут.
Формат выводимых чисел. Оператор format()
Формат выводимых чисел - десятичный или экспоненциальный, а также число знаков после запятой задаются
опциями, расположенными под текстовым окном калькулятора. Иногда это не удобно, если часто пользоваться
какой-либо программой, для которой ранее уже найден оптимальный способ отображения чисел. Для этого
служит оператор
format()
Например, чтобы задать десятичный формат чисел с тремя знаками после запятой, оператор нужно задать в виде:
format(dec,3)
Число 33.33333333333333 отобразится в виде 33.333
Аналогично, чтобы задать экспоненциальный формат чисел с тремя знаками после запятой, оператор нужно задать в виде:
format(exp,3)
Число 33.33333333333333 отобразится в виде 3.333E+1
Оператор ставится в том месте программы, где нужно изменить формат выводимых чисел.
Массивы
Массив - это переменная с индексом. Например: A[10], x1[k], B[n,m]
Имена массивов объявляются в начале программы.
mas: список_имен_массивов
Пример:
mas: A[100], B[200] ; в квадратных скобках указывается максимальный индекс
k = 2
A[k]=2
B[4] = 3
x =A[k] + B[4] + 1 =
Индекс массива, заключенный в квадратные скобки, может быть либо целым числом,
либо переменной целого типа, либо выражением с результатом целого типа
В КАН поддерживаются также двумерные массивы типа A[n,m].
Число массивов ограничено 10-ю.
Индексы массивов могут принимать значения от 0 до максимального индекса.
Индексом массива может быть либо целое число, либо выражение, например A[i+k+j], значением которого является целое число.
Комплексные числа
Комплексное число типа 2 + i3 записывается в тексте калькулятора как 2+!3. Где символом !
(восклицательный знак) обозначена мнимая единица. Это сделано для того,
чтобы избежать коллизий в случае, если имя переменной также начинается с буквы i.
Возможна также запись комплексного числа в виде a#b, как это было принято в ранних
версиях калькулятора КАН, но лучше в новых программах этого избегать.
Например:
Следующее выражение
(2 + i3)*(3 + i2) + (3 + i5)/(1 + i2) =
в калькуляторе следует представить как:
(2 + !3)*(3 +!2) + (3 + !5)/(1 + !2) =
результат: 2.6+!12.8
Чисто мнимое число, например i2.51, следует записать как !2.51
Просто мнимую единицу, как !
1 + i, как 1 + !
Допустимы смешанные выражения типа:
2 + 2 + !3 + 2 =
где 2 + !3 - комплексное число.
Т.е. комплексные числа могут полноправно участвовать в операциях с действительными числами,
однако хорошим правилом будет заключать их в скобки
2 + (2 + !3) + 2 =
С комплексными числами допустимы стандартные арифметические операции +, -, *, /,
а также возведение в действительную степень, в том числе и дробную. Например, выражение типа:
(2 + !3)^(1/2) означает вычисление квадратного корня из комплексного числа 2 + !3.
Эквивалентная запись sqr(2 + !3).
Комплексное число может быть результатом извлечения квадратного корня из отрицательного
действительного числа.
Например:
sqr(-4)= !2
На самом деле в данном случае существуют два корня:!2 и -!2.
Калькулятор берет один из них и выдает сообщение в окне сообщений:
"!!! В строке : sqr(-4)=
при возведении в дробную степень возможен неоднозначный результат
Примечание. Квадратный корень эквивалентен возведению в степень 1/2"
Аналогичная ситуация при возведении отрицательного или комплексного числа в дробную степень.
(-4 + !2)^0.5 = 0.486+!2.058
"!!! В строке : (-4 + !2)^0.5 =
при возведении в дробную степень возможен неоднозначный результат"
Дело в том, что для дробных степеней может существовать бесконечное число корней.
КАН выбирает только один из них, а именно с индексом ноль в обобщённой формуле Муавра.
Циклы
Цикл - это повторение блока выражений с разными значениями переменных.
Применяется, например, при расчете арифметических функций.
Пример, расчета функции извлечения корня:
[x=0:5
y = sqr(x)
val(x,y)
]
Калькулятор выдаст и сам текст программы и таблицу:
x y
0 0
1 1
2 1.41421
3 1.73205
4 2
5 2.23607
График функции будет показан в графическом окне калькулятора
При желании таблицу можно скопировать в Excel (как см. ниже).
Квадратные скобки означают начало и конец цикла.
В приведенном выше примере используется цикл типа ОТ и ДО, аналог цикла for в языках программирования
Общая конструкция такого цикла:
[прм=прм1:прм2,шаг
.............
]
Где прм – переменная цикла, прм1 и прм2 – числа соответствующие пределам вычисления
(в общем случае это могут быть переменные и выражения).
Допустимы отрицательные значения. Например
x1 = 0
x2 = -5
[x= x1 : x2
y = x^2
val(x,y)
]
x y
0 0
-1 1
-2 4
-3 9
-4 16
-5 25
Переменная цикла (в данном случае x) может изменяться только на +-1
Шаг - величина приращения цикла (по умолчанию либо 1, либо -1)
Возможен другой тип цикла: цикл с выходом по условию. Оператор exit, выполняет выход из цикла.
Общая конструкция такого цикла:
[
...
{условие exit}
...
]
Для приведенного выше случая эквивалентная программа с exit
x1 = 0
x2 = -5
x = x1
[
y = x^2
val(x,y)
{x=x2 exit}
x = x - 1
]
x y
0 0
-1 1
-2 4
-3 9
-4 16
-5 25
Условие выхода из цикла может быть расположено в любом месте цикла. Таким образом,
можно реализовывать все типы циклов, принятых в различных языках программирования: for, while, loop, until, do.
Для вложенных циклов возможно использование оператора exitAll , который осуществляет
выход из всех циклов и передает управление на строку, расположенную за самой нижней закрывающей
квадратной скобкой:
[
...
[
...
{условие exitAll}
...
]
...
]
;пример вложенного цикла
[x=2:8,2
[y=1:4
z = x^2 + y
val(x,y,z)
]
]
Оператор запрета вывода таблицы - noTab
Иногда вывод таблицы не нужен. Например, когда представляет интерес только график.
Запретить вывод таблицы можно оператором:
noTab
который должен располагаться в заключительной части программы (после оператора val).
Пример:
[x=1:5
y = 2*x
z = x^2
val(x,y,z)
]
noTab
Графики
В циклической программе значения переменных могут выводиться на график, причём в том же порядке,
как они выводятся в таблицу:
Пример:
[x=1:5
y = 2*x
z = x^2
val(x,y,z)
]
---------------- Таблица данных ------------
стр. x y z
1 1 2 1
2 2 4 4
3 3 6 9
4 4 8 16
5 5 10 25
На графике эта таблица отразится следующим образом:
Первый столбец, обозначающий номера строк, на график не выводится.
Второй столбец выводится по горизонтальной оси (ось X).
Остальные столбцы выводятся в виде графиков по вертикальной оси (ось Y).
Вверху графика выводятся имена переменных с цветами, соответствующим цветам графиков.
Звездочка перед именем переменной в операторе val() запретит вывод значений этой
переменной на график. Например, если в приведенноё выше программе записать val(x,*y,z),
то значения переменной y на график выводиться не будут.
Максимальное число выводимых переменных на график ограничено 6-ю. При этом, поскольку
второй столбец соответсвует переменной выводимой на ось Х, то максимальное
число графиков равно 5.
Например, для оператора val(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10) в
таблицу будут выведены все переменные от x1 до x10, тогда как на график
будут выведены x1, x2, x3, x4, x5, x6, где x1 - отразится по оси Х.
Оператором val(x1, *x2, *x3, *x4, *x5, x6, x7, x8, x9, x10) на график будут выведены
x1, x6, x7, x8, x9, x10.
Пределы по осям X и Y определяются автоматически по максимальным и минимальным значениям
вычисляемых данных.
Диапазоны разбиваются на 10 и выводяться в виде цифр для линий сетки по шкале X и по шкале Y.
При желании (например, чтобы увидеть на графике "красивые" цифры по осям X и Y) пределы
можно задать принудительно с помощью операторов.
grafX(x_min, x_max) , шаг сетки определяется как (x_max - x_min)/10
grafY(y_min, y_max), шаг сетки определяется как (y_max - y_min)/10
Если параметры в скобках заданы в виде чисел, то эти операторы могут располагаться в любом месте программы.
Если параметры в скобках заданы в виде переменных (значение которых может изменятся по ходу программы), то
эти операторы должны располагаться в конце программы.
Существут также оператор:
noGraf
Данный оператор запрещает вывод графика и должен располагатся в заключительной части программы
(после оператора val)
Пример:
[x=1:5
y = 2*x
z = x^2
val(x,y,z)
]
noGraf
Условный оператор
Условные оператор помещается в фигурных скобках и в общем случае имеет вид
{условие
выражение1
выражение2
......
}
Если условие выполняется, выполняются все последующие выражения в фигурных скобках.
Если условие не выполняется, выполняются выражения или операторы, находящиеся после закрывающей
фигурной скобки. Причем перед закрывающей скобкой на этой же строке не должно быть ничего, кроме пробелов.
Пример:
x = 0
[
y = 1
{x<4 y = 3}
{x>=10
y = 5
}
val(x,y)
x = x + 1
{x>12 exit}
]
В примере три условных оператора. Из них первые два модифицируют переменную y. Третий - выход из цикла.
В процессе прохода цикла, переменная y примет следующие значения:
y = 3, если x меньше 4
y = 5, если x больше либо равно 10
y = 1, если x больше либо равен 4, но меньше 10
Результатом будет таблица:
x y
0 3
1 3
2 3
3 3
4 1
5 1
6 1
7 1
8 1
9 1
10 5
11 5
12 5
В данном примере применяется компактная форма условного оператора,
когда весь условный оператор расположен на одной строке.
В условном операторе применяются следующие операции сравнения:
= равно
> больше
< меньше
>= больше либо равно
<= меньше либо равно
<> или >< не равно
Калькулятор поддерживает вложенные условные операторы - многострочные, типа:
{условие1
....
{условие 2
.........
{условие3
............
}
............
}
..........
}
и однострочные, типа:
{условие1 {условие2 {условие3 оператор}}}
Число вложений условных операторов неограниченно.
В КАН нет конструкции ЕСЛИ условие ТО блок1 ИНАЧЕ блок2;
Но её можно реализовать следующим образом:
b = 0
{условие b = 1}
{b = 1
блок1
}
{b = 0
блок2
}
Логические выражения
Условные операторы можно применять для замены логических выражений, которые
в калькуляторе напрямую не поддерживаются. Например, выражение вида
b = ((x>2) AND (x<4)) OR (x=0)
где b - переменная, принимающая значения либо 0 (ложь), либо
1 (истина).
запишем так:
x = (какое-то значение)
b = 0
{x>2 {x<4 b = 1}}
{x=0 b = 1}
val(b)
Результат b = 1 будет при x = 3, либо при x = 0 и b = 0 в остальных случаях.
Т.е. вложенные условные операторы соответствуют операции AND (И), а
идущие по порядку друг за другом - операции OR (ИЛИ)
Пользовательские функции
В случае если некоторое выражение используется в программе несколько раз, целесообразно объявить
его в начале программы используя однострочную конструкцию:
fun: имя_функции = выражение
пример использования объявленных функций у и у1:
fun: y = x^2
fun: y1 = y + 1 ; y - объявлена выше, такое допустимо
x = 3
z = y + y1=
u = 2*y + 3*y1 =
Отладка программы. Оператор stop
Предназначен для отладки программы. Если в ходе выполнения программы возникают
какие-то ошибки, то последовательное перемещение этого оператора позволяет определить на какой
строке это происходит. На этом операторе вычисления заканчиваются и можно увидеть значения выражений
и переменных.
Например, в строке, где z3, произошло деление на 0. Последовательно перемещая вниз
оператор stop, можно локализовать проблемную строку.
x = 2
y = 3
u = 0
z1 = x + y = 5
z2 = 2*x + y = 7
stop; -------------------- Точка останова ----------------------
z3 = 2*(x+y)/u =
z4 = (x+y)/2 =
Его также можно использовать в цикле для просмотра текущих значений переменных.
Для этого на строке с присвоением значения данной переменной нужно поставить второй
знак "=". Сам оператор stop следует поместить внутри условного оператора, где условие
задаёт момент останова в цикле:
[x=1:10
x = x + 1 = 4
y = 2*x = 8
{x=4 stop}; -------------------- Точка останова ----------------------
val(x)
]
После отладки всё лишнее можно удалить или задать заведомо невыполнимые условия: {2=1 stop} .
Матрицы и вектора
Виды матриц, которые поддерживает калькулятор КАН
Квадратная NxN
Пример, при N = 3:
2 3 4
3 4 -1
2 5 0
В текстовом окне калькулятора записывается в строку следующим образом:
A = |2 3 4, 3 4 -1, 2 5 0|
где элементы в строках (столбцы) записываюися через пробел, строки же разделены запятыми
Либо более привычным образом в многострочном виде:
A = |
2 3 4
3 4 -1
2 5 0
|
Число пребелов, один или более, роли не играет
Прямоугольная NxM
Пример, при N = 2, M = 3:
2 3 4
3 4 -1
Записывается в строку следующим образом:
A = |2 3 4, 3 4 -1|
или в многострочном виде:
A = |
2 3 4
3 4 -1
|
Эти операции называются инициализацией матрицы. Этим же способом можно инициализировать и массивы.
Векторы
Векторы - частные случаи матрицы.
Вектор-строка: В = |2 3 4 -1 0| - есть матрица размерностью 1x5, состоящая из одной строки и
5-ти столбцов
Вектор-столбец: В = |2,3, 4, -1, 0| - есть матрица размерностью 5x1, состоящая из 5-то строк
одного столбца. Можно записать и так:
В = |
2
3
4
-1
0
|
Объявление (декларирование) матриц
Во внутреннем представлении в КАН матрица эквивалентна двумерному массиву. Векторы так же
представляют из себя массивы. Поэтому объявляется они аналогично объявлению массивов.
mas: A[2,3]; - матрица размерностью 2х3
mas: B[1,4]; - вектор-строка ( = матрица размерностью 1x4 )
mas: С[4,1]; - вектор-столбец ( = матрица размерностью 4x1 )
Отдельные элементы матрицы также доступны, как и элементы массивов. Пример:
mas: A[2,2]
A[1,1] = 2
A[2,1] = 3
x = A[1,1] + A[2,1] = 5
Первая (верхняя) строка матрицы имеет индекс = 1, аналогично, первый (левый) столбец имеет индекс = 1
Элементы с индексами массивов, равными 0, в операциях с матрицами просто не используюся.
Применительно к матрице:
A = |
1 2 3
4 5 6
7 8 9
|
если рассматривать её как двумерный массив имеем:
A[1,1] = 1
A[1,2] = 2
A[1,3] = 3
A[2,1] = 4
...........
A[3,3] = 9
Операции над матрицами
Поскольку элементы матрицы также доступны, как элементы массивов (т.к. матрица - это и есть двумерный массив),
различные арифметические операции над матрицами можно делать аналогично обработке массивов, имея дело
с отдельными элементами A[i, j]. Однако это неудобно. Поэтому КАН поддерживает специальные операции над матрицами
Над матрицами возможны операции сложения, вычитания, умножения и умножения на число. Причем числа могут быть
как действительными, так и комплексными.
-присвоение
B = |A|
-Сложение и вычитание
С = |A+B|
С = |A-B|
В этом случае матрицы должны быть одной размерности NxM
-Умножение на число (или переменную целого типа)
B = |3*A|
- Умножения матрицы на матрицу
C = |A*B|
Операции умножения матриц не перестановочны! Т.е. |A*B| не равно |B*A|.
При этом матрицы должны быть согласованы: ширина первой матрицы должна быть равна высоте
второй матрицы. Т.е. размерности должны быть такими:
Квадратные матрицы NxN этому условию удовлетворяют «автоматически», т.к для них:
N1=M1=N2=M2=N3=M3.
Все перечисленные матричные операции допускают только одну операцию в выражении.
Например, выражения типа D = |A + B + C| - в КАН не поддерживаются. Обходимся так:
D = |A+B|
D = |D+C|
Широко распространён частный случай этих операций: умножение матрицы или вектор-строки на вектор столбец.
Кроме того для операций с матрицами применяются специальные функции:
x = detM(A); - вычисление определителя матрицы, где х - число, в общем случае комплексное
B = revM(A); - обращение (реверсирование) матрицы, где В матрица той же размерности, что и А
valM(A) - вывод матрицы в виде строки:
A = |2 3 4, 3 4 -1|
valM(A) : A = |2 3 4, 3 4 -1|
Одельные элемены матрицы можно выводить с помощью оператора val() как элементы массива:
val(A[1,2], B[2,3])
Применение матриц
Одно из применений матричной алгебры является решение систем линейных алгебраических уравнений (СЛАУ).
Например, для СЛАУ второго порядка задано уравнение :
x1 + 2*x2 = 8
2*x1 + 3*x2 = 18
Программа будет иметь вид:
; решение системы линейных уравнений (СЛАУ)
mas: A[2,2], X[2,1], C[2,1], Arev[2,2] ;декларируем матрицы
A=|1 2, 3 4| ; матрица коэффициентов a11, a12, ....
C = |8,18|; коэффициенты в правой части - с1, с2, ...
;Теперь решаем СЛАУ
Arev = revM(A); обращаем матрицу коэффициентов A --> Arev
X = |Arev*C|; перемножаем Arev*С
valM(X) : X = |2,3|; получаем решение - х1, x2, ,,,
Решение:
x1 = 2
x2 = 3
Эту программу можно переделать и для комплексных чисел.
Комментарии
Текстовые пояснения (комментарии) можно вводить после знака ";".
Примеры:
;Расчеты по теореме Пифагора
a=4 ; один катет прямоугольного треугольника
b=5 ; второй катет прямоугольного треугольника
; гипотенуза
sqr(a^2 + b^2)= ;результат
Сохранение программы и результатов расчёта
Как сохранять программу расчётов
К сожалению, браузерные программы, каковой является калькулятор КАН, не позволяют сохранять
пользовательские файлы напрямую. Тем не менее, есть несколько способов.
Первый способ - это сохранить в Блокноте (встроенный сервис калькулятора).
Для этого достаточно выделить программу в текстовом окне калькулятора, нажать клавиши Ctrl+C, открыть
по ссылке Блокнот и с помощью клавиш Ctrl+V скопировать в него свою программу. После чего страницу Блокнота
можно закрыть. Программа сохранится. Эта и другие программы, сохраненные ранее в Блокноте, будут постоянно
храниться на вашем компьютере.
Заметим, что «хранилище» у каждого браузера своё и где оно расположено только ему известно.
Следующий более надежный способ сохранения – это в любом текстовом редакторе с последующей записью в файл.
Например в стандартном текстовом редакторе ОС Windows,который также называется Блокнот. Разметка программы
будет при этом утеряна, но она восстановится при обратном копировании и запуске на Вычисление.
Можно так же нажать кнопку Разметка. Для копирования используем клавиши Ctrl+C и Ctrl+V.
Наконец, программы можно сохранять в редакторе Word. Разметка сохраниться, но Word может изменить табуляцию,
если она есть в вашей программе. В этом случае для правильного копирования из Word обратно в калькулятор,
нужно скопировать из Word в буфер (Ctrl+C) войти в текстовое окно калькулятора и нажав правую кнопку мыши выбрать
пункт контекстного меню «Вставить как обычный текст», либо использовать сочетание клавиш Ctrl+Shift+V.
Как сохранять результаты расчётов
Результатом расчётов обычно является таблица. Заметим, что по умолчанию (стоит галочка в квадратике
«выравнивать таблицу») таблица выравнивается пробелами. В том случае, если необходимо скопировать таблицу,
например, в Excel, чтобы использовать эти данные для дальнейшей обработки, в частности, для построения своих
собственных графиков, перед вычислениями эту галочку необходимо снять. В этом случае столбцы разделяются
не пробелами, а стандартными табуляторами. При этом таблица может выглядеть не так ровно, как в первом случае,
но её можно корректно скопировать в Excel. При этом нужно учесть, что копировать следует не просто Ctrl+V,
а установив в Excel курсор на нужную клетку, нажать правую клавишу, затем в открывшимся контекстном меню
выбрать «Параметры вставки. Специальная вставка» и далее «Текст в кодировке Unicode». В этом случае в Excel
таблица отобразиться правильно.
Как сохранять графики
Не все браузеры позволяют сохранить график (а это просто картинка) в графическом файле. В последних версиях
ОС Windows есть стандартная программа Ножницы, которая позволяет легко это сделать.
Сводка операторов калькулятора КАН
val(список_переменных) - в обычном режиме - вывод значений переменных в одну строку;
в циклическом режиме - вывод значений переменных в таблицу и на график
valМ(имя_матрицы) - вывод значений элементов матрицы
noTab - запрет вывода данных в таблицу
noGraf - запрет вывода данных на график
grafX(x_min, x_max) - установка минимального и максимального пределов по оси X
grafY(y_min, y_max) - установка минимального и максимального пределов по оси Y
format(dec, n) - установка десятичного формата выводимых данных, где n - число знаков после десятичной точки
format(exp, n) - установка экспоненциального формата выводимых данных, где n - число знаков после десятичной точки
{условие оператор_присвоения} - условный оператор
stop - оператор останова программы (отладочный оператор)
exit - оператор выхода из текущего цикла (используется вместе с условным оператором)
exitAll - оператор выхода из всех циклов (используется вместе с условным оператором)
|