Maple 9.5/10 в математике, физике и образовании - Владимир Дьяконов
Шрифт:
Интервал:
Закладка:
2.3.4. Идентификация констант
Функции type(x, constant) и type(x, realcons) возвращают логическое значение true, если х представляет целочисленную или вещественную константу, и false, если х не является константой. Таким образом, эти функции можно использовать для идентификации констант, например:
> type(Pi,constant);
true> type(1/2,constant);
true> type(.5,constant);
true> type(x/y,constant);
false> type(ln(-Pi),constant);
true> type(infinity,constant);
true> type(1.234, realcons);
true> type(x*y,realcons);
false> type(2+3*1,realcons);
false2.3.5. Защита идентификаторов констант
Имена встроенных констант (как и имена функций) защищены специальным атрибутом protected. Поэтому (без его снятия) константам нельзя присваивать какие либо значения:
> Pi;
π> Pi:=1;
Error, attempting to assign to `Pi` which is protected
> gamma;
γ> gamma:=10;
Error, attempting to assign to `gamma` which is protected
Стоит упомянуть о такой экзотической возможности, как задание в Maple собственных констант путем описания алгоритма генерации входящих в константу цифр. Примеры этого творчества можно найти на сайте фирмы Waterloo Maple.
2.3.6. Задание новых констант
Следующий пример показывает, как можно определить новую константу g и ввести ее в список встроенных констант:
> type(g,constant);
false> constants:=constants,g;
constants := false, γ, ∞, true, Catalan, FALL, π, g> type(g,constant);
true2.4. Работа с размерными величинами
2.4.1. Пакет поддержки размерных величин Units
В некоторых областях науки и техники, например, в физике, широко используются размерные величины, у которых помимо их значения указывается единицы измерения. Довольно развитую поддержку таких расчетов обеспечивает пакет расширения Units. Он содержит следующие функции (файл units):
> with(Units);
[Add Base Unit, Add Dimension, AddSystem, AddUnit, Converter, GetDimension, Get Dimensions, GetSystem, SetSystems, GetUnit, GetUnits, HasDimension, HasSystem, HasUnit, Natural, Remove Dimension, RemoveSystem, Standard, Unit, UseContexts, UseSystem, UsingContexts, UsingSystem]Большинство функций этого пакета достаточно просты и даже очевидны.
2.4.2. Примеры работы с размерными величинами
Ограничимся несколькими характерными примерами их применения (файл units):
> convert(4.532, units, N/m^2, (lb*f t/s^2)/ft^2);
3.045363395> convert(W, dimensions), convert(W, dimensions, base);
> with(Units[Standard]):
> distance := 3.5*Unit(ft) + 2.4*Unit(m);
distance := 3.466800000 [m]> force := distance*Unit(lb)/Unit(s)^2;
force := 1.572514028 [N]> convert(force, units, lbf);
.3535152166 [lbf]> V := i*R;
V:=iR> eval(V, [i = 2.3*Unit(mA), R = 50.0*Unit(uOmega)]);
.1150000000 10-6 [V]> convert(%, units, nV );
115.0000000 [nV]2.4.3. Ассистент преобразования размерных величин в Maple 9.5/10
В Maple 9.5/10 преобразования размерных величин упрощаются применением ассистента Unit Converter..., который преобразует значение Value размерной величины с размерностью Dimension с одной величины в другую. Окно ассистента показано на рис. 2.13. Дан пример преобразования 1 фута в метрическую величину (1 фут=0,3048 м).
Рис. 2.13. Окно ассистента — конвертора размерных величин
Списки Dimension, From и То задают наименование размерной величины, начальную единицу ее измерения и конечную единицу измерения. Нетрудно заметить, что для преобразования используется функция convert.
2.4.4. Пакет научных констант ScientificConstants
Еще в Maple 8 был добавлен пакет расширения для добавления и применения научных констант, химических элементов и свойств, что резко расширяет возможности применения системы в физических и химических расчетах. Вызов пакета ScientificConstants осуществляется командой:
> with(ScientificConstants);
Warning, the name Element has been rebound
[AddConstant, Add Element, AddProperty, Constant, Element, GetConstant, GetConstants, GetElement, GetElements, GetError, Get Isotopes, Get Properties, Get Property, GetUnit, GetValue, HasConstant, HasElement, HasProperty, ModifyConstant, ModifyElement]Нетрудно заметить, что функции пакета обеспечивают следующие возможности для констант (Constant), элементов (Element) и свойств (Property):
• Add — добавление;
• Get — вывод;
• Has — проверка на наличие объекта в пакете;
• Modify — модификация. Функция
GetError(sc_obj)
возвращает значение ошибки, с которой задана константа — объект sc_obj. Знание ошибки существенно при организации критичных к ошибкам научно-технических расчетов.
2.4.5. Работа с научными константами
Вызов всех научных констант осуществляется следующим образом (файл sconst):
> with(ScientificConstants):
> GetConstants();
Eh, F, G, G0, Kf, MEarth, MSun, Ф0, R, REarth, RK, R∞, Vm, Z0, a0, ae, aμ, α, b, с, c1.L, c1, c2, e, ε0, g, ge, gμ, gn, gp, γe, γn, γp, gamma_primeh, gamma_primep, h, k, lp, λC.T, λC.μ, λC.n, λC.p, λC,, mP, mτ, mα, md, me, mh, mμ, mn, mp, mu, μ0, μB, μN, μd, μe, μμ, μn, μp, mu_primeh, mu_primep, n0, re, σ, σe, sigma_primep, tpТеперь уточним данные по константе g — ускорению свободного падения:
> Constant(g);
Constant(g)> GetValue(%); GetUnit(%%);
> Units: -UsingSystem();
SI> Constant(g, units);
А теперь проверим, есть ли в пакете константы g и edu
> HasConstant(g);
true> HasConstant(edu);
falseи вычислим погрешность, с которой задана константа G:
> GetError(Constant(G));
0.11 10-122.4.6. Вызов списка и свойств химических элементов
Для вызова имен всех элементов периодической таблицы Менделеева можно использовать следующую команду:
> GetElements();
Н, Не, Li, Be, В, С, N, О, F, Ne, Na, Mg, Al, Si, P, S, Cl, Ar, K, Ca, Sc, Ti, V, Cr, Mn, Fe, Co, Ni, Cu, Zn, Ga, Ge, As, Se, Br, Kr, Rb, Sr, Y, Zr, Nb, Mo, Tc, Ru, Rh, Pd, Ag, Cd, In, Sn, Sb, Те, I, Xe, Cs, Ba, La, Ce, Pr, Nd, Pm, Sm, Eu, Gd, Tb, Dy, Ho, Er, Tm, Yb, Lu, Hf, Та, W, Re, Os, Ir, Pt, Au, Hg, Tl, Pb, Bi, Po, At, Rn, Fr, Ra, Ac, Th, Pa, U, Np, Pu, Am, Cm, Bk, Cf, Es, Fm, Md, No, Lr, Rf, Db, Sg, Bh, Hs, Mt, Uun, Uuu, Uub, Uuq, UuhА теперь выведем характеристики элемента А — алюминия:
> GetElement(Al, name, meltingpoint, boilingpoint);
13, name = aluminium, meltingpoint = [value = 933.47, uncertainly = undefined, units = K], boilingpoint = [value = 2792., uncertainly = undefined, units = K]2.4.7. Применение пакета ScientificConstants
В справке системы Maple 9.5 можно найти примеры применения пакета ScientificConstants в химических и физических расчетах. Интересные примеры таких расчетах даны в документе «Applications of the ScientificConstants Package». Ha рис. 2.14 показано начало этого документа, в котором содержится пример на вычисление количества молекул, которое необходимо для получения 10 граммов вещества с химической формулой С3Н6O. Вначале математически синтезируется молекула этого вещества, ее вес конвертируется в систему единиц SI и в конце находится число молекул вещества.
Рис. 2.14. Пример вычисления числа молекул для получения 10 граммов вещества С3Н6O
Приведенный документ является наглядным примером создания в среде Maple электронных документов, уроков и книг. Он построен с применением открывающихся и закрывающихся ячеек. Читателю, всерьез работающего с системой Maple стоит приучить себя готовить свои документы в таком же стиле — средства для этого были описаны в Главе 1.
В другом примере (рис. 2.15) вычисляется энергия ионизации вещества и строится график ее зависимости от порядкового номера элемента вещества в таблице периодической системы элементов. График наглядно демонстрирует характерные почти периодические колебания энергии ионизации.
Рис. 2.15. Построение зависимости энергии ионизации вещества от его номера в таблице периодической системы элементов
2.5. Функции для работы со строковыми данными
2.5.1. Создание и применение строковых данных
Строки как тип данных — это просто цепочки символов. Они обычно используются для создания текстовых комментариев, имен переменных и символьных выражений. Строки комментариев должны каким-либо образом выделяться, чтобы Maple не отождествлял их с именами констант и переменных. Для этого строки-комментарии имеют внутренний разделительный признак, который устанавливается при их вводе (нажатием клавиши F5, которое приводит к исчезновению знака >).