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

Metodichka_po_MathCADu

.pdf
Скачиваний:
8
Добавлен:
02.03.2016
Размер:
621 Кб
Скачать
☆

1.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