2. Решение уравнений |
|
Уравнение представляет собой выражение вида |
|
f (x) 0 , |
(1) |
в котором f (x) – некоторая функция, а x является неизвестной переменной. Решением (корнем) этого уравнения называется всякое число x из области определения f (x), которое, будучи подставлено в уравнение (1), обращает его в тождество. Геометрический смысл корня – это точка пересечения графика функции f (x) с осью Ox.
Решить уравнение – значит найти совокупность (множество) всех его корней. Иногда задача ставится о решении уравнения лишь на каком-либо подмножестве числовой оси x (например, на отрезке), тогда ищется совокупность корней уравнения, принадлежащих этому подмножеству.
Наибольшие сложности вызывает решение нелинейных уравнений. Их можно разделить на два класса – алгебраические и трансцендентные. Алгебраическими называются уравнения, содержащие только алгебраические функции (целые, рациональные, иррациональные). В частности, многочлен (полином) является целой алгебраической функцией. Уравнения, содержащие другие функции (тригонометрические, показательные, логарифмические и др.), называются трансцендентными.
Алгебраические уравнения решаются с помощью функ-
ции solve: |
|
|
|
|
|
|
|
|
|
|
|
|
> solve(x^3-2*x+1,x); |
|
|
|
|
|
|
|
|
|
|||
|
1 |
|
1 |
|
|
|
1 |
|
1 |
|
|
|
1, |
|
|
5, |
|
5 |
|||||||
2 |
2 |
2 |
2 |
|||||||||
|
|
|
|
|
|
|
|
|||||
Как само уравнение, так и результат можно присвоить переменной:
>eq:= x^4-5*x^2+6*x=2:
>sols:= [solve(eq,x)];
sols := [–1+ 
3 , –1– 
3 , 1, 1]
6
> sols[1];
–1+ 
3
> evalf(sols);
[.732050808, –2.732050808, 1., 1.]
С помощью функции evalf можно вывести результат в численном виде:
> solve(sqrt(ln(x))=2,x); e4
> evalf(");
54.59815003
Символ " (кавычка) в Maple означает последний вычисленный результат (по времени, а не по расположению команд).
Решение полиномиального уравнения:
> solve(x^5-3*x^4+2*x^2-x+3,x);
RootOf(_Z5 – 3 _Z4 + 2 _Z2 – _Z + 3)
> allvalues(");
–1.127479307, .03687403922 – .8565945569 I,
.03687403922 + .8565945569 I, 1.327862375, 2.725868853
Решить трансцендентное уравнение с помощью функции solve, как правило, не удается. Например, график функций ex и sin x показывает наличие бесконечного множества корней уравнения ex = sin x при x < 0:
> plot([exp(x),sin(x)],x=-10..1);
7
Однако solve выдает комплексный корень:
> solve({exp(x)=sin(x)},x);
{x = RootOf(_Z – ln(sin(_Z)))}
> allvalues(");
{x = .3627020561 – 1.133745919 I}
Трансцендентные уравнения решаются приближенно с помощью функции fsolve:
> fsolve(exp(x)=sin(x),x=–4..0);
–3.183063012
Здесь нужно задавать отрезок, на котором расположен корень. Чтобы его найти, перед решением обычно строят график функции. Найдем еще один корень, теперь на отрезке [–7, –4]:
> fsolve(exp(x)=sin(x),x=–7..–4);
–6.281314366
Решение системы алгебраических уравнений:
> solve({x^2*y^2=0, x-y=1});
{y = –1, x = 0}, {y = –1, x = 0}, {x = 1, y = 0}, {x = 1, y = 0}
Для удобства левым частям уравнений системы можно присвоить имена:
>f:=x^7-5*x^2*y^4+1510:
>g:=y^5-3*x^4*y-105:
>s1:=solve({f,g},{x,y}); #Результат решения не приводит-
ся
>evalf(");
{x = –2.844483289, y = –.5348543088}
> allvalues(s1); # Ниже приводится лишь часть результата
{x = –2.844483289, y = –.5348543088}, {y = –2.573256586, x = –2.304767679},
{y =.1857181696+2.786617077 I, x = –2.107398990–.1931448896 I}
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{x = 15.00039270, y = 19.74216374}
8
Решение системы трансцендентных уравнений тоже обычно начинается с построения графика:
>with(plots):
>implicitplot({sin(x+y)-exp(x)*y=0,x^2-y=2}, x=-3..3, y=-3..3);
Далее вызываем fsolve столько раз, сколько решений оказалось на графике (использовать копирование). Для каждого решения указываем область, в которой оно находится, например:
> fsolve({sin(x+y)-exp(x)*y=0,x^2-y=2},{x,y}, {x=-1..1,y=-2..0});
{x = –.6687012050, y = –1.552838698}
Для решения полиномиальных уравнений можно использовать функцию roots:
> roots(2*x^3+11*x^2+12*x-9);
[[–3, 2], [ 12 , 1]]
В скобках первое число – корень, второе – его кратность.
Задания для самостоятельной работы
1. Решить нелинейные уравнения, предварительно построив графики:
а) 5x3 2x2 x 1 0 ; |
б) x6 3x2 1 0 ; |
|
||||
|
|
|
|
|
|
|
в) x 1 1/ x 0 ; |
|
г) x2 |
cos 2 x 0 ; |
|
||
д) ch(0,4x) (x 2)2 ; |
|
е) e x |
6x 3 tg x 0 , |
x [– , ]. |
||
|
2. Решить системы уравнений, предварительно построив |
|||||
графики: |
|
|
|
|
||
а) sin(x y) xy 1, |
|
x2 y 2 3 / 4 ; |
|
|||
б) x 2 ln x y 2 0, |
2x2 xy 5x 1; |
|
||||
в) cos(x 5) xy 2.5, |
|
ln x y2 |
3. |
|
||
9
3. Задачи линейной алгебры
Большинство функций, предназначенных для решения задач линейной алгебры, находится в пакете linalg, который требуется подключить:
> with(linalg):
Задание квадратной матрицы 3-го порядка:
> A:=matrix([[2,1,3],[5,1,0],[7,8,9]]);
2 |
1 |
3 |
|
|
|
|
|
|
5 |
1 |
|
A := |
0 |
||
|
7 |
8 |
|
|
9 |
||
Вычисление определителя матрицы:
> det(A);
72
Вычисление минора элемента а21 матрицы:
> minor(A,2,1);
1 |
3 |
|
|
|
|
|
8 |
|
|
9 |
|
Вычисление ранга матрицы:
> rank(A);
3
Вычисление следа матрицы (т.е. суммы диагональных элементов):
> trace(A);
12
Транспонирование матрицы:
> AT:=transpose(A);
2 |
5 |
7 |
|
|
|
|
|
|
1 |
1 |
|
AT := |
8 |
||
|
3 |
0 |
|
|
9 |
||
Вычисление обратной матрицы:
> A1:=inverse(A);
10