Категории
Самые читаемые
onlinekniga.com » Научные и научно-популярные книги » Математика » Maple 9.5/10 в математике, физике и образовании - Владимир Дьяконов

Maple 9.5/10 в математике, физике и образовании - Владимир Дьяконов

Читать онлайн Maple 9.5/10 в математике, физике и образовании - Владимир Дьяконов

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 48 49 50 51 52 53 54 55 56 ... 125
Перейти на страницу:

Полезно обратить внимание на не вполне обычную проверку правильности решений. Иногда при этом выводятся значения левой и правой частей уравнения, требующие осмысления полученных результатов.

4.8.8. Решение неравенств

Неравенства в математике встречаются почти столь же часто, как и равенства. Они вводятся знаками отношений, например > (больше), < (меньше) и т.д. Решение неравенств существенно расширяет возможности функции solve. При этом неравенства задаются так же, как и равенства. Приведенные на рис. 4.35 примеры поясняют технику решения неравенств.

Рис. 4.35. Примеры, иллюстрирующие решение неравенств

Из приведенных примеров очевидна форма решений — представлены критические значения аргумента, вплоть до не включаемых значений области действия неравенства (они указываются словом Open). Всегда разумным является построение графика выражения, которое задает неравенство — это позволяет наглядно убедиться в правильности решения.

Приведем еще несколько примеров решения неравенств в аналитической форме (файл solveu):

> solve(5*х>10,х);

RealRange(Open(2), ∞)

> solve(5*х>=10,х);

RealRange(2, ∞)

> solve(ln(х)>2,х);

Rea1Range(Open(e²), ∞)

> solve(ехр(х)>10, х);

RealRange(Open(ln(10)), ∞

> solve(a*x>b,{х});

> eqn := abs(z)^2/(z+1) < ехр(2)/(ехр(1)-1);

> solve(eqn, {z});

> eqn := ехр(х)*х^2 >= 1/2;

> solve(eqn, {x});

> eqns := abs((z+abs(z+2))^2-1)^2 = 9;

eqns := |(z +|z + 2|)² - 1|² = 9

> solve(eqns, {z});

{z = 0 }, { z ≤ -2}

> eqns := { х^2<1, у^2<=1, х+у<1/2 };

eqns:={х² < 1, y² ≤ 1, х + y < ½}

> solve(eqns, {x, у});

{y ≤ 1, -1 ≤ y, x+y < ½, -1 < x, x < 1}

В последнем примере показано решение системы неравенств. При этом выдаются области определения нескольких переменных.

4.8.9. Решение функциональных уравнений

Решение функционального уравнения, содержащего в составе равенства некоторую функцию f(х), заключается в нахождении этой функции. Для этого можно использовать функцию solve, что демонстрируют приведенные ниже примеры (файл solvefe):

> A:=solve(f(х)^2-х+1,f);

А := proc(x) RootOf(_Z^ 2 -х + 1, label =_L7) end proc

> convert(A(x),radical);

> allvalues(%);

> B:=solve(f(x)*x=ln(x^2),f);

В := proc(x) ln(x^2)/x end proc

> convert(B(x),radical);

> C:=solve(f(x)*х^2=а*х^2+b*х+с, f);

C := proc(x) (ax×x^2 + bx×x + c)/x^2 end proc

> convert(C(x),radical);

4.8.10. Решение уравнений с линейными операторами

Maple позволяет решать уравнения с линейными операторами, например, с операторами суммирования рядов и дифференцирования. Ограничимся одним примером такого рода (файл solvefo):

> S := sum((a+b*exp(x[i])-y[i])^2, i=0..n);

> eqns := {diff(S, a), diff(S,b)};

> solve(eqns, {a, b});

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,х);

.9033391108

> fsolve(sin(х)=1/2,х=4..8);

6.806784083

> fsolve(2*х^2+х-1=10,x);

-2.608495283, 2.108495283

> fsolve(х^5-х,x);

-1., 0., 1.000000000

> fsolve(х^5-х,x,complex);

-1.000000000, -1.000000000 I, 0., 1.000000000 I, 1.000000000

> eqns := abs(x)*x+exp(x) > 0;

eqns:= 0 <|x|x +ex

> solve(eqns, {x});

{-2 LambertW(½)<x}

> f := sin(x+y) — exp(x)*y = 0: g := x^2 - у = 2:

fsolve{{f,g},{x,y},{x=-1..1,y=-2..0});

{x = -.6687012050, у = -1.552838968}

Заметим, что локализация поиска корней в заданном интервале позволяет отыскивать такие решения, которые не удается получить с помощью функций solve и fsolve в обычном применении. В последнем из приведенных примеров дается решение системы нелинейных уравнений, представленных уравнениями f и g.

Чтобы еще раз показать различие между функциями solve и fsolve, рассмотрим пример решения с их помощью одного и того же уравнения erf(x) = 1/2:

> solve(erf(х)=1/2,х);

RootOf(2 erf(_Z) -1)

> fsolve(erf(x)=1/2);

.4769362762

Функция solve в этом случае находит нетривиальное решение в комплексной форме через функцию RootOf, тогда как функция fsolve наводит обычное приближенное решение.

Мы уже отмечали, что функция solve дает решение уравнения ехр(-х) = х в форме специальной функции Ламберта. Нетрудно заметить, что функция fsolve дает результат сразу в форме числа с плавающей точкой:

> restart;eq:=exp(-х)=х;sol:=fsolve(ехр(-х)=х,х);

eq: = e(-x) = х sol: =0.5671432904

4.8.12. Решение рекуррентных уравнений — rsolve

Функция solve имеет ряд родственных функций. Одну из таких функций — fsolve — мы рассмотрели выше. В справочной системе Maple можно найти ряд и других функций, например rsolve для решения рекуррентных уравнений, isolve для решения целочисленных уравнений, msolve для решения по модулю m и т.д. Здесь мы рассмотрим решение уравнений важного класса — рекуррентных. Напомним, что это такие уравнения, у которых заданный шаг решения находится по одному или нескольким предшествующим шагам.

Для решения рекуррентных уравнений используется функция rsolve:

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));

(-f(0) -f(1))(k + 1)(-1)k +(f(1) +2f(0))(-1)k

> rsolve({f(n)=-3*f(n-1)-2*f(n-2),f(1..2)=1), {f});

{f(w) = -3(-1)n +(-2)n}

> rsolve({y(n)=n*y(n-1), y(0)=1),y);

Г(n + 1)

> rsolve((y(n)*y(n-1)+y(n)-y(n-1)=0,у(0)=a},y);

> rsolve({F(n)=F(n-1)+F(n-2),F(1..2)=1),F, 'genfunc'(x));

> rsolve({y(n+1)+f(n)=2*2^n+n, f(n+1)-y(n)=n-2^n+3, y(k=1..5)=2^k-1,f(5)=6), {y, f});

{f(n)=n+1, y(n) = 2n - 1}

А теперь приведем результат вычисления функцией rsolve n-го числа Фибоначчи. Оно задается следующим выражением:

> eq1 := (f(n+2) = f(n+1) + f(n), f(0) = 1, f(1) = 1};

eq1 := {f(n+2) = f(n+1)+f(n), f(0) = 1, f(1) = 1}

В нем задана рекуррентная формула для числа Фибоначчи — каждое новое число равно сумме двух предыдущих чисел, причем нулевое и первое числа равны 1. С помощью функции rsolve в Maple 9.5 можно получить поистине ошеломляющий результат:

> a1:=rsolve(eq1, f);

Числа Фибоначчи — целые числа. Поэтому представленный результат выглядит как весьма сомнительный. Но на самом деле он точный и с его помощью можно получить числа Фибоначчи (убедитесь в этом сами). Любопытно отметить, что решение в Maple8 заметно отличается от приведенного выше для Maple 9.5. Но только по форме, а не по сути.

4.8.13. Решение уравнений в целочисленном виде — isolve

Иногда бывает нужен результат в форме только целых чисел. Для этого используется функция isolve(eqns, vars), дающая решение в виде целых чисел. Приведем примеры ее применения (файл isolve):

> isolve({2*х-5=3*y});

{x=4 + 3_Z1, у = 1+2_Z1}

> isolve(y^4-z^2*y^2-3*х*z*y^2-х^3*z);

Здесь вывод представлен с помощью вспомогательных переменных _Z1.

4.8.14. Функция msolve

Функция msolve(eqns,vars,m) или msolve(eqns,m) обеспечивает решение вида Z mod m (то есть при подстановке решения левая часть при делении на m дает остаток, равный правой части уравнения). При отсутствии решения возвращается объект NULL (пустой список).

Ниже даны примеры использования функции msolve (файл msolve):

> msolve{{3*х-4*y=1,7*х+y=2},12);

{y = 5, х = 3}

> msolve(2^i=3,19);

{i = 13 + 18 _ZI~}

> msolve(8^j=2,х,17);

1 ... 48 49 50 51 52 53 54 55 56 ... 125
Перейти на страницу:
На этой странице вы можете бесплатно читать книгу Maple 9.5/10 в математике, физике и образовании - Владимир Дьяконов.
Комментарии