Чтение онлайн

ЖАНРЫ

Maple 9.5/10 в математике, физике и образовании

Дьяконов Владимир Павлович

Шрифт:
dy := ae(-bx)– axbe(-bx)

> solve(dy,x);

Этот метод иногда можно распространить на случай ряда переменных. Ниже представлен такой пример для функции двух переменных:

> restart:

> z:=(х,y)-> а*х^2 + b*х*y + с*y^2 + d*(х-y);

z := (х,у)→aх² + bху + су² + d(x-y)

> xy:=solve({diff(z(x,y),x) = 0, diff(z(x,y),y) = 0},{х,y});

> z(rhs(xy[2]),rhs(xy[1]));

> simplify(%);

Разумеется,

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

5.1.4. Поиск максимума амплитудно-частотной характеристики

Одной из практически важных задач может служить нахождение пика амплитудно-частотной характеристики слабо демпфированной системы с массой m и частотой собственных колебаний ω0. Эту характеристику можно представить следующим известным выражением (файл afc):

> restart;

> A:=A0/sqrt(m^2* (omega0^2-omega^2)^2+gamma^2*omega^2);

Найдя ее производную и, вычислив корни последней, получим:

> dA:=diff(A,omega);

> ss:=solve(dA=0,omega);

Из этих трех частот только одна физически реальна — средняя. Остальные могут быть отброшены. А теперь приведем пример с конкретными числовыми данными:

> AA:=subs(А0=5,omega0=10,m=1, gamma=1, А);

> AAprime :=diff(АА, omega);

> ss1:=solve(AAprime=0,omega);

> evalf(ss1);

0., 9.974968670 , -9.974968670

Нетрудно подметить, что частота пика амплитудно-частотной характеристики чуть меньше частоты собственных колебаний системы.

5.1.5. Поиск экстремумов с помощью функции extrema

Ряд функций служит специально для вычисления экстремумов, максимумов и минимумов функций, а также для определения их непрерывности. Одна из таких функций extrema позволяет найти экстремумы выражения expr (как максимумы, так и минимумы) при ограничениях constrs и переменных vars, по которым ищется экстремум:

extrema(expr, constrs)

extrema(expr, constrs, vars)

extrema(expr, constrs, vars, 's')

Ограничения contrs и переменные vars могут задаваться одиночными объектами или списками ряда ограничений и переменных. Найденные координаты точки экстремума присваиваются переменной 's'. При отсутствии ограничений в виде равенств или неравенств вместо них записывается пустой список {}.

Эта функция в предшествующих версиях Maple находилась в стандартной библиотеке и вызывалась

командой readlib(extrema). Но начиная с Maple 7 ее можно использовать без предварительного объявления. В этом убеждают приведенные ниже примеры (файл extrema):

> restart:

> z:=(х,y)-> а*х^2 + b*x*y + с*y^2 + d*(х-y);

z:= (х,у)→ах² + bxy + су² + d(х - y)

> extrema(z(х,y),{},{х,y},'s');

> s;

> extrema(а*х^2+b*х+с,{},x,'s');s;

> extrema(х*ехр(-х),{}, х, 's'); s;

{e(-1)}
{{x = 1}}

> extrema(sin(x)^2,{},x,'s');s;

{0,1}
{{x=0}, {х=½π}}

> extrema(х+у/z,х^2+у^2+z^2=1,{x,y,z},'s');s;

{max(1 - RootOf(_Z4 + 1)2, - 1 + RootOf(_Z4 + 1)2),
min(1 - RootOf(_Z4 + 1)2, -1 + RootOf(_Z4 + 1)2)}
{{z = RootOf(_ Z4 + 1), x = -1, у = RootOf(_Z4 + 1)3},
{x = 1, z = RootOf(_ Z4 + 1), у = - RootOf(_ Z4 + 1)3}}

> evalf(%);

{{x = -1., у = -0.7071067812+0.7071067812 I, z = 0.7071067812+0.7071067812 I},
{z = 0.7071067812+0.7071067812 I, x = 1., у = 0.7071067812-0.7071067812 I}}

Как видно из приведенных примеров, функция extrema возвращает как значения экстремумов, так и значения аргументов, при которых экстремумы наблюдаются. Обратите внимание, что в первом примере результат вычисления экстремума функции z(x,y) оказался тем же, что и в предшествующем разделе. Это говорит в пользу применения функции extrema.

Для проверки оптимизационных алгоритмов существует ряд тестовых функций. Одна из таких функций — функция двух переменных Розенброка. В представленном ниже примере она задана как rf(x,y):

> rf:= (x,у)->100*(у-х^2)^2+(1-х)^2;

rf:=(x,.y)→100(y-x²)²+(1-x)²

> extrema(rf(х,у),{х,у},'s');s;

{{y = -RootOf f(_ Z4 + 1)3, х = 1, z = RootOf(_Z4 + 1)}, {x = -1, у = RootOf(_Z4 + 1)3, z = RootOf(_Z4 + 1)}}

> evalf(%);

{{y = 0.7071067812-0.7071067812, x = 1., z =0.7071067812+0.7071067812 I},
{z = 0.7071067812+0.7071067812 I, x = -1.,y = -0.7071067812+0.7071067812 I}}

Как нетрудно заметить, минимум этой функции при значениях x=у=1, равный 0, функцией extrema явно не обнаружен. Однако это не недостаток данной функции, а просто неудачное ее применение. Функция Розенброка имеет минимум значения и для его обнаружения надо использовать функцию minimize, описанную ниже.

Поделиться с друзьями: