Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛабораторныйПрактикум1.pdf
Скачиваний:
395
Добавлен:
02.02.2015
Размер:
4.76 Mб
Скачать

числа, после которого число будет представлено в научной, т.е. экспоненциальной форме).

Для имитации значений в заданном диапазоне иногда необходима генерация случайных чисел, в качестве генератора используется функция random(n), которая генерирует целое число в диапазоне от 0 до n. Если нужно получить смещение диапазона, например от –1 до +1, вводится коэффициент смещения, в данном случае «–1».

Введите выражения: «r := random(20) – 10», «r =». Получен генератор в диапазоне от –10 до 10, так как первоначально генерируется число в диапазоне от 0 до 20, затем сдвигается влево коэффициентом –10. Нажмите несколько раз клавишу F9, документ будет пересчитан, каждый раз будет сгенерировано новое случайное число.

Установите красный маркер ввода чуть выше последней формулы, выберите команду Вставка/ Область, появятся две линии, ограничивающие область документа. На верхнюю линию можно добавить текст – название области. Верхнюю и нижнюю границы области можно перемещать в тексте. Кнопка – (+) слева верхней границы области сворачивает (разворачивает) область на экране. Область применяется, когда нужно скрыть громоздкие промежуточные вычисления и/или блокировать просмотр формул с помощью пароля (контекстная команда

Защита элемента/Блокировать), т.е. формулы будут работать, но посмотреть их без ввода пароля нельзя. Отменить блокирование можно контекстной командой границы Защита элемента/Разблокировать. Для удаления области необходимо выделить линии мышью и нажать Delete (если область свёрнута, будут удалены блоки внутри её).

Самостоятельно выведите на экран с помощью оператора численного вывода значение предопределённых констант π и e.

11.2.4. Оптимизация вычислений

SMath Studio использует в математических блоках три вида оптимизация: символьная, численная, отключена.

При присвоении по умолчанию для блока включена символьная оптимизация. При этом переменная содержит ссылку на выражение. При символьной оптимизации использование ранее заданных переменных в выражении приводит к созданию новой формулы.

273

Оператор численного вычисления и вывода равно (=) по умолчанию выключает для блока численную оптимизацию, при которой программа пытается получить число.

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

Получить число вместо ссылки в любом режиме оптимизации позволяет функция eval( ).

Ниже генератора случайных чисел добавьте еще пару операторов численного вывода «r =». В каждой из трёх строк выводится разное случайное число потому, что переменная r содержит ссылку на строку вычислений, фактически являясь функцией без аргументов. Пересчитайте страницу командой Вычисление/Пересчитать лист (F9), все три случайных числа будут изменены на новые, остальные значения также будут пересчитаны, но визуально это не заметно, т.к. при использовании тех же аргументов результаты также те же. Выделите блок с функцией random( ), в контекстном меню выполните команду Оптимизация/ Численная. В выражении вместо формулы будет сразу получено число и присвоено переменной, все операторы численного вывода отобразят одинаковое число. Пересчитайте лист. Верните генератору случайных чисел символьную оптимизацию, поместите функцию в функцию вычисления: «r := eval(random(20) – 10)», обратите внимание, что использование eval( ) эквивалентно численной оптимизации. Преимуществом использования eval( ) является то, что визуально на экране (и тем более на бумаге) невозможно определить тип оптимизации, а эта функция его задаёт в том числе визуально. Полезно знать, что при изменении математического блока в документе автоматически пересчитываются все расположенные ниже блоки.

Ниже введите «z=», «x:=3», «y:=2», «z=». Переменная z играет роль функции без аргумента, используя при численном выводе для вычисления текущие (заданные выше до блока) значения элементов, поэтому выводимые значения разные. В начале документа переместите блок с присвоением x выше блока присвоения z, изменятся оба значения z. Также переместите блок присвоения y выше блока присвоения z, оба операторы вывода z отобразят одинаковые значения. Из этого можно

274

сделать вывод, что переменные, заданные выше выражения используются непосредственно при построении выражения, а если переменная не задана, то создаётся ссылка на переменную, которой позже, до вычисления, нужно присвоить значение.

Оператор вывода результата также может использовать разные типы оптимизации. При символьной оптимизации он выводит формулу. Оператор символьного вывода можно ввести клавишами Ctrl+точка или оператором численного вывода с последующим выбором символьной оптимизации в контекстном меню.

Для закрепления исследуйте пример оптимизации, предложенный на форуме автором программы. Введите: « a : 2 5 », «b:=|–5|» (по умолчанию используется символьная оптимизация). Ниже введите три блока «a+b=», назначьте им разные виды оптимизации (отключена, символьная, численная). Выделите последние пять блоков мышью, и скопируйте их ниже при нажатой клавише Ctrl. Повторите копирование ещё раз. Вышло три одинаковых копии блоков. Во второй копии блокам « a : 2 5 », «b:=|–5|» задайте численную оптимизацию, а в третьей отключите её. Рассмотрите результат, сделайте выводы о влиянии оптимизации на вычисления.

11.2.5. Функции

Ещё одной важной особенностью системы является возможность задания функций пользователя. Пакет содержит большое количество встроенных функций, но на практике часто пользователь определяет свои функции, упрощающие написание математического документа. У функции может быть несколько параметров. Функция пользователя может быть получена присвоением новому идентификатору с перечнем параметров, объединённых операторами и символьными преобразованиями, библиотечных функций и программ. Наиболее правильной записью функции является вид, когда все переменные, используемые в выражении, передаются как параметры. Т.е. запись «y(x,a):=2x+a» является более предпочтительной, чем «a:=n y(x):=2x+a», т.к. в первом случае переменные явно передаются при вызове функции и не будут утеряны при перемещении функции в другой документ. Выполните вычисления:

275

f(x):=a+sin(x)2 φ:=–π/3 a:=2 f(φ)=

В первой строке создаётся функция f с формальным параметром x. Во второй строке для вычисления аргумента используется константа π. В четвёртой строке производится вызов функции с подстановкой фактического параметра (аргумента). Значение аргумента во время вычисления используется в выражении функции, заменяя формальный параметр. Т.е. формальный параметр – всего лишь обозначение места использования аргумента при вычислении. Если параметров несколько, то в функцию должно быть передано соответствующее количество аргументов, которые должны быть переданы в соответствующем порядке. Переменная a задаётся вне функции и её расположение влияет на функцию, как это было описано в предыдущем разделе. Менее неоднозначно эти выражения нужно записать следующим образом:

f(x;a):=a+sin(x)2 φ:=–π/3 a:=2 f(φ;a)=

Все переменные выражения в этом случае будут передаваться в списке аргументов.

Функция может возвращать не только скаляр, но и вектор (матрицу). Задайте функцию «g(x;y;z)», присвойте ей вектор из трёх элементов (вставить матрицу из одного столбца и трёх строк), в маркеры вектора введите выражения: «x2», «2y–1», «0,2z». Выведите численно результат вызова функции с константами в качестве аргументов: «g(2;2;2)=».

11.2.6. Единицы измерения

SMath Studio позволяет оперировать единицами измерений, которые рекомендуется использовать в математических блоках. Результат выражений, идентификаторы которых заданы с единицами измерений, также будет отображаться с соответствующими единицами измерения. Использование единиц измерения позволяет вводить данные в любой удобной системе измерения, они автоматически переводятся в единую систему. Также использование единиц измерений снижает количество ошибок в расчётах, т.к. не допускает ряд операций над разноразмерными

276

величинами, например, сложение значений массы и длины выдаст сообщение об ошибке.

Введите следующие выражения: «l := 4000», установите курсор в конце строки формулы и вызовите команду меню Вставка/Единица измерения (Ctrl+W) или нажмите кнопку Единица измерения панели инструментов. В поле Размерность выберите Длина, в поле Единица измерения выберите Метр. Введите формулу «τ = 0,5», задайте единицы измерения Время/Час. Введите формулы «v := l/τ», «v =», результат будет выведен в системе СИ в м/с. Для вывода в другой системе измерений войдите в последнюю формулу с оператором численного вывода, в маркер в конце строки введите новые единицы измерения – 'км/'ч, результат будет автоматически пересчитан. Заметьте, что единицы измерений отображаются другим цветом, для ввода единиц измерений с клавиатуры используется одинарная кавычка, что меняет вид прямоугольного маркера ввода на круглый. В файле документа единицы измерений хранятся в международной системе обозначений и в документе отображаются на языке, указанном на странице настроек в поле Сервис/Опции/Интерфейс/Язык единиц измерения.

Выведите значения масс97 электрона, протона и нейтрона (me, mp, mn) используя справочник единиц измерения, для задания имён переменных массы используйте смещение части имени вниз точкой, имя размерности начинайте с одинарной кавычки ('me=). Также из справочника выведите скорость света: «'c=» (можно ввести из окна единиц измерения: Скорость/ скорость света (c)), имя размерности скорость света набирается латинской «c» (имя размерности секунда набирается кириллицей «с»). Найдите энергию электрона (Ee), протона (Ep) и нейтрона (En) по формуле E = mc2, подставляя соответствующие значения масс частиц me, mp и mn. Выведите полученные результаты, результат должен быть в джоулях.

Сохраните документ командой Файл/Сохранить (Ctrl+S) с именем «SM01.smz» (compressed – с использованием сжатия).

97 См. также http://ru.wikipedia.org/wiki/Фундаментальные_константы

277