Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Компьютерные лабораторные занятия по теоретической механике. Ч. 2 (110

.pdf
Скачиваний:
5
Добавлен:
15.11.2022
Размер:
474.01 Кб
Скачать

qx py

p1

x y3

Для преобразования выражений с целью исключения переменной, используется функция eliminate. Ее аргументами являются два списка, первый список задает систему уравнений, из которой нужно исключить переменные, перечисленные во втором списке. Результатом является в общем случае список, содержащий новую систему уравнений с исклю- ченными переменными. Количество уравнений в новой системе обычно уменьшается на количество исключаемых переменных.

> eliminate([x=v*t,y=6*t],[t]);

[6 x v y]

Подстановки осуществляются функцией subst. Вызов этой функции: subst(a, b, c) (подставляем a вместо b в выражении c).

> subst(4,r,r+q);

q + 4

> subst(r=4,r+q);

q + 4

> subst([r=4,q=10],r+q);

14

В некотором смысле подстановки и упрощение объединяет функция scsimp упрощение при выполнении условия

> exq:(k1*k4-k1*k2-k2*k3)/k3^2;

> eq3:k1*k4-k2*k3=0;

> eq4:k3*k4+k1*k2=0;

> scsimp(exq,eq3,eq4);

> scsimp(exq,eq4);

> scsimp(exq,eq3);

k1 k2 k2 k3 + k1 k4

k3 2

k1 k4 k2 k3 = 0

k3 k4 + k1 k2 = 0

k4

k3

41

k1 k2 k2 k3 + k1 k4

k3 2

k1 k2 k3 2

Основной функцией для решения алгебраических уравнений и их систем является функция solve , в качестве параметров которой в общем случае передаются два списка - список уравнений и список переменных. Уравнение может задаваться выражением с левой и правой частями, разделенными знаком равенства. Если в записи уравнения нет знака равенства, то такое выражение в целом считается левой частью уравнения с нулевой правой частью. Для решения одиночного уравнения допускается вызов без списка: solve(expr, x) решение одного уравнения относительно переменной x, solve(expr) решение уравнения с одной неизвестной и числовыми коэффициентами. Если запись уравнения содержит символ равенства, то в этом случае для выделения левой и правой частей уравнения используется функция part . Примеры использования функции solve для решения алгебраических уравнений и их систем были рассмотрены в первой части настоящего пособия.

Если нужно составить матрицу по коэффициентам системы уравнений перед заданным набором переменных, то подойдет функция coefmatrix:

> coefmatrix([2*x-(a-1)*y+5*b = 0, b*y+a*x = 3], [x,y]);

2 1 a

ab

11.2.Операции с векторами и матрицами

Для операций с векторными величинами необходимо подключить библиотеку vect: load(vect), Например, с ее помощью можно вычислять

скалярные r.p и векторные r~p произведения, градиент grad и производить другие векторные операции.

> load(vect);

> s:[3,2,1];

[3; 2; 1]

> t:[2,5,4];

[2; 5; 4]

> express(s~t);

[3; 10; 11]

42

> s.t;

20

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

> [a, b, c] ~ [x, y, z];

> express(%);

[a; b; c] [x; y; z]

[b z c y; c x a z; a y b x]

> grad (x^2 + y^2 + z^2);

> express (%);

> ev (%, diff);

grad z2 + y2 + x2

[ddx x2 + y2 + z2 ; ddy x2 + y2 + z2 ; ddz x2 + y2 + z2 ] [2 x; 2 y; 2 z]

> div ([x^2, y^2, z^2]);

> express (%);

> ev (%, diff);

div [x2; y2; z2]

ddz z2 + ddy y2 + ddx x2

2 z + 2 y + 2 x

> curl ([x^2, y^2, z^2]);

> express (%);

> ev (%, diff);

curl [x2; y2; z2]

[ddy z2 ddz y2; ddz x2 ddx z2; ddx y2 ddy x2] [0; 0; 0]

43

> laplasian (x^2 * y^2 * z^2);

> express (%);

> ev (%, diff);

 

 

 

 

 

 

laplacian

x2

 

y2

 

z2

 

 

 

 

 

 

 

 

 

 

d2

 

 

 

 

 

 

d2

 

 

 

 

 

 

 

 

 

 

d2

 

 

 

 

 

 

 

x2

 

y2

 

z2

+

 

x2

y2

z2

+

 

 

 

x2

 

y2

 

z2

 

 

 

 

 

2 2

 

 

 

d z2

 

 

 

2 2

 

2

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

d y2

 

 

 

 

 

 

 

 

 

 

 

d x2

 

 

 

 

 

 

2 y z + 2 x z + 2 x y

При этом для задания компонент вектора градиента можно использовать функцию gradef:

> depends(y,x);

> gradef(f(x,y),x,g(x,y));

> diff(f(x,y),x);

[y (x)]

f (x; y)

 

d

 

 

g (x; y)

d x

y + x

Для вычисления определителя матрицы используется функция determinant

> a22:matrix([2,3],[3,2]);

> determinant(a22);

2 3

3 2

5

11.3.Дифференцирование и интегрирование. Разложение в ряд Тейлора

Maxima также позволяет решать и задачи высшей математики. Вы- числение производной функции задается с помощью di . Интегрирование производится с помощью integrate. Примеры использования данных функций были подробно рассмотрены в первой части пособия.

Для разложения функции в ряд Тейлора используется функция taylor, а для обрезания полученного ряда функция ratdisrep.

44

> taylor(log(x+1),x,0,5);

x x2 + x3 x4 + x5 + ...

2 3 4 5

> ratdisrep(%);

x5 x4 + x3 x2 + x

5 4 3 2

Коэффициенты перед нужной степенью переменной находятся функцией coe

> w:expand((x+4)^4);

> coeff(w,x,3);

> coeff(w,x);

x4 + 16 x3 + 96 x2 + 256 x + 256

16

256

11.4. Решение дифференциальных уравнений

Функции desolve и ode2 используются для решения дифференциальных уравнений. Дифференциальное уравнение представляется в форме с замороженной производной (то есть с производной, вычисление которой запрещено с помощью одиночной кавычки: 'di (y, x)) .

Другой вариант задания дифференциального уравнения явно указать зависимость y = y(x) путем использования функции depends.

> depends(y,x);

[y(x)]

> p:'diff(y(x),x,2)+w^2*y(x)=0;

d2 y (x) + w2 y (x) = 0 d x2

> desolve(p,y(x));

В некоторых случаях система спросит пользователя о некоторых дополнительных условиях, если они принципиально влияют на ответ, например уточнить знак какой-либо переменной. В нашем случае система

поинтересуется, не равна ли нулю переменная w. То есть на экране мы увидим вопрос:

45

Is "w" zero or nonzero?

Понятно, что требуется ответить либо nonzero, ëèáî zero. В первом случае ответ будет выглядеть так:

y (x) =

 

x)

 

w

 

x=0

+ y (0) cos (w x)

sin (w

 

 

 

d

 

y (x)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

d x

 

 

 

А в случае ответа zero ответ будет таким:

 

ddx

 

 

y (x) = x

y (x) x=0

+ y (0)

 

 

 

 

 

 

 

 

Другой популярный пример подобного диалога о знаке переменной

> Is k positive, negative or zero?

Здесь возможные ответы positive, negative или zero. Чтобы не отве- чать системе при каждом запросе, ограничения подобного рода можно вводить в команде assume. Команда forget обеспечивает снятие ограни- чений, заданных командой assume.

Для отыскания частных решений задач Коши с начальными условиями используются функции ic1 (для уравнений первого порядка) и ic2 (для уравнений второго порядка). Частные решения граничных задач для уравнений второго порядка используют функцию bc2.

> soln1:ode2(3*x*y+x^2*'diff(y,x)=sin(x)/x,y,x);

y =

%c cos (x)

x3

> ic1(soln1,x=%pi,y=0);

y = 1 + cos (x) x3

> soln2:ode2(y*('diff(y,x))^3+'diff(y,x,2)=0,y,x);

6 %k1 y + y3

6

= x + %k2

> ratsimp(ic2(soln2,x=0,y=0,'diff(y,x)=2));

3 y + y3

6

= x

> bc2(soln2,x=0,y=1,x=1,y=3);

y3 10 y = x 3 6 2

46

11.5. Построение графиков функций

В Maxima имеется разнообразный набор возможностей для отображения графиков функций, наборов точек, трехмерных тел, градиентов и так далее. Исходные функции могут задаваться явно (explicit), неявно (implicit_plot из библиотеки implicit_plot) или параметрически (parametric). Для двумерных графиков (plot2d, draw2d) используются декартовы или полярные координаты, а для трехмерных (plot3d, draw3d)декартовы, сферические или цилиндрические. Как правило, результат отображается в новом всплывающем окне. Вот несколько примеров кода для построения различных двумерных и трехмерных графиков. Предлагаем читателям построить эти графики самостоятельно.

> plot2d([x*sin(x)],[x,-15,15]);

> plot3d((x^2-y^2), [x, -2, 2], [y, -2, 2], [z, -8, 4]);> wxplot3d(x^4+y^3, [x,-5,5], [y,-5,5]);

Следующая функция может использоваться для визуализации векторного поля и построения траектории движения точки

> plotdf(sin(x)+y,[trajectory_at,2,-0.1]);

По умолчанию используется библиотека Plot, а для решения некоторых задач рекомендуется ознакомиться с возможностями библиотеки Draw, для чего необходимо ее загрузить командой load(draw):

> load(draw);

> draw2d(explicit(exp(x),x,-1,3), color=red,

parametric(rrr*cos(rrr),rrr*sin(rrr),rrr,0,2*%pi));

> draw3d(cylindrical(1,z,-2,2,az,0,2*%pi));

> draw3d(spherical(1,a,0,2*%pi,z,0,%pi));

> draw3d(explicit(exp(sin(x)+cos(x^2)),x,-3,3,y,-3,3),

color=red, parametric(cos(5*u)^2,sin(7*u),u-2,u,0,2),

parametric(t^2,cos(2*t),2+t,t,0,2));

В предшествующих главах приведены примеры использования описанных функций в конкретных задачах теоретической механики. Кроме того, в первой части пособия приведены ссылки на источники с более подробным изложением системы Maxima.

47

Предметный указатель

assume, 18, 19, 46

cabs, 19 coe , 12, 45

coefmatrix, 15, 42 combine, 21, 40 cos, 6, 18

curl, 36, 43 cylindrical, 34, 47

del, 27

denom, 19, 20, 40 depends, 6, 36, 45 describe, 38 desolve, 21, 45 determinant, 15, 44 di , 6, 35, 45 draw, 17, 34, 47 draw2d, 18, 47 draw3d, 34, 47

eliminate, 6, 41 ev, 5, 30 example, 37 exp, 18 expand, 8, 38 express, 8, 43

factor, 7, 19, 38 forget, 46

grad, 8, 43 gradef, 8, 44

ic1, 7, 46 ic2, 7, 46

num, 19, 40 ode2, 7, 35, 45

parameters, 37 parametric, 18, 47 part, 10, 36, 42 partfrac, 20, 38 pi, 35

plot2d, 47 plot3d, 34, 47 plotdf, 32, 47

radcan, 35, 39 ratdisrep, 7, 44 ratsimp, 10, 38 rootscontract, 21, 40

scsimp, 19, 29, 41 sin, 6, 18

solve, 10, 42 sqrt, 7, 35 subst, 8, 35, 41 sum, 34

tan, 35 taylor, 7, 44

trigexpand, 10, 39 trigrat, 19, 39 trigreduce, 39 trigsimp, 6, 9, 39

vect, 6, 42 wxplot3d, 34, 47

48

Учебное издание

Каменский Александр Анатольевич, Некипелов Александр Аркадьевич, Чернушкин Вячеслав Вячеславович

КОМПЬЮТЕРНЫЕ ЛАБОРАТОРНЫЕ ЗАНЯТИЯ ПО ТЕОРЕТИЧЕСКОЙ МЕХАНИКЕ

Часть 2

Учебное пособие

Издано в авторской редакции

Подписано в печать 25.11.2016. Формат 60 84/16. Уч.-изд. л. 3,0. Усл. п. л. 2,8. Тираж 25 экз. Заказ 932

Издательский дом ВГУ 394000, г. Воронеж, пл. Ленина, 10.

Отпечатано в типографии Издательского дома ВГУ 394000, г. Воронеж, ул. Пушкинская, 3

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]