Методичка Maple, Стребуляев
.pdf
Функция от двух переменных:
>restart:
>mtaylor(f(x,y),[x,y],3):
>mtaylor(sin(x^2+y^2),[x,y]);
x2 y2
> mtaylor(sin(x^2+y^2),[x,y],8);
2 |
2 |
1 |
6 |
1 |
|
2 |
4 |
1 |
|
4 |
2 |
1 |
|
6 |
|||
x y |
|
x |
|
|
y |
|
x |
|
|
y |
|
x |
|
|
y |
|
|
6 |
2 |
|
2 |
|
6 |
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|||||||
> mtaylor(sin(x^2+y^2),[x,y],8,[2,1]);
y2 x2 1 y6
6
> mtaylor(sin(x^2+y^2),[x=1,y],3);
sin(1) 2 cos(1) (x 1) ( 2 sin(1) cos(1)) (x 1)2 cos(1) y2
x y 1 |
x2 |
x |
(y 1) |
(y 1)2 |
x3 |
(y 1) x2 x |
(y 1)2 |
(y 1)3 |
||
|
|
|
|
|
|
|||||
|
|
2 |
|
3 |
||||||
2 |
|
|
|
3 |
|
|
|
|||
Ассимптотическое разложение функций:
> restart:with(linalg): with(plots):
Warning, the protected names norm and trace have been redefined and unprotected
Warning, the name changecoords has been redefined > y[1]:=1/(1-x-x^2);
51
y1 := |
1 |
1 x x2 |
|
> asympt(y[1],x); |
|
|
1 |
1 |
|
2 |
|
|
3 |
|
|
|
1 |
|
||||||||
|
|
|
|
|
|
|
|
|
O |
|
|
|
||||||||
|
|
|
|
|
|
|
||||||||||||||
|
|
2 |
|
|
3 |
|
|
|
4 |
|
|
|
|
5 |
|
|
|
6 |
||
|
x |
|
x |
|
|
x |
|
|
|
x |
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
x |
|
|
|||||
> y[2]:=evalf(convert(%,polynom)); |
|
|
|
|||||||||||||||||
|
y |
:= |
|
1. |
|
|
|
1 |
|
|
2. |
3. |
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
x2 |
x4 |
|
|
|
||||||||||||||
|
|
2 |
|
|
|
|
|
|
x3 |
|
|
|
x5 |
|
|
|||||
># Сравним насколько отличается исходная функция от ее ассимптотического приближения;
>plot([y[1],y[2]],x=1..10,color=[BLUE,RED],linestyle=[ SOLID,DASHDOT],title="Функция и ее приближение",titlefont=[HELVETICA,BOLD,12],legend=["функция","приближение"],thickness=3);
Разложение в ряд Фурье функции:
Способ № 1
>
> # Разложение в ряд Фурье функции y(x)=abs(1-x) на
интервале (-1,1); > restart;
> with(linalg): with(plots):
Warning, the protected names norm and trace have been redefined and unprotected
Warning, the name changecoords has been redefined
52
> y := x -> abs(1 - x);
y := x 1 x
># Накладываем условия целочисленности на переменные n
иk;
>assume(n, integer); assume(k, integer);
>l := 2;
l := 2
># Расчитываем коэффициенты Фурье;
>a[0] := 1/2/l*int(y(x), x = -l..l);
a0 := 54
> a[n] := n -> 1/l*int(y(x)*cos(n*Pi*x/l), x = -l..l);
|
|
|
|
1 |
|
l |
n x |
|
||||||
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
||||||||
an~ |
:= n |
|
|
y(x) cos |
|
|
|
|
dx |
|||||
l |
|
l |
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
l |
|
|
|
|
|
|
|
> a[n](n); |
|
|
|
|
|
|
|
n~ |
|
|
|
|
||
|
4 |
|
(-1)n~ cos |
|
|
|||||||||
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
2 |
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
n~2 2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
> b[n] := n -> (1/l)*int(y(x)*sin(n*Pi*x/l), x = -l..l);
|
|
|
|
|
l |
|
|
|
||
|
|
1 |
n x |
|||||||
|
|
|
||||||||
bn~ |
:= n |
|
|
y(x) sin |
|
|
dx |
|||
l |
l |
|
||||||||
|
|
|
|
|
|
|
||||
|
|
|
|
|
l |
|
|
|
||
> b[n](n); |
|
|
|
|
|
n~ |
|
|
||
2 |
|
(-1)n~ n~ 2 sin |
|
|||||||
|
||||||||||
|
|
|
|
|
|
2 |
|
|||
|
|
|
|
|
|
|
||||
n~2 2
>F := (x, k) -> a[0] + sum(a[n](n)*cos(n*Pi*x/l) + b[n] (n)*sin(n*Pi*x/l), n = 1..k);
|
|
k |
|
|
|
n x |
|
|
|
n x |
|
|
|
|
|
a |
|
|
|
b (n) sin |
|
|
|
|
|
|
|
||||||||
F := (x, k) a |
|
(n) cos |
|
|
|
|
|
||||
0 |
|
n |
|
l |
n |
l |
|||||
|
|
|
|
|
|
|
|
|
|
||
|
n 1 |
|
|
|
|
|
|||||
> F(x, infinity);
53
|
|
|
|
|
|
|
|
|
|
n~ |
|
|
|
|
n~ |
|
|
|
n~ x |
||||||||||||||
|
|
|
|
|
4 |
|
(-1) |
|
cos |
|
|
|
|
|
|
|
cos |
|
|
|
|
||||||||||||
5 |
|
|
|
|
|
2 |
|
|
2 |
|
|||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
||||
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
n~ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
n~ 1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
2 |
|
(-1) |
n~ |
n~ 2 sin |
n~ |
|
sin |
|
n~ x |
||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
2 |
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
n~ |
2 |
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
> # Сравним насколько отличается исходная функция от ее
приближения рядом Фурье; > plot([y(x),F(x,20)],x=-
2..2,color=[BLUE,RED],linestyle=[SOLID,DASHDOT],title="Функция и ее приближение",titlefont=[HELVETICA,BOLD,12],legend=["функция","приближение"],thi ckness=3);
Способ № 2
>
> # Разложение в ряд Фурье функции y(x)=sh(4x) на интер-
вале (-Pi,Pi);
> restart; with(linalg): with(plots):
Warning, the protected names norm and trace have been redefined and unprotected
Warning, the name changecoords has been redefined
> y:=x->abs(1-x);
y := x 1 x
54
>`FurSer`:=proc(f,VarAndRange,n) local l,i,t,a,b,A,B,s,Res;
if whattype(VarAndRange)<>`=` then print(`Неверно введённый диапазон`);
else s:=lhs(VarAndRange); a:=lhs(rhs(VarAndRange)); b:=rhs(rhs(VarAndRange)); l:=(b-a)/2; Res:=1/(2*l)*int(f(t),t=a..b); for i from 1 to n do
A[i]:=1/l*int(f(t)*cos(Pi*t*i/l),t=a..b); B[i]:=1/l*int(f(t)*sin(Pi*t*i/l),t=a..b); Res:=Res+A[i]*cos(Pi*i*s/l)+B[i]*sin(Pi*i*s/l); end do;
Res;
fi;
end proc:
>z:=(x)->evalf(FurSer(y, x=-Pi..Pi,5));z(x);
z := x evalf(FurSer(y, x .. , 5 ))
1.729951270 0.9805869032 cos(x) 1.172316839 sin(x) 0.2253867691 cos(2. x)
0.1735907059 sin(2. x) 0.0007078860453 cos(3. x) 0.2221887893 sin(3. x)0.06579638907 cos(4. x) 0.1892671576 sin(4. x) 0.03268818911 cos(5. x)0.1029051483 sin(5. x)
> # Сравним насколько отличается исходная функция от ее
приближения рядом Фурье; > plot([y(x),z(x)],x=-
Pi..Pi,color=[BLUE,RED],linestyle=[SOLID,DASHDOT],ti tle="Функция и ее приближение",titlefont=[HELVETICA,BOLD,10],legend=["функция","приближение"],thi ckness=3);
55
1.7. Решение уравнений, неравенств и их систем
Решение линейных и нелинейных уравнений и неравенств — одна из важнейших областей математического анализа. Для решения указанного класса уравнений в аналитическом виде используется достаточно универсальная и гибкая функция solve(eqn, var) или
solve({eqn1,eqn2.....},{var1,var2....}) ,
где eqn — уравнение, содержащее функцию нескольких переменных, var — переменная, по которой ищется решение. Если при записи eqn не используется зхнак равенства или знаки отношения, считается, что solve ищет корни уравнения eqn = 0. Для получения численного решения нелинейного уравнения или системы нелинейных уравнений в форме вещественных чисел удобно использовать функцию fsolve(eqns, vars, options). Иногда бывает полезным использование и других модификаций функции solve: rsolve — для решения рекуррентных уравнений, isolve — для решения целочисленных уравнений, msolve — для решения по модулю m и других.
>
Решение одиночных нелинейных уравнений :
>restart;with(linalg):with(plots):
>f:=(2*x^2+3*x+1)*(3*x+1)=8*x^4;
f := (2 x2 3 x 1) (3 x 1) 8 x4
> fsolve(f,x);
-0.2807764064, 1.780776406
> fsolve(f,x,complex);
-0.3750000000 0.3307189139 I, -0.3750000000 0.3307189139 I, -0.2807764064,
1.780776406
> solve(f,x);
3 |
17 |
|
3 |
|
17 |
|
3 |
1 |
|
3 |
1 |
|
|
|
, |
|
|
|
, |
|
I |
7 , |
|
|
I 7 |
4 |
|
4 |
8 |
8 |
||||||||
4 |
|
4 |
|
|
8 |
|
8 |
|
> evalf(%);
1.780776406, -0.2807764060, -0.3750000000 0.3307189139I,
-0.3750000000 0.3307189139I
> fsolve(x^5-x,x,complex);
-1.000000000, -1.000000000 I, 0., 1.000000000 I, 1.000000000
> AA:=fsolve(2*x+(x+2)^2+(x^3-2*x)=0,x,complex);
56
AA:= -1., -2. I, 2. I
># Присвоение полученных значений корней, для последующего их анализа, осуществляется следующим образом:;
>AA[1];AA[2];AA[3];
-1.
-2. I
2. I
Решение трансцендентных уравнений:
>restart;
>f1:=sin(x); f2:=cos(x)-1;G1:=f1-f2; s:=fsolve(G1,x);
f1 := sin(x)
f2 := cos(x) 1
G1 := sin(x) cos(x) 1
s := 0.
> fsolve(sin(x)=Pi/4,x,complex);
0.9033391108
>A:=solve(a*x^2+b*x+c,x):
>A[1];
b b2 4 a c
2 a
>A[2];
|
b b2 4 a c |
|
2 a |
> BB:=evalf(solve(a*x^3+b*x^2+c*x+d,x)): > x[1]:=BB[1];
x1 := 0.1666666667 (36. c b a 108. d a2 8. b3
20.78460970 |
4. a c3 1. c2 b2 18. c b a d 27. d2 a2 4. d b3 |
(1/3) |
||
a ) |
/a |
|||
0.6666666667 (3. a c 1. b2 ) |
(a (36. c b a 108. d a2 8. b3 |
|
|
|
20.78460970 |
4. a c3 1. c2 b2 18. c b a d 27. d2 a2 4. d b3 a) |
( 1/3) |
||
) |
||||
0.3333333333 b
a
57
> x[2]:=BB[2];
x2 := 0.08333333333 (36. c b a 108. d a2 8. b3
20.78460970 |
4. a c3 1. c2 b2 18. c b a d 27. d2 a2 4. d b3 a) |
(1/3) |
|
/a |
|||
0.3333333333 (3. a c 1. b2 ) |
(a (36. c b a 108. d a2 8. b3 |
|
|
20.78460970 |
4. a c3 1. c2 b2 18. c b a d 27. d2 a2 4. d b3 |
a) |
(1/3) |
|
|||
) |
|
||||||
|
0.3333333333 |
b |
0.8660254040 I (0.1666666667 (36. c b a 108. d a2 8. b3 |
||||
a |
|
||||||
|
|
|
|
|
|
|
|
20.78460970 |
4. a c3 1. c2 b2 18. c b a d 27. d2 a2 4. d b3 |
a) |
(1/3) |
|
|||
/a |
|||||||
|
0.6666666667(3. a c 1. b2 ) |
(a (36. c b a 108. d a2 8. b3 |
|
|
|
||
|
20.78460970 |
4. a c3 1. c2 b2 18. c b a d 27. d2 a2 4. d b3 |
(1/3) |
)) |
|||
|
a) |
||||||
> x[3]:=BB[3];
x := 0.08333333333 (36. c b a 108. d a2 8. b3 |
|
||
3 |
|
|
|
20.78460970 |
4. a c3 1. c2 b2 18. c b a d 27. d2 a2 4. d b3 a) |
(1/3) |
|
/a |
|||
0.3333333333 (3. a c 1. b2 ) |
(a (36. c b a 108. d a2 8. b3 |
|
|
20.78460970 |
4. a c3 1. c2 b2 18. c b a d 27. d2 a2 4. d b3 |
a) |
(1/3) |
|
|||
) |
|
||||||
|
0.3333333333 |
b |
0.8660254040 I (0.1666666667 (36. c b a 108. d a2 8. b3 |
||||
a |
|
||||||
|
|
|
|
|
|
|
|
20.78460970 |
4. a c3 1. c2 b2 18. c b a d 27. d2 a2 4. d b3 |
a) |
(1/3) |
|
|||
/a |
|||||||
|
0.6666666667(3. a c 1. b2 ) |
(a (36. c b a 108. d a2 8. b3 |
|
|
|
||
|
20.78460970 |
4. a c3 1. c2 b2 18. c b a d 27. d2 a2 4. d b3 |
(1/3) |
)) |
|||
|
a) |
||||||
>
Решение систем линейных уравнений:
>restart: with(linalg): with(plots):
>sys:={3*x+5*y=15,y=x-1};
sys := {3 x 5 y 15, y x 1 }
> sols:=solve(sys,{x,y});sols[1];sols[2];
58
sols := {y 32, x 52 }
y 32
x 52
># Присвоение полученных значений решения осуществляется следующим образом:
>x2:=rhs(sols[2]);# right-hand side (правая часть выражения);
x2 := 52
> y2:=rhs(sols[1]);
y2 := 32
># или с использованием оператора assign:;
>assign(sols);x;y;
5
2
3
2
># Проверка правильности полученного решения;
>subs(sols,sys);
3 3
{2 2, 15 15}
> x1:=subs(sols,x);
x1 := 52
> y1:=subs(sols,y);
y1 := 32
>implicitplot(sys,x=-10..10,y=- 10..10,thickness=3,color=blue);
>restart: with(plots):
>sys:={3*x-3*y=10,2*x+y=7,y=2*x+z+4};
sys := {3 x 3 y 10, 2 x y 7, y 2 x z 4 }
59
> sols:=solve(sys,{x,y,z});
-97 |
31 |
1 |
|
|
sols := {z |
, x |
, y |
} |
|
9 |
|
9 |
9 |
|
># Проверка правильности полученного решения;
>subs(sols,sys);
{10 10, 7 7, 19 19 }
>x2:=subs(sols,x);
x2 := 319
> y2:=subs(sols,y);
y2 := 19
> z2:=subs(sols,z);
z2 := -979
> implicitplot3d(sys,x=-10..10,y=-10..10,z=-
15..0,style=patchcontour,orientation=[-25,30]);
Решение систем нелинейных и трансцендентных уравнений:
>restart;
>solve({x*y=a,x+y=b},{x,y});
{y RootOf(_Z2 _Z b a), x RootOf(_Z2 _Z b a) b}
60
