- •ПРЕДИСЛОВИЕ
- •ВВЕДЕНИЕ
- •ЧАСТЬ 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. Конус
5.6. Запись массивов данных на диск
В рассматриваемом примере информативная часть расчетов содержится в блоке D1. Сохраним его на диске. Далее (п. 5.7) будем имитировать ситуацию последующего использования матрицы D, но получим ее путем реконструкции структуры Якоби.
Запись на диск делается с использованием функции WRITEPRN( ), в качестве аргумента которой указывается имя файла в кавычках. Если запись производится не в текущий каталог, нужно указать полное имя файла (содержащее имя и путь к нему). Имя функции нужно набирать ПРОПИСНЫМИ буквами.
WRITEPRN(“5.txt”) : = D1
Если выйти в текущий каталог, то мы найдем в нем файл с именем 5.txt, записанный из Mathcad’а в ASCII-кодах.
Запись на диск проведена.
5.7. Соединение (композиция) матриц и векторов
Продолжим решение задачи п. 5.5 – 5.6. – представим себе, что нужно реконструировать матрицу Якоби по записи ее последней строки в файле 5.txt. «Забудем» также размерность матрицы (ее тоже нужно будет реконструировать). Этапы решения:
Этап 1. Чтение строки матрицы из файла 5.txt.
Этап 2. Определение размерности матрицы, подлежащей реконструкции.
Этап 3. Формирование недостающих блоков (нулевого столбца
идиагональной субматрицы).
Этап 4. Соединение нулевого столбца и диагональной субматрицы, получение верхней части матрицы Якоби.
Этап 5. Соединение верхней части матрицы Якоби, полученной наэтапе4, синформативнойнижнейстрокой, считаннойизфайла наэтапе1.
Выполнение этапов 1 и 2 «Чтение с диска и определение размерности».
Выберем идентификатор матрицы (например, Z) и прочтем в нее информативную строку матрицы Якоби из файла 5.txt. Определим число элементов в этой матрице, зная, что она является строкой. Число столбцов определяется с помощью функции cols( ) (сокращение от columns – столбцы). Определим также максимальное значение индекса элементов строки (на 1 меньше числа столбцов, учитывая нумерацию с нуля). Должно получиться так, как показано на рис. 2.14.
35
Z := READPRN("5.txt" )
Результат чтения из файла
Z = |
|
0 |
1 |
2 |
3 |
4 |
|
5 |
6 |
7 |
8 |
9 |
|
0 |
1 |
3 |
5 |
6 |
8 |
|
7 |
9 |
2 |
6 |
3 |
|
Число столбцов в строке Z |
|
|
|
|
|
||||||
n := cols(Z) − 1 |
|
|
|
|
|
|
|
|
|
|||
n = 9 |
- максимальное значение |
|
|
|
|
|
||||||
|
|
индекса элементов строки Z |
|
|
|
|
Рис. 2.14. Чтение из файла в матрицу и определение размерности.
Этапы 1 и 2 завершены.
Выполнение этапа 3 «Формирование недостающих блоков», см.
рис. 2.11, 2.12.
Вначале сформируем левый столбец, все элементы которого – нулевые. Индекспоследнегоэлемента– на1 меньшеразмерностиматрицы, т. е. n-1.
Научимся вводить векторы по уравнениям элементов:
–задаем диапазон изменения индекса;
–записываем формулу (через оператор присваивания :=) для вычисления каждого элемента;
–выводим результат для проверки.
Должно получиться так, как показано на рис. 2.15.
Значения, которые принимает |
j := 0.. n − 1 |
индекс элементов вектора |
|
|
Vj := 0 |
Идентификатор индекса (набор индекса – клавишей < [ >)
Идентификатор вектора
0
000
V = 0
000
0
атзультРе
Рис. 2.15. Чтение из файла в матрицу и определение размерности.
36
|
|
|
E := identity(n) |
|
|
|||||
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
||
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
||
|
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
|
|
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
|
|
|
|||||||||
E = 0 0 0 0 1 0 0 0 |
0 |
|||||||||
|
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
|
|
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
|
|
|
|||||||||
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
||
|
|
|
|
|
|
|
|
|
|
|
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
||
|
|
|
|
|
|
|
9×9 |
х 9 |
||
Полученаматрица 9 |
Рис. 2.16. Генерация единичной матрицы.
Следующий недостающий блок – единичная матрица (правая верхняя часть матрицы Якоби, рис. 2.11).
Размерность единичной матрицы – на 1 меньше, чем размерность матрицы Якоби. Воспользуемся встроенной Math- cad-функцией, возвращающей единичную матрицу. Аргументом функции является размерность этой единичной матрицы (в нашем случае n – не путайте с нумерацией индексов!).
Имя функции identity( ). Выберите идентификатор (например, E) и присвойте ему значение единичной матрицы размерности n×n. Затем выведите матрицу на экран для проверки. Должно получиться так, как показано на рис. 2.16.
Этап 3 завершен.
Выполнение этапов 4 и 5 «Композиция («сращивание») блоков с целью получения матрицы Якоби».
При «сращивании» матриц главное – не напутать с размерностями. Встык (слева направо) можно сращивать матрицы с одинаковым числом строк (а число столбцов может быть разным). «Сверху вниз» можно, наоборот, сращивать матрицы с одинаковым числом столбцов (а число строк может не совпадать).
В нашем примере можно срастить нулевой вектор V и единичную матрицу E. Соединение матриц встык (т. е. так, чтобы первая матрица примкнула ко второй слева) производится встроенной функцией augment( ), аргументами которой являются идентификаторы сращиваемых матриц (можно сращивать 2 и более матрицы с обязательно совпадающим числом строк). Введите идентификатор (например, Upper_Jacob) и присвойте ему результат сращивания матриц. Должно получиться так, как показано на рис. 2.17. Там же показано ошибочное соединение матриц с несовпадающим числом строк. Mathcad в этом случае выведет сообщение об ошибке, если установить указатель мыши на часть формулы, показанной красным цветом.
37
Соединение матриц «встык» с согласованными размерностями
Попытка соединить матрицы, не согласованные по размерностям. Выведено сообщение об ошибке:
«Число строк и/или столбцов не совпадает»
Рис. 2.17. Соединение матриц встык.
Осталось соединить «сверху вниз» матрицу Upper_Jacob и введенную из файла строку Z. Такое соединение выполняется функцией stack( ) также с контролем согласованности размерностей (числа столбцов обязательно должны совпадать). Введите идентификатор (например, Jacob) и присвойте ему результат стыковки матриц. В результате получится матрица Якоби, которую мы «собрали» с помощью вычислений при очень малом вводе из файла (там хранится только 10 % общего числа элементов матрицы). Результат должен получиться таким, как показано на рис. 2.18.
Рис. 2.18. Результат композиции матриц.
Выполнение этапов 4 и 5 завершено. Решение задачи закончено.
38