Главная страница

3 Основные операции. Лабораторная работа 3 важнейшие математические операции дифференцирование Вычисление производной функции f ( X ) X


Скачать 194.5 Kb.
НазваниеЛабораторная работа 3 важнейшие математические операции дифференцирование Вычисление производной функции f ( X ) X
Анкор3 Основные операции.doc
Дата19.01.2017
Размер194.5 Kb.
Формат файлаdoc
Имя файла3_Osnovnye_operatsii.doc
ТипЛабораторная работа
#15435

С этим файлом связано 9 файл(ов). Среди них: normirovanie.docx, Yulya_i_Lena_11_11.doc, 2_Lineynaya_algebra.doc, AFR.doc, 3_Osnovnye_operatsii.doc, Kniga2.xls, 456_31.doc, titulnik2.docx, IEF_2012-2013_osen.xls, kursovaya_org_pr-va.doc.
Показать все связанные файлы

Лабораторная работа № 3

ВАЖНЕЙШИЕ МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ
1. Дифференцирование
Вычисление производной функции f(x) = x2arctg(x–2) может быть оформлено через функцию diff:

> diff(x^2*arctan(x-2),x);



Обратите внимание на следующую возможность вывода результата (слева так называемая инертная форма функции diff):

> Diff(x^2*arctan(x-2),x)=diff(x^2*arctan(x-2),x);



Производную можно брать от вектора (точнее, вектор-функции):

> Diff([sin(x)^2,x^n,exp(a*x)],x)=diff([sin(x)^2,x^n,exp(a*x)],x);



Производная порядка выше первого

> Diff(x^2*ln(x-2),x$8)=diff(x^2*ln(x-2),x$8);



Можно попытаться упростить этот результат

> simplify(");



Частная производная по x функции двух переменных f(x,y)=cos(x/y+1)x2y:

> diff(cos(x/y+1)*x^2*y,x);



Частная производная по y той же функции (с использованием инертной формы):

> Diff(cos(x/y+1)*x^2*y,y)=diff(cos(x/y+1)*x^2*y,y);



Частная производная по x 2-го порядка:

> Diff(cos(x/y+1)*x^2*y,x$2)=diff(cos(x/y+1)*x^2*y,y$2);



Смешанная производная:

> Diff(cos(x/y+1)*x^2*y,x,y)=diff(cos(x/y+1)*x^2*y,x,y);



Для создания функций с производными может использоваться дифференциальный оператор D. В форме D(f)(x) этот оператор подобен diff(f(x),x). В виде D(f) он просто выдает имя производной функции f.

> D(cos^2+tan);



> D(sin@cos); #оператор D действует на композицию двух функций, т.е. на sin(cos)



> D(sin*cos);



> D(ln);



> f:=x->sin(x^2): # определена функция sin x2

Поставим целью определить функцию u(x), в каждой точке равную производной функции f. Применение diff, как и следует ожидать, дает нужное выражение

> diff(f(x),x);



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

> u:=x->diff(fun(x),x);



> u(2.);

Error, (in u) wrong number (or type) of parameters in function diff

Введение вспомогательной переменной t тоже не обеспечивает нужного результата:

> t:=diff(fun(x),x); x->t;





> u(2.);



Проблема полностью решается с помощью оператора D

> D(f);



> u:=D(f);



> u(1.); # значение функции f’(x) в точке x=1



Еще примеры:

> fun:=x->x+2*x*exp(-x^2):

> D(D(fun));



> (D@@5)(fun);



> D(fun)(2);



> evalf(");



> D(fun)(2.);



> g:=(x,y,z)->x*exp(y)+y*sqrt(z^1+1);



> D[2](g);


2. Интегрирование
а) Неопределенные интегралы
Для вычисления неопределенных интегралов Maple предоставляет функцию int. При этом если аналитического значения интеграла не существует, возвращается исходная запись.

> int(a*x^n,x);



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

> Int(ln(x)^3,x);



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

> value(");



> Int(x^2*sin(x),x)=int(x^2*sin(x),x);



> Int(sin(x)/x,x)=int(sin(x)/x,x); # эта функция называется интегральный синус



Следует помнить, что хотя в аналитических выражениях интегралов отсутствует аддитивная произвольная постоянная C, она должна там подразумеваться.

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

> w:=int(exp(-sin(x)),x);



> convert(taylor(w,x=0,8), polynom);



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

б) Определенные интегралы

Для вычисления определенных интегралов используются те же функции int и Int, в которых надо указать пределы интегрирования, например x=a..b, если интегрируется функция переменной x.

> Int(sin(x)/x,x=a..b)=int(sin(x)/x,x=a..b);



> int(sin(x)/x,x=0..1);



Maple предпочитает выводить результат в таком как бы незавершенном виде, так как считает его более точным значением, чем в виде десятичного числа. Однако, если требуется именно численное значение интеграла, причем с любой заданной точностью, можно применить функцию evalf. Существует и другая возможность сразу получить численный результат, что демонстрируется следующим примером

> int(sin(x)/x,x=0..1.);



(т.е. один или два предела записываются в виде числа с плавающей точкой).

Еще примеры:

> Int(x*ln(x),x=0..1)=int(x*ln(x),x=0..1);



> Int(x*exp(-x),x=0..infinity)=int(x*exp(-x),x=0..infinity);



> Int(1/(x^2+6*x+12),x=-infinity..infinity)=value(");



Последние два примера показывают, что пределами интегралов может выступать бесконечность, обозначаемая как infinity.

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

> int(exp(-sin(x)),x=0..1);



В этом случае использование функции evalf позволяет посчитать интеграл численно (при этом задействуются именно численные методы интегрирования):

> evalf(");



Другой пример:

> Int(exp(-x)/sqrt(x^2+1),x=0..exp(1))=evalf(int(exp(-x) /sqrt(x^2+1),x=0..exp(1)));



в) Интегралы с переменными пределами интегрирования:

> f:=x->int(exp(-t)*sin(2*Pi*t),t=0..x);



> f(2.);



> plot(f(x),x=0..4);


г) Повторные интегралы
> Int(Int(arctan(y/x)/(x*y),x=2.0..4.4),y=-2..3.0);



> evalf(");



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



> p:=Int(Int(2-x-y,x=sqrt(y)..y^2),y=0..1): p=value(p);


3. Вычисление пределов функций
Для вычисления предела функции в точке x=a в пакете Maple используются функции

limit(f,x=a); limit(f,x=a,dir);

Limit(f,x=a); Lmit(f,x=a,dir);

Здесь f – алгебраическое выражение, x – имя переменной, dir –параметр, указывающий направление поиска предела(right – справа, left – слева, real – в области вещественных значений, complex – в области комплексных значений). Значением a может быть бесконечность.

> Limit(sin(x)/x,x=0)=limit(sin(x)/x,x=0);



> Limit(((x-2)/x)^x,x=infinity)=limit(((x-2)/x)^x,x=infinity);



> Limit(2^(1/x),x=0,left)=limit(2^(1/x),x=0,left);



> Limit(2^(1/x),x=0,right)=limit(2^(1/x),x=0,right);



> Limit((2^x-1)/x,x=-infinity)=limit((2^x-1)/x,x=-infinity);



> Limit((2^x-1)/x,x=infinity)=limit((2^x-1)/x,x=infinity);


4. Разложение функций в ряды
Для разложения функции или выражения expr в ряд служат Maple-функции

series(expr,eqn); taylor(expr,eqn);

series(expr,eqn,n); taylor(expr,eqn,n);

Функции series осуществляют разложение в степенной ряд, функции taylor – в ряд Тейлора. Здесь expr – разлагаемое в ряд выражение, eqn – имя переменной (например, x) или равенство в виде x=a, n – целое положительное число, определяющее порядок разложения (при отсутствии n полагается равным 6). При задании eqn в виде x=a разложение ищется относительно точки x=a. Если вместо x=a указано просто x, разложение осуществляется в окрестности точки x=0.

Разложение получается в форме степенного многочлена, порядок которого определяется параметром n (на единицу меньше). Остаточная погрешность задается членом вида O(x)^n. При точном разложении этот член отсутствует. В общем случае для его удаления можно использовать функцию convert.

> series(sinh(x),x=0);



> series(sinh(x),x=1,3);



> series(sinh(x),x=1.,3);



> series(sin(x)/x,x,10);



> convert(",polynom);



> 2/sqrt(Pi)*Int(exp(-t^2),t=0..x)=

2/sqrt(Pi)*int(exp(-t^2),t=0..x); # это так называемая функция ошибок



> s:=taylor(erf(x),x,9);



> evalf(convert(s,polynom),5);



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

asympt – асимптотическое разложение,

laurent – разложение в ряд Лорана (доступна при подключении пакета numapprox).

> asympt(x/(1-x-x^2),x);



> with(numapprox):

> laurent(1/(x*sin(x)), x=0);


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

sum(f,k); product(f,k);

sum(f,k=m..n); product(f,k=m..n);

sum(f,k=alpha); product(f,k=alpha);

Здесь f – функция, задающая члены суммируемого ряда, k – индекс суммирования, m и n – целочисленные пределы изменения k, alpha – выражение формата RootOf. Значение n может быть равно бесконечности (infinity).

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

30

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



Разработчики Maple рекомендуют при использовании упомянутых функций заключать k и f в прямые кавычки, например sum('f','k'=m..n). Это предотвратит возможную ошибку, связанную с предшествующим присваиванием переменной k определенного значения.

> sum('k^2', 'k'=0..n);



> sum('a[k]*x^k','k'=0..4);



> sum('1/k!', 'k'=0..infinity);



> r:=Sum(Sum(k^2,k=1..m),m=1..N): r=factor(simplify(value(r)));



Обратите внимание на следующий пример, в котором второй аргумент функции sum задан просто как 'k':

> t:=sum('-exp(-k)', 'k');



В справочной системе Maple такой вид суммы именуется как indefinite sum («неопределенная сумма»). Если этот результат обозначить как t(k), то выполняются свойства

, ,

где f(k) – суммируемая последовательность – первый аргумент функции sum. Проверим последнее свойство.

> subs(k=n+1,t)-subs(k=1,t);



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



По смыслу indefinite sum во многом напоминает частичную сумму Sn+1 ряда с общим членом f(k) (продумайте этот вопрос).

Произведения членов последовательности строятся аналогично.

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

576

> Product( n+k, k=0..m ) = product( n+k, k=0..m );



> product(k, k=RootOf(x^3-2));


6. Разные математические операции

 convert/parfrac – разложение рациональной функции на простые дроби


> convert((x^5+1)/(x^4-x^2),parfrac,x);


 residue – нахождение вычета функции в заданной точке


> residue(1/(1-exp(-x)), x=0);



laplace, invlaplace – прямое и обратное преобразования Лапласа

> restart;

> with(inttrans): # подключение пакета расширения

> laplace(y(t)=t^2+sin(t), t, p);



> laplace(diff(y(t), t$2)-y(t)=sin(2*t), t, p);



> f:=t->Heaviside(t)-Heaviside(t-1); #заданединичныйимпульс



> plot(f(t),t=-1..2);



> laplace(f(t), t, p);



> invlaplace((p-1)/(p^2+2*p+2), p, t);


 fourier, invfourier – прямое и обратное преобразования Фурье


> fourier(t*exp(-3*t)*Heaviside(t),t,w);



> invfourier(3/(1 + w^2),w,t);



> simplify(%,trig);




Порядок выполнения лабораторной работы

1. Вычислить:

1) yIV, если;

2) и , если ;

3); 4) ; 5) ;

6) ; ; 7) ; 8) ;

9) ; 10) в точке ;

11) ; 12) ; .

2. Построить графики функций ; .

3. Разложить функции в ряд:

а) ; z0=0, z0=; б) .

4. Решить операционным методом дифференциальное уравнение

.