Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Вправа 8



1) Транспонуйте матрицю М

за допомогою операції Символи Þ Матриці Þ Транспонування.

2) Інвертуйте матрицю

за допомогою операції Символи Þ Матриці Þ Інвертування.

3) Обчислить визначник матриці М

за допомогою операції Символи Þ Матриці Þ Визначник.

Вправа 8. Обчислить границі:

1) 2)
3) 4)
5) 6)
7) 8)  

3.8. Контрольні запитання

1. Назвіть способи виконання символьних операцій у MathCAD.

2. Що необхідно зробити з виразом перед застосуванням символьних перетворень у командному режимі?

3. Перелічите символьні операції з виділеними виразами.

4. Перелічите символьні операції з виділеними змінними.

5. Перелічите символьні операції з виділеними матрицями.

6. Перелічите символьні операції перетворення.

7. Які параметри визначає стиль представлення результатів обчислень і де він задається?

8. У яких випадках результат символьних перетворень міститься в буфер обміну?

9. Яким образом можна обчислити границю в MathCAD?

10. Для чого необхідне завдання операторів користувача?

11. Як задати оператор користувача?


II. ПРОГРАМУВАННЯ В СИСТЕМІ MATHCAD

1. Програмування з використанням програм-функційMathCAD

1.1. Опис програми - функції і локального оператору присвоєння

1.2. Звернення до програми-функції MathCAD

1.3. Програмування в програмі-функції лінійних алгоритмів

1.4. Програмування в програмі-функції алгоритмів, що розгалужуються

1.5. Програмування в програмі-функції циклічних алгоритмів

1.5.1. Програмування циклу типу арифметичної прогресії

1.5.2. Програмування ітераційних циклів

1.6. Можливі використання умовного оператора IF

1.7. Додаткові оператори програмування циклів у пакеті Mathcad 7 Professional

Нагадаємо, що реалізувати той чи інший алгоритм обчислення в пакеті MathCAD можна двома способами:

¨ вставляючи відповідні оператори чи функції в текст документа MathCAD. Такий спосіб називається програмуванням у тексті документа;

¨ використовуючи так називані програми-функції, що містять конструкції, багато в чому подібні до конструкцій таких мов як PASCAL чи FORTRAN: оператори присвоєння, оператори циклів, умовні оператори і т.д. Написання програм - функцій у MathCAD дозволяє розв’язати задачі, що неможливо розв’язати, використовуючи тільки оператори і функції MathCAD. Такий спосіб будемо називати програмуванням у програмі-функції. Таке програмування включає два етапи:

¨ опис програми-функції;

¨ виклик програми-функції.

Розглянемо окремо ці два етапи.

1.1. Опис програми - функції і локального оператору присвоєння

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

Кожна програма-функція MathCAD має оригінальне ім'я, використовуючи яке здійснюється звернення до цій програмі-функції. Через це ж ім'я (і тільки через це ім'я) “повертається” у робочий документ результат виконання програми-функції.

Після імені програми-функції йде список формальних параметрів, взятий у круглі дужки. Через формальні параметри "всередину" програми-функції “передаються” дані, необхідні для виконання обчислень всередині програми. Як формальні параметри можуть використовуватися імена простих змінних, масивів і функцій. Формальні параметри відокремлюються один від одного комами.

Зауваження 2.1. Програма-функція може не мати формальних параметрів і тоді дані передаються через імена змінних, визначених вище опису програми-функції. v

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

Порядок опису програми-функції MathCAD. Для введення в робочий документ опису програми-функції необхідно виконати наступні дії:

· ввести ім'я програми-функції і список формальних параметрів, взятий у круглі дужки (див. Зауваження 6.1);

· ввести символ “:” - на екрані відображається як “: =”;

· відкрити складальну панель Програмування (див. параграф 4.1) і клацнути кнопкою “Add line”. На екрані з'явиться вертикальна риса і вертикальний стовпець із двома полями вводу для введення операторів, що утворять тіло програми-функції (див. рис. 1.1).

Рис. 1.1. Структура програми-функції

· перейти в поле 1 (клацнувши на ньому чи мишею натиснувши клавішу [Tab]) і ввести перший оператор тіла програми-функції. Оскільки нижнє поле завжди призначене для визначення значення, що повертається програмою, поле введення додаткових операторів відкривається за допомогою щиглика на кнопці “Add line” панелі програмування. При цьому поле введення додається внизу виділеного до цього моменту оператора. Для видалення того чи іншого оператора з тіла програми-функції, потрібно укласти його в рамку, що виділяє, і натиснути клавішу [Delete] (див. рис. 1.2);

Рис. 1.2. Додавання операторів у тіло програми-функції

· заповнити саме нижнє поле введення (поле 2), ввівши туди вираз, що визначає значення, що повертається через ім'я програми-функції, (див.рис.1.3).

У наведеному прикладі формальним параметром є проста змінна x, тіло програми включає два локальних оператори присвоєння (див. наступний пункт) і значення змінної z визначає результат, що повертається через ім'я функції в результаті виконання програми-функції.

Рис. 1.3. Остаточна структура програми-функції

Локальний оператор присвоєння. Для завдання всередині програми значення якої-небудь змінної використовується так називаний локальний оператор присвоєння, що має вид:

< ім'я - змінної > < вираз >

Увага! Використання "звичайного" оператора присвоєння (позначається: =) у тілі програми-функції приводить до синтаксичної помилки.

1.2. Звернення до програми-функції MathCAD

Для виконання програми-функції необхідно звернутися до імені програми-функції з вказівкою списку фактичних параметрів (якщо в описі програми присутній список формальних параметрів), тобто

< ім'я - програми > (список фактичних параметрів)

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

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

· якщо формальним параметром є проста змінна, то в якості фактичного може використовуватися константа, змінна, арифметичний вираз;

· якщо формальним параметром є вектор чи матриця, то фактичним повиннен бути вектор чи матриця;

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

Зауваження 1.2. Звернення до програми-функції повинне знаходитися після опису програми-функції і до моменту зверненняфактичні параметри повинні бути визначені.

Приклад 1.1. Звернення до програми f(x), наведеної на рис. 1.3 може мати наступний вид:

Помітимо, що змінна z ніяк не зв'язана з “локальною” змінною z, що використовується всередині тіла програми-функції.

Зауваження 1.3. Передати дані всередину програми-функції можна використовуючи всередині програми змінні, визначені до опису програми-функції. Наприклад:

Хоча значення змінної х змінилося всередині програми-функції, поза описом програми-функції ця змінна зберегла своє колишнє значення.

Зауваження 1.4. Імена фактичних параметрів при виклику програми-функції можуть не співпадати з іменами її формальних параметрів.

1.3. Програмування в програмі-функції лінійних алгоритмів

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

Приклад 1.2. Оформимо у виді програми-функції обчислення коренів квадратного рівняння ax2 + bx +c = 0 за формулою

Для цього введемо наступний опис програми-функції

Програма qq1 має чотири параметри: зміст перших трьох зрозумілий, а четвертий визначає знак перед коренем квадратним - задаючи Sig1=1, одержуємо корінь x1; Sig1= - 1, одержуємо корінь x2. Програма реалізує лінійний алгоритм - всі оператори виконуються завжди строго послідовно.

1.4. Програмування в програмі-функції алгоритмів, що розгалужуються

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

Приклад 1.3. Змінна y задається наступним виразом

Для програмування алгоритмів, що розгалужуються, у MathCAD є умовна функція if і умовний оператор. Використовуючи ці конструкції можна "змінити" послідовне виконання операторів. У цих конструкціях можуть використовуватися наступні нові поняття.

Вираз відношень. Цей вираз використовується для порівняння двох арифметичних виразів між собою. Вираз відношень записуються у виді:

< вир. А > < знак відношення > < вир. У>,

де як знак відношення виступають символи, наведені в таблиці 1. Якщо задане відношення виконується, то вираз відношення набуває значення рівне 1 ("істина"), у противному разі - 0 ("неправда").

Таблиця 1

Знак відношень Символи, що вводяться
= [ Ctrl ] + [ = ]
< [ < ]
> [ > ]
[ Ctrl ] + [ 0 ]
[ Ctrl ] + [ 9 ]
[ Ctrl ] + [ 3 ]

Приклад 1.4. Обчислення виразу відношень

На відміну від мов програмування можна одразу в одному виразі перевіряти декілька умов шляхом додавання знаків відношень і арифметичних виразів. Цю можливість ілюструє наступний приклад.

Приклад 1.5.

Логічні операції. Визначено дві логічних операції, що ставляться між виразами відношень.

Логічна АБО операція. Позначається знаком + і записується у виді

< логіч.вир.1 > + < логіч.вир. 2>

Результат операції дорівнює 0, якщо обидва логічних вирази дорівнюють 0 і дорівнює 1 для всіх інших значень логічних виразів.

Логічна операція ТА. Вводиться знаком * (у тексті це крапка) і записується у виді

< логіч.вир.1 >. < логіч.вир. 2>

Результат дорівнює 1, якщо обидва логічних вирази дорівнюють 1 і дорівнює 0 для всіх інших значень логічних виразів (порівняєте з логічним АБО оператором).

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

* круглі дужки;

* логічна операція ТА;

* логічна операція АБО.

Задача 1.1. Поясніть порядок обчислення двох нижче наведених логічних виразів:

Рекомендація: для однозначного обчислення логічного виразу використовуйте круглі дужки.

Умовна функція if. Ця функція записується у виді (символи if вводяться з клавіатури):

if (< логіч. вираз. >, < ариф.вираз.1>, < ариф.вираз.2 >)

Правило обчислення умовної функції if: якщо логічний вираз дорівнює 1, то функція набуває значення рівне значенню арифметичного виразу 1; якщо логічне вираз дорівнює 0, то функція набуває значення рівне значенню арифметичного виразу 2.

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

Приклад 1.6. Реалізуємо алгоритм обчислення функції y(х) прикладу 1.3 у виді

Звернення до цієї програми-функції в тексті документа

Умовний оператор. Цей оператор використовується тільки в тілі програми-функції і для його введення необхідно клацнути на кнопці if панелі програмування чи клавіші [ } ]. На екрані з'являється конструкція з двома полями введення, зображена на наступному малюнку.

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

Умовний оператор може знаходитися тільки всередині тіла програми-функції. Наприклад:

У полі 3 задається вираз, значення якого використовується, якщо логічний вираз дорівнює 0. Для введення в поле 3 необхідно:

· вкласти це поле в рамку, що виділяє;

· клацнути на кнопці “otherwise” панелі програмування;

· у полі, що залишилося, введіть відповідний вираз.

Приклад 1.7. Складемо програму-функцію, що обчислює функцію y(x), задану в прикладі 1.3. Для цього введемо опис наступної програми-функції:

Звернення до цієї програми-функції має вигляд

Таким чином, вираз, що стоїть перед словом otherwise виконується тільки в тому випадку, якщо не виконана задана перед цим умова.

У програмі можна використовувати декілька слідуючих один за одним умовних операторів з одним виразом перед словом otherwise.

Приклад 1.8. Складемо програму-функцію для обчислення змінної z по формулі

z(t) =

У робочий документ введемо опис наступної програми-функції

Помітимо, що функція z(t) одержить значення ln(t) тільки тоді, коли не виконуються умови, що записані у двох рядках, які знаходяться вище.

Якщо в поле 3 ввести оператор без слова otherwise, то цей оператор буде виконуватися завжди незалежно від виконання заданих вище умовних операторів.

1.5. Програмування в програмі-функції циклічних алгоритмів

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

Класифікація циклів. Цикли можна умовно розділити на дві групи:

¨ цикли типу арифметичної прогресії;

¨ ітераційні цикли.

Характерною рисою першої групи циклів є те, що кількість повторень тіла циклу можна визначити до початку виконання програми, що реалізує цикл, тобто апріорі. Класичним прикладом циклу типу арифметичної прогресії є цикл прикладу 3.5.

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

Приклад 1.9. Обчислити значення x= , використовуючи ітераційну процедуру

xn=0.5(xn--1+a/xn-1), n=1,2,3,.., x0=a.

Як наближене значення квадратного кореня береться таке значення xn, що задовольняє умові

,

де - задана точність обчислення.

Видно, що задавши вихідні дані, наприклад, a = 9, = 10-3, не можна, не виконуючи ітераційні обчислення, визначити кількість повторень тіла циклу.

1.5.1. Програмування циклу типу арифметичної прогресії

Для програмування таких циклів використовується оператор циклу for. Для введення такого оператора необхідно виконати наступні дії:

· клацнути на кнопці for складальної панелі Програмування. На екрані з'являться поля введення, зображені на рис. 1.4.

Рис. 1.4. Структура оператора циклу for

· у поле введення 1 введіть ім'я параметра циклу;

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

· у поле введення 3 вводяться оператори, що складають тіло циклу. Якщо одного рядка недостатньо, то додаткові поля введення (додаткові рядки) створюються щигликом на кнопці “Add line” у панелі програмування і тоді ліворуч від тіла циклу з'являється вертикальна риса.

Приклад 1.10. Для x, що змінюється від -2 до 2 із кроком 0.5 обчислити значення f(x) = e-x. Cos (2x) і сформувати з цих значень вектор y, тобто y1 = f(-2), y2 = f(-1.5) і т.д.

У цьому прикладі кількість повторень визначається по формулі

де xk, x0 - кінцеве і початкове значення параметра циклу, d - крок його зміни. Підставивши значення, одержуємо (2 - (-2))/0.5+1=9.

Опис програми-функції має вид

У цьому варіанті опису програми-функції формальні параметри використовуються для завдання діапазону зміни параметра циклу (змінна x). Для зміни індексу в елемента масиву y вводиться змінна i цілого типу всередині програми-функції. Звернення до описаної програми-функції може мати вигляд

Зауваження 1.5. Якщо значення індексів елементів масиву змінюється починаючи з 1 (як у цьому прикладі), то початкове значення індексу необхідно встановити рівним 1 (для цього звернутися до пункту MATH команди Built-inVariables, а потім в поле введення Origin ввести значення 1 (замість встановленого за замовчуванням значення 0).

Приклад 1.11. Трохи змінимо умови приклада 3.5, а саме:значення х,для яких обчислюється функція y(x) задається вектором x, що має n компонент. Для кожної компоненти вектора х обчислити значення функції f(x)=e-x Cos ( 2x) і записати це значення у відповідну компоненту вектора y.

Опис програми-функції, що розв’язує цю задачу має вигляд:

Тут формальним параметром є: n - число елементів вектора x; х - вектор, що складається з n елементів.

Звернення до описаної програми-функції можна здійснити за допомогою конструкцій:

1.5.2. Програмування ітераційних циклів

Для програмування таких циклів використовується оператор циклу while. Для введення цього оператору необхідно виконати наступні дії:

· клацнути на кнопці while панелі Програмування. На екрані з'являються елементи, показані на рис. 1.5.

Рис. 1.5. Структура оператора циклу while

· у поле 1 ввести умову виконання циклу;

· у поле 2 ввести оператори тіла циклу. У тілі циклу повинні бути присутнім оператори, що роблять умову циклу помилковою, інакше цикл буде продовжуватися нескінченно.

Оператор циклу while виконується в такий спосіб: знайшовши оператор while, MathCAD перевіряє зазначену умову. Якщо вона істина, то виконується тіло циклу і знову перевіряється умова. Якщо вона ложна, то цикл закінчується.

Приклад 1.12. Складемо програму-функцію, що реалізує ітераційну процедуру наближеного обчислення кореня квадратного, описану в прикладі 1.9.

Як видно з тексту програми-функції, немає необхідності зберігати в пам'яті всі наближені розв’язки x0, x1, x2,..., і т.д. Досить зберігати попереднє (“старе”) значення xc і наступне (“нове”) значення xn.

Звернення до описаної програми буде мати вид

Нажаль організація ітераційного циклу за допомогою оператора while, без додаткових засобів контролю може привести до зациклення. Наприклад, задавши при зверненні до програми eps < 0 одержуємо зациклення.

Тому в MathCAD є спеціальний оператор break, що дозволяє вийти з циклу чи призупинити виконання програми при виконанні заданій в операторі break умові. Для введення оператора break необхідно клацнути на кнопці break панелі Програмування (не можна вводити цей оператор з клавіатури по символах). Оператор break використовується в лівому полі введення умовного оператор if, а в правому розміщується умова, при виконанні якої відбувається припинення роботи циклу чи програми, у нижнім полі - оператор, який виконується, якщо умова не виконана. Тому спочатку вводиться оператор if, а потім заповнюються поля цього оператора.

Наступний приклад показує написання програми, що не зациклюється з оператором break.

Приклад 1.13. Складемо програму-функцію, що реалізує ітераційну процедуру обчислення кореня квадратного (див. приклад 1.9) без зациклення. Опис такої програми-функції має вигляд:

У цій програмі число повторень тіла обмежено 1000. Якщо за це число ітерацій наближене значення кореня з заданою точністю не знайдено, то параметр ierr одержує значення 1, що говорить про помилку обчислювального процесу (якщо були виконані 1000 ітерацій). Тому що через ім'я програми передається значення тільки однієї змінної, то для передачі двох значень xn, ierr використовується вектор, компоненти якого формуються всередині програми.

Значення ierr потрібно перевіряти після звернення до програми sqroot1. Наприклад,

1.6. Можливі використання умовного оператора IF

Умовний оператор if може використовуватися для реалізації досить складних алгоритмів, що розгалужуються, у тілі операторів циклу. Тому розглянемо різне заповнення полю 1 і полю 3 цього оператора.

Варіант 1. У полі 1 знаходиться локальний оператор присвоєння (формування одиничної матриці)

Варіант 2. У полі 1 знаходяться декілька операторів

1.7. Додаткові оператори програмування циклів у пакеті Mathcad 7 Professional

Оператор continue. Як правило, використовується для продовження виконання циклу шляхом повернення на початок тіла циклу. Наступний приклад пояснює роботу цього оператора.

Приклад 1.14. Складемо програму-функцію, що формує новий вектор з позитивних компонент вихідного вектора.

У тілі програми-функції використовується функція last(v), що визначає індекс останнього елемента масиву v (див. зауваження 1.5).

Звернення до цієї програми функції має вигляд

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

Оператор return. Перериває виконання програми-функції і повертає значення операнда, що стоїть за ним. Наступний приклад пояснює роботу цього оператора.

Приклад 1.15. Складемо програму-функцію, що знаходить першу позитивну компоненту вихідного вектора. Можливі два варіанти.

Варіант А Варіант B

Варіант B здається більш простим і "елегантним".

Оператор on error. Цей оператор є оброблювачем виникаючих при виконанні тих чи інших обчислень помилок і записується у вигляді:

< вираз 1 > on error < вираз 2 >

і виконується < вираз 1 >, якщо при виконанні < вираз 2 > виникає помилка. Якщо помилка не виникає, то виконується < вираз 2 >.

Приклад 1.16. Використовуємо оператор on error длязапобігання появи помилки "ділення на нуль" при обчисленні функції angl(x,y).

Функція error. Використовується для виводу діагностичних повідомлень при виникненні в обчисленнях помилки і записується у вигляді

error ( "< діагностичне повідомлення користувача >")

Функція використовується в лівому полі умовного оператора if, як показано в наступному прикладі.

Приклад 1.17. Програмування виводу діагностичного повідомлення при спробі спроектувати вектор v на нульовий вектор w.





Дата публикования: 2014-12-11; Прочитано: 606 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.033 с)...