ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 16.03.2024
Просмотров: 100
Скачиваний: 0
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
• Для того чтобы подсоединить третью строку, соответствующую ко- ординатам вершины C, набираем stack( )
. В слот, не думая, извле- каем из буфера часть формулы товленной ранее (получится
, заго stack stack Point A 1 0
,
(
)
T
Point B 1 0
,
(
)
T
,
⎛
⎝
⎞
⎠
⎛
⎝
⎞
⎠
). Перебрасываем синий вим запятую (получится контур направо (клавишей <Insert>), ста stack stack Point A 1 0
,
(
)
T
Point B 1 0
,
(
)
T
,
⎛
⎝
⎞
⎠
,
⎛
⎝
⎞
⎠
и в образовавшийся слот вводим
Point C 1 0
,
(
)
. Перебрасываем синий контур направо и нажимаем <Ctrl>+<1> для транспонирования. Получится: stack stack Point A 1 0
,
(
)
T
Point B 1 0
,
(
)
T
,
⎛
⎝
⎞
⎠
Point C 1 0
,
(
)
T
,
⎛
⎝
⎞
⎠
• Точно так же добавляем координаты еще одной точки. Получится: stack stack stack Point A 1 0
,
(
)
T
Point B 1 0
,
(
)
T
,
⎛
⎝
⎞
⎠
Point C 1 0
,
(
)
T
,
⎛
⎝
⎞
⎠
Point E 1 0
,
(
)
T
,
⎛
⎝
⎞
⎠
•
Всю формулу вырезаем в буфер, набираем идентификатор
Point ABCE:=
и в слот извлекаем сконструированную формулу из буфера. Получится нужный конструкт. Результат расчета (с поясне- ниями):
Point ABCE
1 2
3 2
1 3
3 2
1
• Находим диапазон изменения аргументов x и y путем расчета мини- мального и максимального значения первого и второго столбцов
(согласно нумерации, принятой в Mathcad – нулевого и первого
4 2 0
⎛⎜
⎜
⎜
⎜⎝
⎞⎟
⎟
⎟
⎟⎠
=
Координаты: x y z
Точка А
Точка B
Точка C
Точка E столбцов). Извлечение столбца – клавишами <Ctrl>+<^>: nABCE min Point ABCE
0
〈 〉
xmi
⎛
⎝
⎞
⎠
:=
xmaxABCE max Point ABCE
0
〈 〉
⎛
⎝
⎞
⎠
:=
inABCE 1
=
xmaxABCE 4
=
xm ymin min Point
1
〈 〉
ABCE
ABCE
⎛
⎝
⎞
⎠
:=
ymax max Point
1
〈 〉
ABCE
ABCE
⎛
⎝
⎞
⎠
:=
yminABCE 1
=
ymaxABCE 3
=
82
рицы плоскости на чертеж:
Правильность расчетов подтверждается просмотром столбцов мат-
Point
ABCE
Эти расчеты позволяют уточнить диапазон переменных для вывода
P
ABC
P ABC CreateMesh Plane ABC xminABCE
,
xmaxABCE
,
ymin ABCE
,
ymaxABCE
,
5
, 5
,
(
)
:=
Полностью аналогично определяем диапазон переменных для выво- да плоскости P .
D
Выводим пунктиром (щелч- ком по графику афика, выбираем вкладку Special
Line Style
(стиль ли- ний) Dashed (
построение чер- тежа. Получится так (рис. 2.62): чертеж и показываем невидимые ребра вызываем окно форматирования гр и для невидимых ребер указываем пунктир). Этой операцией заканчивается
83
Правильность расчетов подтверждается просмотром столбцов мат-
Point
ABCE
Эти расчеты позволяют уточнить диапазон переменных для вывода
P
ABC
P ABC CreateMesh Plane ABC xminABCE
,
xmaxABCE
,
ymin ABCE
,
ymaxABCE
,
5
, 5
,
(
)
:=
Полностью аналогично определяем диапазон переменных для выво- да плоскости P .
D
Выводим пунктиром (щелч- ком по графику афика, выбираем вкладку Special
Line Style
(стиль ли- ний) Dashed (
построение чер- тежа. Получится так (рис. 2.62): чертеж и показываем невидимые ребра вызываем окно форматирования гр и для невидимых ребер указываем пунктир). Этой операцией заканчивается
83
Рис. 2.62 что длина вектора определяется как ко- рень квадратный из суммы квадратов разностей координат начала и кон- ца вектора:
Этап 7
завершен.
Задания 1,2
выполнены.
8.2.2.
Пояснения к заданию 3 «Найти длину ребер AB, GH».
Из курса алгебры мы знаем,
LengthAB
xB xA
−
(
)
2
yB yA
−
(
)
2
+
zB zA
−
(
)
2
+
:=
LengthAB 1.732
=
Средства Mathcad позволяют такие вычисления делать быстрее, с помощью встроенной функции «длина вектора», которая обозначается вертикальными линиями. Формируем разность векторов координат точек
A
и B и вычисляем длину:
LengthAB
PointB 1 0
,
(
)
PointA 1 0
,
(
)
−
:=
LengthAB 1.732
=
Длина ребра GH находится аналогично.
84
8.2.3.
Пояснения к заданию 4 «Найти угол между ребрами AB и
AC, сделать проверку».
Последовательность решения:
• Этап 1. Формируем векторы AB и AC, используя найденные выше координаты вершин A, B, C.
• Этап 2. Пользуясь встроенной процедурой Mathcad или формулой, изученной в курсе алгебры, находим скалярное произведение векто- ров AB и AC по значениям проекций этих векторов на оси.
• Этап 3. Сопоставляем результат этапа 2 с иной формулой скалярно- го произведения (произведение длин векторов на косинус угла меж- ду ними). Приравнивая два варианта формул скалярного произведе- ния друг к другу, находим угол между векторами.
• Этап 4. Для проверки находим угол между векторами BA и BE, см. чертеж к этапу 7 заданий 1, 2. Для параллелограмма сумма углов меж- ду векторами (AB, AC) и (BA, BE) должна составить
π радиан (180°).
Выполнение этапа 1
«Формирование векторов AB и AC». Исполь- зуя формулы алгебры, рассчитываем проекции векторов на оси по разно- сти координат точек на их границах:
AB
PointB 1 0
,
(
)
PointA 1 0
,
(
)
−
:=
AB
1 1
−
1
−
⎛
⎜
⎜
⎝
⎞
⎟
⎟
⎠
=
PointA 1 0
,
(
)
−
AC
2 1
⎛ ⎞
⎜ ⎟
AC
PointC 1 0
,
(
)
:=
⎜
⎝
⎟
⎠
2
−
=
Этап 1
завершен.
Выполнение этапа 2
«Расчет скалярного произведения векторов
AB
и AC
». Формула для расчета скалярного произведения Scalar
AB_AC
, известная из курса алгебры:
ScalarAB_AC
0 2
k
AB
k
AC
k
⋅
∑
=
:=
ScalarAB_AC 3
=
В Mathcad имеется встроенная функция, позволяющая найти скаляр- ное произведение быстрее, используя транспонирование одного из в
- ов (
екто р
любого) (<Ctrl>+<2>):
85
Этап 2
завершен.
спос торо изве стным будет ко- с
вает опис
-
В результате решения получим:
Выполнение этапа 3
«Расчет угла между векторами». Используем об вычисления скалярного произведения как произведения длин век- в на косинус угла между ними. Поскольку значение скалярного про- дения вычислено (этап 2), то единственным неизве инус угла между векторами. Найдем его (символьная процедура, вызы- ся <Ctrl>+<Shift>+<точка>). Длину вектора определяем так, как ано в Пояснении к заданию 3 (идентификатор вектора окружаем вер и линиями): тикальным
Решение читается так:
⎟⎟
⎞
⎜
⎛
=
3
arccos
φ
. Если мы хотим увидеть чи-
⎠
⎜
⎝ 3
словой ответ, нужно охватить формулу синим контуром и нажать знак равенства. Результат выведется в радианах:
AB
AC
⋅
cos
φ
( )
⋅
Scalar AB_AC solve φ
,
acos
1 3
3
⋅
⎛⎜
⎝
⎞⎟
⎠
→
0.955
=
Для того чтобы вывести ответ в градусах, нужно в слот ввести на- именование единицы измерения: меню Insert (Вставить) Units (Единицы измерения) Angular (Единицы измерения углов) Degrees (Градусы)
AB
AC
⋅
cos
φ
⋅
( )
Scalar AB_AC solve φ
,
acos
1 3
3
⋅
⎛⎜
⎝
⎞⎟
⎠
→
Так Mathcad обозначается arccos() в
AB
AC
⋅
cos
φ
( )
⋅
Scalar AB_AC →
Жирный знак равенства –
В слот нужно вставить команду:
solve, φ
(«Реши относительно φ»)
Обозначение транспонирования Т НЕ НАБИРАЙТЕ, используйте <Ctrl>+<1>
AB_AC
ScalarAB_AC AB
T
AC
⋅
:=
Scalar
3
( )
=
Вид формулы после вызова символьной процедуры <Ctrl>+<Shift>+<точка>)
86
Получим (рис. 2.63):
Рис. 2.63
AB
AC
⋅
cos
φ
( )
⋅
Scalar AB_AC solve φ
,
acos
1 3
3
⋅
⎛⎜
⎝
⎞⎟
⎠
→
54.736deg
=
Решение читается так:
ϕ = 54.736°.
Выполнение этапа 4
«Проверка». Аналогично описанному вычис- ляем угол между векторами BA и BE. Получаем:
PointB 1 0
,
(
)
Этап 3
завершен.
BA
PointA 1 0
,
(
)
PointB 1 0
,
(
)
−
:=
BE
PointE 1 0
,
(
)
−
:=
BA
T
BE
⋅
BA
BE
⋅
cos
ζ
( )
⋅
solve
ζ
,
π
1
acos
3 3
⋅
⎛⎜
⎝
⎞⎟
⎠
−
→
Мы видим, что
ϕ + ξ = π, как и должно быть в параллелограмме.
Проверка успешно завершена.
Этап 3
завершен.
Выполнение задания 4
закончено.
87
§9. Индивидуальные задания по части 2
Индивидуальные задания те же, что в учебной задаче. Индивидуаль- ные исходные данные приведены в табл 3.
Таблица 3
Исходные данные к индивидуальным заданиям
Координаты вершин параллелограмма
Вершина A
Вершина B
Вершина C
Вершина D
ВАРИАНТЫ
X
A
Y
A
Z
A
X
B
Y
B
Z
B
X
C
Y
C
Z
C
X
D
Y
D
Z
D
№1
0 3 2 -1 3 6 -2 4 2 0 5 4
№2
4 2 5 0 7 2 0 2 7 1 5 0
№3
-1 2 0 -2 2 4 -3 3 0 -1 4 2
№4
4 4 10 4 10 2 2 8 4 9 6 4
№5
2 2 3 1 2 7 0 3 3 2 4 5 4 6 5 6 9 4 2 10 10 7 5 9
№6
№7
0 -1 2 -1 -1 6 -2 0 2 0 1 4
№8
3 5 4 8 7 4 5 10 4 4 7 8
№9
3 0 2 2 0 6 1 1 2 3 2 4
№10
10 6 6 -2 8 2 6 8 9 7 10 3 88
1 2 3 4 5 6 7 8 9 10 11
ЧАСТЬ 3. ПРОГРАММИРОВАНИЕ В MATHCAD
Mathc средства программирования; имеетс программ, н
C++.
осо
рогр
в
1. Оператор п
Л
Я
аб ть ру ую во щелч мыши н
ен аниям о ра ро окна п грамми ван
(рис. 3.1). Окно вызывается з меню View
o
ar Pr ra
in
2
е прог мы вл тс
ун иями
(н ми
3.
еменные, о ъявленные выше и или левее текста рог мм , передаются в пр м
к
зн ен
y lu и н изменяются, ли ходу раммы м исваиваются ругие значения (
о то ст тельс вается и уж т источн ом ши
4
ограммы п ут с аз ем начала ко а ера скобок
, while…, if…); такое рои оди ся помощью вертикальных линий ( с. 3 2, на котором казан ме програм ы).
5
арифметиче ра ни исполь етс специфический знак присваивания: с лк р а налево
).
6. В логических выражениях и для организации циклов используются:
знаки отношения:
а) равно –
жирный знак равенства (ввод <Ctrl>+<=>);
б) больше
(ввод клавишей >);
в) меньше
(ввод клавишей <);
г) больше или равно
(ввод <Ctrl >+<круглая закрывающая
скобка
>);
д) меньше или равно
(ввод <Ctrl>+<круглая открывающая
скобка
>);
знаки логических действий: условия «И» и «ИЛИ» (ввод знаком умножения (*) и сложения
(+)).
7. Функция должна заканчиваться идентификатором возвращаемых переменных (простая переменная, матрица или структура – т. е. некото- рые из переменных, указанных в идентификаторе, являются простыми переменными, а другие – векторами или матрицами).
8. Программы могут содержать рекурсии.
Введение. О программировании в среде Mathcad
ad содержит собственные (правда, очень скромные) я также возможность встраивания аписанных на
Перечислим некоторые
бенности п
аммирования
Mathcad. ы рограммы НЕ ЬЗ н ира в чн
. Их в дят ками по аим ов пе то в из ро ро ия и
– T olb s –
og mm g
. Вс
Пер рам я яю я ф кц
е процеду ра
!). б
му
/ va п
ра ес ы
по огра
ак ач ия
(b e) е прог и пр д
част э об оя- тво забы сл и
ик о
бок).
. Пр иш ся ук ани и нц оп торных
(for…
указание п зв при т
р с
ри по м
. В ских вы же ях зу я тре а сп ав
(
←
89
Рис. 3.1. Окно программирования и его особенности.
Рис. 3.2. Так выглядит программа в Mathcad.
90
§10. Осваиваем технику программирования в Mathcad.
Ваша первая программа
При освоении техники программирования (любой, не только в Math- cad) наилучшим способом является решение конкретной задачи и (по его ходу) освоение операторов и приемов. Такой способ имеет специальное название DIY («do it yourself» – «делай сам»). Используем его и мы.
Позиции способа DIY применительно к изучению программирова- ния:
1. Этап 1. Составить требования к входным данным и к форме вы-
дачи результата
2. Этап 2. Разобрать способ получения результата, описанный в ли-
тературе, или самому разработать способ получения результата. Рас-
считать контрольные примеры, иллюстрирующие разные варианты
окончания работы алгоритма.
3. Этап 3.
схематичной
форме
(блок-схема или Исполнитель
А.П. Ершову).
4. Этап 4. Рассчитать контро ные примеры применительно к ал-
горитму.
5. Этап 5. Составить программу, отладить ее на контрольных при-
мерах
Опыт показывает, что в этой схеме обязательно будут возвраты и ре- циклы: никто не умеет составить алгоритм так, чтобы программа сразу заработала без ошибок. Качество программиста измеряется не числом ошибок (их делают все), а скоростью их обнаружения.
Освоим все этапы применительно к разработке программы, содер-
жательная постановка задачи
для которой такова:
требуется
составить программу для перевода правильной десятичной
Составить алгоритм и представить его в
по
ль
дроби в новую систему счисления и представить результат в слове с за- данным числом позиций.
10.1. Выполнение этапа 1 «Выработка требований к исходным
данным и к форме выдачи результата»
10.1.1. Требования к исходным данным.
Вначале определяем, что в данной задаче представляют собой исходные данные. Согласно заданию в состав исходных данных войдут:
1. Основание новой системы счисления, в которую должна перево- диться дробь;
91
2. пози- ций (если система не дв дставления результата;
. Правильная десятичная дробь, подлежащая переводу в новую сист
osnovanie – основание новой системы счисления;
fraction – правильная десятичная дробь, подлежащая переводу в нову фикатор функции, программу для которой предстоит разр гласно содержа- тель массив, j-й элемент которого представляет собой сомножи-
fraction в новой системе счисления.
нование
_
]
−
вест его в десятичную форму), рассчитываем:
⋅
дробь можно точно предста- вить любой системе счисления, если число позиций для выдачи резуль- счис
Число разрядов
(если переводится в двоичную систему) или оичная), отведенных для пре
3
ему счисления.
Поскольку программа имеет форму функции, исходные данные должны быть указаны в виде ее абстрактных аргументов (формальных параметров). Примем обозначения:
n_bit – число разрядов или позиций для представления результата;
ю систему счисления;
Z – иденти аботать.
В этих обозначениях функция с аргументами будет записана так:
Z(osnovanie, n_bit, fraction)
Позиция 10.1.1
завершена.
10.1.2. Требования к форме выдачи результата.
Со ной постановке задачи функция Z(osnovanie, n_bit, fraction) должна возвратить тель, с которым слагаемое
j
j
osnovanie
Разряд
−
⋅
входит в представле- ие дроби н
Для того чтобы прочесть и проверить результат, нужно перевести его снова в десятичную форму:
ос
разряд
основание
разряд
основание
разряд
знач
Дес
_
2 2
1 1
[
]
[
]
[
]
[
]
[
]
[
_
−
−
⋅
+
+
⋅
+
⋅
=
L
bit
n
bit
n
Например, пусть задано значение основания osnovanie = 2 новой системы счисления. Пусть десятичная дробь, подлежащая переводу, рав- на: fraction = 0.625. Пусть число разрядов в слове равно n_bit = 8.
Тогда функция должна возвратить массив – строку
(
)
0 0
0 0
0 1
0 1
. Для того чтобы прочесть это число (т. е. пере- и
625 0
2 0
2 0
2 0
2 0
2 0
2 1
2 0
2 8
7 6
5 4
3 2
1
=
⋅
+
⋅
+
⋅
+
⋅
+
⋅
+
⋅
+
⋅
+
−
−
−
−
−
−
−
−
Мы знаем, что не всякую десятичную
1
в тата ограничено. Поэтому полезно дополнить состав переменных, воз- вращаемых функцией, сведениями:
– о погрешности представления дроби fraction в новой системе ления;
92