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

X1:=2

Y1:=1

for i 1..15 Xi+1:=eval(Xi+sin(Yi))

Yi+1:=eval(Yi+cos(Xi))

X=

Y=

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

Следует обратить внимание, что при использовании векторов большого размера (и сложных формул вычисления) при символьной оптимизации каждая следующая формула будет включать в себя текущую, что может привести к недопустимому использованию ресурсов и очень большой длительности выполнения. Для исключения подобных ситуаций рекомендуется для итерационных вычислений явно задавать численную оптимизацию функцией eval( ), т.е. в данном примере в каждую последующую ячейку векторов X и Y присваиваются не ссылки на выражения, а сразу числовые значения.

11.2.8. Файлы данных

SMath Studio позволяет сохранять отдельные математические блоки (в том числе матрицы, выражения и т.д.) в текстовых файлах в UTF-8 кодировке. Файлы фрагментов размещаются в (перемещаемом при указании) профиле пользователя. Функции работы с файлами можно вводить с клавиатуры или выбирать из списка окна Функции в категории Файлы. Для файлов фрагментов предусмотрены функции записи wfile(выражение;файл), чтения rfile(файл) и удаления dfile(файл). Функции wfile и dfile возвращают 1 в случае успешного выполнения, иначе 0. Функция rfile возвращает фрагмент. Возвращаемый массив может быть присвоен переменной. Скаляр (число) может быть выведен оператором численного или символьного вывода. Аргумент «файл» содержит имя файла, которое может состоять из букв (в том числе кириллицы) и цифр, но не может содержать расширения (точки) и менять

283

папку размещения. В случае повторного использования имени файла для записи, файл создаётся заново, удаляя старое содержимое.

Создайте новый документ, введите следующие блоки (в приведённом примере результаты вывода не отображены специально):

x:=16

i:=1..10

y:=sin(0,5)

B1 1:=1

B1 2:=2

B1

3:=3

B2 1:=4

B2 2:=5

B2

3:=6

wfile(x;file01)=

wfile(i;file02)=

wfile(B;file03)=

wfile(y;file04)=

rfile(file01)=

j:=rfile(file02)

j=

M:=rfile(file03)

M=

z:=rfile(file04)

z=

Сохраните файл с именем «SM04 файлы.smz».

Сверните SMath Studio в панель задач, запустите FAR manager,

скройте панели FAR (Ctrl+O), выполните команду SET, в полученном списке переменных системного окружения найдите и запишите в журнал значение переменной USERPROFILE, отобразите панели FAR (Ctrl+O), перейдите в текущей панели в папку профиля, путь к которой вы записали в журнал. Выполните поиск файла (Alt+F7) file01 в профиле, указав в параметрах область поиска с текущей папки. Перейдите в папку с найденным файлом. Просмотрите (F3) содержимое файлов данных, сохранённых в работе.

В текущей панели FAR перейдите в корневую папку виртуального диска F:, создайте текстовый файл (Shift+F4) с именем file05.txt, введите в него две строки по пять чисел, разделяя числа пробелом и используя в качестве десятичного разделителя точку в случае использования дробных чисел. Сохраните и закройте файл.

Разверните из панели задач SMath Studio, допишите в документ следующие команды:

284

D:=importData("F:\file05.txt")

D=

Значения массива D, считанные из файла, можно использовать в вычислениях. Функция importData также имеет форму записи с количеством аргументов до девяти, где кроме имени файла могут указываться разделители десятичной части, разделители элементов, ограничитель колонок, начальная и конечная строка, начальная и конечная колонка, флаг символьного содержимого. Для задания по умолчанию значений аргументов, кроме имени файла, используется 0. Файлы данных, импортируемые функцией importData могут содержать кроме чисел текстовые строки и выражения.

Сохраните (Ctrl+S) и закройте документ (Ctrl+F4).

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

11.2.9. Графики

2D Графики

SMath Studio позволяет строить плоские и объёмные графики. На одном холсте можно отобразить несколько графиков (только 2D или только 3D). Холст имеет маркер ввода в левом нижнем углу, в который вписывается функция (двумерные обязательно по переменной x, а трёхмерные по x и y), матрица или система для построения. При использовании функции (например, «y = x2 – x + 1») в маркер ввода записывается только правая часть равенства.

Прокручиванием колеса мыши холст с графиком можно масштабировать, прокрутка колеса при нажатых клавишах Shift или Ctrl масштабирует график соответственно по оси x и оси y.

Создайте новый документ, вставьте холст командой Вставка/ График/Двумерный (@ – Shift+2), в маркер ввода впишите «sin(x)», нажмите Enter, нажмите на холст мышью, увеличьте график за нижний правый маркер изменения размера так, чтобы график занимал минимум треть листа. Поместите курсор мыши над графиком, используйте колесо мыши для масштабирования (отображение по оси y в диапазоне – 1,25..1,25; по оси x –10..10). Для смещения графика к интересующей вас

285

области нажмите левую кнопку на полотне и перемещайте курсор, удерживая кнопку нажатой. В контекстном меню графика можно включать/выключать отображение сетки и осей, а также использовать команду экспортирования графика в файл изображения для последующей вставки в документы или веб-страницы. При построении нескольких графиков циклически (по порядку использования матриц и функций в системе построения) используются цвета линий: синий, красный, зелёный, пурпурный, оранжевый и коричневый.

Ниже графика задайте две функции «t(x):=|sin(x)|» и «f(x):=2·cos(x)». Для задания модуля введите «abs(» или нажмите кнопку Модуль числа группы Арифметика боковой панели. Вставьте шаблон 2D графика, в маркер ввода введите «sys(», появится алгебраическая система (также можно вставить нажатием кнопки Алгебраическая система группы Функции боковой панели). При выделении всей системы её размер можно менять маркером масштабирования так же, как размер матриц и линий программирования, добавить один маркер можно нажатием точки с запятой. В маркеры системы впишите t(x) и f(x).

Самостоятельно ниже постройте 2D график для двух функций

«q(x):=3/2·cos(x)3» и «w(x):=sin(x)+2/3·cos(2·x)».

Ниже присвойте переменной A матрицу из 6 строк и двух столбцов. Первый столбец заполните целыми числами от 0 до 5, во второй столбец введите последовательность 0,9; 0,8; 0,5; 0,1; 0,4; 0,2. Вставьте в документ шаблон 2D графика и в маркер ввода впишите A.

Можно построить график с помощью SMath Studio по результатам вычислений другой программы, сохраненным в текстовый файл. Данные можно вводить как вручную, так и считывать из файла. Сверните SMath Studio, в корне виртуального диска F: с помощью FAR manager создайте текстовый файл, введите в него в два столбца наборы чисел в диапазоне от –100 до 100, используя в качестве разделителя чисел пробел. Для чисел первого столбца используйте последовательность с постоянным шагом. Второй столбец заполните произвольными числами. Сохраните и закройте документ в FAR. Разверните SMath Studio и введите выражение

«B:=importData("F:\file06.txt")». Постройте 2D график для матрицы B.

Используя матрицу А постройте 2D график с использованием функции сглаживания и настройкой вида графика. График можно строить

286

узлами, указывая не только координаты (X-Y, матрица из двух столбцов), но и символ узла (.,*,+,o,x) или текст узла, размер символа узла и цвет (матрица из пяти столбцов103). Цвет задается именем или RGB значением (#FFFFFF). Для демонстрации сглаживания совместите два графика – исходный точечный и сглаженный. Так как матрица с данными A уже есть, необходимо добавить в неё обозначение символа узлов, их размер и цвет. Для сглаживания используется функция кубической сплайнинтерполяции cinterp, в качестве входных параметров которой передаются столбцы 1 и 2 матрицы A. Наберите в документ блоки, приведенные ниже.

103 См. http://smath.info/wiki/Graphs.ashx

287

Также для сплайн-интерполяции можно использовать ещё две функции – linterp (линейная) и ainterp (Акима-сплайн интерполяция). Сохраните документ как «SM05 2D графики.smz».

3D графики (поверхности)

В новом документе вставьте шаблон 3D графика командой Вставка/ График/Трёхмерный. В маркер ввода впишите выражение «sin(x)·cos(y)». Масштабируйте полотно графика маркером изменения размера, масштабируйте сам график колесом мыши, мышью измените наклон поверхности графика.

Добавьте ещё один шаблон 3D графики, впишите в маркер ввода функцию « y2 x2 », символ плюс/минус введите из группы команд Арифметика боковой панели (можно также ввести минус/плюс символом процента). Заметьте, что график состоит из двух частей разного цвета.

Оператор плюс/минус создаёт пару значений с разными знаками. Для иллюстрации оператора ниже графика введите «±1=».

Построение параметрически-заданной поверхности. Загрузите файл param3d.sm автора SMath Studio (зайдите на форум программы http://ru.smath.info/ и в поиске найдите указанный файл). Откройте файл в SMath Studio и рассмотрите способ построение параметрических поверхностей: шара, цилиндра, геликоида и тора.

288

Приведённую в файле примера функцию param3d( ) можно использовать для построения других параметрических104 поверхностей.

Сохраните документ как «SM06 3D графики.smz».

Анимация

Для создания анимации в графиках используется дополнительная переменная времени t. Состояние системы (элементов графика) вычисляется для каждого момента и циклически отображается на полотне, т.е. фактически анимация является набором последовательно отображаемых кадров, использующих элементы дискретной переменной в качестве параметра функций графика.

В новом документе постройте анимацию движения звёздочки по синусоиде. Сначала задайте переменную x (шаг по x), равную 0,1π, задайте дискретную переменную d от 1 до 81 (количество шагов получено для диапазона изменения x от –4π до 4π с шагом x). Задайте функцию построения графика f(x), присвойте ей программу (line) из трёх строк, в первый маркер введите выражение «x:=eval(–4π+ x·t)», во второй строке введите «y:=eval(4·sin(x))», в третью строку вставьте матрицу из одной строки и пяти столбцов, введите в неё набор значений: x; y; "*"; 10; "Red". Вставьте шаблон 2D графика, в маркер поместите систему из двух строк, в первую введите «4·sin(x)», во вторую «f(t)», нажмите Enter. Выделите график, в контекстном меню выполните

104 Параметрическое представление – используемая в математическом анализе разновидность представления переменных, когда их зависимость выражается через дополнительную величину – параметр.

289

команду Анимировать, в её списке дискретных переменных выберите d. Масштабируйте холст графика и его содержимое до трети листа. Сохраните документ как «SM07 анимация.smz».

Откройте и рассмотрите пример анимации командой Помощь/

Примеры/Планетарный механизм с внутренним зацеплением.

Найдите на форуме страницы по ключевым словам «Анимация механизмов» и рассмотрите примеры.

Найдите на форуме, загрузите и запустите файл примеров

Creating_Anim.smz (автор Fridel Selitsky), прочитайте объяснения построения анимации.

Вопросы к подготовке:

1.Какие типы блоков используются в Mathcad/SMath Studio?

2.Какие типы данных используются в Mathcad/SMath Studio?

3.Перечислите правила работы с блоками.

4.Опишите синтаксис идентификаторов.

5.Как вывести заданное значение в другой системе измерений?

6.Как получить значение элемента вектора? Как изменить размер матрицы?

7.Как создать функцию пользователя?

8.Какие типы графиков вы строили в лабораторной работе?

290