Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab10 - Символические вычисления в MatLab.doc
Скачиваний:
15
Добавлен:
03.11.2018
Размер:
882.69 Кб
Скачать

2.3. Разложение в ряд Тейлора и определение символических выражений для сумм

Разложение математических функций в ряд Тейлора позволяет производить функция taylor, например:

>> f=sym('sin(x)');

>> tf=taylor(f);

>> pretty(tf)

3 5

x - 1/6 x + 1/120 x

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

>> syms x;

>> f=sym('sin(x)');

>> tf=taylor(f, 5, x, pi/4);

>> pretty(tf)

1/2 1/2 1/2 2

1/2 2 + 1/2 2 (x - 1/4 pi) - 1/4 2 (x - 1/4 pi)

1/2 3 1/2 4

- 1/12 2 (x - 1/4 pi) + 1/48 2 (x - 1/4 pi)

Нахождение символических выражений для сумм, в том числе и бесконечных, позволяет осуществить функция symsum. Обращение к symsum в общем случае предполагает задание четырех аргументов: слагаемого в символической форме, зависящего от индекса, самого индекса и верхнего и нижнего предела суммы. Если в слагаемые входит факториал, то следует применить к выражению для факториала функцию sym. Найдите значение бесконечной суммы, являющейся разложением в ряд функции sin(x)

>> syms k x

>> s=symsum((-1)^(k)*x^(2*k+1)/sym('(2*k+1)!'),k,0,inf)

s =

sin(x)

2.4. Определение пределов, дифференцирование и интегрирование

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

>> syms a x

>> limit((1+1/x)^(x*a),x,Inf)

ans =

exp(a)

Функция limit позволяет находить односторонние пределы. Для нахождения предела справа следует указать четвертый дополнительный аргумент 'right', а слева  'left'. Найдите решение следующих двух задач

>> syms x

>> limit((10+x)^(1/x),x,0, 'left')

ans =

0

>> limit((10+x)^(1/x),x,0, 'right')

ans =

inf

>>

Обратите внимание, что обычный предел в точке нуль не существует:

>> limit((10+x)^(1/x),x,0)

ans =

NaN

Определение производной через предел позволяет применять limit для дифференцирования функций. Например, найдем первую производную функции , используя равенство

>> syms h x

>> L=limit((atan(x+h)-atan(x))/h, h, 0);

>> pretty(L)

1

------

2

1 + x

Вычисление производных любого порядка проще производить при помощи функции diff. Символическая запись функции указывается в первом входном аргументе, переменная, по которой производится дифференцирование  во втором, а порядок производной  в третьем. Применим diff для вычисления первой и второй производных функции :

>> P=diff('atan(x)',x,1);

>> pretty(P)

1

------

2

1 + x

>> P=diff('atan(x)',x,2);

>> pretty(P)

x

-2 ---------

2 2

(1 + x )

Символическое интегрирование является значительно более сложной задачей, чем дифференцирование. ToolBox Symbolic Math позволяет работать как с неопределенными интегралами, так и с определенными. Неопределенные интегралы от символических функций вычисляются при помощи функции int. В качестве входных аргументов указываются символическая функция и переменная, по которой производится интегрирование, например, пусть необходимо вычислить неопределенный интеграл , тогда получим:

>> syms x

>> f=sym('exp(2*x)');

>> I=int(f,x)

>> pretty(I)

1/2 exp(2 x)

Разумеется, что функция Int не позволяет получить неопределенный интеграл от произвольной функции.

Для нахождения определенного интеграла в символическом виде следует задать нижний и верхний пределы интегрирования, соответственно, в третьем и четвертом аргументах int:

>> syms x a b

>> f=sym('exp(2*x)');

>> I=int(f,x,a,b);

>> pretty(I)

1/2 exp(2 b) - 1/2 exp(2 a)

Двойные интегралы вычисляются двукратным применением функции int. Пусть, например, необходимо вычислить интеграл , тогда для его определения необходимо задать символические переменные a, b, c, d, x, y , подынтегральную функцию f от x и y и проинтегрировать сначала по одной переменной, а затем по другой.

>> syms a b c d x y

>> f=sym('y*sin(x)');

>> Ix=int(f,x,a,b)

Ix =

-y*cos(b)+y*cos(a)

>> Iy=int(Ix,y,c,d)

Iy =

1/2*(-cos(b)+cos(a))*(d^2-c^2)

>> pretty(Iy)

2 2

1/2 (-cos(b) + cos(a)) (d - c )

>>

Аналогичным образом вычисляются любые кратные интегралы в символическом виде.