Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алфавит и синтаксис Maple.doc
Скачиваний:
76
Добавлен:
27.04.2019
Размер:
848 Кб
Скачать
☆

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}