- •Глава 2. Основные понятия и конструкции системы
- •2.1. Алфавит и синтаксис Maple-языка
- •2.2. Последовательности выражений
- •2.3. Операторы оценивания выражений
- •2.4. Извлечение операндов выражений
- •2.5. Наборы и операции с наборами
- •2.6. Списки и операции со списками
- •2.7. Типы объектов и выражений
- •2.8. Преобразование типов выражений
- •2.9. Имена переменных
- •2.10. Типы переменных
- •2.11. Оператор присваивания
- •2.12. Отмена операции присваивания
- •2.13. Ограничение значений переменных
- •2.14. Операторы
- •2.15. Математические функции
- •2.16. Операции с формулами и выражениями
- •2.17. Операции с полиномами
- •2.18. Массивы, векторы и матрицы
- •2.19. Строковые переменные
- •Упражнения
- •Глава 3. Операции и функции математического анализа
- •3.1. Вычисление сумм и рядов
- •3.2. Вычисление произведений членов некоторой последовательности
- •3.3. Вычисление производных
- •3.4. Вычисление пределов
- •3.5. Интегрирование выражений
- •3.6. Разложение функций в ряды
- •3.7. Нахождение экстремумов, максимумов и минимумов функций
- •3.8. Анализ функций на непрерывность
- •Упражнения
- •Глава 4. Решение уравнений и неравенств
- •4.1. Основные понятия и конструкции
- •4.2. Решение одиночных уравнений
- •4.3. Решение систем алгебраических уравнений
- •4.4. Присваивание значений полученных решений
- •4.5. Поиск корней полиномов
- •4.6. Решение тригонометрических уравнений
- •4.7. Решение неравенств
- •4.8. Решение функциональных уравнений
- •4.9. Решение рекуррентных уравнений
- •4.10. Численное решение уравнений и систем
- •4.11. Решение дифференциальных уравнений
- •Упражнения
4.6. Решение тригонометрических уравнений
При решении тригонометрических уравнений следует помнить, что по умолчанию ищутся только главные решения. Для получения всех решений следует присвоить значение true переменной среды _EnvAllSolutions.
Пример:
> restart; solve ( sin( x) = cos( x ) );
1/4 Pi
> _EnvAllSolutions:=true: solve ( sin( x ) = cos( x ) );
1/4 Pi + Pi _Z~
Здесь _Z~ принадлежит множеству натуральных чисел.
4.7. Решение неравенств
Решения неравенств выдаются в виде отрезков или интервалов. В последнем случае перед значением точки стоит служебное слово Open (признак интервала).
Примеры:
> restart; solve ( ( x + 1 )*( x + 2 )*( x + 3 ) > 0 );
RealRange(Open(-3), Open(-2)), RealRange(Open(-1), infinity)
> solve ( ( x + 1 )*( x + 2 )*( x + 3 ) <= 0 );
RealRange(-infinity, -3), RealRange(-2, -1)
4.8. Решение функциональных уравнений
С помощью функции solve можно решать функциональные уравнения. Решением в этом случае является функция, определенная оператором proc.
Пример:
> restart; s:=solve ( f (x)^2*x + 2*f (x) – 3 , f );
s := proc(x) RootOf(_Z^2*x + 2*_Z - 3) end
> convert ( s (y) , radical );
4.9. Решение рекуррентных уравнений
Функция rsolve с таким же перечнем параметров, как и у solve, служит для решения рекуррентных уравнений. Напомним, что рекуррентные уравнения решаются последовательно – решение каждого последующего находится из решений одного или нескольких предыдущих. Типичным примером таких уравнений служат сеточные уравнения, имеющие, как правило, диагональные или ленточные матрицы.
Примеры:
> rsolve({y(n+1)=y(n)/2,y(0)=a},y);
> rsolve({y(n)*y(n-1) + y(n) - y(n-1) = 0, y(0)=a}, y);
Кроме функций solve и rsolve в системе реализованы функции вида
isolve ( eqns, vars)
для поиска решений уравнений в целых числах и
msolve ( eqns, vars, m ) или msolve( eqns, m )
для поиска решений уравнений по модулю m .
4.10. Численное решение уравнений и систем
Для численного решения систем уравнений, когда не удаётся найти аналитическое решение или по другим соображениям, можно использовать функцию вида
fsolve( eqns, vars, options ) .
Здесь кроме уравнений eqns и переменных vars задаётся параметр options, управляющий решением. Этот параметр может принимать одно из следующих значений:
complex – ищется один корень (или все корни, для многочленов) на множестве комплексных чисел с плавающей запятой;
fulldigits – это значение параметра предотвращает потерю количества значащих цифр, задающихся параметром среды Digits, при промежуточных вычислениях. Эта опция замедляет работу функции;
maxsols=n – задаёт наименьшее количество разыскиваемых корней. Эта опция значима только для многочленов;
a .. b или x = a .. b или { x=a .. b, y=c .. d, ...} – задание интервалов поиска корней. Конечные точки включены.
В общем случае fsolve пытается вычислять одиночный вещественный корень уравнения. Для многочленов вычисляются все вещественные (не комплексные) корни, хотя для некоторых "плохих" многочленов могут быть найдены не все корни. Чтобы вычислять все корни полиномиальных выражений над полем комплексных чисел, используется опция complex.
Для поиска решений в окрестности какой-либо конкретной точки, необходимо задавать интервал поиска, включающий в себя эту точку.
Примеры:
> fsolve( tan(sin(x))=x, x );
1.557085816
> poly := 23*x^5 + 105*x^4 - 10*x^2 + 17*x:
> fsolve( poly, x, -1..1 );
0, -.6371813185
> fsolve( poly, x, maxsols=3 );
0, -4.536168981, -.6371813185
> q := 3*x^4 - 16*x^3 - 3*x^2 + 13*x + 16: fsolve(q, x, 1..2);
1.324717957
> fsolve(q, x, complex);
-.6623589786 - .5622795121 I, -.6623589786 + .5622795121 I,
1.324717957, 5.333333333
> f := sin(x+y) - exp(x)*y = 0: g := x^2 - y = 2:
> fsolve({f,g},{x,y},{x=-1..1,y=-2..0});
{y = -1.552838698, x = -.6687012050}
