Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Глава 05.doc
Скачиваний:
8
Добавлен:
19.09.2019
Размер:
258.05 Кб
Скачать

7.9 Функция вычисления производных – diff

Для вычисления в символьном виде производных от выражения S служит функция diff, записываемая в форме diff(S, x, n). Она возвращает символьное значение n-ой производной (производной степени n ) от символьного выражения или массива символьных выражений S по переменной x, т.е.

Sn(x) = .

В формате diff(S, x) находится первая производная (n=1 по умолчанию).

Пусть требуется найти первую и третью производные функции y = x2sinx.

Решения будут иметь вид:

>> syms x

>> y=x^2*sin(x);

>> diff(y,x)

ans =

2*x*sin(x)+x^2*cos(x)

>> diff(y,x,3)

ans =

6*cos(x)-6*x*sin(x)-x^2*cos(x)

Если выражение S зависит от нескольких переменных, например, S=S(x,y), то ее частная производная (или S'x(x,y) )по аргументу x есть производная этой функции по x при постоянном значении y.

В декартовой системе координат на плоскости xOy градиент функции S(x,y) есть вектор

grad S = .

Частными производными второго порядка функции S=S(x,y) называются частные производные от ее первых производных , , т.е.

= , = , = , = .

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

S''xx(x,y), S''xy(x,y), S''yx(x,y), S''yy(x,y).

Аналогично определяются и обозначаются частные производные более высоких порядков. Смешанные производные второго порядка, (например, S''xy(x,y) и S''yx(x,y)), отличающиеся только порядком дифференцирования, равны между собой при условии их непрерывности.

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

>> syms a x

>> y=[a*log(x);x^a];

>> diff(y,x)

ans =

[ a/x]

[ x^a*a/x]

Рассмотрим еще один пример. Для функции двух переменных f(x,y) = arcsinxy вычислить gradf(x;y) в точке (0;0) и найти смешанную прозводную .

Решение:

>> syms x y

>> f=asin(x*y);

>> x1=diff(f,x)

x1 =

y/(1-x^2*y^2)^(1/2)

>> y1=diff(f,y)

y1 =

x/(1-x^2*y^2)^(1/2)

>> subs([x1 y1],[x y],[0 0])

ans =

0 0

>> xy=diff(diff(f,x),y)

xy =

1/(1-x^2*y^2)^(1/2)+y^2/(1-x^2*y^2)^(3/2)*x^2

>> [m n]=simple(xy)

m =

1/(1-x^2*y^2)^(3/2)

>> pretty(m)

1

--------------

2 2 3/2

(1 - x y )

Итак, grad(arcsinxy)(0;0) = (0;0) и = .

7.10 Функция вычисления интегралов – int

В ряде случаев возникает необходимость вычисления неопределенных и определенных интегралов

I = f(x)dx и I = f(x)dx.

Здесь f(x) - подынтегральная функция независимой переменной x, a нижний и b верхний пределы интегрирования для определенного интеграла.

Функция int(f, x) – возвращает неопределенный интеграл (первообразную функцию) от символьного выражения f по переменной x.

Функция int(f, x, a, b) – возвращает значение определенного интеграла от символьного выражения f по переменной x с пределами от а до b.

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

dx.

Решение:

>> syms x

>> int(x/(1-x^2))

ans =

-1/2*log(x-1)-1/2*log(1+x)

Полученное решение с помощью элементарных преобразований приводится в виду ln. Для этого можно попробовать упростить полученный ответ с помощью функций simple, simplify или factor.

Проверим результат дифференцированием:

>> diff(-1/2*log(x-1)-1/2*log(1+x),x)

ans =

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

>> [q,w]=simple(ans)

q =

-x/(x^2-1)

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

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

dx.

Решение:

>> syms x a b

>> int(x/(a+b*x^2),x)

ans =

1/2/b*log(a+b*x^2)

В этом случае подинтегральная функция была задана в аналитическом виде с символьными переменными a, b, x.

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

dx.

Решение:

>> syms x a b c d

>> int(x/(a+b*x^2),x,c,d)

ans =

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

>> pretty(ans)

2 2

log(a + d b) - log(a + c b)

1/2 --------------------------------

b

В данном случае подинтегральная функция была задана в аналитическом виде с символьными переменными, а пределы интегрирования – также в виде символьных переменных.

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

arcsinxdx.

Решение:

>> syms x

>> int(asin(x),x,0,pi/4)

ans =

1/4*pi*asin(1/4*pi)+1/4*(16-pi^2)^(1/2)-1

Для получения решения в числовой форме надо активизировать с помощью мыши строку ответа и нажать клавишу <Enter>. Будет получен следующий ответ:

ans =

0.32847177096777

Вычислить несобственный интеграл:

xe-xdx.

Решение:

>> syms x

>> int(x*exp(-x),x,0,inf)

ans =

1

Вычисления интегралов с бесконечными пределами с помощью функции int имеют некоторые особенности. Вычислим интеграл

t ne-atdt.

Решение:

>> syms a n t

>> int(t^n*exp(-a*t),t,0,inf)

ans =

int(t^n*exp(-a*t),t = 0 .. inf)

Решение в явном виде не найдено. Предполжим теперь, что переменная n – положительная. Тогда программа будет иметь вид:

>> syms a t

>> n=sym('n','positive');

>> int(t^n*exp(-a*t),t,0,inf)

ans =

1/(a^n)/a*gamma(n)*n

Если n≥0 целое, то gamma(nn = n!, и в этом случае t ne-atdt=.

Функция int не позволяет получить неопределенный интеграл от произвольной функции. Например, при вычислении интеграла esinxdx получим следующий результат:

>> syms x

>> int(exp(sin(x)),x)

ans =

int(exp(sin(x)),x)

В некоторых случаях int возвращает выражение для первообразной через специальные функции, например, при вычислении интеграла dx получим

>> syms x

>> int(sin(x)/x,x)

ans =

sinint(x)

Первообразной является так называемый интегральный синус

Si(x) = dt,

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

Попробуем теперь вычислить определенные интегралы

esinxdx и dx.

>> syms x

>> I=int(exp(sin(x)),x,0,1)

I =

int(exp(sin(x)),x = 0 .. 1)

>> vpa(ans,15)

ans =

1.63186960841805

>> int(sin(x)/x,x,0,1)

ans =

sinint(1)

>> vpa(ans,15)

ans =

.946083070367183

Для проверки вычислим первый интеграл с помощью функции quad.

>> quad('exp(sin(x))',0,1,1e-13)

ans =

1.63186960841805

Следующий пример относится к вычислению тройного интеграла:

(x2+y2)zdxdydz.

Здесь можно трижды использовать функцию int:

>> syms a x y z

>> int(int(int((x^2+y^2)*z,x,0,a),y,0,a),z,0,a)

ans =

1/3*a^6

Вычислим тройной интеграл

sin(x2+y2+z2)dxdydz,

который не выражается в элементарных функциях (в этом легко убедиться, убрав точку с запятой в операторе S=int(int(int(sin(x^2+y^2+z^2),x,0,pi),y,0,pi),z,0,pi);).

>> syms a x y z

>> S=int(int(int(sin(x^2+y^2+z^2),x,0,pi),y,0,pi),z,0,pi);

>> vpa(S,5)

ans =

.28051

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]