Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
KT_P_ch1.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
12 Мб
Скачать
☆

Тема 27. Прикладна програма для розв’язання технічних задач MathCad

Дані, що читаються з файлу або записувані у файл, належать до нового типу даних - файлових.

Для зручності викладу операторів для роботи з файловими даними, розділимо ці дані на дві групи:

структуровані файли;

неструктуровані файли.

У структурованому файлі дані розташовуються у вигляді матриці, тобто кожний рядок (так званий запис) має однакове число елементів. У неструктурованому файлі дані розташовуються або послідовно (тільки один запис ), або в декількох записах, але з різним числом елементів у них .

При роботі зі структурованими файлами необхідно пам'ятати:

пробіли, коми, знаки табуляції використовуються як роздільники даних;

переклад рядка (клавіша [Enter]) здійснює перехід до нового рядка (нового запису файлу);

як роздільник між цілою й дробовою частиною речовинного числа використовується тільки десяткова крапка (увага при роботі з даними з таблиць Excel);

дані у файлі повинні бути впорядковані у вигляді матриці, тобто кожний рядок повинна містити однакову кількість числових значень;

порожні рядки й рядки, що містять ASCII-Текст, при зчитуванні ігноруються;

якщо файл не відповідає перерахованим вимогам, то ім'я файлу у функціях уведення-висновку виділиться червоним кольором.

При роботі з неструктурованими файлами необхідно пам'ятати:

пробіли, коми, знаки табуляції, переклади рядків використовуються як роздільники даних;

як роздільник цілої й дробової частини речовинного числа використовується тільки десяткова крапка.

У функціях роботи з файловими даними аргументом є Ім'я файлу, у якості якого може виступати:

строкова константа, що містить повне ім'я файлу або тільки ім'я файлу (якщо він перебуває в поточному каталозі);

строкова змінна, що одержала значення строкової константи, що визначає ім'я файлу.

Приклад 1.1.1. Проілюструємо два способи завдання Ім'я файлу на прикладі функції READ :

а) А : =READ(“E :\COPY\data1.dat”)

б) file_1 : =”E :\COPY\data1.dat”

A : = READ(file_1) ♦

1.2. Запис даних у файл

Для створення неструктурованих файлів використовується дві функції:

WRITE («Ім'я файлу») : = «ДАНІ»

APPEND («Ім'я файлу») : = «ДАНІ»

При використанні цих функцій варто пам'ятати:

якщо у функції WRITE зазначене ім'я існуючого файлу, то він заміняється новим файлом без попередження. Отже, цією функцією не можна користуватися для додавання даних у кінець існуючого файлу;

функція APPEND використовується для додавання даних у кінець існуючого файлу. Якщо файл не існує, то ця функція створює його, записуючи туди дані;

кожне звертання до функції APPEND додає у файл дані, починаючи з нового рядка (новий запис);

ДАНІ - це тільки один елемент із наступного списку:

ім'я простої змінної;

ім'я масиву із вказівкою індексного вираження;

значення числової константи;

для запису декількох елементів необхідно виклик функції поставити в тіло циклу, параметр якого індексується вираженням (див. приклад 1.2.1).

Приклад 1.2.1. Записати у файл наступну інформацію:

значення змінної ;

значень випадкових чисел з інтервалу [0, 99];

значень цілих чисел від 0 до .

Фрагмент документа, що здійснює запис таких файлових даних, наведений на мал. 1.2.1. Тут функція rnd(a) генерує випадкові числа, рівномірно розподілені в інтервалі [0, a], а функція floor(x) – обчислює найбільше ціле число, меншому або рівне речовинному числу x. У вікні програми Блокнот добре видний структура сформованого файлу. :

Рис. 1.2.1. Запис неструктурованого файлу

Зауваження 1.2.1. Розглянуті функції створення неструктурованого файлу входили до складу більше ранніх версій пакета MathCAD (до версії MathCAD2000 включно). У русифікованій версії MathCAD2001i звертання до цих функцій викликає помилку (див. мал. 1.2.2), тому рекомендується працювати тільки з функціями створення структурованих файлів.

Рис. 1.2.2. Помилка при звертанні до функції WRITE

Для створення структурованих файлів використовуються дві функції:

WRITEPRN («Ім'я файлу») := <ДАНІ>

appendPRN («Ім'я файлу») := <ДАНІ>

При використанні цих функцій необхідно пам'ятати:

якщо у функції WRITEPRN зазначене ім'я існуючого файлу, то цей файл заміняється новим файлом без попередження;

функція APPENDРRN використовується для додавання даних у кінець існуючого файлу. При цьому число стовпців масиву, що додається, повинне збігатися із числом стовпців масиву, уже записаного у файл. Це правило дозволяє додавати в кінець файлу вектори з будь-яким числом елементів;

як роздільник між числами записується пробіл, наприкінці кожного рядка здійснюється перехід на новий рядок;

ДАНІ - це тільки один елемент із наступного списку:

ім'я простої змінної;

ім'я масиву;

значення числової константи.

Якщо необхідно записати у файл трохи змінних, то з них потрібно сформувати вектор, що потім записується у файл.

Структура створюваного файлу визначається наступними системними змінними:

PRNCOLWIDTH - кількість позицій, що відводяться під один стовпець (за замовчуванням дорівнює 8);

PRNPRECISION - число цифр, що задаються, після десяткової крапки в записі числа (за замовчуванням дорівнює 4).

Значення цих параметрів можна змінити, обратясь до пункту меню Математика, команда Опції, вкладка Убудовані змінні.

Приклад 1.2.2. Записати у файл матрицю В, k-й стовпець якої є вибірка з нормального розподілу з математичним очікуванням і среднеквадратическим відхиленням (дисперсія відповідно ).

Фрагмент документа, що здійснює запис структурованого файлу, наведений на мал. 1.2.3. У вікні програми Блокнот добре видний структура сформованого файлу (число рядків n = 5, число стовпців m = 4). :

Рис. 1.2.3. Запис структурованого файлу

Завдання 1.2.1. Скласти фрагмент документа MathCAD, що формує файл, що містить два стовпці:

перший стовпець містить значення обумовлені по формулі:

;

другий стовпець містить функції , де

. ●

Завдання 1.2.2. Скласти фрагмент документа MathCAD, що формував файл, що містить крім матриці В, обумовленої умовами приклада 1.2.2, додану в кінець файлу матрицю З розмірності , k-й стовпець якої є вибірка з нормального розподілу з математичним очікуванням і дисперсією . ?

Зауваження 1.2.2. Створюваний в MathCAD файл даних досить просто переглянути й відредагувати в текстовому редакторі, що відображає ASCII-Дані. Прикладами таких редакторів може служити програма Блокнот, що входить до складу Windows (Програми ( Стандартні), а також редактори мов програмування - PASCAL, СИ й ін.

Завдання 1.2.3. Використовуючи програму Блокнот, перевірте правильність формування файлу в завданні 1.2.2. ?

1.3. Читання даних з файлу

Для читання даних з неструктурованих файлів використовується функція:

<ІМ'Я> := READ(<Ім'я файлу >),

де <ІМ'Я> - це або ім'я простий змінної, або ім'я масиву із зазначеним індексним вираженням (тобто елемент масиву).

Необхідно пам'ятати, що при кожному звертанні до функції READ читання даних починається з початку файлу. Тому для читання великої кількості даних доцільно вважати їх у масив, а потім через елементи цього масиву визначати потрібні змінні (див. приклад 1.3.1).

Приклад 1.3.1. Сформувати вектор з останніх елементів файлу , сформованого в прикладі 1.2.1. Значення змінної визначається першим числом у файлі . Фрагмент програми показаний на мал. 1.3.1. :

Рис. 1.3.1. Читання даних з неструктурованого файлу

Зауваження 1.3.1. Розглянута функція читання неструктурованого файлу входила до складу більше ранніх версій пакета MathCAD (до версії MathCAD2000 включно). У русифікованій версії MathCAD2001i звертання до цієї функції викликає помилку й рекомендується працювати тільки з функцією читання структурованого файлу.

Для читання даних зі структурованих файлів використовується функція:

<ІМ'Я> := READPRN(<Ім'я файлу >),

де <ІМ'Я> - це або ім'я простий змінної, або ім'я масиву.

При використанні цієї функції необхідно пам'ятати:

з файлу читається весь записаний масив даних;

порожні рядки й рядки, що містять ASCII-Текст, при зчитуванні ігноруються.

Приклад 1.3.2. Визначити вибіркове математичне очікування й дисперсію по всіх елементах матриці В, сформованої в прикладі 1.2.2.

Фрагмент програми представлений на мал. 1.3.2. Тут функція mean обчислює вибіркове середнє, а функція var – вибіркову дисперсію. Зверніть увагу на формування вектора через елементи матриці. Такий перехід часто використовується при обробці зображень. :

Рис. 1.3.2. Читання даних зі структурованого файлу

Завдання 1.3.1. Скласти фрагмент документа, що формує вектор V, k-я проекція якого дорівнює вибірковому середньому k-го стовпця матриці, сформованої в прикладі 1.2.2 і записаної у файл file_2.dat. ?

На закінчення цієї теми помітимо, що розглянуті функції дозволяють організувати «гнучку» зв'язок пакета MathCAD з іншими обчислювальними програмами на рівні обміну файловими даними.

Оператори Mathcad

Оператори використовуються в математичній області й призначені для виконання

Різних операцій над операндами. Вони можуть уводитися із клавіатури, кнопками палітри інструментів, а так само командами меню.

При описі операторів будемо користуватися наступними позначеннями операндов:

А й В - масиви, вектори, матриці;

u і v - вектори з речовинними або комплексними числами;

z і w - речовинні або комплексні змінні;

М - квадратна матриця;

x і y - речовинні числа;

i - дискретний аргумент;

f - функція;

X і Y - змінні або вираження будь-якого типу.

Розглянемо наступні групи операторів.

3.1. Арифметичні оператори

В Mathcad використовуються звичайні оператори з курсу математики. Вони викликаються кнопкою 1 математичної палітри (див. мал. 1.4)

Додавання (X+Y) / вирахування ( X-Y) (+ або -): Повертає суму (X+Y) / різниця ( X-Y). Якщо претор не міститься в один рядок, те замість клавіші + можна використовувати клавіші Ctrl+Enter. Тоді в документ буде вставлене

X... або X...

+Y + -Y.

Операнды повинні мати однакову розмірність або бути скалярними величинами.

Множення (X*Y) (*): повертає добуток X*Y. Операнды можуть мати однакову розмірність, бути скалярами, а також може бути X - скаляр, Y - матриця. MathCad також підтримує «яке мається на увазі множення» між константами й змінними. Наприклад, можна записати 5Х замість 5*Х. Яке мається на увазі множення для восьмеричних і шестнадцатеричных констант не підтримується.

Розподіл (Y/z) (/ ): повертає часте від Y/z. Якщо z=0, то з'являється повідомлення об помилки. Операнды Y і z - скаляри, причому z не дорівнює 0. Якщо Y - масив, то оператор ділить кожний елемент масиву на z. Якщо Y=0 і z=0, то результат дорівнює 0.

Комплексно – сполучене число (Х) (“): Міняє знак мнимої частини комплексного числа Х, тобто із числа Re(X)+iIm(X) одержуємо число Re(X)-iIm(X).

Факторіал (n!) (!): повертає факторіал числа, .Число n повинне бути позитивним цілим. Факторіали n>170 викликають переповнення розрядної сітки, тому їх доцільно обробляти символічним процесором.

Ступінь (z^w) (^): повертає значення підстави z^w. Операндами є речовинні або комплексні числа. Ступінь w повинна бути безрозмірної величенной.

Абсолютна величена |z| (|): Повертає абсолютну величину те z. Операнд повинен бути скаляр.

Корінь n – й ступеня z (z^(1/n)) (trl \): повертає речовинний корінь n – ой ступеня з z, якщо це можливо.

Квадратний корінь із z (z^0.5) (\): повертає позитивний квадратний корінь для позитивних z або головне значення для нематеріальних z.

3.2. Оператори векторів і матриць

Оператори векторів і матриць призначені для виконання різноманітних обчислень із векторами й матрицями. Багато хто з них доступні з палітри операторів. Доцільно використовувати вектор - стовпець, чим вектор - рядок. Розглянемо наступні оператори:

Додавання ( А+В, А+z ) (+) / вирахування ( А-В, А-z ) (-): оператор підсумує / віднімає елементи матриць А и В по элементно або до кожного елемента матриці А додає / віднімає число z. Масиви А и В повинні мати однакову розмірність.

Заперечення (-А) (-): повертає масив, кожний елемент якого помножений на (-1).

Визначник ( |M|) (|): повертає визначник квадратної матриці.

Множення матриць ( А*В) (*): повертає добуток матриць А на В, де, якщо матриця А має розмірність m x n, те матриця В повинна мати розмірність n x p.

Векторизация X ( Ctrl+- ): пропонує у вираження Х робити операції по элементно. Всі вектори й матриці повинні бути одного розміру.

Підсумовування вираження Х по i ( Ctrl+Shift+4 ): повертає суму ( ) по i=m,m+1,m+2+ +n від Х. Вираження Х може бути будь-яким, m і n – цілі. Якщо Х має кілька доданків, то їх потрібно брати в круглі дужки. Змінна i визначена тільки усередині оператора підсумовування ( шаблон оператора наведений на мал. 3.1, а ).

Підсумовування вираження Х по дискретному аргументі i ($): повертає суму ( ) по i, що є дискретним аргументом. Вираження Х може бути будь-яким, i - цілі. Якщо Х має кілька доданків, то їх потрібно брати в круглі дужки ( мал. 3.1, б)

Рис. 3.1. Шаблони операторів

Добуток вираження Х по i (Ctrl+Shift+3): Повертає добуток (П) по I=m, m+1, m+2+…+nвід Х. Вираження Х може минуле будь-яким, m і n - цілі. Якщо Х має кілька доданків, то їх потрібно брати в круглі дужки. Змінна i визначена тільки усередині оператора добутку (мал. 3.1, в, г).

Добуток вираження Х по дискретному аргументі i (#): повертає добуток (П) по i, що є дискретним аргументом. Вираження Х може бути будь-яким, i - ціле. Якщо Х має кілька доданків, то їх потрібно брати в круглі дужки.

Інверсія матриці (M^-1) (^-1): повертає зворотну матрицю заданої. Деякі дії над матрицями наведені в прикладі 3.2.

3.3. Оператори обчислення

Оператори обчислення призначені для виконання різноманітних обчислень функцій. Вони можуть уводитися із клавіатури або за допомогою кнопок палітри (див. мал. 1.4). Розглянемо наступні основні оператори обчислення:

Похідні (?): оператор призначений для знаходження чисельного значення похідної функції в заданій крапці. Похідна обчислюється з точністю 7 - 8 значущих цифр (шаблон оператора на мал. 3.1, д). Використання операторів наведене в прикладі 3.3.

Похідні високих порядків (Ctrl+Shift+?): оператор призначений для знаходження чисельного значення похідній високого порядку функції в заданій крапці. Точність алгоритму зменшується на одну значущу цифру при збільшенні порядку похідній на одну одиницю (шаблон оператора наведений на мал. 3.1, е).

Інтегрування (&): оператор призначений для чисельного інтегрування функції на деякому інтервалі [а, в] (шаблон на мал. 3.1, ж, з). Точність інтегрування залежить від виду функції (гладка, наявність крапок розриву, асимптот і т.д.) і встановлюється системної змінної TOL. При зміні точності необхідно дотримувати компромісу між точністю й часом обчислення. Результат інтегрування - число.

Межі (Ctrl+L, Ctrl+A, Ctrl+B): Mathcad має три операторів для обчислення меж, які обчислюються тільки символьно. Шаблони меж викликаються за допомогою палітри операторів або комбінаціями клавіш:

Ctrl+L - виклик шаблона оператора межі (мал. 3.1, і);

Ctrl+A - виклик шаблона оператора правої межі (мал. 3.1, к);

Ctrl+B - виклик шаблона оператора лівої межі (мал. 3.1, л).

3.4. Булевые оператори

На відміну від інших, Болючі оператори повертають 0 або 1. Проте вони широка використовуються в умовних конструкціях Mathcad і викликаються кнопкою 2 (див. мал. 1.4). До них ставляться:

Більше чим (X>Y)(>): повертає 1, якщо X>Y, інакше 0.

Менше ніж (X<Y)(<): повертає 1, якщо X<Y, інакше 0.

Більше чим або дорівнює (X Y)(Ctrl+0): повертає 1, якщо X Y, інакше 0.

Менше ніж або дорівнює (X Y) (Ctrl+9): повертає 1, якщо X Y, інакше 0.

Не дорівнює (Ctrl+3): повертає 1, якщо X Y, інакше 0.

Дорівнює (Ctrl+=): повертає 1, якщо X=Y, інакше 0.

У версія Mathcad 2001 уведені ще два оператори:

- логічне множення й - логічне додавання.

Палітра Булевых операторів наведена на мал. 3.2.

3.5. Оператори, обумовлені користувачем

Якщо необхідний користувачем оператор не поставляється з Mathcad, його можна створити так само, як і будь-яку функцію. Імена операторів можуть бути будь-якими. Шаблони для операторів, обумовлених користувачем, поміщені в палітрі (мал. 3.2, відзначені номерами 1 - 4). У версії Mathcad 2001 Proffesional вони виділені в окрему палітру «Evaluation».

Рис.3.2. Палітра Булевых операторів і шаблони операторів для користувачів.

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