Для студентів механіко-математичного факультету Львівського національного університету імені Івана Франка
- Р.1.1 Арифметичні операції. Константи
- P.1.2 Стандартні функції
- Р.1.3 Перетворення виразів
- Р.1.4 Самостійно
- Р.2.1 Визначення функцій
- Р.2.2 Операції оцінювання
- Р.2.3 Розв'язання рівнянь
- Р.2.4 Розв'язання нерівностей
- Р.2.5 Самостійно
- Р.3.1 Двовимірні графіки
- Р.3.2 Тривимірні графіки. Анімація
- Р.3.3 Самостійно
- Р.4.1 Обчислення границь
- Р.4.2 Диференціювання
- Р.4.3 Дослідження функції
- Р.4.4 Інтегрування
- Р.4.5 Самостійно
- Р.5.1 Векторна алгебра
- Р.5.2 Операції над матрицями
- Р.5.3 Спектральний аналіз матриці
- Р.5.4 Системи лінійних рівнянь. Матричні рівняння
- Р.5.5 Самостійно
- Р.1.1 Арифметичні операції. Константи
- P.1.2 Стандартні функції
- Р.1.3 Перетворення виразів
- Р.1.4 Самостійно
- Р.2.1 Визначення функцій
- Р.2.2 Операції оцінювання
- Р.2.3 Розв'язання рівнянь
- Р.2.4 Розв'язання нерівностей
- Р.2.5 Самостійно
- Р.3.1 Двовимірні графіки
- Р.3.2 Тривимірні графіки. Анімація
- Р.3.3 Самостійно
- Р.4.1 Обчислення границь
- Р.4.2 Диференціювання
- Р.4.3 Дослідження функції
- Р.4.4 Інтегрування
- Р.4.5 Самостійно
- Р.5.1 Векторна алгебра
- Р.5.2 Операції над матрицями
- Р.5.3 Спектральний аналіз матриці
- Р.5.4 Системи лінійних рівнянь. Матричні рівняння
- Р.5.5 Самостійно
Р.1.1 Арифметичні операції. Константи
§1.1 Арифметичні операції. Цілі і раціональні числа, константи
Математичні константи і арифметичні операції. Основні математичні константи: Pi – число π; I – уявна одиниця i; infinity – нескінченність; Gamma – константа Ейлера; true, false – логічні константи, що позначають істинність і хибність висловлювання.
Знаки арифметичних операцій:
+ - додавання; – - віднімання;
* - множення; / - ділення;
^ - піднесення до степеня; ! – факторіал.
Знаки порівняння: <, >, >=,<=, <>, =.
Комплексні, цілі і раціональні числа. Числа в Maple бувають дійсні (real) і комплексні (compleх). Комплексне число записується в алгебраїчній формі z = x + iy, і в командному рядку такий запис повинен виглядати так:
>z:=x+I*y;
Дійсні числа поділяються на цілі і раціональні. Цілі числа (integer) виражаються цифрами в десятковому записі. Раціональні числа можуть бути представлені в 3-х типах:
- раціонального дробу з використанням оператора ділення, наприклад: 28/70;
- з плаваючою комою (float), наприклад: 2.3;
- в показовою формі, наприклад: 1,602*10^(-19) означає 1,602 × 10-19.
Для того, щоб отримати раціональне число не в точній формі, а у вигляді наближеного значення (числа з плаваючою комою), слід дописувати до цілої частини числа .0. Приклад:
> 75/4;
>75/4.0;
18.75000000
У Maple можна записати літери грецького алфавіту в поліграфічному вигляді. Для цього в командному рядку набирається назва грецької букви. Наприклад, отримається буква , якщо набрати alpha.
Таблиця малих грецьких букв та їх назв:
- alpha - beta - gamma - delta - epsilon - zeta - eta - theta - ita - kappa - lambda |
- nu - mu - xi - pi - rho - sigma - upsilon - phi - chi - psi -omega |
Заголовні грецькі літери можна записати, якщо набирати назву грецької букви з великої літери, наприклад, щоб отримати Ω, слід набрати Omega. Грецькі літери також можна набирати за допомогою спеціального меню.
Завдання 1.
- Перейдіть в текстовий режим і наберіть "Завдання №1". Після не забудьте перейти в режим командного рядка.
- Обчисліть значення . Для цього в командному рядку наберіть:
>(sqrt(6+2*sqrt(5))-sqrt(6-2*sqrt(5)))/sqrt(3);
і натисніть Enter. В результаті отримаємо точне значення . - Наберіть формули и . Для цього в командному рядку наберіть:
> omega=theta/t; abs(f(x)-delta)<epsilon;
натисніть Enter.
P.1.2 Стандартні функції
§1.2 Синтаксис команд. Стандартні функції
Синтаксис команд. Стандартна команда Maple складається з імені команди і її параметрів, зазначених в круглих дужках: command(p1, p2, …). В кінці кожної команди повинен бути знак ( ; ) або ( : ). Знак ( ; ) означає, що в області виведення після виконання цієї команди буде відразу видно результат. Знак ( : ) використовується для скасування виведення, тобто коли команда виконується, але її результат на екран не виводиться.
Символ відсотка (%) служить для виклику попередньої команди. Цей символ грає роль короттермінової заміни попередньої команди з метою скорочення запису. Приклад використання (%):
> a+b;
a+b
> %+c;
a+b+c.
Для присвоєння змінної заданого значення використовується знак (:=).
Коли програма Maple запускається, вона не має жодної команди, повністю завантаженої в пам'ять. Велика частина команд мають покажчики їх знаходження, і при виклику вони завантажуються автоматично. Інші команди знаходяться в стандартній бібліотеці і перед виконанням обов'язково повинні бути викликані командою readlib(command), де command – ім'я потрібної команди. Інша частина процедур Maple міститься в спеціальних бібліотеках підпрограм, званих пакетами. Пакети необхідно довантажувати при кожному запуску файлу з командами з цих бібліотек. Є два способи виклику команди з пакета:
- можна завантажити весь пакет командою with(package) де package – ім'я пакета;
- виклик якоїсь однієї команди command з будь-якого пакета package можна здійснити, якщо набрати команду в спеціальному форматі:
> package[command](options);
де спочатку записується назва пакета package, з якого треба викликати команду, а потім в квадратних дужках набирається ім'я самої команди command, і після чого в круглих дужках йдуть параметри options заданої команди.
До бібліотек підпрограм Maple відносяться, наприклад, такі пакети: linalg – містить операції лінійної алгебри; geometry – розв'язки задач планіметрії; geom3d – розв'язки задач стереометрії; student – містить команди, що дозволяють провести поетапне розв'язання задачі в аналітичному вигляді з проміжними обчисленнями.
Стандартні функції.
Математичний запис |
Запис в Maple |
exp(x) |
|
ln(x) |
|
log10(x) |
|
log[a](x) |
|
sqrt(x) |
|
abs(x) |
|
sin(x) |
|
cos(x) |
|
tan(x) |
|
cot(x) |
|
sec(x) |
|
csc(x) |
|
arcsin(x) |
|
arccos(x) |
|
arctan(x) |
|
arccot(x) |
|
sinh(x) |
|
cosh(x) |
|
tanh(x) |
|
coth(x) |
|
- функція Дірака |
Dirac(x) |
- функція Хевісайда |
Нeaviside(х) |
Maple містить величезну кількість спеціальних функцій, таких, як Ейлерові бета- і гамма - функції, інтеграл помилок, еліптичні інтеграли, різні ортогональні поліноми.
За допомогою функції exp(x) визначається число е=2.718281828… за допомогою запису exp(1).
Завдання 2.
- Перейдіть в текстовий режим і наберіть "Завдання №2". Після не забудьте перейти в режим командного рядка.
- Обчисліть Для цього наберіть в командному рядку:
> cot(Pi/3)+tan(14*Pi/3);
Натисніть Enter . В результаті в області виведення має з'явитися число: . - Обчисліть . Для цього наберіть в командному рядку:
>combine((sin(Pi/8))^4+(cos(3*Pi/8))^4+(sin(5*Pi/8))^4+ (cos(7*Pi/8))^4);
Натисніть Enter . (Значення команди combine – перетворювати вирази, наприклад, зі степенями). В результаті в області виведення має з'явитися число: .
Р.1.3 Перетворення виразів
§1.3 Перетворення математичних виразів
Maple має широкі можливості для проведення аналітичних перетворень математичних формул. До них відносяться такі операції, як приведення подібних, розкладання на множники, розкриття дужок, зведення раціонального дробу до нормального вигляду і багато інших
Виділення частин виразів. Математична формула, над якою будуть проводитися перетворення, записується в такій формі: > eq:=exp1=exp2; де eq – довільне ім'я вираження, exp1 – умовне позначення лівої частини формули, exp2 – умовне позначення правої частини формули.
Виділення правої частини виразу здійснюється командою rhs(eq), виділення лівої частини випазу – командою lhs(eq). Розглянемо приклад:
>eq:=a^2-b^2=c;
eq:=
>lhs(eq);
>rhs(eq);
с
Якщо задано раціональний дріб вигляду a / b , то можна виділити його чисельник і знаменник за допомогою команд numer і denom, відповідно. Приклад:
>f:=(a^2+b)/(2*a-b);
>numer(f);
>denom(f);
Тотожні перетворення виразів. Розкриття дужок виразу eq здійснюється командою expand(eq). Приклад:
>eq:=(x+1)*(x-1)*(x^2-x+1)*(x^2+x+1);
>expand(eq);
Розкладання полінома на множники здійснюється командою factor(eq). Приклад:
>p:=x^5-x^4-7*x^3+x^2+6*x;
>factor(p);
Команда expand може мати додатковий параметр, що дозволяє при розкритті дужок залишати певний вираз без змін. Наприклад, нехай потрібно кожний доданок виразу помножити на вираз (x+a). Тоді в командному рядку слід написати:
>expand((x+a)*(ln(x)+exp(x)-y^2), (x+a));
Дріб можна привести до нормального вигляду за допомогою команди normal(eq). Наприклад:
>f:=(a^4-b^4)/((a^2+b^2)*a*b);
>normal(f);
Спрощення виразів здійснюється командою simplify(eq). Приклад:
>eq:=(cos(x)-sin(x))*(cos(x)+sin(x)):
>simplify(eq);
Зведення подібних членів у виразі здійснюється командою collect(exp,var), де exp – выраз, var – ім'я змінної, щодо якої слід збирати подібні. У команді simplify в якості параметрів можна вказати, які вирази перетворювати. Наприклад, при вказівці simplify(eq,trig) буде проводитися спрощення при використанні великого числа тригонометричних співвідношень. Стандартні параметри мають назви: power – для степеневих перетворень; radical або sqrt – для перетворення коренів; exp – перетворення експонент; ln – перетворення логарифмів. Використання параметрів набагато збільшує ефективність команди simplify.
Об'єднати показники степеневих функцій або знизити степінь тригонометричних функцій можна за допомогою команди combine(eq,param), де eq – вираз, param – параметри, що вказують, який тип функцій перетворити, наприклад, trig – для тригонометриних, power – для степеневих. Приклад:
>combine(4*sin(x)^3, trig);
Для спрощення виразів, що містять не тільки квадратні корені, а й корені інших степенів, краще використовувати команду radnormal(eq). Приклад:
>sqrt(3+sqrt(3)+(10+6*sqrt(3))^(1/3))=radnormal(sqrt(3+sqrt(3)+(10+6*sqrt(3))^(1/3)));
За допомогою команди convert(exp, param), де exp – вираз, який буде перетворено в зазначений тип param.Зокрема, можна перетворити вираз, що містить sin x і cos x, в вираз, що містить тільки tg x, якщо вказати як параметр tan, або, навпаки, tg x, ctg x можна перевести в sin x і сos x, якщо в параметрах вказати sincos.
Взагалі, команда convert convert має більш широке призначення. Вона здійснює перетворення виразу одного типу в інший. Наприклад: convert(list, vector) – перетворення деякого списку list в вектор з тими ж елементами; convert(expr, string) – перетворення математичного виразу в його текстовий запис. Для виклику детальнішої інформації про призначення параметрів команди convert треба звернутися до довідкової системи, набравши convert[termin].
Якщо ви забули параметри будь-якої команди, то можна скористатися довідковою системою Maple. Для виклику довідки по конкретній команді, слід виділити набране ім'я цієї команди і натиснути клавішу F1. Якщо команда набрана правильно, то з'явиться опис цієї команди (в більшості версій Maple допомога англійською мовою).
Завдання 3.
- Перейдіть в текстовий режим і наберіть "Завдання №3". Після не забудьте перейти в режим командного рядка. Перед виконанням кожного пункту цього завдання обов'язково набирайте команду оновлення restart;
- Розкласти поліном на множники . Для цього наберіть в командному рядку:
>factor(x^3+4*x^2+2*x-4);
Після натискання клавіші Enter повинно вийти . - Спростити вираз . Наберіть:
>eq:=(1+sin(2*x)+cos(2*x))/(1+sin(2*x)-cos(2*x)):
>convert(eq, tan):
>eq=normal(%);
. - Спростити вираз . Для цього наберіть:
> eq:=3*(sin(x)^4+cos(x)^4)-2*(sin(x)^6+cos(x)^6):
> eq=combine(eq, trig);
Р.1.4 Самостійно
§1.4 Контрольні завдання
- Обчислити: .
- Обчислити: .
- Обчислити точне значення виразу: .
- Записати формули: ; .
- Розкласти на множники поліном .
- Спростити випаз
Р.2.1 Визначення функцій
§2.1 Способи визначення функцій. Заміна змінних
У Maple є кілька способів представлення функції.
Спосіб 1. Визначення функції за допомогою оператора присвоювання ( : = ): якомусь висловом присвоюється ім'я, наприклад:
>f:=sin(x)+cos(x);
Якщо задати конкретне значення змінної х , то вийде значення функції f для цього х . Наприклад, якщо продовжити попередній приклад і обчислити значення f при , то слід записати:
>x:=Pi/4;
>f;
Після виконання цих команд змінна х має задане значення .
Щоб назовсім не надавали змінної конкретного значення, зручніше використовувати команду підстановки subs({x1=a1, x2=a2,…, },f), де в фігурних дужках вказуються змінні хi і їх нові значення аi (i=1,2,…), які слід підставити в функцію f . Наприклад:
>f:=x*exp(-t);
>subs({x=2,t=1},f);
Всі обчислення в Maple за замовчуванням виробляються символьно, тобто результат буде містити в явному вигляді ірраціональні константи, такі як, і інші. Щоб отримати наближене значення у вигляді числа з плаваючою комою, слід використовувати команду evalf(expr,t), де expr – вираз, t – точність, виражена в числах після коми. Наприклад, в продовження попереднього прикладу, обчислимо отримане значення функції наближено:
>evalf(%);
.7357588824
Тут використаний символ ( % ) для виклику попередньої команди.
Спосіб 2. Визначення функції за допомогою функціонального оператора, який ставить у відповідність набору змінних (x1, x2, ...) одне або кілька виразів (f1, f2, ...) . Наприклад, визначення функції двох змінних за допомогою функціонального оператора виглядає так:
>f:=(x,y)->sin(x+y);
Звернення до цієї функції здійснюється найбільш звичним в математиці способом, коли в дужках замість аргументів функції вказуються конкретні значення змінних. В продовження попереднього прикладу обчислюється значення функції:
>f(Pi/2,0);
1
Спосіб 3. За допомогою команди unapply (expr, x1, x2, ...) , де expr - вираз, x1, x2, ... - набір змінних, від яких він залежить, можна перетворити вираз expr в функціональний оператор. наприклад:
>f:=unapply(x^2+y^2,x,y);
>f(-7,5);
74
У Maple є можливість визначення неелементарних функцій вигляду
за допомогою команди
>piecewise(cond_1,f1, cond_2, f2, …).
Наприклад, функція
записується в такий спосіб:
>f:=piecewise(x<0, 0, 0<=x and x<1, x, x>=1, sin(x));
Завдання 1.
Не забудьте, що виконання всіх наступних завдань повинно починатися з текстового рядка, що містить "Завдання №", де № - номер завдання. Також пам'ятайте, що для правильності обчислень перед виконанням кожного пункту завдання слід виконувати команду restart. Перед виконанням контрольних завдань слід набирати в текстовому режимі "Контрольні завдання". Ці правила оформлення відносяться до всіх лабораторних робіт.
- Запустіть Maple. Переведіть перший рядок в текстову і наберіть в ній: "Лабораторна робота №2". Натисніть Enter. Рядком нижче наберіть: "Виконав студент ..." і своє прізвище, а на наступному рядку наберіть: "Завдання №1".
- Визначте функцію і перейдіть в ній до полярних координат , . Спростіть отриманий вираз. Для цього наберіть:
>f:=sqrt(1-x^2-y^2);
>f:=subs({x=rho*cos(phi),y=rho*sin(phi)},f);
>f:=simplify(%); - Визначте функцію і додайте до неї х. Для цього наберіть:
>f:=piecewise(x<-1, x, -1<=x and x<1, -x^2, x>=1, -x);
>%+x: simplify(%);
Р.2.2 Операції оцінювання
§2.2 Операції оцінювання
Оцінювання дійсних виразів. У Maple є такі команди оцінювання дійсних виразів:
- frac(expr) - обчислення дробової частини виразу expr;
- trunc(expr) - обчислення цілої частини виразу expr;
- round(expr) - округлення вираження expr
Оцінювання комплексних виразів. Дійсну і уявну частини комплексного вираження z = x + iy можна знайти за допомогою команд Re(z) і Im(z) . наприклад:
>z:=3+I*2:
>Re(z); Im(z);
3,2
Якщо z = x + iy, то комплексно спряжений йому вираз w = x - iy можна знайти за допомогою команди conjugate(z). Продовження попереднього прикладу:
>w:=conjugate(z);
w:=3-2 I
Модуль і аргумент комплексного вираження z можна знайти за допомогою команди polar(z) , яку необхідно попередньо викликати зі стандартної бібліотеки командою readlib. Наприклад:
>readlib(polar): polar(I);
polar
У рядку виведення в дужках через кому вказані модуль числа i, що дорівнює одиниці і його аргумент, рівний .
Якщо комплексний вираз дуже складний або містить параметри, то команди Re(z) і Im(z) не дають необхідного результату. Отримати дійсну і уявну частини комплексного вираження z можна, якщо використовувати команду перетворення комплексних виразів evalc(z). Наприклад:
>z:=ln(1-I*sqrt (3))^2;
>evalc(Re(z)); evalc(Im(z));
Завдання 2.
- Задано число а = 57/13. Знайти його цілу частину x та дробову частину y і переконатися, що a = x + y. Наберіть:
>a:=57/13:
>y:=frac(a);
>x:=trunc(a);
4
>x+y; - Задано комплексне число . Знайти його дійсну та уявну частини, а потім комплексно спряжене йому число w і переконатися, що w+z=2Re(z). У командному рядку наберіть:
>z:=(2-3*I)/(1+4*I)+I^6:
>Re(z); Im(z);
>w:=conjugate(z);
>z+w; - Знайти модуль і аргумент комплексного числа і обчислити z4 . Наберіть:
>z:=-1-I*sqrt (3):
>readlib(polar): polar(z);
polar
Чому дорівнює модуль і аргумент цього числа?
>evalc(z^4);
Р.2.3 Розв'язання рівнянь
§2.3 Розв'язання рівнянь
Розв'язання звичайних рівнянь. Для розв'язання рівнянь в Maple існує універсальна команда solve(eq,x), де eq - рівняння, x - змінна, щодо якої рівняння треба розв'язати. В результаті виконання цієї команди в рядку виводу з'явиться вираз, який є розв'язком заданого рівняння. Наприклад:
>solve(a*x+b=c,x);
Якщо рівняння має кілька розв'язків, які вам знадобляться для подальших розрахунків, то команді solve слід привласнити яке-небудь ім'я name. Звернення до якого-небудь k-ого розв'язку заданого рівняння проводиться зазначенням його імені з номером розв'язку k в квадратних дужках: name[k]. Наприклад:
>x:=solve(x^2-a=0,x);
>x[1];
>x[2];
>x[1]+x[2];
0
Розв'язання систем рівнянь. Системи рівнянь розв'язуються за допомогою такої ж команди solve({eq1,eq2,...},{x1,x2,...}), тільки тепер в параметрах команди слід вказувати в перших фігурних дужках через кому рівняння, а в других фігурних дужках перераховуються через кому змінні, щодо яких потрібно розв'язати систему. Якщо вам буде необхідно для подальших обчислень використовувати отримані розв'язки рівнянь, то команді solve слід привласнити яке-небудь ім'я name. Потім виконується присвоєння команда assign(name). Після цього над розв'язками можна буде робити математичні операції. Наприклад:
>s:=solve({a*xy=1,5*x+a*y=1},{x,y});
s : = {}
>assign(s); simplify(x-y);
Чисельне розв'язання рівнянь. Для чисельного розв'язання рівнянь, в тих випадках, коли трансцендентні рівняння не мають аналітичних розв'язків, використовується спеціальна команда fsolve(eq,x), параметри якої такі ж, як і команди solve. Наприклад:
>x:=fsolve(cos(x)=x,x);
x:=.7390851332
Розв'язання рекурентних і функціональних рівнянь. Команда rsolve(eq,f) дозволяє розв'язати рекурентне співвідношення eq для цілої функції f. Можна задати деяку початкову умову для функції f(n), тоді отримаєтьмя частковий розв'язок заданого рекуррентного рівняння. Наприклад:
>eq:=2*f(n)=3*f(n-1)-f(n-2);
>rsolve({eq,f (1)=0,f (2)=1},f);
Універсальна команда solve дозволяє розв'язувати функціональні рівняння, наприклад:
>F:=solve(f(x)^2-3*f(x)+2*x,f);
F:=proc(x)RootOf(_Z^2-3*_Z+2*x) end
В результаті отримується розв'язок у неявному вигляді. Однак Maple може працювати з такими розв'язками. Неявний розв'язок функціонального рівняння можна спробувати перетворити в будь-яку елементарну функцію за допомогою команди convert. Продовжуючи наведений вище приклад, можна отримати розв'язок в явному вигляді:
>f:=convert(F(x),radical);
Розв'язання тригонометричних рівнянь. Команда solve, застосована для розв'язання тригонометричного рівняння, видає тільки головні розв'язки, тобто розв'язки в інтервалі [0,2π]. Для того, щоб отримати всі розв'язки, слід попередньо ввести додаткову команду _EnvAllSolutions:=true. Наприклад:
>_EnvAllSolutions:=true:
>solve(sin(x)=cos(x),x);
~
У Maple символ _Z~ позначає константу цілого типу, тому розв'язання цього рівняння в звичній формі має вигляд , де n - цілі числа.
Розв'язання трансцендентних рівнянь. При розв'язанні трансцендентних рівнянь для отримання розв'язку в явному вигляді перед командою solve слід ввести додаткову команду _EnvExplicit:=true. Приклад розв'язання складної системи трансцендентних рівнянь і спрощення вигляду розв'язків:
>eq:={7*3^x-3*2^(z+y-x+2)=15,2*3^(x+1)+3*2^(z+yx)=66,ln(x+y+z)-3*ln(x)-ln(y*z)=-ln(4)}:
>_EnvExplicit:=true:
>s:=solve(eq,{x,y,z}):
>simplify(s[1]); simplify(s[2]);
{x = 2, y = 3, z = 1}, { x = 2, y = 1, z = 3}
Завдання 3.
- Знайти всі розв'язки системи рівнянь . Наберіть:
>eq:={x^2-y^2=1,x^2+x*y = 2};
>_EnvExplicit:=true:
>s:=solve(eq,{x,y});
,
Тепер знайдіть суму двох наборів розв'язків. Наберіть:
>x1:=subs(s[1],x): y1:=subs(s[1],y):
x2:=subs(s[2],x): y2:=subs(s[2],y):
>x1+x2; y1+y2;
Чому рівні ці суми розв'язків? - Чисельно розв'жіть рівняння . Наберіть:
>x=fsolve(x^2=cos(x),x);
x=.8241323123 - Знайдіть функцію f(x), що задовольняє рівняння . Наберіть:
>F:=solve(f (x)^2-2*f (x)=x,f);
F:=proc(x) RootOf(_Z^2-2*_Z-x) end
>f:=convert(F(x),radical); - Знайдіть всі розв'язки рівняння . Наберіть:
>_EnvAllSolutions:=true:
>solve(5*sin(x)+12*cos (x)=13,x);
~
Р.2.4 Розв'язання нерівностей
§2.4 Розв'язання нерівностей
Розв'язання простих нерівностей. Команда solve застосовується також для розв'язання нерівностей. Розв'язання нерівності отримується у вигляді інтервалу зміни шуканої змінної. У тому випадку, якщо розв'язання нерівності піввісь, то в полі виведення з'являється конструкція вигляду RealRange (-∞,Open(a)), яка означає, що xє (-∞,a), а - деяке число. Слово Open означає, що інтервал з відкритою межею. Якщо цього слова немає, то відповідна межа інтервалу включена в множину розв'язків. Наприклад:
>s:=solve(sqrt(x+3)<sqrt(x-1)+sqrt(x-2),x):
>convert(s,radical);
RealRange
Якщо ви хочете отримати розв'язок нерівності не у вигляді інтервальної множини типу xє(a,b), а у вигляді обмежень для шуканої змінної типу a<x, x<b, то змінну, щодо якої слід розв'язати нерівність, слід вказувати в фігурних дужках. Наприклад:
>solve(1-1/2*ln(x)>2,{x});
Розв'язанняі систем нерівностей. За допомогою команди solve можна також розв'язаnи систему нерівностей. Наприклад:
>solve({x+y>=2,x-2*y<=1,xy>=0,x-2*y>=1},{x, y});
Завдання 4.
- Розв'яжіть нерівність . Наберіть:
>solve(13*x^3-25*x^2-x^4-129*x+270>0,x);
RealRange(Open(-3),Open(2)),RealRange(Open (5),Open (9))
Запишіть цей результат в аналітичному вигляді. Отримайте розв'язок цієї нерівності у вигляді обмежень для шуканої змінної. Проробіть це самостійно. - Розв'яжіть нерівність . Наберіть:
>solve(exp(2*x+3)<1, x);
RealRange
Тепер отриматете самостійно розв'язок цієї нерівності у вигляді обмежень для шуканої змінної.
Р.2.5 Самостійно
§2.5 Контрольні завдання
- Задано комплексне число . Знайти його дійсну і уявні частини, алгебраїчну форму, модуль і аргумент.
- Записати функцію у вигляді функціонального оператора і обчисліть її значення при x=1, y=0 і при , .
- Записати функцію за допомогою оператора присвоювання і обчисліть її значення при x=a , y =1/a , використовуючи команду підстановки subs.
- Знайти всі точні розв'язки системи в аналітичному вигляді.
- Знайти всі розв'язки тригонометричного рівняння .
- Знайти чисельний розв'язок рівняння .
- Розв'язати нерівність
Р.3.1 Двовимірні графіки
§3.1 Двовимірні графіки
Команда plot і її параметри. Для побудови графіків функції f(x) однієї змінної (в інтервалі по осі Ох і в інтервалі по осі Оу) використовується команда plot(f(x), x=a..b, y=c..d, parameters), де parameters - параметри керування зображенням. Якщо їх не вказувати, то будуть використані налаштування за замовчуванням. Налаштування зображення також може здійснюватися з панелі інструментів.
Основні параметри команди plot:
1) title="text", де text - заголовок малюнка (текст можна залишати без лапок, якщо він містить тільки латинські букви без пробілів).
2) coords=polar - налаштування полярних координат (за замовчуванням встановлено декартові).
3) axes - налаштування типу координатних осей: axes=NORMAL - звичайні осі; axes=BOXED - графік в рамці зі шкалою; axes=FRAME - осі з центром в лівому нижньому кутку малюнка; axes=NONE - без осей.
4) scaling - налаштування масштабу малюнка: scaling=CONSTRAINED - однаковий масштаб по осях; scaling=UNCONSTRAINED - графік масштабується за розмірами вікна.
5) style=LINE(POINT) - вивід лініями (або точками).
6) numpoints=n - число обчислюваних точок графіка (за замовчуванням n=49).
7) сolor - налаштування кольору лінії: англійська назва кольору, наприклад, yellow - жовтий і т.д.
8) xtickmarks=nx і ytickmarks=ny - число міток по осі Оx і осі Оy, відповідно.
9) thickness=n, де n=1,2,3 ... - товщина лінії (за замовчуванням n=1).
10) linestyle=n - тип лінії: безперервна, пунктирна і т.д. (n=1 - безперервна, встановлено за замовчуванням).
11) symbol=s - тип символу, яким позначають точки: BOX, CROSS, CIRCLE, POINT, DIAMOND.
12) font=[f,style,size] - налаштування типу шрифту для виведення тексту: f задає назву шрифтів: TIMES, COURIER, HELVETICA, SYMBOL; style задає стиль шрифту: BOLD, ITALIC, UNDERLINE; size - розмір шрифту в pt.
13) labels=[tx,ty] - написи по осях координат: tx - по осі Оx і ty - по осі Оy.
14) discont=true - вказівка для побудови нескінченних розривів.
За допомогою команди plot можна будувати крім графіків функцій y=f(x), заданої явно, також графіки функцій, заданих параметрично y=y(t), x=x(t), якщо записати команду plot([y=y(t), x=x(t), t=a..b], parameters).
Завдання 1.1.
- Побудувати графік жирною лінією в інтервалі від -4π до 4π. Наберіть:
>plot(sin(x)/x, x=-4*Pi..4*Pi, labels=[x, y], labelfont=[TIMES,ITALIC,12], thickness=2); - Побудувати графік розривної функції .
>plot(x/(x^2-1), x=-3..3, y=-3..3, color=magenta);
Зауваження: на малюнку автоматично з'являються вертикальні асимптоти. - Побудувати графік параметричної кривої , , в рамці. Наберіть:
>plot([sin(2*t),cos(3*t),t=0..2*Pi],axes=BOXED,color=blue); - Побудувати в полярних координатах графік кардіоїди з назвою. Наберіть:
>plot(1+cos(x),x=0..2*Pi,title="Cardioida",coords=polar, color=coral, thickness=2); - Побудувати два графіка на одному малюнку: графік функції і дотичну до нього . Наберіть:
>plot([ln(3*x-1),3*x/2-ln(2)], x=0..6, scaling=CONSTRAINED, color=[violet, gold], linestyle=[1,2], thickness=[3,2]);
Побудова графіка функції, заданої неявно. Функція задана неявно, якщо вона задана рівнянням . Для побудови графіка неявної функції використовується команда implicitplot з графічного пакета plots: implicitplot(F(x,y)=0, x=x1..x2, y=y1..y2).
Вивід текстових коментарів на малюнок. У пакеті plots є команда textplot для виведення текстових коментарів на малюнок: textplot([xo,yo,'text'], options), де xo, yo - координати точки, з якої починається висновок тексту 'text' .
Вивід декількох графічних об'єктів на один малюнок. Часто буває необхідно поєднати на одному малюнку кілька графічних об'єктів, отриманих за допомогою різних команд, наприклад, додати графіку, намальованому командою plot, текстові написи, отримані командою textplot. Для цього результат дії команди присвоюється деякій змінній:
>p:=plot(...): t:=textplot(...):
При цьому на екран виведення не проводиться. Для виведення графічних зображень необхідно виконати команду з пакета plots:
>with(plots): display([p,t], options).
Побудова двовимірної області, заданої нерівностями. Якщо необхідно побудувати двовимірну область, задану системою нерівностей , то для цього можна використовувати команду inequal з пакета plots. У команді inequals({f1(x,y)>c1,...,fn(x,y)>cn}, x=x1...x2, y=y1..y2, options) в фігурних дужках вказується система нерівностей, що визначають область, потім розміри координатних осей і параметри. Параметри регулюють кольори відкритих і закритих меж, кольори зовнішньої і внутрішньої областей, а також товщину ліній меж:
- optionsfeasible=(color=red) - налаштування кольору внутрішньої області;
- optionsexcluded=(color=yellow) - налаштування кольору зовнішньої області;
- optionsopen(color=blue, thickness=2) - налаштування кольору і товщини лінії відкритої кордону;
- optionsclosed(color=green, thickness=3) - налаштування кольору і товщини лінії закритого кордону.
Завдання 1.2.
- Побудувати графік неявної функції (гіперболи): .
>with(plots):
>implicitplot(x^2/4-y^2/2=16, x=-20..20, y=-16..16, color=green, thickness=2); - Побудувати на одному малюнку графіки астроїди , ( ) вписаної в еліпс . Виведіть назву ліній Astroida і Ellips жирним шрифтом разом з його рівнянням курсивом. Для цього наберіть наступні рядки:
>with(plots):
>eq:=x^2/16+y^2/4=1:
>el:=implicitplot(eq, x=-4..4, y=-2..2, scaling=CONSTRAINED, color=green, thickness=3):
>as:=plot([4*cos(t)^3,2*sin(t)^3, t=0..2*Pi],color=blue, scaling=CONSTRAINED, thickness=2):
>eq1:=convert(eq, string):
>t1:=textplot([1.5,2.5, eq1], font=[TIMES,ITALIC, 10], align=RIGHT):
>t2:=textplot([0.2,2.5, "Ellips:"], font=[TIMES,BOLD, 10], align=RIGHT):
>t3:=textplot([1.8,0.4, Astroida], font=[TIMES,BOLD, 10], align=LEFT):
>display([as,el,t1,t2,t3]); - Побудувати область, обмежену лініями: , , .
>with(plots):
>inequal({x+y>0, xy<=1, y=2}, x= -3..3, y = -3..3, optionsfeasible=(color=red), optionsopen=(color=blue, thickness=2), optionsclosed=(color=green, thickness=3), optionsexcluded=(color=yellow));
Р.3.2 Тривимірні графіки. Анімація
§3.2 Тривимірні графіки. Анімація
Графік поверхні, заданої явною функцією. Графік функції можна намалювати, використовуючи команду plot3d(f(x,y), x=x1...x2, y=y1...y2, options). Параметри цієї команди частково збігаються з параметрами команди plot. До часто використовуваних параметрів команди plot3d відноситься light=[angl1, angl2, c1, c2, c3] - завдання підсвічування поверхні, створюваної джерелом світла з точки зі сферичними координатами (angl1,angl2). Колір визначається частками червоного (c1), зеленого (c2) і синього (c3) кольорів, які знаходяться в інтервалі [0,1]. Параметр style=opt задає стиль малюнка: POINT - точка, LINE - лінії, HIDDEN - сітка з видаленням невидимих ліній, PATCH - заповнювач (встановлено за замовчуванням), WIREFRAME - сітка з виведенням невидимих ліній, CONTOUR - лінії рівня, PATCHCONTOUR - заповнювач і лінії рівня. Параметр shading=opt задає функцію інтенсивності заповнювача, його значення дорівнює xyz - за замовчуванням, NONE - без розмальовки.
Графік поверхні, заданої параметрично. Якщо потрібно побудувати поверхню, задану параметрично: x=x(u,v), y=y(u,v), z=z(u,v), то ці функції перераховуються в квадратних дужках в команді: plot3d([x(u,v),y(u,v),z(u,v)], u=u1..u2, v=v1..v2) .
Графік поверхні, заданої неявно. Тривимірний графік поверхні, заданої неявно рівнянням , будується за допомогою команди пакета plot: implicitplot3d(F(x,y,z)=c, x=x1..x2, y=y1..y2, z=z1..z2), де вказується рівняння поверхні і розміри малюнка по координатним осях.
Графік просторових кривих. У пакеті plot є команда spacecurve для побудови просторової кривої, заданої параметрично: . Параметри команди :
>spacecurve([x(t),y(t),z(t)], t=t1..t2),
де змінна t змінюється від t1 до t2.
Анімація. Maple дозволяє виводити на екран зображення, що рухаються за допомогою команд animate (двовимірні) і animate3d (тривимірні) з пакету plot. Серед параметрів команди animate3d є frames - число кадрів анімації (за замовчуванням frames=8).
Тривимірні зображення зручніше налаштовувати не за допомогою опцій команди plot3d, а використовуючи контекстне меню програми. Для цього слід натиснути правою кнопкою миші по зображенню. Тоді з'явиться контекстне меню настройки зображення. Команди цього меню дозволяють змінювати колір зображення, режими підсвічування, встановлювати потрібний тип осей, тип ліній і керувати рухомим зображенням.
Контекстне меню настройки зображення:
Завдання 2.
- Виконати побудову двох поверхонь і в межах . Встановіть змінний колір поверхонь як функцію .
>plot3d({x*sin(2*y)+y*cos(3*x), sqrt(x^2+y^2)-7}, x=-Pi..Pi, y=-Pi..Pi, grid=[30,30], axes=FRAMED, color=x+y); - Побудувати поверхню разом з лініями рівня:
>plot3d(1/(x^2+y^2)+0.2/((x+1.2)^2+(y-1.5)^2)+0.3/((x-0.9)^2+(y+1.1)^2), x=-2..2, y=-2..2.5, view=[-2..2, -2..2.5, 0..6], grid=[60,60], shading=NONE, light=[100,30,1,1,1], axes=NONE, orientation=[65,20], style=PATCHCONTOUR); - Побудувати приблизну форму електронної хмари атома. Форма електронної хмари визначається двома квантовими числами: число l - визначає тип орбіталі, число m - визначає магнітний момент електрона. При m=0 форма електронної хмари задається поліномами Лежандра першого роду: . Слід побудувати параметрично задану поверхню: , , , де . Спочатку покладіть l=3. Наберіть команди:
>l:=3:
>P:=(x,n)->1/(2^n*n!)*diff((x^2-1)^n, x$n);
>Y:=(phi)->abs(sqrt((2*l+1)/(4*Pi))*subs(x=cos(phi),P(x,l)));
>X0:=Y(phi)*sin(phi)*cos(theta);
>Y0:=Y(phi)*sin(phi)*sin(theta);
>Z0:=Y(phi)*cos(phi);
>plot3d([X0,Y0,Z0], phi=0..Pi, theta=0..2*Pi, scaling=CONSTRAINED, title="Електронна хмара");
Після цього побудуйте форми електронної хмари для l = 1 і l = 2. - Побудувати кулю :
>with(plots):implicitplot3d(x^2+y^2+z^2=4, x=-2..2, y=-2..2, z=-2..2, scaling=CONSTRAINED); - Побудувати просторову криву: , ,
>with(plots):
>spacecurve([sin(t), cos(t), exp(t)], t=1..5, color=blue, thickness=2, axes=BOXED); - Намалювати об'єкт, що рухається. Спочатку наберіть в командному рядку:
>animate3d(cos(t*x)*sin(t*y), x=-Pi..Pi, y=-Pi..Pi, t=1..2);
Клацніть по зображенню, яке з'явилося, правою кнопкою миші. У контекстному меню виконайте команду Animation ® Continuous. Потім знову викличте контекстне меню і виконайте команду Animation ® Play. Для того, щоб зупинити рух, виконайте команду Animation ® Stop. Потім за допомогою миші поверніть рисунок під іншим кутом і зробіть його знову рухомим.
Р.3.3 Самостійно
§3.3 Контрольні завдання
- Побудувати на окремих малюнках графіки функцій Беселя першого роду Jn(x) для різних її номерів n в інтервалі -20<x<20. Функції Беселя викликаються командою BesselJ(n,x), де n - номер функції Беселя, x - незалежна змінна. Побудувати перші 6 функцій Бесселя для n=0,1,2,3,4,5,6. Як вони виглядають і чим відрізняються одна від одної? Зробити підписи осей курсивом.
- Побудувати графік функції в полярних координатах при 0<j<4π. Використовуйте колір лінії під назвою magenta, встановіть товщину лінії 3.
- Побудувати на одному малюнку графіки функції і її асимптот і . Встановити наступні параметри: колір основної лінії - блакитний, асимптот - червоний (встановлений за замовчуванням, тому його можна не змінювати); товщина основної лінії - 3, асимптоти - звичайною; масштаб по координатним осях - однаковий. Зробити написи: яка функція відноситься до якої лінії. Вказівка: використовувати для перетворення в текст формул команду convert, а для побудови графіків і написів команди textplot і display з пакета plots (див. Завдання 1.2, п.2)
- Намалювати параметрично задану поверхню (лист Мебіуса): , , , , .
- Задайте зміну координат в інтервалах 0<v<2π, -1<u<1, і встановіть наступні параметри:
grid=[60,10], orientation=[-106,70], axes=FRAMED, tickmarks=[5,8,3].
Також виведіть назву малюнка, підпишіть назви осей і встановіть однаковий масштаб по осях.
Р.4.1 Обчислення границь
§4.1 Обчислення границь
У Maple для деяких математичних операцій існує по дві команди: одна прямого, а інша - відкладеного виконання. Імена команд складаються з однакових букв за винятком першої: команди прямого виконання починаються з малої літери, а команди відкладеного виконання - з великої. Після звернення до команди відкладеної дії математичні операції (інтеграл, границя, похідна і т.д.) виводяться на екран у вигляді стандартного аналітичного записи цієї операції. Обчислення в цьому випадку відразу не проводиться. Команда прямого виконання видає результат відразу.
Для обчислення границь є дві команди:
- прямого виконання - limit (expr, x = a, par) , де expr - вираз, границю якого слід знайти, a - значення точки, для якої обчислюється границя, par - необов'язковий параметр для пошуку односторонніх границь (left - зліва, right - праворуч) або вказівка типу змінної (real - дійсна, complex - комплексна).
- відкладеного виконання - Limit (expr, x = a, par), де параметри команди такі ж, як і в попередньому випадку. Приклад дій цих команд:
> Limit (sin (2 * x) / x, x = 0);
> limit (sin (2 * x) / x, x = 0);
2
За допомогою цих двох команд прийнято записувати математичні вирази в стандартному аналітичному вигляді, наприклад:
> Limit (x * (Pi / 2 + arctan (x)), x = -infinity) = limit (x * (Pi / 2 + arctan (x)), x = -infinity);
Односторонні границі обчислюються із зазначенням параметрів: left - для знаходження границь зліва і righ - справа. Наприклад:
> Limit (1 / (1 + exp (1 / x)), x = 0, left) = limit (1 / (1 + exp (1 / x)), x = 0, left);
> Limit (1 / (1 + exp (1 / x)), x = 0, right) = limit (1 / (1 + exp (1 / x)), x = 0, right);
Завдання 1.
- Обчислити границю . Наберіть:
> Limit ((1-x) * tan (Pi * x / 2), x = 1) = limit ((1-x) * tan (Pi * x / 2), x = 1); - Знайти односторонні границі і . Наберіть:
> Limit (arctan (1 / (1-x)), x = 1, left) = limit (arctan (1 / (1-x)), x = 1, left);
> Limit (arctan (1 / (1-x)), x = 1, right) = limit (arctan (1 / (1-x)), x = 1, right);
Р.4.2 Диференціювання
§4.2 Диференціювання
Обчислення похідних. Для обчислення похідних в Maple є дві команди:
- прямого виконання - diff (f, x), де f - функція, яку слід продиференціювати, x - ім'я змінної, за якою здійснюється диференціювання.
- відкладеного виконання - Diff (f, x), де параметри команди такі ж, як і в попередній команді. Дія цієї команди зводиться до аналітичного запису похідної у вигляді .
Після виконання диференціювання, отриманий вираз бажано спростити. Для цього слід використовувати команди simplify factor або expand в залежності від того, в якому вигляді вам потрібен результат.
Приклад:
> Diff (sin (x ^ 2), x) = diff (sin (x ^ 2), x);
Для обчислення похідних вищих порядків слід вказати в параметрах x$n, де n - порядок похідної; наприклад:
> Diff (cos (2 * x) ^ 2, x $ 4) = diff (cos (2 * x) ^ 2, x $ 4);
Отриманий вираз можна спростити двома способами:
> simplify(%);
> combine(%);
Оператор диференціювання. Для визначення оператора диференціювання використовується команда D(f), де f -функція. Наприклад:
> D(sin);
cos
Обчислення похідної в точці:
> D (sin) (Pi): eval (%);
-1
Оператор диференціювання застосовується до функціональних операторів
> f: = x-> ln (x ^ 2) + exp (3 * x):
> D (f);
Завдання 2.
- Обчислити похідну
> Diff (sin (2 * x) ^ 3-cos (2 * x) ^ 3, x) =diff (sin (2 * x) ^ 3-cos (2 * x) ^ 3, x); - Обчислити . Наберіть:
> Diff (exp (x) * (x ^ 2-1), x $ 24) = diff (exp (x) * (x ^ 2-1), x $ 24):
> collect (%, exp (x)); - Обчислити другу похідну функції в точках x = π/2, x=π.
> y = sin (x) ^ 2 / (2 + sin (x)): d2: = diff (y, x $ 2):
> x: = Pi; d2y (x) = d2;
x : = π d2y ( π ) = 1
> x: = Pi / 2; d2y (x) = d2;
х : =
Р.4.3 Дослідження функції
§4.3 Дослідження функції
Дослідження функції необхідно починати з знаходження її області визначення, але, на жаль, це важко автоматизувати. Тому при розгляді цього питання доводиться розв'язувати нерівності (див. Тему II). Однак, відповісти на питання, чи визначена функція на всій числовій осі, чи ні, можна дослідивши її на неперервність.
Неперервність функції і точки розриву. Перевірити неперервність функції f(x) на заданому проміжку [x1,x2] можна за допомогою команди iscont(f,x=x1..x2). Якщо функція f неперервна на цьому інтервалі, то в полі виведення з'явиться відповідь true - (істина); якщо функція f не є неперервною на цьому інтервалі, то в полі виведення з'явиться відповідь false - (хибність). Зокрема, якщо задати інтервал x=-infinity..+infinity, то функція f буде перевірятися на всій числовій осі. В цьому випадку, якщо буде отримана відповідь true, то можна сказати, що функція визначена і неперервна на всій числовій осі. В іншому випадку слід шукати точки розриву. Це можна зробити двома способами:
- за допомогою команди discont(f,x), де f - функція, яку досліджують на неперервність, x - змінна. Ця команда придатна для знаходження точок розриву першого і другого родів.
- за допомогою команди singular(f,x), де f - функція, x - змінна. Ця команда годиться для знаходження точок розриву другого роду як для дійсних значень змінної, так і для комплексних.
Перед використанням цих команд їх слід обов'язково завантажити зі стандартної бібліотеки readlib(name), де name - ім'я будь-якої із зазначених вище команд.
Обидві ці команди видають результати у вигляді перерахування точок розриву в фігурних дужках. Тип такого запису називається set. Для того, щоб в подальшому можна було використовувати отримані значення точок розриву, треба з типу set за допомогою команди convert перевести їх в звичайний числовий тип.
Завдання 3.1.
- Знайдіть точки розриву функції .
> readlib (iscont): readlib (discont):
> iscont (exp (1 / (x + 3)), x = -infinity .. + infinity);
false
Це означає, що функція не є неперервною. Тому слід знайти точки розриву за допомогою команди:
> discont (exp (1 / (x + 3)), x);
{-3}
Відповідь наберіть в текстовому режимі в новому рядку: "Точка розриву x = - 3." - Знайти точки розриву функції .
> readlib (singular):
> iscont (tan (x / (2-x)), x = -infinity..infinity);
false
> singular (tan (x / (2-x)), x);
{ x = 2}, { x = 2 }
Тут _ N - цілі числа. Відповідь наберіть в текстовому режимі в новому рядку: "Точки розриву: x = 2 і x = 2 p (2 n +1) / ( p (2 n +1) -2)."
Екстремуми. Найбільше і найменше значення функції. У Maple для дослідження функції на екстремум є команда extrema (f, {cond}, x, 's'), де f - функція, екстремуми якої треба знайти, в фігурних дужках {cond} вказуються обмеження для змінної, х - ім'я змінної, по якій шукається екстремум, в апострофа 's' - вказується ім'я змінної, якій буде присвоєна координата точки екстремуму. Якщо залишити порожніми фігурні дужки {}, то пошук екстремумів буде проводитися на всій числовій осі. Результат дії цієї команди відноситься до типу set. Приклад:
> readlib (extrema):
> extrema (arctan (x) -ln (1 + x ^ 2) / 2, {}, x, 'x0'); x0;
{{ x = 1}}
У першому рядку виведення наводиться екстремум функції, а у другому рядку виведення - точка цього екстремуму.
На жаль, ця команда не може дати відповідь на питання, яка з точок екстремуму є максимумом, а яка - мінімумом. Для знаходження максимуму функції f(x) по змінній х на інтервалі використовується команда maximize (f, x, x = x1..x2), а для знаходження мінімуму функції f(x) по змінній х на інтервалі використовується команда minimize (f, x , x = x1..x2). Якщо після змінної вказати 'infinity' або інтервал x = -infinity .. + infinity, то команди maximize і minimize будуть шукати, відповідно, максимуми і мінімуми на всій числовій осі як в множині дійсних чисел, так і комплексних. Якщо такі параметри не вказувати, то пошук максимумів і мінімумів буде проводитися тільки в множині дійсних чисел. Приклад:
> maximize (exp (-x ^ 2), {x});
1
Недолік цих команд в тому, що вони видають тільки значення функції в точках максимуму і мінімуму, відповідно. Тому для того, щоб повністю розв'язати задачу про дослідження функції y=f(x) на екстремуми із зазначенням їх характеру (max або min) і координат (x,y) слід спочатку виконати команду:
> extrema (f, {}, x, 's'); s;
а потім виконати команди maximize (f, x); minimize (f, x). Після цього будуть повністю знайдені координати всіх екстремумів і визначені їхні характери (max або min).
Команди maximize і minimize швидко знаходять абсолютні екстремуми, але не завжди придатні для знаходження локальних екстремумів. Команда extrema обчислює так само критичні точки, в яких функція не має екстремуму. В цьому випадку екстремальних значень функції в першому рядку виведення буде менше, ніж обчислених критичних точок у другому рядку виведення. З'ясувати характер знайденого екстремуму функції f(x) в точці x=x0 можна, якщо обчислити другу похідну в цій точці і по її знаку зробити висновок: якщо , то в точці x0 буде min, а якщо - то max.
В останніх версіях пакету аналітичних обчислень Maple описаний вище недолік команд maximize і minimize усунутий. Координати точок максимуму або мінімуму можна отримати, якщо в параметрах цих команд після змінної записати через кому нову опцію location. В результаті в рядку виведення після самого максимуму (мінімуму) функції будуть в фігурних дужках вказані координати точок максимуму (мінімуму). наприклад:
> minimize (x ^ 4-x ^ 2, x, location);
, { , }
У рядку виведення отрималися координати мінімумів і значення функції в цих точках.
Команди extrema, maximize і minimize обов'язково повинні бути завантажені зі стандартної бібліотеки командою readlib(name), де name - ім'я команди.
Завдання 3.2.
- Знайти max і min .
> readlib (extrema):
> y: = (x ^ 2-1 / 2) * arcsin (x) / 2 + x * sqrt (1-x ^ 2) / 4 - Pi * x ^ 2/12:
> extrema (y, {}, x, 's'); s;
Після виконання цих команд знайдені екстремуми функції і точки екстремумів. Порядок слідування x-координат екстремумів у другому рядку виведення відповідає порядку слідування значень екстремумів в першому рядку виведення. Таким чином, знайдені екстремуми в точках (0,0) і (1/2, - p/ 24 + ). Залишилося з'ясувати, яка з них є максимумом, а яка - мінімумом. Для цього використовуйте команди maximize і minimize.
> readlib (maximize): readlib (minimize):
> ymax: = maximize (y, {x});
> ymin: = minimize (y, {x});
Відповідь наберіть в текстовому режимі в новому рядку: "Екстремуми: , ."
Для набору математичних символів і грецьких букв в текстовому режимі слід натиснути кнопку зі значком суми на Панелі інструментів. У рядку введення формул нижче Панелі інструментів слід набирати звичайні команди Maple, після чого натиснути Enter. Наприклад, для відображення формули слід набрати в рядку введення формул sqrt (3).
Для повернення в текстовий режим знову слід натиснути на кнопку з буквою "Т".
Тому порядок набору другої формули у відповіді такий:- перебуваючи в текстовому режимі, набрати: miny (x) = y (1/2) =;
- натиснути на кнопку
- в рядку введення формул набрати: -Pi / 24 + sqrt (3) / 16
- натиснути Enter;
- повернутися в текстовий режим.
- Знайдіть найбільше і найменше значення на інтервалі . Наберіть:
> f: = x ^ 2 * ln (x):
> maximize (f, {x}, {x = 1..2});
> minimize (f, {x}, {x = 1..2}): simplify (%);
Відповідь наберіть в текстовому режимі в новому рядку: "Найбільше значення: , найменше значення ". - Знайти екстремуми функції і встановити їх характер за допомогою другої похідної. Наберіть:
> restart: y: = x ^ 3 / (4-x ^ 2): readlib (extrema): readlib (maximize): readlib (minimize):
> extrema (y, {}, x, 's'); s;
{ }
{{ X = 0}, { }, { }}
Отримано два екстремуми і три критичні точки. Дослідження можна продовжити за допомогою другої похідної:
> d2: = diff (y, x $ 2): x: = 0: d2y (x): = d2;
d2y (0): = 0
> x: = 2 * sqrt (3): d2y (x): = d2;
> x: = - 2 * sqrt (3): d2y (x): = d2;
Оскільки , то в точці x = 0 немає екстремуму; Оскільки , то в точці буде max; Оскільки , то в точці буде min.
Перейдіть в текстовий режим і запишіть відповідь у вигляді:"Максимум в точці ( ), мінімум в точці ( )".
Дослідження функції за загальною схемою.
- Область визначення функції f(x) - повністю може бути вказана після дослідження функції на неперервність.
- Неперервність і точки розриву функції f(x) досліджуються за схемою:
> iscont (f, x = -infinity..infinity);
> d1: = discont (f, x);
> d2: = singular (f, x);
В результаті наборам змінних d1 і d2 будуть присвоєні значення x-координат в точках розриву 1 і 2-го родів (якщо вони будуть знайдені). - Асимптоти. Точки нескінченних розривів визначають вертикальні асимптоти графіка f(x). Рівняння вертикальної асимптоти має вигляд:
> yr: = d2;
Поведінка функції f(x) на нескінченності характеризується похилими асимптотами (якщо вони існують). Рівняння похилої асимптоти y = kx + b, де коефіцієнти обчислюються за формулами:
і .
Аналогічні формули для . Тому знаходження похилих асимптот можна провести за такою схемою:
> k1: = limit (f (x) / x, x = + infinity);
> b1: = limit (f (x) -k1 * x, x = + infinity);
> k2: = limit (f (x) / x, x = -infinity);
> b2: = limit (f (x) - k2 * x, x = -infinity);
Часто виявляється, що k1 = k2 і b1 = b2 , в цьому випадку буде одна асимптота при і при . З урахуванням цього складається рівняння асимптоти
> yn: = k1 * x + b1; - Екстремуми. Дослідження функції f ( x ) на екстремуми можна проводити за схемою:
> extrema (f (x), {}, x, 's');
> s;
> fmax: = maximize (f (x), x);
> fmin: = minimize (f (x), x);
Після виконання цих команд будуть знайдені координати (x,y) всіх максимумів і мінімумів функції f(x).
Побудова графіка. Побудова графіка функції f(x) - це останній етап дослідження функції. На малюнку крім графіка функції f(x) повинні бути нанесені всі її асимптоти пунктирними лініями, підписані координати точок max і min. Прийоми побудови графіків декількох функцій і нанесення написів були розглянуті в темі III.
Завдання 3.3.
- Провести повне дослідження функції за загальною схемою. Спочатку перейдіть в текстовий режим і наберіть "Дослідження функції:". Потім поверніться в режим командного рядка і наберіть команди:
> f: = x ^ 4 / (1 + x) ^ 3:
У текстовому режимі наберіть "Неперервність функції". У режимі командного рядка і наберіть:
> readlib (iscont): readlib (discont): readlib (singular):
> iscont (f, x = -infinity..infinity);
false
Це означає, що функція не є неперервною. Перейдіть в текстовий режим і наберіть "Знаходження точок розриву". Поверніться в режим командного рядка і наберіть:
> discont (f, x);
{-1}
Конвертувати отримане значення точки розриву типу set в число можна командою convert, додавши другу опцію, наприклад, `+`. Зверніть увагу на зворотні лапки, які набираються клавішею, розташованої вище клавіші табуляції.
> xr: = convert (%, `+`);
xr : = - 1
Перейдіть в текстовий режим і наберіть: "Отримано точка нескінченного розриву x = - 1". З нового рядка наберіть: "Знаходження асимптот.".Перейдіть на новий рядок і наберіть "Рівняння вертикальної асимптоти: x = - 1" (це можна зробити, оскільки вертикальні асимптоти виникають в точках нескінченного розриву). З нового рядка наберіть: "Коефіцієнти похилої асимптоти:". Перейдіть в режим командного рядка і наберіть:
> k1: = limit (f / x, x = + infinity);
k1 : = 1
> b1: = limit (f-k1 * x, x = + infinity);
b1 : = - 3
> k2: = limit (f / x, x = -infinity);
k2 : = 1
> b2: = limit (f-k2 * x, x = -infinity);
b2 : = - 3
В цьому випадку коефіцієнти похилих асимптот при і виявилися однаковими. Тому перейдіть в текстовий режим і наберіть "Рівняння похилої асимптоти:". Потім в новому рядку перейдіть в режим командного рядка і наберіть:
> y = k1 * x + b1;
У текстовому режимі наберіть "Знаходження екстремумів". У новому рядку наберіть команди:
> readlib (extrema): readlib (maximize):readlib (minimize):
> extrema (f, {}, x, 's'); s;
{ , 0}
{{ x = - 4}, { x = 0}}
Оскільки функція має розрив, то при пошуку максимуму і мінімуму слід вказати інтервал, в який не повинна входити точка розриву.
> fmax: = maximize (f, {x}, {x = -infinity ..- 2});
> fmin: = minimize (f, {x}, {x = -1 / 2..infinity});
У текстовому режимі наберіть результат дослідження у вигляді:"Максимум в точці ( - 4, - 256/27); мінімум в точці (0, 0). " - Побудувати графік функції і її асимптоти, вказати координати точок екстремуму. Оформлення кожного етапу дослідження функції виконати також як і при виконанні попереднього завдання. Самостійно завантажте з стандартної бібліотеки всі необхідні команди.
> restart: y: = arctan (x ^ 2):
> iscont (y, x = -infinity..infinity);
true
> k1: = limit (y / x, x = -infinity);
k1 : = 0
> k2: = limit (y / x, x = + infinity);
k2 : = 0
> b1: = limit (y-k1 * x, x = -infinity);
> b2: = limit (y-k1 * x, x = + infinity);
> yh: = b1;
> extrema (y, {}, x, 's'); s;
{0}
{{ X = 0}}
> ymax: = maximize (y, {x}); ymin: = minimize (y, {x});
> with (plots): yy: = convert (y, string):
> p1: = plot (y, x = -5..5, linestyle = 1, thickness = 3,color = BLACK):
> p2: = plot (yh, x = -5..5, linestyle = 1, thickness = 1):
> t1: = textplot ([0.2,1.7, "Асимптота:"], font = [TIMES, BOLD, 10], align = RIGHT):
> t2: = textplot ([3.1,1.7, "y = Pi / 2"],font = [TIMES, ITALIC, 10], align = RIGHT):
> t3: = textplot ([0.1, -0.2, "min: (0,0)"], align = RIGHT):
> t4: = textplot ([2,1, yy], font = [TIMES, ITALIC,10], align = RIGHT):
> display ([p1, p2, t1, t2, t3, t4]);
Р.4.4 Інтегрування
§4.4 Інтегрування
Аналітичне та чисельне інтегрування. Невизначений інтеграл обчислюється за допомогою 2-х команд:
- прямого виконання - int(f,x), де f - підінтегральна функція, x - змінна інтегрування;
- відкладеного виконання - Int (f, x) - де параметри команди такі ж, як і в команді прямого виконання int. Команда Int видає на екран інтеграл в аналітичному вигляді математичної формули.
Для обчислення визначеного інтеграла в командах int і Int додаються межі інтегрування, наприклад,
> Int ((1 + cos (x)) ^ 2, x = 0..Pi) = int ((1 + cos (x)) ^ 2, x = 0..Pi);
Якщо в команді інтегрування додати опцію continuous: int(f,x,continuous), то Maple буде ігнорувати будь-які можливі розриви підінтегральної функції в діапазоні інтегрування. Це дозволяє обчислювати невласні інтеграли від необмежених функцій. Невласні інтеграли з нескінченними межами інтегрування обчислюються, якщо в параметрах команди int вказувати, наприклад, x=0..+infinity.
Чисельне інтегрування виконується командою evalf (int (f, x = x1..x2), e), де e - точність обчислень (число знаків після коми).
Інтеграли, залежні від параметра. Обмеження для параметрів. Якщо потрібно обчислити інтеграл, що залежить від параметра, то його значення може залежати від знаку цього параметра або будь-яких інших обмежень. Розглянемо як приклад інтеграл , який, як відомо з математичного аналізу, збігається при а>0 і розбігається при а<0. Якщо обчислити його, то отримаємо:
> Int (exp (-a * x), x = 0 .. + infinity) = int (exp (-a * x), x = 0 .. + infinity);
Definite integration: Can not determine if the integral is convergent.
Need to know the sign of -> a
Will now try indefinite integration and then take limits.
Таким способом інтеграл з параметром не обчислити. Для отримання явного аналітичного результату обчислень слід зробити будь-які припущення про значення параметрів, тобто накласти на них обмеження. Це можна зробити за допомогою команди assume (expr1), де expr1 - нерівність. Додаткові обмеження вводяться за допомогою команди additionally (expr2), де expr2 - інша нерівність, що обмежує значення параметра з іншого боку.
Після накладення обмежень на параметр Maple додає до його імені символ (~), наприклад параметр a, на який було накладено деякі обмеження, в рядку виведення матиме вигляд: a ~.
Опис накладених обмежень параметра a можна викликати командою about (a). Приклад: накласти обмеження на параметр a такі, що a>- 1, a<=3:
> assume (a> -1); additionally (a <= 3);
> about (a);
Originally a, renamed a ~:
is assumed to be: RealRange (Open (-1), 3)
Повернемося до обчислення інтеграла з параметром , який слід проводити в такому порядку:
> assume (a> 0);
> Int (exp (-a * x), x = 0 .. + infinity) = int (exp (-a * x), x = 0 .. + infinity);
Навчання основним методам інтегрування. У Maple є пакет student, призначений для навчання математики. Він містить набір підпрограм, призначених для виконання розрахунків крок за кроком, так, щоб була зрозуміла послідовність дій, що призводять до результату. До таких команд відносяться інтегрування по частинах inparts і заміна змінної changevar.
Формула інтегрування частинами:
Якщо позначити підінтегральну функцію f = u (x) v' (x), то параметри команди інтегрування частинами такі: intparts (Int (f, x), u), де u - саме та функція u (x) , похідну від якої належить обчислити за формулою інтегрування частинами.
Якщо в інтегралі потрібно зробити заміну змінних x = g(t) або t = h(x), то параметри команди заміни змінних такі: changevar (h (x) = t, Int (f, x), t), де t - нова змінна.
Обидві команди intparts і changevar не обчислюють остаточно інтеграл, а лише виробляють проміжну викладку. Для того, щоб отримати остаточну відповідь, слід, після виконання цих команд ввести команду value (%); де % - позначають попередній рядок.
Не забудьте, перед використанням описаних тут команд обов'язково завантажити пакет student командою with(student).
Завдання 4.
- Знайти невизначені інтеграли: а) ; б) .
> Int (cos (x) * cos (2 * x) * cos (3 * x), x) = int (cos (x) * cos (2 * x) * cos (3 * x), x);
> Int ((3 * x ^ 4 + 4) / (x ^ 2 * (x ^ 2 + 1) ^ 3), x) = int ((3 * x ^ 4 + 4) / (x ^ 2 * (x ^ 2 + 1) ^ 3), x); - Знайти визначений інтеграл , за умови a > 0, b > 0.
> assume (a> 0); assume (b> 0);
> Int (sin (x) * cos (x) / (a ^ 2 * cos (x) ^ 2 + b ^ 2 * sin (x) ^ 2), x = 0..Pi / 2) = int (sin (x) * cos (x) / (a ^ 2 * cos (x) ^ 2 + b ^ 2 * sin (x) ^ 2), x = 0..Pi / 2); - Знайти невласний інтеграл , при a > -1
> restart; assume (a> -1);
> Int ((1-exp (-a * x ^ 2)) / (x * exp (x ^ 2)), x = 0 .. + infinity) = int ((1-exp (-a * x ^ 2)) / (x * exp (x ^ 2)), x = 0 .. + infinity); - Чисельно знайти інтеграл
> Int (cos (x) / x, x = Pi / 6..Pi / 4) = evalf (int (cos (x) / x, x = Pi / 6..Pi / 4), 15); - Повністю виконати всі етапи обчислення інтегралу частинами.
> restart; with (student): J = Int (x ^ 3 * sin (x), x);
> J = intparts (Int (x ^ 3 * sin (x), x), x ^ 3);
> intparts (%, x ^ 2);
> intparts (%, x);
> value (%); - Обчислити інтеграл за допомогою універсальної підстановки .
> J = Int (1 / (1 + cos (x)), x = -Pi / 2..Pi / 2);
> J = changevar (tan (x / 2) = t, Int (1 / (1 + cos (x)), x = -Pi / 2..Pi / 2), t);
> value (%);
J = 2
Р.4.5 Самостійно
§4.5 Контрольні завдання
- Обчисліть границю .
- Знайти границю функції при і при .
- Знайти .
- Знайти точки розриву функції .
- Знайти екстремуми функції , і вказати їх характер.
- Провести повне дослідження функції .
- Побудувати графік функції із зазначенням координат екстремумів.
- Обчислити невизначений інтеграл .
- Обчислити невласний інтеграл при a > 0 b > 0 для випадків a > b, a = b, a < b.
- Чисельно обчислити інтеграл .
- Повністю виконати всі етапи обчислення інтегралу частинами.
- Обчислити інтеграл за допомогою універсальної підстановки tg ( x / 2) = t.
Р.5.1 Векторна алгебра
§5.1 Векторна алгебра
Основна частина команд для розв'язання задач лінійної алгебри міститься в бібліотеці linalg. Тому перед розв'язанням задач з матрицями і векторами слід завантажити цю бібліотеку командою with(linalg).
Способи запису векторів. Для визначення вектора в Maple використовується команда vector([x1, x2, ..., xn]), де в квадратних дужках через кому вказуються координати вектора. наприклад:
> x: = vector ([1,0,0]);
x : = [1, 0, 0]
Координату вже означеного вектора x можна отримати в рядку виведення, якщо ввести команду x[i], де i - номер координати. Наприклад, першу координату заданого в попередньому прикладі вектора можна вивести так:
> x [1];
1
Вектор можна перетворити в список, і навпаки, за допомогою команди convert (vector, list) або convert (list, vector).
Сума векторів. Додати два вектори a та b можна за допомогою двох команд:
1) evalm (a + b);
2) matadd (a, b).
Команда add дозволяє обчислювати лінійну комбінацію векторів a та b: αa+βb, де α, β - скалярні величини, якщо використовувати формат: matadd (a, b, alpha, beta).
Скалярний, векторний добуток векторів і кут між векторами. Скалярний добуток двох векторів обчислюється командою dotprod (a, b).
Векторний добуток двох векторів [a,b] обчислюється командою crossprod (a, b).
Кут між двома векторами a та b обчислюється за допомогою команди angle (a, b) .
Норма вектора. Норму (довжину) вектора a=(x1,...,xn), яка дорівнює , можна обчислити за допомогою команди norm (а, 2) .
Можна нормувати вектор а за допомогою команди normalize (a), в результаті виконання якої буде отримано вектор одиничної довжини .
Знаходження бази системи векторів. Ортогоналізація системи векторів по алгоритмом Грама-Шмідта. Якщо є система n векторів {a1,a2,...,an}, то за допомогою команди basis([a1,a2,...,an]) можна знайти базу цієї системи.
За допомогою команди GramSchmidt ([a1, a2, ..., an]) можна ортогоналізувати систему лінійно-незалежних векторів {a1,a2,...,an}.
Завдання 1.
- Задано два вектора a=(2,1,3,2) та b=(1,2, -2,1). Знайти (a,b) і кут між a та b. Для розв'язання цього завдання наберіть:
> with (linalg):
> a: = ([2,1,3,2]); b: = ([1,2, -2,1]);
a : = [2,1,3,2]
b : = [1,2, -2,1]
> dotprod (a, b);
0
> phi = angle (a, b); - Знайти векторний добуток c=[a,b], а потім скалярний добуток (a,c), де a=(2, -2,1), b=(2,3,6).
> restart; with (linalg):
> a: = ([2, -2,1]); b: = ([2,3,6]);
a : = [2, - 2,1]
b : = [2,3,6]
> c: = crossprod (a, b);
c : = [ - 15, - 10,10]
> dotprod (a, c);
0 - Знайти норму вектора a=(1,2,3,4,5,6).
> restart; with (linalg):
> a: = vector ([1,2,3,4,5,6]): norm (a, 2); - У системі векторів a1=(1,2,2, -1), a2=(1,1, -5,3), a3=(3,2,8,7), a4=(0,1,7, -4), a5=(2,1,12, -10) виділити базу і ортогоналізувати її за алгоритмом Грама-Шмідта:
> restart; with (linalg):
> a1: = vector ([1,2,2, -1]): a2: = vector ([1,1, -5,3]): a3: = vector ([3,2,8,7]): a4: = vector ([0,1,7, -4]): a5: = vector ([2,1,12, -10]):
> g: = basis ([a1, a2, a3, a4, a5]);
g : = [ a1, a2, a3, a5 ]
> GramSchmidt (g);
[[1,2,2, - 1], [2,3, - 3,2], ,
Р.5.2 Операції над матрицями
§5.2 Операції над матрицями
Означення матриці. Для визначення матриці в Maple можна використовувати команду matrix(n, m, [[a11,a12,…,a1n], [a21,a22,…,a2m],…, [an1,an2,…,anm]]), де n - число рядків, m – число стовпців у матриці. Ці числа задавати необов'язково, а досить ввести елементи матриці по рядках в квадратних дужках через кому. Наприклад:
> A:=matrix([[1,2,3],[-3,-2,-1]]);
В Maple матриці спеціального виду можна генерувати за допомогою додаткових команд. Зокрема діагональну матрицю можна отримати командою diag. Наприклад:
> J:=diag(1,2,3);
Генерувати матрицю можна за допомогою функції f(i, j) від змінних i, j – індексів матриці: matrix(n, m, f), де n - число рядків, m – число стовпців. Наприклад:
> f:=(i, j)->x^i*y^j;
> A:=matrix(2,3,f);
Число рядків в матриці А можна визначити за допомогою команди rowdim(A),а число стовпців - за допомогою команди coldim(A).
Арифметичні операції з матрицями. Додавання двох матриць однакової розмірності здійснюється тими ж командами, що і додавання векторів: evalm(A+B) або matadd(A,B). Добуток двох матриць може бути знайдено за допомогою двох команд:
- evalm(A&*B);
- multiply(A,B).
В ролі другого аргументу в командах, які обчислюють добуток, можна вказувати вектор, наприклад:
> A:=matrix([[1,0],[0,-1]]);
> B:=matrix([[-5,1], [7,4]]);
> v:=vector([2,4]);
> multiply(A,v);
> multiply(A,B);
> matadd(A,B);
Команда evalm дозволяє також додавати до матриці число (додавати до матриці діагональну матрицю із заданим числом на головній діагоналі) і множити матрицю на число. Наприклад:
> С:=matrix([[1,1],[2,3]]):
> evalm(2+3*С);
Визначники, мінори та алгебраїчні доповнення. Ранг і слід матриці. Визначник матриці А обчислюється командою det(A). Команда minor(A,i,j) повертає матрицю, отриману з вихідної матриці А викреслюванням i-го рядка та j-го стовпця. Мінор Mij елемента aij матриці А можна обчислити командою det(minor(A,i,j)). Ранг матриці А обчислюється командою rank(A). Слід матриці А, який дорівнює сумі її діагональних елементів, обчислюється командою trace(A).
> A:=matrix([[4,0,5],[0,1,-6],[3,0,4]]);
> det(A);
1
> minor(А,3,2);
> det(%);
-24
> trace(A);
9
Обернена і транспонована матриці. Обернену матрицю А-1, таку що А-1А=АА-1=Е, де Е - одинична матриця, можна обчислити двома способами:
- evalm(1/A);
- inverse(A).
Транспонування матриці А – це заміна місцями рядків та стовпців. Отримана у результаті цього матриця називається транспонованою і позначається АΤ. Транспоновану матрицю АΤ можна обчислити командою transpose(A).
Наприклад, використовуючи задану у попередньому пункті матрицю А, знайдемо їй обернену та транспоновану:
> inverse(A);
> multiply(A,%);
> transpose(A);
З'ясування типу матриці. З'ясувати додатну чи від'ємну визначеність матриці можна за допомогою команди definite(A,param), де param може приймати значення: 'positive_def' – додатно визначена (A>0), 'positive_semidef' – невід'ємно визначена , 'negative_def' – від'ємно визначена (A<0), 'negative_semidef' - недодатно визначена . Результатом дії буде константа true – підтвердження, false – заперечення зробленого припущення. Наприклад:
> A:=matrix([[2,1],[1,3]]);
> definite(А,'positive_def');
true
Перевірити ортогональность матриці А можна командою orthog(A).
> В:=matrix([[1/2,1*sqrt(3)/2], [1*sqrt(3)/2,-1/2]]);
> orthog(В);
true
Функції від матриць. Піднесення матриці А до степеня n здійснюється командою evalm(A^n). Обчислення матричної експоненти eA можливо за допомогою команди exponential(A). Наприклад:
> Т:=matrix([[5*a,2*b],[-2*b,5*a]]);
> exponential(Т);
> evalm(Т^2);
Завдання 2.
- Задано матриці: , , . Знайти: (AB)C , detA, detB, detC, det[(AB)C]. Наберіть:
> with(linalg):restart;
> A:=matrix([[4,3],[7,5]]):
> B:=matrix([[-28,93],[38,-126]]):
> C:=matrix([[7,3],[2,1]]):
> F:=evalm(A&*B&*C);
> Det(A)=det(A); Det(B)=det(B); Det(C)=det(C); Det(F)=det(F);
Det(A)=- 1
Det(B)=- 6
Det(C)=1
Det(F)=6
- Задано матрицю , знайти: det(A), A-1, AΤ, det(M22). Наберіть:
> A:=matrix([[2,5,7],[6,3,4],[5,-2,-3]]);
> Det(A)=det(A);
Det(A)=- 1
> transpose(A);
> inverse(A);
> det(minor(A,2,2));
- 41
- Знайти ранг матриці .
> A:=matrix([[8,-4,5,5,9], [1,-3,-5,0,-7], [7,-5,1,4,1], [3,-1,3,2,5]]):
> r(A)=rank(A);
r(A)=3
- Обчислити eT, де .
> exponential([[3,-1],[1,1]]);
- Задано матрицю . Знайти значення полінома P(A)=A3-18A2+64A .
> A:=matrix([[5,1,4],[3,3,2],[6,2,10]]):
> P(A)=evalm(A^3-18*A^2+64*A);
Р.5.3 Спектральний аналіз матриці
§5.3 Спектральний аналіз матриці
Власні числа і власні вектори матриці. З курсу лінійної алгебри відомо, що якщо Ах=λх, то ненульовий вектор х називається власним вектором матриці А, а число λ – власним числом, який відповідає заданому власному вектору. Сукупність усіх власних чисел матриці називається спектром матриці. Якщо в спектрі матриці одне і теж власне число зустрічається k разів, то кажуть, що кратність цього власного числа дорівнює k.
Для знаходження власних чисел матриці А використовується команда eigenvalues(A). Для знаходження власних векторів матриці А використовується команда eigenvectors(A). В результаті виконання цієї команди будуть отримані власні числа, їх кратність і відповідні власні вектори.
Щоб зрозуміти, в якому вигляді отримуються результати виконання команди eigenvectors, уважно розберіться з наступним прикладом: матриця має три власні вектори: a1=(-1,0,1), що відповідає власному числу λ1=2 кратності 1, a2=(1,1,1), що відповідає власному числу λ2=3 кратності 1, a3=(1,-2,1), що відповідає власному числу λ3=6 кратності 1. Знайдемо їх у Maple:
> A:=matrix([[3,-1,1],[-1,5,-1],[1,-1,3]]):
> eigenvectors(A);
[2,1,{[-1,0,1]}], [3,1,{[1,1,1]}], [6,1,{[1,-2,1]}]
У рядку виведення перераховані в квадратних дужках власне число, його кратність і відповідний власний вектор в фігурних дужках, потім наступні набори таких же даних.
Характеристичний і мінімальний поліноми матриці. Для обчислення характеристичного полінома PA(λ)=det(λE-A) матриці A використовується команда charpoly(A,lambda). Мінімальний поліном (дільник) матриці А можна знайти за допомогою команди minpoly(A,lambda).
Канонічні і спеціальні типи матриць. Привести матрицю А до нормальної форми Жордана можна командою jordan(A). До трикутного вигляду матрицю А можна привести трьома способами:
- команда gausselim(A) приводить матрицю А до трикутного вигляду методом Гауса;
- команда ffgausselim(A) приводить матрицю А до трикутного вигляду методом Гауса без ділення. Ця команда краще для роботи з символьними матрицями, так як не виробляє нормування елементів і виключає можливі помилки, пов'язані з діленням на нуль;
- команда gaussjord(A) приводить матрицю А до трикутного вигляду методом Гауса-Жордана.
Характеристичну матрицю F(A)=λE-A можна обчислити командою charmat(A,lambda).
Завдання 3.
- Задано матрицю . Знайти її власні вектори і власні числа.
> U:=matrix([[3,2-I],[2+I,7]]):
> eigenvectors(U);
,
- Задано матрицю . Знайти власні вектори, власні числа, характеристичний поліном і мінімальний поліном, Жорданова форму.
> A:=matrix([[3,-I,0],[I,3,0],[0,0,4]]):
> eigenvectors(A);
[2, 1, {([1, - I, 0])}], [4, 2, {([0, 0, 1]), ([- I, 1, 0])}]
> P(lambda):=charpoly(A,lambda);
> d(lambda):=minpoly(A,lambda);
> jordan(A);
- Задано матрицю . Привести матрицю А до Жорданова форми, трикутного вигляду, знайти її характеристичну матрицю.
> A:=matrix([[1,-3,4],[4,-7,8],[6,-7,7]]):
> j:=jordan(A);
> g:=gausselim(A);
> F(A):=charmat(A,lambda);
Самостійно перевірте, чим відрізнятиметься результат виконання команди ffgausselim(A) від gausselim(A) на цьому прикладі.
Р.5.4 Системи лінійних рівнянь. Матричні рівняння
§5.4 Системи лінійних рівнянь. Матричні рівняння
Системи лінійних рівнянь і матричні рівняння. Система лінійних рівнянь Ax=b може бути розв'язана двома способами.
Спосіб 1: стандартна команда solve знаходить розв'язки системи лінійних рівнянь, записаних в розгорнутому вигляді:
.
Спосіб 2: команда linsolve(A,b) із пакета linalg знаходить розв'язки рівняння Ax=b. Аргументи цієї команди: А – матриця, b – вектор.
За допомогою команди linsolve(A,b) можна знайти розв'язки матричного рівняння АХ=В, якщо в ролі аргументів цієї команди вказати, відповідно, матриці А та В.
Ядро матриці. Ядро матриці А – це множина таких векторів х, добутки матриці А на котрі дорівнює нульовому вектору: Ax=O. Пошук ядра матриці А еквівалентний розв'язанню системи лінійних однорідних рівнянь. Знайти ядро матриці А можна командою kernel(A).
Завдання 4.
- Знайти загальний і один частковий розв'язок системи:
> eq:={2*x-3*y+5*z+7*t=1, 4*x-6*y+2*z+3*t=2, 2*x-3*y-11*z-15*t=1}:
> s:=solve(eq,{x,y,z});
s:={ , y=y, }
Для знаходження часткового розв'язку слід виконати підстановку конкретного значення однієї із змінних за допомогою команди subs:
> subs({y=1,t=1},s);
{, , 1=1}
- Розв'язати матричне рівняння: АX=В; где ,
> A:=matrix([[1,2],[3,4]]):
> B:=matrix([[3,5],[5,9]]):
> X:=linsolve(A,B);
- Задано матрицю . Знайти її ранг, дефект: d(A)=n–r(A), де n – розмірність квадратної матриці, r – її ранг. Знайти ядро А. Наберіть:
> A:=matrix([[1,1,0],[0,2,-1],[1,3,-1]]):
> r(A):=rank(A);
r(A):=2
> d(A):=rowdim(A)-r(A);
d(A):=1
> k(A):=kernel(A);
k(A):={[- 1,1,2]}
Р.5.5 Самостійно
§5.5 Контрольні завдання
- Задано два вектори: a=(1,2,2,3), b=(3,1,5,1). Знайти (a,b) і кут φ між цими векторами.
- Задано три вектори: a=(2,-3,1), b=(-3,1,2) i c=(1,2,3). Знайти: [[a,b],c] i [a,[b,c]].
- Задано систему векторів: a1=(2,1,3,-1), a2=(7,4,3,-3), a3=(1,1,-6,0), a4=(5,3,0,4). Попередньо з'ясувавши, чи є система a1,a2,a3,a4 базою, застосувати алгоритм ортогоналізації Грама-Шмідта і побудувати ортогональну базу цього підпростору.
- Задано матриці та . Знайти: AB, BA, det(A), det(B).
- Задано матрицю: . Знайти: det(A), А-1, M32, AΤ.
- Знайти ранг матриці: . Привести матрицю С до трикутного вигляду.
- Задано матрицю . Знайти її спектр, характеристичний поліном і значення матриці на ньому (замість змінної λ в PА (λ) підставити А).
- Задано матрицю . Знайти eT, det(eT), власні вектори і власні числа матриці eT, ядро матриці Т.
- Задано матрицю . Знайти нормальну форму Жордана, власні вектори і числа, знайти характеристичний і мінімальний многочлени.
- Розв'язати матричне рівняння: АХ=В, де , .