
- •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 )
>>
Аналогичным образом вычисляются любые кратные интегралы в символическом виде.