Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка Maple, Стребуляев.doc
Скачиваний:
120
Добавлен:
27.03.2015
Размер:
3.96 Mб
Скачать

1.6. Операции с рядами

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

Числовые последовательности с заданным числом членов:

> restart:with(plots):

> sum(k^2,k=1..4);

> Sum(k^2,k=1..4)=evalf(sum(k^2,k=1..4));

> sum(k,k=1..n);

Бесконечные последовательности:

> restart:sum(-exp(-k),k=1..n);

> sum(-exp(-k),k=1..infinity);

> Sum(k*a^k,k)=evalf(sum(k*a^k,k));

> Sum(1/n!,n=1..infinity)=evalf(sum(1/n!,n=1..infinity));

> Sum(n^2*exp(-sqrt(n)),n=1..5000)=evalf(sum(n^2*exp(-sqrt(n)),n=1..5000));

> Sum(n!/n^sqrt(n),n=1..1000)=evalf(sum(n!/n^sqrt(n),n=1..500));

Вычисление факториала числа:

  • 3!;

> factorial(50);

Двойные суммы:

> Sum(Sum(k^2,k=1..m),m=1..N);

> factor(simplify(value(%)));

> subs(N=100,%);

Вычисление произведений членов последовательности:

> restart:

> Product(k^2,k=1..5)=product(k^2,k=1..5);

> Product(k^2,k)=product(k^2,k);

> product(a[k],k=1..6);

> f:=[1,2,3,4,5]; product(f[k],k=1..5);

> product(n+k,k=1..4);

> Product(2/i,i=1..infinity)=product(2/i,i=1..infinity);

Общая схема исследования сходимости числовых рядов.

Знакопостоянные ряды:

> restart:with(linalg):

> U:=(n)->(1/(ln(n)^2))*cos(Pi*n^2/(n+1));

> S:=Sum(U(n),n=2..infinity);

Проверка необходимого условия сходимости:

> Limit(U(n),n=infinity)=limit(U(n),n=infinity);

Для определения сходимости используем признак Даламбера:

> if limit(U(n+1)/U(n),n=infinity)<1 then print(R-сходится) else print (R- расходится) fi;

R-расходится

Знакопеременные ряды:

> restart:

> V:=(n)-> (-1)^n*sin(n)^2/n;

> S:=Sum(V(n),n=2..infinity);

Проверка необходимого условия сходимости:

> Limit(V(n),n=infinity)=limit(V(n),n=infinity);

Построение графика частичных сумм ряда:

> H:=(k)->sum((-1)^n*sin(n)^2/n,n=1..k);

> plot(H(k),k=1..400);

Построение графика частичных сумм ряда из модулей:

> G:=(k)->abs(H(k));

> plot(G(k),k=1..400);

Нахождение суммы ряда:

> Sum((-1)^n*sin(n)^2/n,n=1..1000)=evalf(sum((-1)^n*sin(n)^2/n,n=1..1000));

Функциональные ряды:

> restart:with(plots):

> U:=(x,n)->x^n/(1+x^(2*n));

> U(x,n+1)/U(x,n);simplify(%);

> Sum(U(x,n),n=1..infinity);

> assume(n>0); solve({abs(U(x,n+1)/U(x,n))<1.01},{x,n});

> f:=(x,n)->abs(U(x,n+1)/U(x,n));

> plot3d(f(x,n),x=-1..1,n=1..100,color=blue,thickness=2,axes=frame);

> x:=3; Sum(U(x,n),n=1..infinity)=evalf(sum(U(x,n),n=1..infinity));

>

Степенные ряды :

> restart:

> a:=(n)->(n^n)/(n!);

> Sum(a(n)*x^n,n=1..infinity);

> R:=limit(a(n)/a(n+1),n=infinity); evalf(%); # область сходимости -e^(-1) < x < e^(-1);

Разложение функций в ряд Тейлора:

Функция от одного переменного:

> restart: with(plots):with(linalg):

> # Разложение в ряд Тейлора до члена с x^4 функции f(x);

> f:=(1+x+x^2)/(1-x+x^2);

> taylor(f,x=0);

> # Разложение в окрестности x=0 до порядка остатка = 5(необязательный параметр);

> taylor(f,x=0,5);f1:=convert(%,polynom);f1;

> f1:=convert(%,polynom);# f1- основная часть ряда;

> # Сравним насколько отличается исходная функция от ее приближения рядом Тейлора;

> plot([f,f1],x=-1..1.2,color=[BLUE,PINK],linestyle=[SOLID,DASHDOT],title="Функция и ее ряд Тейлора",titlefont=[HELVETICA,BOLD,10],legend=["функция","ряд Тейлора"],thickness=3);

Функция от двух переменных:

> restart:

> mtaylor(f(x,y),[x,y],3):

> mtaylor(sin(x^2+y^2),[x,y]);

> mtaylor(sin(x^2+y^2),[x,y],8);

> mtaylor(sin(x^2+y^2),[x,y],8,[2,1]);

> mtaylor(sin(x^2+y^2),[x=1,y],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);

> asympt(y[1],x);

> y[2]:=evalf(convert(%,polynom));

> # Сравним насколько отличается исходная функция от ее ассимптотического приближения;

> 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

> y := x -> abs(1 - x);

> # Накладываем условия целочисленности на переменные n и k;

> assume(n, integer); assume(k, integer);

> l := 2;

> # Расчитываем коэффициенты Фурье;

> a[0] := 1/2/l*int(y(x), x = -l..l);

> a[n] := n -> 1/l*int(y(x)*cos(n*Pi*x/l), x = -l..l);

> a[n](n);

> b[n] := n -> (1/l)*int(y(x)*sin(n*Pi*x/l), x = -l..l);

> b[n](n);

> 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);

> F(x, infinity);

> # Сравним насколько отличается исходная функция от ее приближения рядом Фурье;

> plot([y(x),F(x,20)],x=-2..2,color=[BLUE,RED],linestyle=[SOLID,DASHDOT],title="Функция и ее приближение",titlefont=[HELVETICA,BOLD,12],legend=["функция","приближение"],thickness=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);

> `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);

> # Сравним насколько отличается исходная функция от ее приближения рядом Фурье;

> plot([y(x),z(x)],x=-Pi..Pi,color=[BLUE,RED],linestyle=[SOLID,DASHDOT],title="Функция и ее приближение",titlefont=[HELVETICA,BOLD,10],legend=["функция","приближение"],thickness=3);