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

Metodichka_po_MathCADu

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

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

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