Главная страница

Smath Studio Руководство пользователя. Руководство пользователя


Скачать 1 Mb.
НазваниеРуководство пользователя
Дата21.05.2021
Размер1 Mb.
Формат файлаpdf
Имя файлаSmath Studio Руководство пользователя.pdf
ТипРуководство
#207857
страница7 из 7
1   2   3   4   5   6   7
Глава 15 Программирование
15.1 Создание программы
Программа – специальная разновидность выражения, которое вы можете создавать в
SMath Studio. Данное выражение может быть составлено из операторов программирования, которые доступны на панели Программирование.
Программу можно считать совокупностью нескольких операторов. Как и любое выражение, программа в качестве результата может возвращать скаляр,вектор или матрицу.
Вы можете определить свою собственную функцию, используя операторы программирования.
Следующий пример показывает, как сделать простую программу, чтобы определить функцию:
1. Наберите левую сторону определяемой функции, после чего наберите
:=”. Удостоверьтесь, что выбрана метка-заполнитель.
2. Нажмите на панели Программирование либо клавишу ]. Так же можно вызвать стандартную функцию line через Вставка-Функция. Вы будете видеть вертикальную линию с двумя метками-заполнителями, которые будут содержать операторы, входящие в вашу программу.
3. Щелкните в верхней метке-заполнителе. Напечатайте z, затем наберите “:=”.
4. Напечатайте x/у в метке-заполнителе справа от :=, после чего перейдите на нижнюю метку-заполнитель.
5. Введете величину, которая будет возвращена программой, в остающейся метке-заполнителе. Напечатайте lg(z).
Вы можете теперь использовать эту функцию так же, как любую другую функцию в своем рабочем листе.
Как у любого выражения, у программы SMath Studio должно быть значение. Это значение – просто значение последнего оператора, выполненного программой. Это может быть скаляр, вектор или матрица.
Вы можете также написать программу SMath Studio, чтобы возвратить символьное
выражение. Когда вы вычисляете результат программы, используйте символьный знак равенства, описанный в главе 14. SMath Studio передает выражение своему символическому процессору и, когда возможно, возвращает упрощенное символьное выражение. Вы можете использовать способность SMath Studio рассчитать программы символьно, чтобы произвести сложные символические выражения, многочлены, и матрицы. Рисунок 15.1 показывает функцию, которая, когда рассчитана символьно, вычисляет символьные многочлены.

Рис. 15.1 Символьное вычисление многочлена с помощью программы
15.2 Условные операторы
В общем случае SMath Studio выполняет каждый оператор в вашей программе сверху вниз. Однако могут возникнуть ситуации, когда вы хотите, чтобы SMath Studio выполнил оператор только тогда, когда соблюдается особое условие. Вы можете сделать это, включив в программу оператор if.
Например, предположите, что Вы хотите определить функцию, которая формирует полукруг вокруг начала координат, а при прочих условиях будет постоянной. Сделайте следующее:
1. Напечатайте левую сторону определения функции, после чего напечатайте “:”. Удостоверьтесь, что метка-заполнитель справа выбрана.
2. Нажмите на панели Программирование либо выберите функцию if в диалоге Вставка\Функция. Так же вы можете набрать команду if в метке-заполнителе и затем нажать Tab.
3. Введите логическое выражение в верхнюю метку-заполнитель, используя любой из относительных операторов на панели инструментов
Булева. В метке-заполнителе между if и else напечатайте значение, которое вы хотите, чтобы программа возвратила всякий раз, когда выражение в верхней метке-заполнителе верно. В случае необходимости, прибавьте больше меток-заполнителей, нажимая
4. Выберите метку-заполнитель после else и напечатайте значение, которое вы хотите, чтобы программа возвращала в случае, если условие не выполняется. В случае необходимости, прибавьте больше меток- заполнителей, нажимая
На рисунке 15.2 показан график созданной пользователем функции.

Рис. 15.2 График пользовательской функции
15.3 Циклы
Одна из самой сильных сторон программирования – способность выполнить неоднократно последовательность операторов в цикле. SMath Studio обеспечивает две разновидности циклических структур. Выбор конкретной структуры зависит от того, как именно вы планируете подать команду циклу о прекращении выполнения итераций. Если вы знаете точно, сколько итераций вы хотите, чтобы цикл выполнил, используйте оператор цикла for. Если Вы хотите, чтобы цикл остановился, когда выполнится условие, но Вы не знаете, сколько циклов будет требоваться, используйте оператор цикла while.
Циклы «for»
Цикл for заканчивается после предопределенного числа итераций. Итерацией управляет переменная цикла, определенная в начале цикла. Определенная переменная цикла является локальной для программы.
Для создания цикла for необходимо:
1. Нажмите на панели Программирование либо выберите функцию
for(3) в диалоге Вставка\Функция. Так же вы можете набрать команду
for(3) и затем нажать Tab.
2. Задать имя переменной цикла в метке-заполнителе слева от символа
«».
3. Задайте диапазон значений, которые итеративная переменная должна принимать, в метке-заполнителе справа от «». Диапазон определяется с помощью функции range(2).
4. Введите выражение, которое вы хотите вычислить, в оставшуюся метку- заполнитель. Это выражение в общем случае использует переменную
цикла. В случае необходимости, прибавьте метки-заполнители, используя
SMath Studio использует две разновидности цикла for. Они различаются между собой оформлением. Для первого случая, описанного выше, изменение значения переменной цикла может происходить только с шагом 1. Во втором случае шаг изменения задает пользователь, и он может отличаться от 1.
Для создания цикла с шагом, отличным от 1, необходимо сделать следующее:
1. Выберите функцию for(4) в диалоге Вставка\Функция. Так же вы можете набрать команду for(4) и затем нажать Tab.
2. Задать имя переменной цикла в первой метке-заполнителе справа от for и присвоить ей начальное значение.
3. В следующей справа метке-заполнителе ввести условие, по которому будет заканчиваться цикл. Условие должно обязательно содержать переменную цикла
4. В оставшейся в строке метке-заполнителе ввести выражение, которое определит шаг изменения переменной цикла.
5. В метку-заполнитель, расположенную в следующей строке, ввести выражение, которое необходимо вычислить. Это выражение в общем случае использует переменную цикла. В случае необходимости, прибавьте метки-заполнители, используя
Пример использования циклов for показан на рис. 15.3
Рис. 15.3 Использование цикла for
Цикл «while»
Цикл while выполняется до тех пор, пока будет истинным некоторое условие. Из-за этого Вы не обязаны знать заранее, сколько времени будет выполняться цикл. Важно, однако, иметь где-нибудь, или в теле цикла цикла или в другом месте в программе, оператор, который в конечном счете делает условие ложным. Иначе, цикл выполняет все время.
Для создания цикла while необходимо:

1. Нажмите на панели Программирование либо выберите функцию while в диалоге Вставка\Функция. Так же вы можете набрать команду while и затем нажать Tab.
2. Щелкните в верхней метке-заполнителе и наберите условие. Это как правило - Булево выражение как показано рядом.
3. Введите нужное выражение в нижнюю метку-заполнитель. В случае необходимости, прибавьте метки-заполнители, используя
Рис. 15.4 показывает программу, включающую вышеупомянутый цикл. После входа в цикл while SMath Studio проверяет условие. Если условие верно, SMath Studio выполняет тело цикла и проверяет условие снова. Если условие ложно, SMath Studio выходит из цикла.
Рис. 15.4 Пример программы с циклом while
Замечание Если вы сформировали тело цикла неверно, и произошло зацикливание, то прервать выполнение программы можно, нажав кнопку (если данная кнопка имеет серый цвет, то никакие вычисления не происходят)
15.4 Обработка ошибок
Ошибки, которые могут произойти во время выполнения программы, заставляют
SMath Studio прекращать вычислять программу. Например, программа может попытаться
разделиться на 0 в выражении и поэтому столкнуться с ошибкой сингулярности. В этих случаях SMath Studio рассматривает программу, как любое математическое выражение: он отмечает выражение, в котором произошла ошибка, сообщением об ошибке, и выносит на первый план переменную или оператор с ошибкой в другом цвете.
SMath Studio имеет особенность, которая позволит пользователю улучшить обработку ошибок в программе. Строковая функция error предоставляет пользователю доступ к механизму обработки ошибок SMath Studio и позволяет ему настраивать сообщения об ошибках, допущенных в ходе выполнения программы.
Так же, как SMath Studio автоматически останавливает дальнейшее выполнение и выдает соответствующее “сообщение об ошибке” для выражения, которое генерирует ошибку (см. внизу рис. 15.5 для примера), вы можете оценивать причину остановки и заставлять нужные сообщения об ошибке появиться, когда ваши программы или другие выражения используются ненадлежащим образом или не могут дать ответы.
Строковая функция error SMath Studio дает вам такую возможность. Эта функция приостанавливает дальнейшую числовую оценку выражения и выводит сообщение об ошибке, текст которого - просто строка, которая задана для данной функции в качестве аргумента. Как правило, вы размещаете строковую функцию error в метке-заполнителе под оператором if таким образом, чтобы ошибка и сообщение о ней были произведены, когда сталкиваются с особым условием.
Рис. 15.5 показывает, как сообщения об ошибках могут использоваться даже в небольшой программе.
Рис. 15.5 Пример программы с циклом while
Замечание Если программа будет написана без использования оператора line (т. е. оформлена как обычная пользовательская функция), то она работать не будет!
15.5 Программы внутри программ
Большая гибкость программирования является результатом возможности включения частей программ друг в друга. В SMath Studio можно использовать следующие пути:
- можно написать программу в любом месте рабочего листа и впоследствии вызвать ее
внутри другой программы как подпрограмму-процедуру;
- можно написать рекурсивную программу.
Подпрограммы
Рис. 15.6 показывает пример программы, содержащую вызов другой, которая является самостоятельной программой. Нет никакого ограничения по степени вложенности программ друг в друга.
Рис. 15.6 Вызов определенной пользователем функции из программы
Рекурсия
Рекурсия – сильный программный метод, который позволяет программе вызывать саму себя внутри себя, как показано в рисунке 15.7. Описание рекурсивной функции должно всегда иметь по крайней мере две части:
- Определение функции с точки зрения предыдущего значения функции.
- Начальное условие, препятствующее тому, чтобы рекурсия продолжалась бесконечно.
Идея подобна математической индукции: если вы можете определить f(n+1) от f(n), и
Вы знаете f(0), то Вы знаете все, что необходимо знать о f.
Совет Использование рекурсивной функции, несмотря на их элегантность и краткость, не всегда эффективно в вычислительном отношении. Вы можете заметить, что эквивалентная программа, используя один из описанных ранее операторов цикла, произведет вычисление быстрее.
Рис. 15.7 Пример рекурсивной функции

Приложения
Действия
В представленной таблице:

А и В обозначают множества, векторы или матрицы;

u и v обозначают векторы, элементами которых могут быть вещественные или комплексные числа;

М обозначает квадратную матрицу;

z и w обозначают вещественные или комплексные числа;

x и y обозначают вещественные числа;

m и n обозначают целые числа;

i обозначает переменную, меняющуюся в диапазоне;

S и любое другое имя, начинающееся с S, обозначают строку;

t обозначает любую переменную величину;

f обозначает функцию;

X и Y обозначают переменные или выражения любого типа.
Действие
Отображение Нажимаемые клавиши
Описание
Круглые скобки
(X)
(
Группирующий оператор
Подстрочный символ вектора
v
n
'
Возвращает метку-заполнитель для задания порядкового номера элемента вектора
Подстрочный символ матрицы
A
n,m
'
Возвращает метку-заполнитель для задания порядкового номера элемента матрицы
Факториал
n!
!
Возвращает n·
(
n-1)·
(
n-2)... n должно быть целым неотрицательным числом.
Транспонирование
A
T
[Ctrl]+1
Возвращает матрицу, строки которой
– столбцы A, а столбцы – строки A.
Может быть вектором или матрицей.
Возведение в степень z
w
^
Возведение числа z в степень w
Возведение в степень матрицы, инвертирование матрицы
M
n
^
Возведение квадратной матрицы M в степень n. n может быть любым целым числом. M
-1
инвертирование
M. Возвращает квадратную матрицу.
Отрицание
-X
-
Умножает X на -1
Минор
M
n,m
(M)

Возвращает минор матрицы M.
Алгебраическое дополнение
A
n,m
(M)

Возвращает алгебраическое дополнение матрицы M.
Квадратный корень

z
\
Возвращает квадратный корень из числа z

Корень n-ой степени
n

z
[Ctrl]+\
Возвращает корень n-ой степени из числа z
Амплитуда, абсолютная величина

z


Возвращает модуль числа z.
Детерминант

M

Возвращает детерминант квадратной матрицы M. Вещественное число
Деление
X
z
/
Деление выражения X на ненулевой скаляр z. X может быть вектором или матрицей.
Умножение
X·Y
*
Возвращает произведение X и Y, если и X и Y скаляры. Умножает каждый элемент Y на X, если Y - множество, и
X скаляр, или наоборот. Возвращает скалярное произведение (внутреннее произведение), если X и Y векторы одного и того же размера. Выполняет умножение матриц, если X и Y
соответствующие матрицы.
Векторное произведение
u×v

Возвращает векторное произведение для векторов с тремя компонентами u
и v.
Итерационная сумма

i=m
n
X

Выполняет суммирование X. X может быть любым выражением. m и n
должны быть целыми числами.
Итерационное умножение

i=m
n
X

Выполняет перемножение X. X может быть любым выражением. m и n
должны быть целыми числами.
Определенный интеграл

a
b
f (t)dt

Возвращает определенный интеграл
f(t) на интервале [a,b]. a и b должен быть действительными скалярами.
Все переменные в выражении f(t), кроме переменной интегрирования t, должны быть определены.
Подынтегральное выражение f(t) не может возвратить множество.
Первая производная
d
dt
f (t)

Возвращает производную f(t) по переменной t. Все переменные в выражении
f(t) должны быть определены. Переменная t должна быть скалярной величиной. Функция
f(t) должна возвратить скаляр.
Производная n-ой степени
d
n
dt
n
f (t)

Возвращает n-ую производную f(t) по переменной t. Все переменные в выражении
f(t) должны быть определены. Переменная t должна быть скалярной величиной. Функция
f(t) должна возвратить скаляр.

Сложение
X+Y
+
Скалярное сложение, если X, Y, – скаляры. Поэлементно сложение, если
X и Y векторы или матрицы одного размера. Если X множество, и Y – скаляр, прибавляет Y к каждому элементу X.
Вычитание
X-Y
-
Выполняет скалярное вычитание, если X, Y – скаляры. Выполняет поэлементно вычитание, если X и Y
векторы или матрицы одного размера.
Если X множество, и Y - скаляр, вычитает Y из каждого элемента X.
Логическое «И»
x˄y

Возвращает значение 1, если и x и y
являются отличными от нуля.
Возвращения 0, если по крайней мере один из x или y – ноль.
Логическое «ИЛИ»
x˅y

Возвращает значение 1, если по крайней мере один из x или y является отличным от нуля. Возвращения 0, если и x и y – ноль.
Логическое «НЕ»
¬x

Возвращает 0, если x является отличным от нуля и 1, если x – ноль.
Логическое
«Исключающее
ИЛИ»
·xy

Возвращения 1, если точно один из x
или y является отличным от нуля.
Возвращения 0, если и x и y – ноль или оба являются отличными от нуля.
Строго больше
x>y,
S1>S2
>
Для действительных скаляров x и y, возвращения 1, если x>y, 0, если иначе. Для строк S1 и S2, возвращает
1, если S1 строго следует за S2 в порядке кодировки ASCII, в противном случае 0.
Строго меньше
x,
S1<S2
<
Для действительных скаляров x и y, возвращения 1, если x, 0, если иначе. Для строк S1 и S2, возвращает
1, если S1 строго предшествует S2 в порядке кодировки ASCII, в противном случае 0.
Больше либо равно
x≥y,
S1≥S2
[Ctrl]+0
Для действительных скаляров x и y, возвращения 1, если x≥y, 0, если иначе. Для строк S1 и S2, возвращает
1, если S1 следует за S2 в порядке кодировки ASCII, в противном случае
0.

Меньше или равно
x≤y,
S1≤S2
[Ctrl]+9
Для действительных скаляров x и y, возвращения 1, если x≤y, 0, если иначе. Для строк S1 и S2, возвращает
1, если S1 предшествует S2 в порядке кодировки ASCII, в противном случае
0.
Логическое
«не равно»
zw,
S1≠S2
[Ctrl]+3
Для скаляров z и w, возвращает 1, если zw, иначе 0. Для строк S1 и S2, возвращает 1, если S1 не совпадает посимвольно с S2.
Логическое «равно»
X=Y
[Ctrl]+=
Возвращает 1, если X=Y, иначе 0.
Отображается на экране как знак равенства, начертанный жирным шрифтом

Предопределенные переменные
Предопределенные переменные SMath Studio перечислены здесь с их начальными значениями по умолчанию
Переменная=величина Описание
π=3,14159....
Число π. Для написания нажмите [Ctrl]+[Shift]+p.
e=2,71828...
Основание для натурального логарифма. Для написания нажмите e.

Функции SMath Studio в алфавитном порядке
A
Наименование
Раздел
Наименование
Раздел abs
9.2
arcsin
10.2
ainterp
10.5
arctg
10.2
alg
10.3
arcth
10.2
arccos
10.2
arg
10.2
arccosec
10.2
arsh
10.2
arcctg
10.2
arth
10.2
arch
10.2
augment
10.3
arcsec
10.2
C
Наименование
Раздел
Наименование
Раздел ch
10.2
cosec
10.2
cinterp
10.5
cosech
10.2
col
10.3
csort
10.3
cols
10.3
ctg
10.2
concat
10.6
cth
10.2
cos
10.2
D
Наименование
Раздел
Наименование
Раздел det
10.3
diff(2)
9.5
dfile
10.6
diff(3)
9.5; 14.3
diag
10.3
E
Наименование
Раздел
Наименование
Раздел el(2)
10.3
eval
10.2
el(3)
10.3
exp
10.2
error
10.2; 15.4
expand
14.2
F
Наименование
Раздел
Наименование
Раздел findstr
10.6
for(4)
15.3
for(3)
15.3

G
Наименование
Раздел
Наименование
Раздел
Gamma
10.2
I
Наименование
Раздел
Наименование
Раздел identify
10.3
int
9.6
if
15.2
invert
10.3
Im
10.2
IsDefined
10.2
importData(1)
10.6; 11.1
IsString
10.6
importData(9)
10.6
J
Наименование
Раздел
Наименование
Раздел
Jacob
10.3
L
Наименование
Раздел
Наименование
Раздел length
10.3
linterp
10.5
lg
10.2
ln
10.2
line
15.1
log
10.2
M
Наименование
Раздел
Наименование
Раздел mat
11.1
min
10.3
matrix
10.3
minor
10.3
max
10.3
mod
10.2
N
Наименование
Раздел
Наименование
Раздел norm1 10.3
nthroot
10.2
norme
10.3
num2str
10.6
normi
10.3
numden
14.2
P
Наименование
Раздел
Наименование
Раздел perc
10.2
polyroots
10.4
pol2xy
10.2
product
9.4

R
Наименование
Раздел
Наименование
Раздел random
10.5
roots(2)
10.4
range(2)
2.6; 8.1; 15.3
roots(3)
10.4
range(3)
2.6; 8.1
round
10.2
rank
10.3
row
10.3
Re
10.2
rows
10.3
reverse
10.3
rsort
10.3
rfile
10.6
S
Наименование
Раздел
Наименование
Раздел sec
10.2
stack
10.3
sech
10.2
str2num
10.6
sh
10.2
strlen
10.6
sign
10.2
strrep
10.6
sin
10.2
submatrix
10.3
solve(2)
10.4
substr(2)
10.6
solve(4)
10.4
substr(3)
10.6
sort
10.3
sum
9.4
sqrt
10.2
sys
12.2; 13.4
T
Наименование
Раздел
Наименование
Раздел tg
10.2
transpose
10.3
th
10.2
trunc
10.2
tr
10.3
V
Наименование
Раздел
Наименование
Раздел vminor
10.3
W
Наименование
Раздел
Наименование
Раздел wfile
10.6
while
15.3
X
Наименование
Раздел
Наименование
Раздел xy2pol
10.2
1   2   3   4   5   6   7


написать администратору сайта