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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]