Смекни!
smekni.com

Программирование и разработка приложений в Maple (стр. 30 из 135)

> convert(table([Kr, G, S, Art]), 'array'); ⇒ [Kr, G, S, Art]

> convert([2, 0, 0, 6], 'base', 10, 2); ⇒ [0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1]

> convert(2006, 'binary'); ⇒ 11111010110

> convert(Tallinn, 'bytes'); ⇒ [84, 97, 108, 108, 105, 110, 110]

> convert([73, 110, 116, 101, 114, 110, 97, 116, 105, 111, 110, 97, 108, 32, 65, 99, 97, 100, 101, 109, 121, 32, 111, 102, 32, 78, 111, 111, 115, 112, 104, 101, 114, 101], 'bytes');

"International Academy of Noosphere"

2

> convert(sin(x)/x, 'confrac', x, 8); ⇒ 1 + x 2

−6 + x 2

10 11 x

− +

3 126

> convert(x*y*z, `+`), convert(x*y*z – h + 64, `*`); ⇒ x + y + z, -64 x y z h > [convert(101100111, 'decimal', 'binary'), convert(64, 'decimal', 'octal'), convert(`ABCDEF`, 'decimal', 'hex')]; ⇒ [359, 52, 11259375]

> convert(y*sin(x) + x*cos(y), 'exp'); ⇒ −1 I y e(x I)e(1x I)  + x 12 e(y I) + 12 e(1y I) 

2

> convert([[V, 42, 64], [G, 47, 59], [Art, 89, 96]], 'matrix'); ⇒ ArtGV 424789 645996

> convert([inch, ft, yard, miles, bushel], 'metric');

 1275000m, 3811250m, 11431250m, 2514615625km, 0.035238775147289395200 m3  > convert([Art, Kr, Sv, Arn, V, G], `and`); ⇒ Art and Kr and Sv and Arn and V and G > G:= (x, y) -> x*sin(y): convert(G(x, y), 'numericproc'); proc(_X, _Y) local err; err := traperror evalhf(( (x×sin( )y )(_X _Y, )));

if type [( err], [numeric]) then err

else err := traperror(evalf((x×sin(y))(_X, _Y))); if type [( err], [numeric]) then err else undefined end if

end if

end proc

> convert(a*x + b*y - 3*x^2 + 5*y^2 - 7*x^3 + 9*y^3, 'horner', [x, y]); (b + (5 + 9 y) y) y + (a + (-3 - 7 x) x) x

С учетом сказанного приведенный фрагмент использования вышерассмотренных пакетных средств конвертации типов (форматов) выражений в широком понимании данного термина представляется достаточно прозрачным и особых пояснений не требует. Более детальное ознакомление со средствами данного класса Maple-языка рекомендуется проводить при непосредственной практической работе в его среде. Нами также был определен ряд довольно полезных средств конвертации объектов Maple-типа в объекты типа rtable, и наоборот [103]. Например, вызов нижеприведенной процедуры avm_VM(G) возвращает результат преобразования объекта, определенного фактическим аргументом G типа {array, vector, matrix}, в объект типа {Vector, Matrix}, и наоборот – объект типа {Vector, Matrix} в векторы или матрицы типа Maple.

avm_VM := proc(G::{Matrix, Vector, matrix, vector, array}) local k h S H M, , , , ;

S := H → rtable(op 2,( eval(G)), {op(op 3,( eval(G)))}, 'subtype' = H);

`if`(type(G, 'array') = true and nops [( op 2,( eval(G))]) = 1, S(Vector['row']), `if`(type(G, 'array') = true and nops [( op 2,( eval(G))]) = 2 and nops([seq(k, k = op(2, eval(G))[1])]) = 1, rtable(

op [( assign(h = op 3,( eval(G))), [seq(rhs(h k[ ]), k = 1 .. nops( )h )]]),

'subtype' = 'Vector'['row']), `if`( type(G, 'array') = true and nops [( op 2,( eval(G))]) = 2 and nops [( seq(k, k = op 2,( eval(G))[ ]2 )]) = 1, rtable( op([assign(h = op(3, eval(G))), [seq(rhs(h[k]), k = 1 .. nops(h))]]), 'subtype' = 'Vector'['column']), `if`(whattype(G) = 'Matrix', op([assign(M = Matrix(op 1,( G), op 2,( G), subs('readonly' = NULL, MatrixOptions(G)))), matrix(op 1,( G), [op(op 2,( G))])]), `if`(whattype(G) = 'Vector'['row'], vector(`if`(whattype(op 1,( G)) = `..`, rhs(op 1,( G)), op 1,( G)), op([assign(h = op(2, eval(G))), [seq(rhs(h[k]), k = 1 .. nops(h))]])), `if`( whattype(G) = 'Vector'['column'], matrix( `if`(whattype(op 1,( G)) = `..`, rhs(op 1,( G)), op 1,( G)), 1, op [( assign(h = op 2,( eval(G))), [seq(rhs(h k[ ]), k = 1 .. nops(h))]])),

S Matrix( )))))))

end proc

При этом, следует отметить, что в нашей книге [12] (прилож. 1) представлен целый ряд особенностей выполнения конвертации выражений одного типа в другой посредством convert-функции, имеющих важное значение при практическом использовании данного средства. Там же приведены и другие полезные замечания относительно convert-функции, сохраняющие свою актуальность и для последующих релизова Maple.