Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

информатика / MathCad и MatLab / Уч метод комплекс для металлургов

.pdf
Скачиваний:
25
Добавлен:
06.02.2016
Размер:
725.28 Кб
Скачать

5.1.9 Рішення систем рівнянь

В Mathcad рішення систем лінійних алгебраїчних рівнянь (СЛАР) виконується шляхом множення зворотної матриці на вектор вільних членів або за допомогою функції lsolve. У приведеному нижче прикладі рішення системи рівнянь

ì4x + x

2

+ 7x

3

+ x

4

= 12;

ï

1

 

 

 

 

ï

x1 - 3x2

 

 

- 6x4 = 3;

í

 

4x2

- x3

+ 2x4 = -7;

ï

 

ï

x + 9x

2

- 7x

3

+ 5x

4

= 0

î

1

 

 

 

 

 

 

 

 

 

91

 

 

 

 

 

показані обидва способи. У матрицю A занесені коефіцієнти системи, а в вектор B – права частина системи.

Для рішення систем нелінійних рівнянь (СНР) використовується спеціальний обчислювальний блок, що відкривається директивою Given і має наступну структуру:

Початкові умови

Given

Рівняння Обмежувальні умови

Вирази з функціями Find або Minerr

Початкові умови визначають початкові значення шуканих змінних. Вони задаються звичайним присвоюванням змінним заданих значень. Рівняння записуються із застосуванням жирного знаку рівності (задається за допомогою палітри Булево (Boolean) або натисненням комбінації клавіш Ctrl+=) між лівою і правою частиною кожного рівняння. Обмежувальні умови задаються при необхідності у виді нерівностей або рівностей, які повинні задовольнятися при рішенні системи.

У блоці використовується одна з наступних двох функцій: Find(v1,v2,…,vn) – повертає значення однієї або декількох

змінних для точного рішення;

92

Minerr(v1,v2,…,vn) – повертає значення однієї або декількох змінних для наближеного рішення.

Функція Find використовується, коли рішення реально існує, але не є аналітичним. За допомогою блоку Given-Find можна вирішувати і СЛАР. Приклад рішення СЛАР з використанням цього блоку приведено нижче.

ìï x3 + sin y = 25

Приклад рішення СНР í

ïy2 + cos x = 27

î

з використанням обчислювального блоку Given-Find наведено нижче.

93

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

Приклад рішення СНР

ì

(x

2

2

+ (y

2

2

ï

 

+1)

 

+1) = 5,5

í

 

 

 

 

 

 

ïx + y = 0,95

î

з використанням обчислювального блоку Given-Minerr наведено нижче.

94

5.1.10 Рішення задач оптимізації

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

Тому для пошуку значень змінних x1, x2, ..., xn, при яких деяка функція f (x1, x2, ..., xn) має максимальне або мінімальне значення доцільно використовувати функції Maximize (f, x1, x2, ..., xn) і Minimize (f, x1, x2, ..., xn). Обидві ці функції реалізовані алгоритмами, які не вимагають обчислення похідних. Це дозволяє використовувати їх для врішення задач, коли обчислення похідних неможливо.

Ці функції, як і Minerr, повинні використовуватися в складі обчислювального блоку, що відкривається директивою Given і має наступну структуру:

Початкові умови Функція

Given

Обмежувальні умови

Вирази з функціями Maximize або Minimize

При цьому число обмежувальних

умов обмежене тільки

пам’яттю комп’ютера, тобто практично не обмежене.

Розглянемо їх використання на наступному прикладі. Знайти

найбільше і найменше значення функції

f =10x1 + 4x2 при наявнос-

ті системи обмежень

 

 

ì

11x2 ³ 6;

 

ï

+ 2x2 £ 95;

 

í9x1

 

ï

- 7x2 ³ 72.

 

î8x1

 

Реалізація на Mathcad показана нижче.

95

5.1.11 Використання елементів програмування

Програмні засоби Mathcad надають користувачеві додаткові можливості:

завдання спеціальних функцій;

завдання різних видів циклів (у тому числі вкладених);

96

реалізація різних ітераційних процедур;

організація обробки помилок.

Засоби програмування зосереджені на палітрі Программирование (Programming) і включають наступні елементи:

AddLine – оператор додавання лінії. Він виконує функції розширення програмного блоку – створює і при необхідності розширює жирну вертикальну лінію, праворуч від якої в шаблонах задається запис програмного блоку. Розширення фіксується подовженням вертикальної межі програмних блоків або їх деревовидним розширенням;

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

if – умовний оператор, який використовується для створення умовних виразів. Він задається у виді

Вираз if Умова.

Якщо умова виконується, то повертається значення виразу;

otherwise – оператор іншого вибору (зазвичай застосовується разом з if). Повертає альтернативний вибір для функції if;

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

for Var Nmin .. Nmax

Цей запис означає, що вираз, поміщений в розташований нижче шаблон, виконуватиметься для значень змінної Var, що змінюється від Nmin до Nmax з кроком 1. Змінну лічильника Var можна використовувати у виразі, що виконується;

while – оператор завдання циклу, що діє до тих пір, поки виконується деяка умова. Він записується у виді

while Умова

Вираз, що виконується, записується на місце розташованого нижче шаблону;

break – оператор переривання обчислювального процесу. Ви-

97

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

continue – оператор продовження обчислювального процесу. Використовується для продовження роботи після переривання програми. Найчастіше застосовується спільно з операторами while і for, забезпечуючи повернення в точку переривання і продовження обчислень;

return – оператор повернення. Перериває виконання програми і повертає значення операнда, що стоїть слідом за ним;

on error – оператор обробки помилок. Дозволяє створювати конструкції обробників помилок. Цей оператор записується у виді

Вираз_1 on error Вираз_2

Якщо при виконанні виразу Вираз_1 виникає помилка, виконується Вираз_2. Для обробки помилок можна використовувати вбудовану функцію error(S), яка при виникненні помилки виводить спливаючу підказку з написом, занесеним заздалегідь в строкову змінну S або символьну константу (" ").

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

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

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

98

5.1.12 Приклади програмування

Розглянемо застосування умовного оператора if в програмному блоці на наступному прикладі. Обчислити і вивести таблицю значень функції залежно від аргументу

ìtgK + 4lg x + 2,26

 

x £ 2,5

 

 

V = í

 

 

2

 

 

для K = 1,75; 1,2

x ≤ 4; x = 0,3 .

x + 2,1 - 0,8cos

x

x > 2,5

î3

 

 

 

Реалізація на Mathcad показана нижче.

Нижче наводиться приклад, в якому формується і виводиться масив у з 12 елементів, значення якого змінюються випадковим чином в інтервалі від -1,5 до 4,7, і для даного масиву з використанням елементів програмування обчислюються сума від’ємних елементів і додаток елементів. Блоки обчислення суми і додатку оформлені у виді функцій.

99

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

Наступний приклад ілюструє визначення найбільшого значення

100