- •С.Н. Стребуляев, д.Ю. Васин
- •Оглавление
- •Введение
- •1. Основные пакеты, операторы и функции системы аналитических вычислений maple
- •1.1. Пакеты функций
- •1.2. Способы задания функций и построение их графиков
- •1.3. Вычисление пределов
- •1.4. Вычисление производных
- •1.5. Вычисление интегралов
- •1.6. Операции с рядами
- •1.7. Решение уравнений, неравенств и их систем
- •1.8. Анализ функций
- •Решение дифференциальных уравнений второго порядка:
- •Численное решение системы дифференциальных уравнений:
- •Решение системы двух дифференциальных уравнений с выводом фазового портрета решения:
- •Фазовый портрет;
- •Решение;
- •Система уравнений Ван дер Поля при аппроксимации характеристики лампы полиномом 3 степени
- •Получаем укороченные уравнения Ван дер Поля
- •Операции с векторами:
- •Способы задания матриц:
- •Операции над матрицами:
- •1.11. Преобразование комплексных чисел, аналитических выражений и функций комплексного переменного
- •Функции комплексного переменного:
- •Работа с комплексными функциями
- •Начальные условия:
- •Конкретные значения параметров системы указаны в вариантах контрольных заданий.
- •Нерезонансные случаи
- •Греческий алфавит
1.8. Анализ функций
При выполнении курсовых, дипломных и научно-исследовательских работ приходится проводить анализ поведения функций. В некоторых случаях — это сложная и трудоемкая процедура. Автоматизировать этот процесс возможно с помощью предлагаемых ниже функций.
Поиск экстремумов функций:
> restart: with(plots):with(linalg):
> # Используем функцию extrema(expr,constrs,vars,'s'), где expr - вид функции, constr - ограничения,vars- аргументы функции, s - найденная абсцисса точки экстремума;
> y:=(x)->a*x^2+b*x+c;
> extrema(y(x),{},x,'s');# при отсутствии ограничений записывается пустой список {};
> s;subs(x=s,y(x));
>
> extrema(x*exp(-x),{},x,'s');evalf(%);
> s;
> plot(x*exp(-x),x=0..3);
> evalf(extrema(sin(x)^2,{},x,'s'));s;
> plot(sin(x)^2,x=-Pi..Pi);
Поиск минимума или максимума функции от двух переменных:
> restart: with(plots):
> z[1]:=(x,y)->x^2-3*x+y^2+3*y+3;
> minimize(z[1](x,y));
> minimize(z[1](x,y),location);
> plot3d(z[1](x,y),x=-5..5,y=-5..5,color=blue,thickness=1,axes=boxed);
> z[2]:=(x,y)->sin(y)*exp(-x);
> maximize(z[2](x,y));
> maximize(z[2](x,y),location);
> maximize(z[2](x,y),x=-10..10,y=-10..10,location);
> evalf(%);
> plot3d(z[2](x,y),x=-10..10,y=-10..10,color=blue,thickness=1,axes=boxed);
Анализ функций на непрерывность, сингулярность:
> restart:
> iscont(1/x^2,x=-1..1);# is function continue ?;
> iscont(1/x^2,x=0..1);
> iscont(1/x^2,x=0..1,'closed');
> iscont(1/x^2,x=-1..1,'closed');
> iscont(1/(x+2),x=-1..1);
> singular(ln(x)/(x^2-x));
> singular(tan(x));evalf(%);
> singular(1/sin(x));evalf(%);
> singular(x+y+1/x,{x,y});
Операции с полиномами:
> # Выделение коэффициентов полиномa p(x);
> restart:
> p:=a[4]*x^4+a[3]*x^3+a[2]*x^2+a[1]*x+a[0];
> coeff(p,x);# выделение коэффициента при x^1;
> coeff(p,x^3); coeff(p,x,3); # выделение коэффициента при x^3;
> coeffs(p,x);# выделение всех коэффициентов по возрастанию степени;
> collect(p,x);
> # Выделение коэффициентов полиномa q(x,t);
> q:=x^2+2*(t^2)+3*x+4*t+5;
> coeffs(q);
> coeffs(q,t);
> collect(q,x);
> collect(q,x,t);
> # Оценка коэффициентов полинома по степеням;
> restart:
> q:=1/x^2+2/x+3+4*x+5*x^2;
> lcoeff(q,x);# коэффициент при старшей степени x;
> lcoeff(q,x,'t'); t;
> coeffs(q,x,'t');t;
>
> p:=a[4]*x^4+a[3]*x^3+a[2]*x^2+a[1]*x+a[0];
> degree(p,x);# Высшая степень полинома;
> ldegree(p,x);# Низшая степень полинома;
> # Разложение полинома по степеням;
> restart:
> evala(AFactor(2*x^2+4*x-6));
> evala(AFactor(x^2+2*y^2));
> expand((x-1)*(x-2)*(x-3)*(x-4));
> AFactor(%);
> evala(%);
> expand((x-1+I+2)*(x+1-I*2)*(x-3));
> evala(AFactor(x^2-2*y^2));
> # Вычисление корней полинома;
> restart:
> p:=x^4+9*x^3+31*x^2+59*x+60;
> solve(p,x);# все корни полинома;
> roots(p,x);# вещественные корни полинома с учетом кратности;
> expand((x-1)*(x-2)*(x-3)*(x-4));
> roots(%,x);
> # Основные операции с полиномами;
> restart:
> readlib(psqrt);# подключение библиотек;
> readlib(proot);
> psqrt(x^2+2*x*y+y^2); # корень квадратный от выражения в функции psqrt;
> proot(x^3+3*x^2+3*x+1,3); # корень кубический от выражения в функции proot;
> psqrt(x+y);
> proot(x+y,3);
> p1:=a1*x^3+b1*x^2+c1*x+d1;
> p2:=a2*x^3+b2*x^2+c2*x+d2;
> p1+p2;# сумма полиномов;
> p1*p2;# произведение полиномов;
> collect(%,x);# упорядочивание полинома по убыванию степеней x;
> p3:=p1/p2; # деление полиномов;
> expand(%,x);
> normal(%);# приведение дроби к нормальному виду;
> diff(p1,x);# производная от полинома;
> diff(p1,x$2);
> Int(p1,x)=int(p1,x);# неопределенный интеграл от полинома;
> Int(p1,x=0..1)=int(p1,x=0..1); # определенный интеграл от полинома;
> p3;
> denom(p3);# знаменатель дроби;
> numer(p3); # числитель дроби;
> collect(denom(p3),x);
> collect(numer(p3),x);
на множители полинома;
> restart:
> p:=x^4+4;
> factor(p);
> # Разложение
> factor(p,complex);
> factor(x^5-6*x^4+9*x^3-6*x^2+8*x,complex);
> ifactor(453);
> # наименьший общий делитель (н.о.д) двух полиномов;
> s[1]:=x^2-x*sqrt(3)-sqrt(2)*x+sqrt(6);
> s[2]:=x^2-2;
> gcd(s[1],s[2]);# н.о.д двух полиномов;
1.9. Решение дифференциальных уравнений и их систем
Дифференциальные уравнения лежат в основе математического моделирования различных, по своей природе, динамических систем и процессов. В настоящем разделе рассматриваются функции, реализующие аналитическое и численное решение линейных и нелинейных дифференциальных уравнений и их систем. Рассматриваются обыкновенные дифференциальные уравнения, системы уравнений и уравнения в частных производных. Для решения системы дифференциальных уравнений (задача Коши) используется функция dsolveв разных формах записи:
dsolve(ode); dsolve(ode, y(x), extra_args); dsolve({ode,ics}, y(x), extra_args); dsolve({sysode,ics}, {funcs}, extra_args),
где ode— обыкновенное дифференциальное уравнение или система уравнений,y(x) — искомая функция одной переменной,ics— выражение, задающее начальные условия, {sysode} — множество дифференциальных уравнений (система), {funcs} — множество определяемых функций,extra_args— опция, задающая тип решения. Параметрextra_argsпринимает может принимать следующие значения:exact— аналитическое решение (принято по умолчанию),explicit— решение в явном виде,system— решение системы дифференциальных уравнений,formalseries— решение в форме степенного многочлена,series— решение в виде ряда,numeric— решение в численном виде. По умолчанию функцияdsolveавтоматически выбирает наиболее подходящий метод решения дифференциальных уравнений. Однако в параметрах функцииdsolveв квадратных скобках можно указать предпочтительный метод решения дифференциальных уравнений.Допустимы следующие методы: quadrature, linear, Bernoulli, inverse_linear, separable, homogeneous, Chini, lin_sym, exact, Abel, pot_sym.
Решение обыкновенных дифференциальных уравнений первого порядка:
> restart:with(linalg):with(DEtools):with(plots):
>
> dsolve(diff(y(x),x)-a*x=0,y(x));
> dsolve(diff(y(x),x)-y(x)=exp(-x),y(x));
> dsolve(diff(y(x),x)-y(x)=sin(x)*x,y(x));
> ode_L:=sin(x)*diff(y(x),x)-cos(x)*y(x)=0;
> dsolve(ode_L,[linear],useInt);
> value(%);
> dsolve(ode_L,[separable],useInt);
> value(%);
> mu:=intfactor(ode_L);
> dsolve(mu*ode_L,[exact],useInt);
> # Графическое представление решений дифференциального уравнения, применение функции odeplot пакета plots;
>
> restart:with(plots):
> P:=dsolve({diff(y(x),x)=cos(x^2*y(x)),y(0)=2},y(x),type=numeric);
> odeplot(P,[x,y(x)],-15..15,labels=[x,y],color=black,thickness=2);
>