Metodichka_po_MathCADu
.pdf1.7. Використання функцій minimize() та maximize() для знаходження найбільших та найменших значень функції
Загальний вигляд даних функцій minimize(функція), maximize(функція).
Розглянемо приклад використання функції maximize() для знаходження для знаходження мінімального значення функції f (x, y) : x2 y2 1
x 5 |
y 5 |
f (x y) x2 y2 1
GIVEN
p maximize(f x y)
p 0
0
f p0 p1 1
Розглянемо приклад використання функції minimize() для знаходження для
знаходження мінімального значення функції f (x, y) : (x 1)2 |
( y 1)2 |
3 |
|
x 5 |
y 5 |
|
|
f (x y) |
(x 1)2 ( y 3)2 3 |
|
|
GIVEN
p minimize(f x y)
p 1
3
f p0 p1 3
11
1.8. Використання деяких інших команд в Mathcad і
Для спрощення виразу використовують команду simplify. Наприклад,
x2 1 |
|
x2 1 |
|
simplify |
2 x |
||
x 1 |
|
x 1 |
|
||||
|
|
|
Для розкладання sin(kx) та cos(kx) просто на вираз, який складається лише з sin(x) та cos(x) використовують команду expand. Наприклад,
sin(2x) expand x 2 sin(x) cos(x)
Перетворення Лапласа здійснюється за допомогою команди laplace. Наприклад,
cos(x)2 laplace x |
|
1 |
|
|
s |
|
1 |
|
|
|
|
||||
2 |
2 |
(2 s) |
|||||
|
|
|
|
s |
4 |
|
|
Обернене перетворення Лапласа здійснюється за допомогою команди invlaplace. Наприклад,
x
x s invlaplace x (t) s exp ( s t)
Для розкладання в ряд Тейлора використовується команда series. Далі за нею вказується змінна по якій будемо розкладати та степінь до якої будемо розкладати. Наприклад,
ex series x 5 1 x 12 x2 16 x3 241 x4
Перетворення Фур є здійснюється за допомогою команди fourier. Наприклад,
x2 fourier x 2 2
Обернене перетворення Фур є здійснюється за допомогою команди invfourier. Наприклад,
x 2 |
invfourier x |
(t) |
1 |
1i exp ( 3 1i t) (t) |
1 |
1i exp ( 3 1i t) ( t) |
|||
|
|
|
|
|
|||||
x 3 |
2 |
2 |
|||||||
|
|
|
|
12
|
|
1.9. Використання команди if() |
|
|
|||||
Загальний вигляд команди |
|
|
|
|
|
||||
|
|
if(<умова>,<команда1>,<команда2>) |
|
|
|||||
<команда1> виконується |
якщо |
<умова> |
вірна, |
інакше |
– |
виконується |
|||
<команда2>. |
|
|
|
|
|
|
|
|
|
Розглянемо на прикладі деяких задач, як саме працює дана команда. |
|||||||||
Задача 1. Знайти найбільше з двох чисел. |
|
|
|
|
|||||
MAX2(a b) if (a b a b) |
|
|
|
|
|
||||
MAX2(5 7) 7 |
|
|
|
|
|
|
|
||
Задача 2. Знайти найбільше з трьох чисел. |
|
|
|
|
|||||
MAX3(a b c) if [(a |
b) (a c) a if (b c b c)] |
|
|
||||||
MAX3(12 19 17) 19 |
|
|
|
|
|
|
|||
Коментарі. Як видно з прикладу, дозволяється використовувати вкладення |
|||||||||
команди if() в саму себе. |
|
|
|
|
|
|
|
||
Задача 3. |
|
|
|
|
|
|
|
|
|
Побудуємо деяку функцію y=f(x) |
|
|
|
|
|
||||
x 2 1.9 2 |
|
f (x) x2 1 |
|
|
|
|
|||
|
2 |
|
|
|
|
|
|
|
|
f (x) |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
2 |
0 |
|
2 |
|
|
|
|
|
|
|
x |
|
|
|
|
|
|
а) Переробити дану функцію таким чином, щоб на проміжку, де вона менше |
|||||||||
нуля, вона була рівна 0. |
|
|
|
|
|
|
|
Для цього введемо функцію g(x) таким чином
13
g(x) |
if (f (x) |
0 f (x) 0) |
|
4 |
|
|
|
2 |
|
|
|
g(x) |
|
|
|
0 |
|
|
|
2 |
2 |
0 |
2 |
|
|
x |
|
в) Зробити малюнок таким чином, щоб при x < 1, було намальовано функцію |
||||||
y=f(x), а при x 1 – функцію y=–f(x). |
|
|
||||
Для цього введемо функцію h(x) таким чином |
||||||
h(x) |
if (x 1 f (x) f (x)) |
|
||||
|
5 |
|
|
|
|
|
h(x) |
0 |
|
|
|
|
|
|
5 |
2 |
1 |
0 |
1 |
2 |
|
|
|
|
x |
|
|
б) Зробити малюнок таким чином, щоб проміжку x [–1, 1], було |
||||||
намальовано функцію y=f(x), а інакше – функцію y=–f(x). |
||||||
Для цього введемо функцію k(x) таким чином |
k(x) if [(x 1) |
(x |
1) f (x) f (x)] |
|||
0 |
|
|
|
|
|
1 |
|
|
|
|
|
k(x) |
|
|
|
|
|
2 |
|
|
|
|
|
3 |
2 |
1 |
0 |
1 |
2 |
|
|
|
x |
|
|
|
|
|
|
14 |
|
д) Зробити малюнок таким чином, щоб проміжку x [–1, 1], було |
|||||
намальовано функцію y=f(x), а інакше – функцію y=–f(x). |
|||||
Для цього введемо функцію l(x) таким чином |
|
||||
l(x) if [(x 1) |
(x 1) f (x) f (x)] |
||||
3 |
|
|
|
|
|
2 |
|
|
|
|
|
l(x) |
|
|
|
|
|
1 |
|
|
|
|
|
0 |
2 |
1 |
0 |
1 |
2 |
|
|
|
x |
|
|
е) Зробити малюнок таким чином, щоб проміжку при x < –1, було |
|||||
намальовано функцію y=f(x), а при x > 1 – функцію y=–f(x), а інакше пряму |
|||||
рівну 0. |
|
|
|
|
|
Для цього введемо функцію m(x) таким чином |
||||||
|
m(x) if (x 1 f (x) if (x |
1 f (x) 0)) |
||||
|
4 |
|
|
|
|
|
|
2 |
|
|
|
|
|
m(x) |
0 |
|
|
|
|
|
|
2 |
|
|
|
|
|
|
4 |
2 |
1 |
0 |
1 |
2 |
|
|
|
|
x |
|
|
15
2.Структурне програмування в математичній системі Mathcad
2.1.Використання команди if-otherwise
Задача 1. Знайти найбільше з двох чисел.
MAX2(a b) a if a b b otherwise
MAX2(7 9) 9
Коментарі. Вертикальна лінія будується за допомогою команди Add Line. Команда otherwise показує, що повинно виконуватись або яке значення повинно присвоюватись, якщо умова біля команди if не виконується.
Задача 2. Знайти найбільше з трьох чисел.
MAX3(a b c) |
|
a if |
(a b) (a c) |
|
|
||||
|
|
otherwise |
||
|
|
|||
|
|
|
b |
if b c |
|
|
|
||
|
|
|
c |
otherwise |
|
|
|
||
MAX3(17 12 19) |
19 |
|
Задача 3. Побудувати функцію k(x), яка задається наступним чином
1 |
|
|
, x , 2 2, |
|||||||||
|
|
|
x |
|
|
|||||||
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
3 |
|
5 |
|
|
||
|
|
|
|
|
|
|
||||||
|
|
|
|
|
, x 2, |
1 . |
||||||
k(x) |
|
|
x |
|
||||||||
2 |
2 |
|||||||||||
|
|
|
|
|
|
|
||||||
|
|
|
|
|
x, x 1, 1 |
|
||||||
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
2, інакше |
|
||||||
|
|
|
|
|
|
1
k(x) if (x 2) (x 2) x
x |
|
if 1 |
x 1 |
|||
|
3 |
x |
5 |
if (x 1) (x 2) |
||
|
|
|
||||
2 |
2 |
|||||
|
|
|
||||
2 |
otherwise |
x 6 5.9 6
16
1 |
1 |
|
|
|
|
|
|
|
|
|
0 |
|
|
|
k(x) |
|
|
|
|
|
1 |
|
|
|
2 |
2 |
|
|
|
|
5 |
0 |
5 |
|
|
|
|||
|
|
6 |
x |
6 |
Задача 4. Створити одиничну матрицю розмірності n x n.
I(n) |
|
for i 0 n 1 |
|
|
|
|||
|
|
|
|
|||||
|
|
for j 0 n 1 |
||||||
|
|
|
|
|
mi j 1 |
if i |
|
j |
|
|
|
|
|
||||
|
|
|||||||
|
|
|||||||
|
|
|
|
|
mi j 0 |
otherwise |
||
|
|
m |
|
|
|
|||
|
|
|
|
|
1 0 0 I(3) 0 1 00 0 1
Задача 5. Створити матрицю, яка буде складатись з вкладених в неї матриць, які складаються з одиничок.
A(n) |
|
|
|
B0 identity(1) |
|
|
|
|||
|
|
|
|
|
||||||
|
|
|
|
for k 1 n |
|
|
|
|||
|
|
|
|
|
|
|
Bk augment Bk 1 Bk 1 |
if mod(k 2) |
|
1 |
|
|
|
|
|
|
|
||||
|
|
|||||||||
|
|
|||||||||
|
|
|
|
|
|
|
Bk stac k Bk 1 Bk 1 otherwise |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
B |
|
|
|
|||
|
|
|
|
|
|
|
17
|
{1,1} |
A(5)0 |
( |
1 ) |
|
|
|
|||
|
{1,2} |
A(5)1 |
( 1 |
1 ) |
|
|||||
|
{2,2} |
|
|
|
|
|
|
|
|
|
A(5) |
{2,4} |
|
A(5)2 |
|
1 |
1 |
|
|||
|
|
|
1 |
1 |
|
|
||||
|
{4,4} |
|
|
|
|
|||||
|
|
|
|
|
|
|
||||
|
|
|
|
|
1 |
1 |
1 |
1 |
||
|
{4,8} |
A(5)3 |
|
|||||||
|
|
|
|
1 |
||||||
|
|
|
1 |
1 |
1 |
|||||
|
|
|
|
|
Коментарі. Команда augment(A, B, C, …) поверне матрицю, яка буде складатись з матриць A, B, C, … складених зліва направо. Команда stack(A, B, C, …) поверне матрицю, яка буде складатись з матриць A, B, C, … складених зверху вниз.
Задача 6. Побудувати вектор, який буде складатися з цифр від 1 до n, які діляться на a або b.
S(n a b) |
|
|
|
j 0 |
|
|
|
|
||||
|
|
|
|
|
|
|||||||
|
|
|
|
for |
k 1 n |
|
|
|
|
|||
|
|
|
|
if |
(mod(k a) |
|
0) (mod(k b) |
|
0) |
|||
|
|
|
||||||||||
|
|
|
||||||||||
|
|
|
|
|
|
|
|
vj k |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
j j 1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
v |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
S(10 2 3)T ( 2 |
3 4 6 8 |
9 10 ) |
|
|
Задача 7. Написати функцію, яка б зразу повертала мінімальний та максимальний елементи вказаного вектору-масиву.
minmax(v n) |
|
min v0 |
|
|
||||
|
|
|
||||||
|
|
max v0 |
|
|
||||
|
|
for i 0 n 1 |
|
|||||
|
|
|
|
|
|
min vi |
if |
min vi |
|
|
|
|
|
||||
|
|
|
|
|
|
max vi |
if |
max vi |
|
|
|
|
|
|
|||
|
|
|
min |
|
|
|||
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
max |
|
|
18
|
|
11 |
|
|
|
|
|
|
|
|
|
15 |
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
|
||
v |
|
8 |
|
minmax (v 5) |
|
||||
|
|
|
|||||||
|
|
|
|
|
17 |
|
|||
|
17 |
|
|
||||||
|
|
|
|
|
|
|
|
||
|
|
9 |
|
|
|
|
|
|
Задача 8. Написати програму, яка б шукала індекси елемента заданої матриці, який точно рівний вказаному.
FindIndex(M key) |
|
|
|
r rows (M) 1 |
|
||||||||
|
|
|
|||||||||||
|
|
|
|
|
c cols(M) 1 |
|
|
||||||
|
|
|
|
|
i 0 |
|
|
||||||
|
|
|
|
|
j 0 |
|
|
||||||
|
|
|
|
|
while ( j c) Mi j key |
||||||||
|
|
|
|
|
|
|
|
i i 1 if |
i r |
|
|||
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
otherwise |
|
|
|||
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
i 1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
j j 1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
i |
|
|
|
||||
|
|
|
|
|
|
|
|
if j c |
|
|
|||
|
|
|
|
|
|
j |
|
|
|
||||
|
|
|
|
otherwise |
|
|
|||||||
|
|
|
|
|
0 |
|
|
|
|||||
i 0 99 |
j 0 99 |
|
|
Ni j rnd(100) |
max(N) 99.99 |
FindIndex(N max(N))
5422
Коментарі. Команда rnd(N) повертає дійсне число з діапазону від 1 до N. Команда max(A) повертає найбільший елемент матриці A.
19
2.2. Використання команди for
Задача 1. Знайти суму чисел від 1 до n. sum(n) s 0
for i 1 n s s i
sum(5) 15
Задача 2. Знайти n!.
F(n) |
|
|
|
f 1 |
|
|
|
||||
|
|
|
|
for |
i 1 n |
|
|
|
|
f |
f i |
|
|
|
|
f |
|
|
|
|
|
|
F(6) 720
Задача 3. Знайти n-те по порядку число Фібоначчі .
G (n) g 1 if n 1
otherwise h 1 g 1
for k 2 n tmp h g h g
g tmp
g
G (7) 21
20