- •ПРЕДИСЛОВИЕ
- •ВВЕДЕНИЕ
- •ЧАСТЬ 1. ПЕРВОЕ ЗНАКОМСТВО С MATHCAD
- •Введение. Общие правила работы в среде Mathcad
- •§1. Ваши первые примеры
- •1.1. Ввод данных, формул, вывод решения
- •1.3. Построение графика функции одной переменной
- •1.4. Построение графика функции двух переменных
- •1.5. Освоение функции CreateMesh для форматирования графика
- •§2. Решение уравнений
- •2.2. Нахождение корня уравнения. Операторная скобка Given – Find
- •§3. Учебная задача
- •3.1. Постановка задачи
- •§4. Индивидуальные задания по части 1
- •ЧАСТЬ 2. МАТРИЦЫ И ВЕКТОРЫ В MATHCAD
- •Введение. Общие сведения о матричной алгебре в Mathcad
- •§5. Осваиваем технику работы с матрицами и векторами
- •5.1. Ввод матрицы и вектора
- •5.3. Обращение к столбцу матрицы
- •5.6. Запись массивов данных на диск
- •5.7 Соединение (композиция) матриц и векторов
- •§6. Алгебра матриц
- •6.1. Транспонирование матриц
- •6.2. Умножение матрицы на скаляр
- •6.3. Операции умножения матриц
- •6.4. Сложение матриц
- •6.5. Операции с квадратными матрицами
- •6.6. Решение примеров с действиями алгебры матриц
- •6.7. Специальные приемы работы с матрицами
- •6.8. Ранг матрицы
- •§7. Некоторые применения матриц и векторов
- •7.1. Нахождение всех корней уравнения n-й степени
- •7.2. Применение матриц и векторов для решения систем линейных уравнений
- •7.3. Применение матриц и векторов в задаче интерполяции
- •§8. Учебная задача
- •8.1. Постановка задачи
- •8.2. Решение
- •§9. Индивидуальные задания по части 2
- •ЧАСТЬ 3. ПРОГРАММИРОВАНИЕ В MATHCAD
- •Введение. О программировании в среде Mathcad
- •§10. Осваиваем технику программирования в Mathcad. Ваша первая программа
- •10.2. Выполнение этапа 2 «Разбор способа получения результата. Расчет примеров»
- •10.4. Выполнение этапа 4 «Расчет контрольных примеров применительно к алгоритму»
- •10.5. Выполнение этапа 5 «Составление программы, отладка на контрольных примерах»
- •§11. Задания для самостоятельной разработки программы
- •§12. Учебная задача
- •12.1. Введение
- •12.2. Общие положения
- •12.3. Выполнение фазы 1 решения задачи «Понять существо задачи»
- •12.4. Выполнение фазы 2 решения задачи «Предложить идею алгоритма»
- •12.6. Выполнение фазы 4 «Оценить точность программы, а также ее потенциал в качестве средства для решения других задач»
- •§13. Индивидуальные задания по части 3
- •ЧАСТЬ 4. СИМВОЛЬНЫЕ ПРЕОБРАЗОВАНИЯ В MATHCAD
- •Введение. Сведения о символьных преобразованиях в Mathcad
- •14.1. Опция Evaluate – Symbolically
- •14.3. Опция Symbolics – Expand
- •14.4. Опция Symbolics – Variable
- •§15. Учебная задача
- •15.1. Постановка задачи
- •15.2. Этапы решения
- •15.6. Выполнение этапа 4 «Решение» (на компьютере)
- •§16. Создание анимационных клипов
- •16.1. Общие сведения
- •16.2. Фазы создания анимационного клипа
- •Список использованной литературы
- •2. Арифметические, алгебраические и логические операторы
- •6. Часто употребляющиеся функции
- •8. Графики
- •Общие замечания
- •1. Плоскости
- •2. Прямая линия в пространстве
- •3. Цилиндр
- •4. Конус
§11. Задания для самостоятельной разработки программы
Ниже приводятся два задания на самостоятельную разработку программы. Необязательновыполнятьобазадания, достаточноодного(любого).
11.1. Задание 1 (более простое) для тех, кто не очень уверенно
программирует
Переработайте программу, разработанную после выполнения п. 8.5 так, чтобы она переводила правильную десятичную дробь в новую систему счисления с минимальным числом позиций так, чтобы число было переведено с погрешностью не выше заданной. Если максимального числа позиций, предусмотренных для выдачи результата, не достаточно для перевода числа с погрешностью не выше заданной – перевести десятичную дробь в новую систему счисления с максимальным числом позиций.
Переделка окажется очень малой и простой.
ДАНО:
osnovanie – основание новой системы счисления;
pogreshnost – желательная погрешность перевода дроби в новую
систему счисления (желательно, чтобы погрешность перевода была не выше значения pogreshnost. Это «желание» не всегда выполнимо: для некоторых десятичных дробей точ-
ное представление в новой системе при конечном числе позиций окажется невозможным);
n_bitmax – максимально допустимое число позиций для выдачи результата;
fraction – десятичная правильная дробь, подлежащая переводу в новую систему счисления.
ПОЛУЧИТЬ: функция Z(osnovanie, pogreshnost, n_bitmax, fraction),
возвращает СТРУКТУРУ (Nr x ε) с элементами:
Nr – число позиций, либо достаточных для представления дроби fraction с погрешностью не выше заданной pogreshnost (при этом получится Nr ≤ n_bitmax), либо (если при максимально допустимом числе разрядов n_bitmax требуемая точность не достигается) Nr получится равным
n_bitmax;
x – матрица-строка с числом элементов, равным Nr (в этой программе, в отличие от разработанной, число элементов в строке x будет различным в зависимости от требований к погрешности и от максимально допустимого числа позиций);
ε – погрешность представления дроби fraction в новой системе счисления. Может быть выше требуемой pogreshnost, если числа разрядов n_bitmax недостаточно для представления дроби с требуемой точностью.
111
11.2. Задание 2 (более сложное) для программистов, уверенных в своих силах
11.2.1. Постановка задачи. Разработайте функцию, генерирующую импульсы прямоугольной формы (рис. 3.4). Прямоугольный импульс ха-
рактеризуется четверкой параметров: {продолжительность импульса; верхний уровень (максимум); нижний уровень (минимум); начальное зна-
чение}. Эти параметры, показанные на рис. 3.4, должны принимать значения, указанные пользователем. Им же задается максимальная продолжительность серии импульсов (на рис. 3.4 – максимальное число тактов отсчета дискретного времени).
Рис. 3.4. Иллюстрация к содержательной постановке задачи.
ДАНО:
Xmax – максимальное значение импульса (действительное число); Xmin – минимальное значение импульса (действительное число);
s – продолжительность импульса (число тактов дискретного времени, в течение которого значение импульса не изменяется (целое число);
N – число тактов дискретного времени, для которого должна быть получена серия импульсов.
Xstart – начальное состояние (стартовое значение), задается для первого импульса серии.
ПОЛУЧИТЬ: функция X(Xmax, Xmin, s, N, Xstart), возвращает вектор X с элементами Xs, показывающими значение импульса в s-м такте, s =
0,...,N. Значение элемента вектора X0 должно быть равно заданному аргументу функции Xstart.
112
11.2.2. Help для программистов, не совсем уверенных в своих силах.
Позиция 1: нахождение идеи алгоритма
Зададим себе вопрос – чем отличается номер такта дискретного времени, в который происходит «переброска» импульса с минимума на максимум и наоборот, от других номеров тактов, в которых импульс не изменяет своего значения? Пусть, например, заданная пользователем продолжительность импульса составляет 11 тактов, а номер текущего такта 28. Ясно, что число 28 не удается представить как целое число продолжительностей. Поэтому в текущем такте импульс будет иметь то же значение, что и в предшествующем, 27-м.
Если же номер текущего такта равен, например, 44, то (поскольку в 44 такта укладывается целое число 11-тактных продолжительностей) нужно изменять импульс с выполнением следующего правила:
1.Если на предшествующем такте импульс имел максимальное значение, то его значение нужно заменить на минимальное;
2.Если же на предшествующем такте импульс имел минимальное значение, то его значение нужно заменить на максимальное.
Отсюда следует, что можно использовать такой «ключ» переброски импульса с минимума на максимум и наоборот:
Пусть имеет место s-й такт дискретного времени. Тогда, если |
s |
– |
s |
целое число, значение импульса нужно «перебросить», а в противном случае – сохранить прежнее значение.
Позиция 1 закончена.
Позиция 2: подбор встроенных Mathcad-функций.
Полный список функций Mathcad’а можно просмотреть с помощью иконки f(x) на строке Standard (если эта строка на мониторе не показана
– включите ее из меню View – Toolbars – Standard). Подходящие функции – округление до целого числа сверху ceil( ) («до потолка») или снизу floor( ) («от пола»). Обе они могут быть использованы для определения момента переброски значения импульса. Остановимся на функции округления снизу floor( ). Ее действие легко понять на примере:
18 |
|
|
|
43 |
|
|
44 |
|
|
4 |
|
|||||
floor |
11 |
|
=1; |
floor |
|
|
= 3; |
floor |
|
|
= 4; |
floor |
|
|
= 0. |
|
11 |
11 |
11 |
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
Мы видим, что если номер такта кратен |
s, то |
s |
|
|
s |
, |
||||||||
|
= |
floor |
|
|
|
|||||||||
s |
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
s |
|
|||
например, |
|
44 |
|
|
44 |
. Для номеров тактов, не |
кратных |
|
s, |
|||||
floor |
|
|
= |
|
|
|||||||||
11 |
11 |
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
s |
|
s |
, например, |
|
43 |
|
43 |
. |
||
floor |
|
|
< |
|
floor |
|
|
= 3 < |
|
||
|
s |
11 |
11 |
||||||||
|
s |
|
|
|
|
|
|
113
Это свойство можно использовать как ключ для изменения импульса с минимума на максимум и наоборот.
Позиция 2 закончена.
Позиция 3. К разработке алгоритма: фрагмент Исполнителя для переключения значений импульса.
ЕСЛИ |
s |
|
|
s |
И значение импульса Xs-1 в (s-1)-м такте |
|
|
= |
floor |
|
|
||
s |
|
|||||
|
|
|
s |
|
было меньше или равно (≤) минимальному значению Xmin ТО присвоить импульсу Xs в s-м такте максимальное значение;
ЕСЛИ |
s |
|
|
s |
И значение импульса Xs-1 в (s-1)-м такте |
|
|
= |
floor |
|
|
||
s |
|
|||||
|
|
|
s |
|
было больше или равно (≥) максимальному значению Xmax ТО присвоить импульсу Xs в s-м такте минимальное значение;
В ОСТАЛЬНЫХ СЛУЧАЯХ присвоить импульсу Xs в s-м такте то же значение Xs-1, что и в предыдущем, (s-1)-м такте.
КОНЕЦ ЕСЛИ Позиция 3 закончена.
Позиция 4. Некоторые детали.
1.Запись условий с логическим оператором И делается с использованием знака умножения (*).
2.В записи условий нужно использовать жирный знак равенства.
3.Пример записи условия (рис.3.5):
Рис. 3.5. Пояснения к записи условий переключения импульсов.
Позиция 4 закончена.
Позиция 5. Так будут выглядеть графики (рис. 3.6), если программа будет работать правильно.
114