Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metoda_po_inf_ch_2.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

4.1. Встроенные процедуры дифференцирования

Для дифференцирования выражения e по переменным x, y и т.д. используют следующие две команды в среде Maple

Diff, diff, - как обычно, команды с большой и малой буквы отвечают символу и значению т.е. процедуре отложенного и немедленного выполнения;

D - позволяет найти дифференциал функции и дифференцировать процедуры;

implicitdiff - позволяет дифференцировать функции, заданные уравнением.

Пример 5 (дифференцирование ).

> Diff(sin(x),x);

> diff(sin(x),x);

> Diff(sin(x),x$3);

> value(");

В последнем примере мы задали порядок дифференцирования.

Если функция не задана явно, то

> diff(f(x),x);

> diff(f(x,y),x,y);

Аналогично вычисляются и дифференциалы

> D(sin);

> D(ln);

> D(f);

> D(f)(0); # Производная от f вычисляется в точке 0

> D(D(f));

> (D@@2)(f); # Дифференциал старшего порядка как композиция простых дифференциалов

> D(f@g); # Дифференциал от композиции двух функций

Эта комманда позволяет дифференцировать и составные выражения. Например, предположим, что a -это число

> assume(a,constant);

> D(2*sin(a)*f);

Дифференциал можно преобразовать в производную и обратно

> f := D(y)(x) - a*D(z)(x);

> convert(f, diff, x);

> f := diff(y(x), x$2);

> convert(f, D);

Рассмотрим уравнение, которое определяет x(y) или y(x)

> f := x^2+y^3=1

Продифференцируем y по x или x по y

> implicitdiff(f,y,x);

> implicitdiff(f,x,y);

> implicitdiff(f,y,z);

> implicitdiff(f,y(x),x);

> implicitdiff(f,y,x,x);

4.2. Определение собственных функций

Необходимо отличать выражение вида f:=x^n+y с четко определенным значением от отображения (функционала) вида переменные -> результат, которое является символом. Внутреннее представление данного отображения эквивалентно написанию процедуры вида proc( переменные ) option operator, arrow; результат end

Рассмотрим, на примерах, различия между этими понятиями

Пример 7 (выражения).

> restart:

> f:=x^3+у^4+z;

с подстановкой и дифференцированием вида

> subs(x=1,y=5,z=-1,f);

> diff(f,x);

> Diff(f,y); value(");

Пример 8 (отображения).

> restart:

> F := (x -> sin(x));

> F(t);

> g:=(x)->x^2+y^4+z;

с подстановкой и дифференцированием вида

> g(1);

> D(g);

> D(g)(3);

Для случая многих переменных это так же несложно

> f := (x,y) -> exp(x*y);

> f(1,1);

> D[1](f);

> D[2](f);

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

Пример 9 ( команда map ).

> restart:

> map(f, x + y*z);

> map(f, y*z);

> map(f, {a,b,c});

Зададим какое-нибудь отображение

> f:=x-> x^5+1;

> L:=[1,-2,x,y,9];

> map(f,L);

Более сложное использование данных команд

> restart:

> map2( map, f, g(a+b, h(c)+d) );

Выражение можно всегда переопределить как функционал командой unapply. Фактически, в Maple даже дифференциал определён таким образом D(f) = unapply(diff(f(x), x), x). Напомним, что дифференциал преобразуется к производной и обратно командой convert.

Пример 10 (выражения и отображения).

> restart:

> q := x^2 + y^3 + 1;

> f := unapply(q,x);

> f(2);

> g := unapply(q,x,y);

Определим процедуру по правилу

> f := proc(x) local t1,t2;

> t1 := x^2;

> t2 := sin(x);

> 3*t1*t2+2*x*t1-x*t2

> end:

Вычислим производную от f по аргументу x

> D(f);

Проверим вычисление производной

> D(f)(x) - diff(f(x),x);

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

Пример 11 (композиция функций).

> sin@cos)(x);

> (sin@arcsin)(x);

> sin@arcsin;

> simplify(");

> sin@@0;

> sin@@1;

> (sin@@2)(x);

> (D@@2)(ln);

Обратные функции строяться аналогично

> sin@@(-1);

> ln@@(-3);

> LambertW@@(-1);

Для всех встроенных функций можно загрузить таблицу обратных функций (сразу всю!), но это занимает больше памяти, чем использование композиции.

> readlib(invfunc);

> invfunc[sin](1);

> Invfunc[sin](1);

> Invfunc[exp](x);

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