- •1. Цель работы
- •2. Основы СимВоЛиЧеских выЧислений в matlab
- •2.1. Символические переменные и функции
- •2.2. Упрощение и преобразование выражений
- •2.3. Разложение в ряд Тейлора и определение символических выражений для сумм
- •2.4. Определение пределов, дифференцирование и интегрирование
- •3. Индивидуальные задания
- •4. Содержание отчета
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 )
>>
Аналогичным образом вычисляются любые кратные интегралы в символическом виде.