> convert(A(x),radical);
![](/pic/1/4/1/7/4/6//i_427.png)
> allvalues(%);
![](/pic/1/4/1/7/4/6//i_427.png)
> B:=solve(f(x)*x=ln(x^2),f);
> convert(B(x),radical);
![](/pic/1/4/1/7/4/6//i_428.png)
> C:=solve(f(x)*х^2=а*х^2+b*х+с, f);
> convert(C(x),radical);
![](/pic/1/4/1/7/4/6//i_429.png)
4.8.10. Решение уравнений с линейными операторами
Maple позволяет решать уравнения с линейными операторами, например, с операторами суммирования рядов и дифференцирования. Ограничимся одним примером такого рода (файл solvefo):
> S := sum((a+b*exp(x[i])-y[i])^2, i=0..n);
![](/pic/1/4/1/7/4/6//i_430.png)
> eqns := {diff(S, a), diff(S,b)};
![](/pic/1/4/1/7/4/6//i_430.png)
> solve(eqns, {a, b});
![](/pic/1/4/1/7/4/6//i_431.png)
4.8.11. Решение в численном виде — функция fsolve
Для получения
fsolve(eqns, vars, options)
Эта функция может быть использована со следующими параметрами:
complex — находит один или все корни полинома в комплексной форме; fulldigits — задает вычисления для полного числа цифр, заданного функцией Digits;
maxsols=n — задает нахождение только n корней;
interval — задается в виде а..b или х=а..b или {x=a..b, y=c..d, …} и обеспечивает поиск корней в указанном интервале.
Функция fsolve дает решения сразу в форме вещественных или комплексных чисел, что и показывают следующие примеры (файл fsolve):
> fsolve(sin(х)=Pi/4,х);
> fsolve(sin(х)=1/2,х=4..8);
> fsolve(2*х^2+х-1=10,x);
> fsolve(х^5-х,x);
> fsolve(х^5-х,x,complex);
> eqns := abs(x)*x+exp(x) > 0;
> solve(eqns, {x});
> f := sin(x+y) — exp(x)*y = 0: g := x^2 - у = 2:
fsolve{{f,g},{x,y},{x=-1..1,y=-2..0});
Заметим, что локализация поиска корней в заданном интервале позволяет отыскивать такие решения, которые не удается получить с помощью функций solve и fsolve в обычном применении. В последнем из приведенных примеров дается решение системы нелинейных уравнений, представленных уравнениями f и g.
Чтобы еще раз показать различие между функциями solve и fsolve, рассмотрим пример решения с их помощью одного и того же уравнения erf(x) = 1/2:
> solve(erf(х)=1/2,х);
> fsolve(erf(x)=1/2);
Функция solve в этом случае находит нетривиальное решение в комплексной форме через функцию RootOf, тогда как функция fsolve наводит обычное приближенное решение.
Мы уже отмечали, что функция solve дает решение уравнения ехр(-х) = х в форме специальной функции Ламберта. Нетрудно заметить, что функция fsolve дает результат сразу в форме числа с плавающей точкой:
> restart;eq:=exp(-х)=х;sol:=fsolve(ехр(-х)=х,х);
4.8.12. Решение рекуррентных уравнений — rsolve
Функция solve имеет ряд родственных функций. Одну из таких функций — fsolve — мы рассмотрели выше. В справочной системе Maple можно найти ряд и других функций, например rsolve для решения рекуррентных уравнений, isolve для решения целочисленных уравнений, msolve для решения по модулю m и т.д. Здесь мы рассмотрим решение уравнений важного класса — рекуррентных. Напомним, что это такие уравнения, у которых заданный шаг решения находится по одному или нескольким предшествующим шагам.
Для решения
rsolve(eqns, fens)
rsolve{eqns, fens, 'genfunc'(z))
rsolve(eqns, fens, 'makeproc')
Здесь eqns — одиночное уравнение или система уравнений, fens — функция, имя функции или множество имен функций, z — имя, генерирующее функциональную переменную.
Ниже представлены примеры применения функции rsolve (файл rsolve):
> restart;
> rsolve(f(n)=-2*f(n-1)-f(n-2), f(k));