Архив разработки (11 Кб, Maple 7)
задача 1 ~ задача 2 ~ задача 3 ~ задача 4
ЗАДАЧА 1.
Найти массу кривой с.
= ( ), = cos(2 ), 0 .
> |
with(plots):
Coord:=coordplot(polar,[0..1,0..Pi/4],view=[0..1,0.. 0.8],linestyle=[2,4]):
Pl:=plot([rho(phi),phi,phi=0..Pi/4],coords=polar,ytickmarks=3,thickness=5,color=GREEN):
|
> |
plots[display]([Coord,Pl],scaling=constrained,axes=frame,title="рис.1 - Кривая с");
|
> |
M=Int(rho(phi)*sqrt(rho(phi)^2+diff(rho(phi),phi)^2),phi=0..Pi/4);
algsubs(cos(2*phi)^2+sin(2*phi)^2=1,%);value(%); |
-
ЗАДАЧА 2.
Дана поверхность плотности из которой вырезается пов-ть z. Найти координаты центра тяжести.
:
> |
with(plots):with(plottools): |
> |
S1:=sphereplot(1,theta=0..2*Pi,phi=Pi/4..Pi/2,color=RED,scaling=constrained,style=patchnogrid,axes=normal):
S2:=cylinderplot(z,theta=0..2*Pi,z=0..sqrt(2)/2,color=BLUE):
#S3:=cylinder([0,0,0],1,0.001,style=patch,color=red):
#S4:=cylinder([0,0,0],1/sqrt(2),-0.01,style=patchnogrid,color=blue):
plots[display]([S1,S2],orientation=[165,61],title="рис.2 - Заданная поверхность",lightmodel= 'light3');
|
> |
C1:=plot([sin(x),cos(x),x=0..2*Pi],color=red,filled=true):
C2:=plot([1/sqrt(2)*sin(x),1/sqrt(2)*cos(x),x=0..2*Pi],color=white,filled=true):
plots[display]([C2,C1],scaling=constrained,labels=[x,y],title="рис.3 - Проекция на плоскость XY");
|
> |
z(x,y):=solve(x^2+y^2+z^2=2,z)[1]; |
> |
M=4*Doubleint('mu'*(sqrt(1+diff(z(x,y),x)^2+diff(z(x,y),y)^2)),y=sqrt(1-x^2)..sqrt(2-x^2),x=0..1);simplify(%); |
Перейдём к полярной системе координат:
> |
changevar({x=rho*sin(phi),y=rho*cos(phi)},Doubleint(op([2,3,1,1],%),x,y),[rho,phi]): |
> |
M=4*sqrt(2)*Doubleint(op([1,1],%),rho=sqrt(2)..1,phi=0..Pi/2);value(%);assign(%): |
Статический момент инерции:
> |
Мxy:=4*sqrt(2)*Doubleint(rho,rho=sqrt(2)..1,phi=0..Pi/2);Mxy:=value(%);
|
Т.к. у - ось симметрии объекта, то . Найтём .
> |
z[c]:='M_xy'/'M';
z[c]:=simplify(Mxy/M);
`Ответ: ` || C(0,0,z[c]); |
-
ЗАДАЧА 3.
Найти поток векторного поля F через часть плоскости G, ограничеснного координатными плоскостями и расположенными в соответствующей октанте. Сторона плоскости определяется нормалью, образующей острый угол с осью ОХ.
> |
with(plots):with(plottools): |
Уравнение в отрезках
> |
i :=arrow( [0,0,0],[1, 0, 0], .1, .2, .3, cylindrical_arrow,color=BLUE):
j :=arrow( [0,0,0],[0, 1, 0], .1, .2, .3, cylindrical_arrow,color=RED):
k :=arrow( [0,0,0],[0, 0, 1], .1, .2, .3, cylindrical_arrow,color=PINK): |
> |
F:=fieldplot3d([x+1,z+1,0],x=0..1,y=-2..0,z=0..3,arrows=SLIM,grid=[5,7,15]): |
> |
pol:=[[solve(subs(y=0,z=0,G),x),0,0], [0,solve(subs(x=0,z=0,G),y),0], [0,0,solve(subs(x=0,y=0,G),z)]]:
poly:=polygon(pol,color=GREEN): |
> |
plots[display]([i,j,k,poly,F],axes=normal,style=patchnogrid,title="рис.4 - Поток через плоскость", orientation=[38,58],labels=[x,y,z],scaling=constrained,tickmarks=[2,4,3]); |
Рассмотрим поток вектора F в проекциях на координатные плоскости:
> |
f:=transform((x,y,z)->[x,y]): |
> |
XY_field:=fieldplot([x+1,y+1],x=0..1,y=-2..0,arrows=SLIM,color=x):
XY:=plots[display]([f(poly),XY_field],labels=[x,y],title="рис.5 - Проекция на XOY",tickmarks=[2,3]): |
> |
f:=transform((x,y,z)->[y,z]): |
> |
YZ_field:=fieldplot([x+1,0],x=-2..0,y=0..3,arrows=SLIM,color=x): |
> |
YZ:=plots[display]([f(poly),YZ_field],labels=[y,z],title="рис.6 - Проекция на YOZ",tickmarks=[2,3]): |
> |
f:=transform((x,y,z)->[x,z]):
XZ_field:=fieldplot([x+1,0],x=0..1,y=0..3,arrows=SLIM,color=x):
XZ:=plots[display]([f(poly),XZ_field],labels=[x,z],title="рис.7 - Проекция на XOZ",tickmarks=[2,3]): |
> |
display(array(1..3,[XY,YZ,XZ])); |
Составим уравнения прямых в проекции на плоскость:
> |
y(x):=2*x-2;z(y):=3+3/2*y;z(x):=3-3*x; |
Выразим x через y и z.
Поток P вектора F через заданную поверхность:
> |
P=Int(Int(0,y=2*x-2..0),x=0..1)-Int(Int(z+1,z=0..3-3*x),x=0..1)+Int(Int(op(2,isolate(G,x))+1,z=0..3+3/2*y),y=-2..0);
P=Int(int(0,y=2*x-2..0),x=0..1)-Int(int(z+1,z=0..3-3*x),x=0..1)+Int(int(op(2,isolate(G,x))+1,z=0..3+3/2*y),y=-2..0);
P=convert(0,symbol)-convert(3,symbol)+convert(4,symbol);
P=int(int(0,y=2*x-2..0),x=0..1)-int(int(z+1,z=0..3-3*x),x=0..1)+int(int(op(2,isolate(G,x))+1,z=0..3+3/2*y),y=-2..0); |
-
ЗАДАЧА 4.
Дано векторное поле b = ( ) i + ( ) j + ( ) k
Необходимо:
- найти дивергенцию векторного поля b . Исследовать расположение источников и стоков векторных линий поля.
- найти поток векторного поля b через поверхность T.
- найти ротор векторного поля b .
- вычислить циркуляцию векторного поля b вдоль замкнутой линии L 2-мя способами.
---> преобразовав линейный интеграл в определённый с использованием уравнений линий L.
---> преобразовав линейный интеграл в повторный с помощью теоремы Стокса
- выяснить, как изменится циркуляция поля вдоль контура L, если изменить расположение контура в данном поле.
- найти max значение циркуляции для данного контура.
L - контр прямоугольника А(0,0,2), B(1,0,2), C(1,1,1), D(0,1,1)
T: -1
> |
with(LinearAlgebra):with(student):with(VectorCalculus): |
> |
fieldplot3d([(x,y,z)->3*z+x^3,(x,y,z)->4+z-y^3,(x,y,z)->x+3*y+z^3],-1..1,-1..1,-1..1,arrows=SLIM,axes=normal,labels=[x,y,z],title="рис.8 - Трёхмерное векторное поле",orientation=[-106,61],axes=frame); |
> |
SetCoordinates( cartesian[x,y,z] ):
b := VectorField( <3*z+x^3,z+4-y^3,x+3*y+z^3>, 'cartesian'[x,y,z] ); |
Найдём дивергенцию векторного поля.
> |
'div(b)'=Divergence(b);div:=op(2,%): |
> |
F:=fieldplot3d([(x,y,z)->3*z+x^3,(x,y,z)->4+z-y^3,(x,y,z)->x+3*y+z^3],-1..1,-1..1,-1..0,arrows=SLIM,axes=normal,labels=[x,y,z],color=BLACK,thickness=2):
P1:=plot3d(-x^2-y^2,x=-1..1,y=-1..1,style=patchnogrid):
P2:=cylinder([0,0,-1], 1,0.001):
plots[display]([P1,P2,F],view=[-1..1,-1..1,-1..0],axes=normal,tickmarks=[2,2,3],title="рис.9 - Поток векторного поля"); |
Найдём поток поля через поверхность Т воспользовавшись формулой Остроградского.
> |
4*Tripleint(div,y=0..sqrt(1-x^2),x=0..1,z=-1..0)=
value(4*Tripleint(div,y=0..sqrt(1-x^2),x=0..1,z=-1..0)); |
Найдём ротор векторного поля.
> |
`rot(b)`=Matrix(3,3,[[e[x],e[y],e[z]],[d/dx,d/dy,d/dz],[b[1],b[2],b[3]]]);
rot:=collect(Determinant(op(2,%)),[e[x],e[y],e[z],dx,dy,dz]):
`rot(b)`=VectorField(<subs(e[x]=1,e[y]=0,e[z]=0,rot),
subs(e[x]=0,e[y]=1,e[z]=0,rot),
subs(e[x]=0,e[y]=0,e[z]=1,rot)>, 'cartesian'[x,y,z]);
`rot(b)`=Curl(b); |
> |
F3:=fieldplot3d([(x,y,z)->3*z+x^3,(x,y,z)->4+z-y^3,(x,y,z)->x+3*y+z^3],0..1,0..1,1..2,arrows=SLIM,labels=[x,y,z]):
A1:= arrow([0,0,2], [.5,0,2], .01, .08, .2, cylindrical_arrow,color=green):
A2:= arrow([1,0,2], [1,.5,1.5], .01, .08, .2, cylindrical_arrow,color=green):
A3:= arrow([1,1,1], [.5,1,1], .01, .08, .2, cylindrical_arrow,color=green):
A4:= arrow([0,1,1], [0,.5,1.5], .01, .08, .2, cylindrical_arrow,color=green):
T:=textplot3d([0.5,0.5,1.5,`контур L`],color=BLACK,font=[COURIER,BOLD,18]):
A:=textplot3d([0,0,2,`А`],color=BLACK,font=[COURIER,BOLD,18],align=ABOVE):
B:=textplot3d([1,0,2,`В`],color=BLACK,font=[COURIER,BOLD,18],align=ABOVE):
C:=textplot3d([1,1,1,`С`],color=BLACK,font=[COURIER,BOLD,18],align=ABOVE):
d:=textplot3d([0,1,1,`D`],color=BLACK,font=[COURIER,BOLD,18],align=ABOVE):
P:=curve([[0,0,2],[1,0,2],[1,1,1],[0,1,1],[0,0,2]],color=green,thickness=3):
l1:=line([0,0,1],[0,0,2],linestyle=DASH,color=black,thicknes=5):
l2:=line([1,0,1],[1,0,2],linestyle=DASH,color=black,thicknes=5):
l3:=line([0,0,1],[1,0,1],linestyle=DASH,color=black,thicknes=5):
l4:=line([0,1,1],[0,0,1],linestyle=DASH,color=black,thicknes=5):
l5:=line([1,1,1],[1,0,1],linestyle=DASH,color=black,thicknes=5):
plots[display]([P,F3,seq(A||i,i=1..4),T,A,B,C,d,seq(l||i,i=1..5)],
title="рис.10 -циркуляция вдоль контура L",orientation=[-106,61],axes=frame); |
Найдём циркуляцию поля вдоль амкнутого контура A[0,0,2]->B[1,0,2]->C[1,1,1]->D[0,1,1].
> |
A:=[0,0,2];
B:=[1,0,2];
C:=[1,1,1];
d:=[0,1,1];# D - занят дифф.оператором =( |
> |
print(`Циркуляция поля вдоль АВ.`);
Int(b[1],x=A[1]..B[1])=int(b[1],x=A[1]..B[1]);
Ц[AB]:=subs(z=2,int(b[1],x=A[1]..B[1]));
print(`Циркуляция поля вдоль ВС.`);
Int(b[3],z=B[3]..C[3])=int(b[3],z=B[3]..C[3]);
Int(b[2],y=B[2]..C[2])=int(b[2],y=B[2]..C[2]);
Ц[BC]:=subs(x=1,y=0,op(2,%%))+subs(x=1,z=1,op(2,%));
print(`Циркуляция поля вдоль CD.`);
Int(b[1],x=C[1]..d[1])=int(b[1],x=C[1]..d[1]);
Ц[CD]:=subs(y=1,z=1,op(2,%));
print(`Циркуляция поля вдоль DA.`);
Int(b[2],y=d[2]..A[2])=int(b[2],y=d[2]..A[2]);
Int(b[3],z=d[3]..A[3])=int(b[3],z=d[3]..A[3]);
Ц[DA]:=subs(z=1,op(2,%%))+subs(x=0,y=0,op(2,%));
print(`Циркуляция поля вдоль А->В->C->D.`);
Ц[ABCD]='Ц[AB]'+'Ц[BC]'+'Ц[CD]'+'Ц[DA]';
Ц[ABCD]=Ц[AB]+Ц[BC]+Ц[CD]+Ц[DA]; |
Преобразуем линейный интегралл к повторному с помощью ф-лы Стокса:
> |
Normalize(<B[1]-A[1],B[2]-A[2],B[3]-A[3]> &x <C[1]-B[1],C[2]-B[2],C[3]-B[3]>,Euclidean):
n:=VectorField(<%[1],%[2],%[3]>, 'cartesian'[x,y,z] );
rot=Del &x b;
DA:=<A[1]-d[1],A[2]-d[2],A[3]-d[3]>;AB:=<B[1]-A[1],B[2]-A[2],B[3]-A[3]>;
S:=VectorNorm(DA,2,conjugate=true)*VectorNorm(AB,2,conjugate=true);
'Ц'='S'*'`(rot(b),n)`';
'Ц'=S*Del &x b . n; |
Максимальная циркуляция будет достигнута при значении угла между ротором и норалью равным 0.
В этом случае циркуляция равна произведению модулей ротора и площади контура.
> |
'Ц'[max]='S'*'`rot(b)`'*'n';
'Ц'[max]=S*Norm(Del &x b,2,conjugate=true)*Norm(n,2,conjugate=true); |
|