- •Математические пакеты
- •Греческие буквы (выводятся при выдаче результата)
- •Машинные константы:
- •!!!Присвоение сохраняется до тех пор, пока оно не будет снято или же не будет заменено другим присвоением!!!
- •Уравнения
- •Неравенства
- •Конечные суммы
- •Бесконечные суммы
- •Графика в maple
- •Дифференциальные уравнения
- •Линейная алгебра
- •Задание вектора
- •Основные задачи линейной алгебры
- •Программирование
Дифференциальные уравнения
1) Справочный аппарат, подгрузка >with(DEtools,odeadvisor):
>eq:=…; задание уравнения.
>odeadvisor(eq); определение типа уравнения.
>odeadvisor(eq,help); справка по данному типу уравнений.
Для задания дифференциального уравнения используют два способа задания производных
А) В виде >diff(y(x),x); >diff(y(x),x,x); … >diff(y(x),x$n);
В) В виде функций (вместо х можно подставлять числа)
>D(y)(x); >D(D(y))(x); >D(D(D(y)))(x); и т.д.
п-ю производную можно задавать также в виде >(D@@n)(y)(x);
Второй способ (и только он один!) используется для задания начальных условий.
УРАВНЕНИЯ ПЕРВОГО ПОРЯДКА
ОБЩЕЕ РЕШЕНИЕ
Решение уравнения y’= f(x,y) находится по команде
>dsolve(diff(y(x),x)=f(x, y(x))); или >dsolve(D(y)(x)=f(x, y(x)));
Примечание.В ранних версияхMAPLE нужно было в качестве опции добавлять искомую функциюу(х), т.е. писать >dsolve(diff(y(x),x)=f(x,y(x)),y(x));
Рекомендуется вначале задавать уравнение одной из следующих команд (удобно для проверки)
>eq:=diff(y(x),x)=f(x,y(х)); >eq:= D(y)(x)=f(x,y(х));
> eq:=diff(y(x),x)–f(x,y(х)); >eq:= D(y)(x)–f(x,y(х));
Ноль в правой части можно не писать, искомую функцию обязательно писать в виде у(х). Затем решение дифференциального уравнения разыскивается по команде
>dsolve(eq);
Примеры.
а) Найти общее решение уравнения y’= 2y – 4x .
>eq:=diff(y(x),x)=2*y(x) – 4*x; задание уравнения
>dsolve(eq);y(x) = 1+2x +e2x_C1 общее решение уравнения.
б) Найти общее решение уравнения y’=x/(y–1).
eq:=D(y)(x) – x/(y(x)–1);
>dsolve(eq);
Решение было бы менее громоздким, если бы мы искали его в неявном виде
>dsolve(eq, implicit); x2/2–y(x)2/2+y(x)+C1=0.
в) Аналогично решаются уравнения с неявной производной: y=xy’+sin(y’)
>eq:=y(x)=x*diff(y(x),x)+sin(diff(y(x),x)); >dsolve(eq);
г) Для решения уравнения в полных дифференциалах Pdx+Qdy=0 следует подгрузить алгебраический пакетlinalg.
>with(linalg): загрузка алгебраического пакета,
>H:=[P(x,y),Q(x,y)]; задание координат поляP(x,y) и Q(x,y) ,
>potential(H, [x,y],’f’); проверка условия полного дифференциала (true, false) ,
>f=C; нахождение общего решения уравнения в видеФ(х, у)=С .
ЗАДАЧА КОШИ
Уравнение >eq:=diff(y(x),x)=f(x,y); начальное условие >ic:=y(a)=b;
Решение задачи Коши осуществляется командой
>dsolve({eq,ic});
Или
>dsolve({diff(y(x), x)=f(x,y), y(a)=b});
Можно объединить в систему уравнение и начальное условие: >P:= {diff(y(x),x)=f(x,y),y(a)=b};
Тогда решение задачи Коши будет осуществляться командой
>dsolve(P);
Пример. Решить задачу Кошиy’ = 1+exp(x–y) , y(a) = b .
>dsolve({D(y)(x)=1+exp(x–y),y(a)=b}); y(x) = ln(x + eb–a –a)+ x
MAPLE ищет решение задачи Кошитолько в явном виде. Для этого иногда возникает необходимость использовать функциюRootOf.
Пример. Решить задачу Коши { y’=2x/(2y+cosy) , y(0)=0} .
>P:={D(y)(x)=2*x/(2*y(x)+cos(y(x))),y(0)=0}; система из уравнения и начального условия.
>dsolve(P); Ответ: y(x)=RootOf(x2 – Z2 – sin(Z)).
Этот ответ означает, что решение y(x) задачи Коши является корнем функционального уравнения
x2 – y2 –sin(y) = 0 ,
а само это уравнение можно рассматривать как решение задачи Коши в неявном виде.
Примечание.Если решение задачи Коши не существует, тоMAPLE ничего не выводит на экран.
ГРАФИК РЕШЕНИЯ ЗАДАЧИ КОШИ
Пример. Построить график решения задачи Кошиy’=x+y , y(0)=1.
>dsolve({D(y)(x)=x+y(x),y(0)=1}); y(x) =2 ex – x – 1
>rhs(%);2 ex – x – 1 выделение правой части равенства
>plot(%,x= –1..1); график этой правой части.
Вместо двух последних команд можно было бы обойтись одной
>plot(rhs(%),x= –1..1);
Если решение задачи Коши получено в неявном виде, то для построения неявно заданной кривой следует произвести подгрузку with(plots): (см. раздел «ГРАФИКА ВMAPLE»).
РЕШЕНИЕ ЗАДАЧИ КОШИ В РЯДАХ
Если не существует точного решения задачи Коши, то можно найти её решение в виде степенного ряда, применяя команды
>Order:=4; задание порядка разложения в ряд (по умолчанию = 6)
>dsolve({D(y)(x)=x^2+y(x)^2, y(1)=2}, y(x), series);
В команде следует обязательно указать искомую функцию у(х) и добавить опциюseries.
Ответ: y(x)=2+5(x–1)+11(x–1)2+(70/3)(x–1)3+O((x–1)4)
График этого приближенного решения строится командами
>convert(rhs(%),polynom); выделение правой части и превращение её в многочлен
>plot(%,x=0..2); график этого многочлена.
ЧИСЛЕННОЕ РЕШЕНИЕ ЗАДАЧИ КОШИ И ЕГО ГРАФИК
>F:=dsolve({D(y)(x)=x–y(x), y(0)=1}, y(x), numeric);
Обязательно указывать искомую функцию у(х) и опциюnumeric.
Ответ: F:=proc(x_rkf45)…endprocЭто означает, что решение просчитано.
Для нахождения значения решения при х=1,76 следует выполнить команду
>F(1,76); [х=1,76y(1,76)=1,104089…]
Для построения графика решения на отрезке [ –1..2] нужно выполнить команду
>plots[odeplot](F,[x,y(x)],–1..2);
Если подгружен пакет >with(plots): , то команда имеет вид
>odeplot(F,[x,y(x)],–1..2);
ЧИСЛЕННОЕ РЕШЕНИЕ ЗАДАЧИ КОШИ В ВИДЕ ТАБЛИЦЫ
>sys:={D(y)(x)=x – y(x), y(0)=1}: задача Коши
>X:=array([1,2,3,4]): значения Х, для которых мы хотим найти у(х)
>F:=dsolve(sys, y(x), numeric, output=X);
Примечание. В ранних версиях вместоoutputнужно было писатьvalue.
УРАВНЕНИЯ ВТОРОГО ПОРЯДКА
ОБЩЕЕ РЕШЕНИЕ, ФСР.
а) Найти общее решение уравнения y”= y’/x +8 x2
>dsolve((D@@2)(y)(x)=D(y)(x)/x+8*x^2); y(x)= x4 + _C1 + _C2x2
б) Найти общее решение уравнения x2y”+3xy’+2y=0.
>dsolve(x^2*diff(y(x), x, x)+3*x*diff(y(x), x)+2*y(x));
в) Найти общее решение уравнения y”–3y’+2y=ex .
> dsolve(diff(y(x), x, x)–3*diff(y(x), x)+2*y(x)=exp(x)); y(x)=–xex–ex+_C1ex+_C2e2x
г) Найти фундаментальную систему решений уравнения y’’’–3y”+4y’–2y=0 .
>dsolve((D@@3)(y)(x)–3*(D@@2)(y)(x)+4*D(y)(x)–2*y(x),output=basis);
Ответ: [ex, excosx, exsinx]
При наличии правой части программа выдает ФСР + частное решение
>dsolve(diff(y(x),x,x)–5*diff(y(x),x)+6*y(x)=2*exp(x),output=basis); [[e2x,e3x],ex]
ЗАДАЧА КОШИ, КРАЕВАЯ ЗАДАЧА
Пример. Решить задачу Коши x2y”+3xy’+2y=0 , y(1)=5 , y’(1)=4.
>dsolve({x^2*diff(y(x),x,x)+3*x*diff(y(x),x)+2*y(x), y(1)=5, D(y)(1)=4});
Или
>eq:= x^2*diff(y(x), x, x)+3*x*diff(y(x), x)+2*y(x);
>ic:= y(1)=5, D(y)(1)=4;
>dsolve({eq, ic});
Или
>H:={x^2*diff(y(x), x, x)+3*x*diff(y(x), x)+2*y(x), y(1)=5, D(y)(1)=4};
>dsolve(H);
Для решения краевой задачи нужно начальные условия заменить условиями на концах
>dsolve({diff(y(x), x, x)+y(х),y(0)=a, y(1)=b});
РЕШЕНИЕ ЗАДАЧИ КОШИ В РЯДАХ
Если не существует точного решения задачи Коши, то можно найти её решение в виде степенного ряда, применяя команды.
>Order:=4; задание порядка разложения в ряд (по умолчанию = 6)
>dsolve({diff(y(x), x, x)=x^2+y(x)^2, y(1)=2, D(y)(1)=0}, y(x), series);
В команде обязательно следует указать искомую функцию у(х) и добавить опциюseries.
Ответ: y(x)=2+5(x–1)2/2+(x–1)3/3+O((x–1)4)
График этого приближенного решения строится командами
>convert(rhs(%),polynom); выделение правой части и превращение её в многочлен
>plot(%,x= –1..2); график этого многочлена.
ЧИСЛЕННОЕ РЕШЕНИЕ ЗАДАЧИ КОШИ
>F:=dsolve({diff(y(x), x, x)=x–y(x), y(0)=1, D(y)(0)=2}, y(x), numeric);
Обязательно указывать искомую функцию и опцию numeric.
ответ F:=proc(x_rkf45)…endprocЭто означает, что решение просчитано.
Для нахождения значений решения и его производной при х=1 следует выполнить команду
>F(1); [х=1 y(х)=2.38…=0.698…]
Для построения графика решения на отрезке [ –1..2] нужно выполнить команду
>plots[odeplot](F, [x,y(x)], –1..2);
Если подгружен пакет >with(plots): , то можно выполнить команду
>odeplot(F, [x, y(x)], –1..2);
РЕШЕНИЕ ЗАДАЧИ КОШИ В ВИДЕ ТАБЛИЦЫ
Решение задачи Коши в виде таблицы находится командами
>eq:=diff(y(x),x,x)=x^2–y(x)^2;ic:=y(1)=2,D(y)(1)=0; уравнение и начальные условия
>X:=array([1,2,3,4]); значения переменнойх .
>F:=dsolve({eq, ic}, y(x), numeric, output=X);
Ответом является таблица
xy(x)
1 2 0
2 1.25… –0.52…
3 2.53… 3.20…
4 4.67… –0.75…
СТРУКТУРА DESol
Команда >f: =DESol(diff(y(x),x)=f(x,y(x)),y(x),y(a)=b); означает задание функции как решения данной задачи Коши, не решая эту задачу Коши.
Затем, не зная эту функцию, можно разлагать её в степенной ряд Тейлора в точке х=а по команде
>taylor(f, x=a, n);
Для уравнений более высокого порядка начальные условия задают в виде множества {…}
>f:=DESol(diff(y(x), x, x)+x*y(x), y(x), {y(0)=1, D(y)(0)=2});
>taylor(f,x);
СИСТЕМЫ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ
ОБЩЕЕ РЕШЕНИЕ
Система задается в виде последовательности выражений (через запятую)
>sys:=diff(x(t), t)=f(x(t), y(t), t) , D(y)(t)=g(x(t), y(t), t);
В этом случае общее решение системы находится по команде
>dsolve({sys});
В ранних версиях в виде опции добавлялись искомые функции {x(t),y(t)}.
Система может быть задана также в виде множества (в фигурных скобках)
>S:={diff(x(t),t)=f(x(t), y(t), t) , D(y)(t)=g(x(t), y(t), t)};
то в этом случае общее решение системы находится по команде
>dsolve(S);
Пример. Решить систему
>sys:={D(x)(t)=2*x(t)+y(t)+16*t , D(y)(t)=2*x(t)+3*y(t)};
>dsolve(sys); { x(t)=C1 e4t+C2et–11–12t , y(t)=2C1e4t–C2et+10+8t }
Пример. Найти общее решение линейной системы , где Х – вектор-столбец неизвестных функций, А – квадратная числовая матрица,F – вектор известных функций.
Решение.
>with(linalg): подгрузка пакета линейной алгебры
>A:=matrix(n,n, [a,b,c, …]); задание матрицы системы
>X:=vector([x(t),y(t),z(t), …]); задание вектора искомых функций
>F:=vector([F1,F2,…]); задание вектора известных функций
>X1:=map(diff,X,t); нахождение вектора производных искомых функций
>b:=evalm(X1–F); нахождение правой части системы
>sys:=geneqns(A,X,b); составление системы дифф. уравнений
>dsolve(sys); нахождение общего решения системы
ЗАДАЧА КОШИ ДЛЯ СИСТЕМЫ
Решение задачи Коши для системы ,x(t0)=x0 , y(t0)=y0находится по команде
>dsolve(sys); гдеsys– множество (в фигурных скобках), элементами которого служат уравнения системы и начальные условия (всё через запятую).
Пример.
>sys:={D(x)(t)=x(t)–y(t),D(y)(t)=x(t)+y(t),x(0)=1,y(0)=0}; задание двух уравнений системы и двух начальных условий
>P:=dsolve(sys); нахождение решения системы P:={x(t)=etcost, y(t)=etsint}
Соответствующая кривая на фазовой плоскости строится командой
>plot([rhs(P[1]), rhs(P[2]), t= –3..1]);
Пример. Решение задачи Коши для линейной автономной системы .
>with(linalg): подгрузка пакета линейной алгебры
>A:=matrix(n,n, [a,b,c, …]); задание матрицы системы
>X:=vector([x(t),y(t),z(t), …]); задание вектора искомых функций
>b:=map(diff,X,t); задание вектора производных искомых функций
>sys:=geneqns(A,X,b)union{x(0)=x0,y(0)=y0, …}; составление системы дифф. уравнений в объединении (union) с системой начальных условий.
>dsolve(sys); нахождение решения задачи Коши
ЧИСЛЕННОЕ РЕШЕНИЕ ЗАДАЧИ КОШИ ДЛЯ СИСТЕМЫ
Численное решение задачи Коши для системы ,x(t0)=x0 , y(t0)=y0
находится по команде >P:=dsolve({sys,ic},numeric);
Пример. Решить задачу Коши ,х(0)=1 , у(0)=2.
>sys:=D(x)(t)=x(t)–y(t), D(y)(t)=x(t)+y(t); задание двух уравнений системы,
>ic:=x(0)=1,y(0)=2; задание начальных условий
>P:=dsolve({sys,ic},numeric); нахождение решения системы.
Ответ: P: = proc(x_rkf45)…end proc
Это означает, что решение просчитано. Его значения для конкретного значения t=1.23 можно получить п команде
>P(1.23); [t=1.23 ,x(t)= –5.3… ,y(t)=5.5…]
Для построения параметрической кривой {x(t),y(t)} дляt= 0..2 применяют команду
>plots[odeplot](P, [x(t), y(t)], 0..2);
Если подгружен графический пакет >with(plots): , то команда принимает вид
>odeplot(P, [x(t), y(t)], 0..2);
Численное решение системы в виде таблицы для значений t= 0, 1, 2 получают командой
>dsolve({sys,ic}, numeric, output=array([0, 1, 2]));
tx(t)y(t)
0 1 2
1 –3.1… 5.22…
2 -16.5… 0.56…
ГРАФИЧЕСКИЕ ИЛЛЮСТРАЦИИ
ПОЛЕ НАПРАВЛЕНИЙ. ИНТЕГРАЛЬНЫЕ КРИВЫЕ
Подгрузка графического пакета >with(DEtools):
1) Поле направлений уравнения y’= f(x,y)находится по команде
>DEplot(D(y)(x)=f(x, y(x)), y(x), x=a..b, y=c..d, option);
В качестве опций можно задать цвет стрелок (color=black, red, …) и величину стрелок (arrows=line, small, medium, large, none).
2) Поле направлений уравнения y’= f(x,y)и несколько интегральных кривых с заданными начальными условиями
>DEplot(D(y)(x)=f(x, y(x)), y(x), x=a..b, [[y(x1)=y1], [y(x2)=y2], …], y=c..d, option);
Если в качестве опции указать arrows=none, то останутся только интегральные кривые, без поля направлений.
Примечание. Расчет интегральных кривых на [a, b] производится с шагом(b–a)/20 . Для увеличения точности картинки можно задать более мелкий шаг опциейstepsize=h.
3) Поле направлений автономной системы .
>DEplot([D(x)(t)=f(x(t), y(t)), D(y)(t)=g(x(t) ,y(t))], [x(t),y(t)], t=t1..t2, x=a..b, y=c..d, options);
Диапазон изменения переменной tне влияет на картину поля направлений.
4) Поле направлений автономной системы и несколько интегральных кривых.
>DEplot([D(x)(t)=f(x(t), y(t)), D(y)(t)=g(x(t) ,y(t))], [x(t),y(t)], t=t1..t2, [[x(t1)=x1, y(t1)=y1], [x(t2)=x2, y(t2)=y2], …], x=a..b, y=c..d, options);
Диапазон изменения переменной tне влияет на картину поля направлений, но интегральные кривые соответствуют этому диапазону.
5)Пространственные графики решений системы в координатах [x,y,t]
>DEplot3d([D(x)(t)=f(x(t),y(t),t), D(y)(t)=g(x(t),y(t),t)], [x(t),y(t)], t=t1..t2, [[x(p)=q,y(m)=n],…],
х=a..b,y=c..d);
Картинку можно вращать левой мышью.
>DEplot3d([D(x)(t)=-y(t), D(y)(t)=x(t)], [x(t),y(t)], t= –2..7, [[x(0)=1,y(0)=0],[x(0)=0,y(0)=1]],
x= –2..2,y= –2..2,linecolor=t);
6) График решения задачи Коши для уравнения 2-го порядка: >DEplot([diff(y(x),x,x)=
–diff(y(x),x)– 5*y(x)],[y(x)], x=0..4, [[y(0)=0,D(y)(0)=1] ,[y(0)=0.4,D(y)(0)=0]], y= –0.2..0.5, linecolor=x);
Примечание. Опция linecolor=xокрашивает линию в красивые цвета.