100% found this document useful (1 vote)
727 views

Extension of Mathematica system functionality Victor Z. Aladjev instant download

The document discusses the book 'Extension of Mathematica System Functionality' by Victor Z. Aladjev and Vjacheslav A. Vaganov, which focuses on enhancing the Mathematica software through modular programming. It provides a comprehensive overview of various programming techniques and tools that expand the system's capabilities, particularly for users in scientific and educational fields. The book includes a freeware package with over 680 procedures and functions to aid users in developing applications within Mathematica.

Uploaded by

nimakomwajri
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
727 views

Extension of Mathematica system functionality Victor Z. Aladjev instant download

The document discusses the book 'Extension of Mathematica System Functionality' by Victor Z. Aladjev and Vjacheslav A. Vaganov, which focuses on enhancing the Mathematica software through modular programming. It provides a comprehensive overview of various programming techniques and tools that expand the system's capabilities, particularly for users in scientific and educational fields. The book includes a freeware package with over 680 procedures and functions to aid users in developing applications within Mathematica.

Uploaded by

nimakomwajri
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 51

Extension of Mathematica system functionality

Victor Z. Aladjev pdf download

https://ebookname.com/product/extension-of-mathematica-system-
functionality-victor-z-aladjev/

Get Instant Ebook Downloads – Browse at https://ebookname.com


Instant digital products (PDF, ePub, MOBI) available
Download now and explore formats that suit you...

Questions of Civil Society Category Position


Functionality 1st Edition Ralph Schattkowsky

https://ebookname.com/product/questions-of-civil-society-
category-position-functionality-1st-edition-ralph-schattkowsky/

Essentials Of Programming In Mathematica 1st Edition


Wellin

https://ebookname.com/product/essentials-of-programming-in-
mathematica-1st-edition-wellin/

Necropolis of Gonur Victor Sarianidi

https://ebookname.com/product/necropolis-of-gonur-victor-
sarianidi/

Weaving Words Personal and Professional Transformation


through Writing as Research 1st Edition Janice K. Jones

https://ebookname.com/product/weaving-words-personal-and-
professional-transformation-through-writing-as-research-1st-
edition-janice-k-jones/
The Name Is Archer Lew Archer 0 3 Ross Macdonald

https://ebookname.com/product/the-name-is-archer-lew-
archer-0-3-ross-macdonald/

Hotspot Networks WiFi for Public Access Locations 1st


Edition Daniel Minoli

https://ebookname.com/product/hotspot-networks-wifi-for-public-
access-locations-1st-edition-daniel-minoli/

The Legend of Zelda 1st Edition Doug Walsh

https://ebookname.com/product/the-legend-of-zelda-1st-edition-
doug-walsh/

Gadolinium Compounds Production and Applications


Compounds Production and Applications 1st Edition Caden
C. Thompson

https://ebookname.com/product/gadolinium-compounds-production-
and-applications-compounds-production-and-applications-1st-
edition-caden-c-thompson/

Epidemiology of Pediatric and Adolescent Diabetes 1st


Edition Dana Dabelea

https://ebookname.com/product/epidemiology-of-pediatric-and-
adolescent-diabetes-1st-edition-dana-dabelea/
Play Along Windy City Series Book 4 Liz Tomforde

https://ebookname.com/product/play-along-windy-city-series-
book-4-liz-tomforde/
Victor Z. Aladjev, Vjacheslav A. Vaganov

Extension of Mathematica
system functionality

TRG – 2015
Extension of Mathematica system functionality:
Victor Aladjev, Vjacheslav Vaganov.– Tallinn: TRG Press, 563 p., 2015

Systems of computer mathematics find more and more broad application in


a number of natural, economical and social fields. These systems are rather
important tools for scientists, teachers, researchers and engineers, very well
combining symbolical methods with advanced computing methods. One of
leaders among means of this class undoubtedly is the Mathematica system.
The book focuses on one important aspect – modular programming supported
by Mathematica. The given aspect is of particular importance not only for
appendices but also above all it is quite important in the creation of the user
means that expand the most frequently used standard means of the system
and/or eliminate its shortcomings, or complement the new facilities.
Software tools presented in the book contain a number of rather useful and
effective methods of procedural and functional programming in Mathematica
system that extend the system software and allow sometimes much more
efficiently and easily to program the objects for various purposes first of all
wearing system character. The above software tools rather essentially dilate
the Mathematica functionality and can be useful enough for programming
of many applications above all of system character. Furthermore, the book
is provided with freeware package AVZ_Package containing more than 680
procedures, functions, global variables and other program objects.
The present book is oriented on a wide enough range of users of systems of
the computer mathematics, teachers and students of universities at courses
of computer science, mathematics and other natural–science disciplines.

In the course of preparation of the present book the license releases 8 ÷ 10 of


the Mathematica system provided by Wolfram Research Inc. have been used.

© Victor Aladjev, Vjacheslav Vaganov. All rights reserved.


Printed by CreateSpace, An Amazon.com Company
Extension of Mathematica system functionality
Contents
Preface 5
Chapter 1. Additional means in interactive mode of the Mathematica 13
Chapter 2. Additional tools of processing of expressions in the
Mathematica software 26
Chapter 3. Additional means of processing of symbols and string
structures in the Mathematica system 58
Chapter 4. Additional means of processing of sequences and lists in the
Mathematica software 81
Chapter 5. The additional means expanding the standard Mathematica
functions, or its software as a whole 101
5.1. The control branching structures and cyclic structures in the
Mathematica system 123
5.2. The cyclic control structures of the Mathematica system 127
Chapter 6. Problems of procedural programming in the Mathematica
software 130
6.1. Definition of procedures in the Mathematica software 130
6.2. Definition of the user functions and pure functions in software of
the Mathematica system 146
6.3. Means of testing of procedures and functions in the Mathematica
software 154
6.4. Headings of procedures and functions in the Mathematica system 182
6.5. Formal arguments of procedures and functions; the means of
processing them in the Mathematica software 207
6.6. Local variables of modules and blocks; the means of manipulation
by them in the Mathematica software 235
6.7. Global variables of modules and blocks; the means of
manipulation by them in the Mathematica software 259
6.8. Attributes, options and values by default for the arguments
of the user blocks, functions and modules; additional means
of processing of them in the Mathematica system 275
3
V.Z. Aladjev, V.A. Vaganov
6.9. Some additional facilities for operating with blocks, functions and
modules in the Mathematica software 292
Chapter 7. Means of input–output of the Mathematica 354
7.1. Means of the Mathematica for work with internal files 354
7.2. Means of the Mathematica system for work with external files 369
7.3. Means of the Mathematica system for processing of attributes
of directories and datafiles 385
7.4. Additional means of processing of datafiles and directories 396
7.5. Certain special means of processing of datafiles and directories 420
Chapter 8. The manipulations organization with the user packages
in the Mathematica software 431
8.1. Concept of the context, and its use in the software of the
Mathematica system 432
8.1.1. Interconnection of contexts and packages in the software of
the Mathematica system 437
8.2. Definition of the user packages, and their usage in the
Mathematica software 440
8.3. Additional means of operating with packages in the Mathematica 473
8.4. The organization of the user software in the Mathematica system 534
8.5. A package for the Mathematica system 550
References 553
Monographs, textbooks and books on computer science,
theory of general statistics, cellular automata theory and
computer mathematics systems, prepared and published by
members of the Baltic Branch during 1995 – 2015 558
About the Authors 563

Mathematica 2, 5 ÷ 10 – trademarks of Wolfram Research Inc.


4
Extension of Mathematica system functionality
Preface

Systems of computer mathematics (SCM) find more and more wide application
in a number of natural, economical and social sciences such as: informatics,
chemistry, mathematics, physics, technologies, education, economics, sociology, etc.
Such systems as Mathematica, Maple, REDUCE, MuPAD, Derive, Magma,
Axiom, Maxima, GAP, MathPiper and others are more and more demanded
for learning of the mathematically oriented disciplines, in various scientific
researches and technologies. These systems are the main tools for teachers,
scientists, researchers, and engineers. Researches on the basis of technology
SCM, as a rule, well combine algebraic methods with advanced computing
methods. In this sense of SCM – interdisciplinary area between informatics
and mathematics in which researches are concentrated on development of
algorithms for algebraical (symbolical) and numerical calculations and data
processing, and on creation of programming languages along with program
environment for realization of this kind of algorithms and tasks of different
purpose which are based on them.
Solution of applied user problems in one or the other field of appendices is
supported by packages of applied programs (PAP or simply packages) of special,
highly specialized or general purpose. Classification and characteristic of
such class of software can be found in our previous books [3–5]. Naturally,
the qualified user well owning one of effective programming languages (for
example, Basic, C, Fortran, PL/1, Pascal, Lisp, Prolog, etc.) in a number of cases
for the solution of own tasks can independently write and debug a separate
program or a complex of programs allowing to realize algorithm of its tasks
on a personal computer. In some cases such approach can be more effective,
than use for these purposes of ready software since the software developer
at the same time well owns specifics of the solved task and conditions of its
operation. However, such approach demands as a rule of serious costs and
at present abundance of various type and purpose of means for a personal
computer becomes considerably inexpedient. At the same time, developed
PAP are supplied with own builtin programming language of one or other
level of complexity allowing to program the whole tasks or their separate
fragments which may be in the environment of a package are inefficiently,
inexpedient, and in some cases and is impossible to realize by the standard
5
V.Z. Aladjev, V.A. Vaganov
means of a package.
This book is devoted to the class of software called by systems of computer
mathematics which, first of all, are intended for the solution of problems of
mathematical character, and, first of all, to leaders in this class to systems
Mathematica and Maple. Moreover, only the indirect attention concerning
comparison of systems on certain separate moments is paid to the second
system whereas quite developed their comparative analysis can be found in
our books [28-30]. At that, much attention was paid both on experience with
described means, and features of their usage, and also recommendations for
the user following from them. As far as possible, the most effective technique
of application of these means for the solution of those or other applied user
tasks have been offered. Moreover, in book [33] we presented an excursus
in history of computer algebra systems that represents a certain interest for
the user of this class of software. Rather detailed characteristic of this series
of books can be found, in particular, in [30-33] and in the present book isn't
considered. Our operating experience with systems of computer algebra, first
of all, Mathematica and Maple allowed not only to carry out a comparative
analysis of these means, to reveal deficiencies inherent to them, and also to
create a number of the means expanding their functionality and eliminating
their some defects. All these questions including questions of terminological
character with various extent of detailing have been considered in a series of
our books and papers [1-48].
The Mathematica system along with the above–mentioned Maple system is
one of the most known and popular SCM, it contains a rather large number
of functions for providing as symbolical transformations, and for numerical
calculations. The Mathematica system for today is multipurpose means that
includes a large number of opportunities for the solution of quite wide range
of problems. Naturally, for these means can`t be given a rather full analysis
within the framework of the given book. Furthermore, the target of the book
consists in other – in the book the attention is focused only on one aspect of
system – opportunities of her program environment for solution of special
problems of mass and system character.
This aspect has the special importance not only for solution of applied tasks
but above all it is quite important at creation of the software expanding often
used system means and/or eliminating their defects, or supplementing the
6
Extension of Mathematica system functionality
system with new means. In this context possibilities of built–in language of
the system on creation of such kind of procedures or functions are of special
interest. So, programming in the system is a multifaceted subject and in it we
focus attention only on questions of realization of procedures/functions that
represent main program objects both for the most often used means of the
user, and for the means expanding and improving standard system means
in the system software, i.e. realized by means of the built–in language of the
system (Math-language). In this context it is also possible to estimate in quite
full measure the Mathematica system software, without regarding to some
subjective moments, first of all, the user preferences and habits. Naturally,
these moments play a rather essential part for the user which has a certain
experience of work with program languages of procedural type whereas for
a beginner they stand not so sharply because of lack of such experience. So,
considering orientation of the given book, for conscious acquaintance with
its contents the knowledge of Math-language at the level above the initial is
supposed, for example, within the works [29-33,51,52,55,57,60,62,64,66,71].
Since the 10th version Math–language is called as Wolfram Language what,
in our opinion, is result of certain painful ambitions similar to those that are
associated with book "A New Kind of Science" along with a fair share of self–
advertisement of allegedly new means.
The given book affects a rather extensive material on Mathematica software
in the context of its opportunities in procedural and functional programming.
Meanwhile, main purpose of this book laid aside the questions which are of
interest, first of all, to readers who are in own activity at the first stages of an
mastering of the Mathematica system. For beginners it is recommended to
address oneself to the corresponding editions whose list is rather extensive,
above all, the English-language. The Mathematica system is considered and
in Russian–language literature, however English–language editions, in our
opinion, are represented to us more preferable. In general, it is possible to
familiarize oneself with literature on the website www.wolfram.com/books,
quite useful sources can be found in the represented references, including a
rather useful references in the Internet.
Thus, the given book represents a certain set of the selected system problems
whose purpose not only to expand or make more effective the Mathematica
system, but also to give certain help to those users of the Mathematica who
7
V.Z. Aladjev, V.A. Vaganov
would like to move from the user's level to a level of the programmer or to
those who when using Mathematica already faced some its restrictions and
want to improve its program environment. At that, the skilled Mathematica
programmers probably will also be able to find for themselves in our book a
rather useful information and of applied character, and to reflection.
Therefore illumination only of some questions essence without their rather
detailed discussion, certain nuances and consideration of adjacent questions
that are often interesting and important per se often takes place. Moreover,
the system means presented in the book can be used as rather useful means
at developing own applications in the environment of Mathematica. In our
opinion, an analysis of the source codes of the means presented in this book
which use both effective, and nonstandard methods of programming along
with quite certain practical interest will allow to master the environment of
Mathematica system more deeply. For convenience of their use in the given
quality the reader has possibility of free download of AVZ_Package package
for Mathematica system of versions 8 ÷ 10 which contains these means [48].
The means considered throughout the present book answer fully the main
goal of the offered book which can be characterized by the following 2 main
directions, namely:
(1) representation of a number of useful enough means of system character
that expand and supplement standard means of the Mathematica system;
(2) illustration on their example of receptions and methods, enough useful
in procedural and functional programming, along with a number of essential
enough features of this paradigm of programming in the conditions of the
program environment of the Mathematica system.
Here is quite appropriate to note a quite natural mechanism of formation of
own software means of the user working in some program environment. In
course of programming of one or other means, or the whole project a certain
situation is quite real when is rather expedient to program some additional
tools that are absent among standard means, either they are more effective,
or they are more convenient than standard means. In many important cases
the applicability of these means can have mass enough character, allowing
to form program toolkit of quite wide range of applicability.
Exactly in many respects thanks to the described mechanism we have created
8
Extension of Mathematica system functionality
quite famous library UserLib for Maple along with package AVZ_Package
for Mathematica which contain more than 850 and 680 means respectively
[47,48]. All above-mentioned means are supplied with FreeWare license and
have open program code. Such approach to programming of many projects
both in Mathematica, and in Maple also substantially promoted emergence
of a number of system means from above–mentioned library and package,
when development of software for simplification of its realization revealed
expediency of definition of the new accompanying tools of system character
that are rather frequently used both in applied and in system programming.
So, openness of the AVZ_Package package code allows both to modify the
means containing in it, and to program on their basis own means, or to use
their components in various appendices. In our opinion, tasks and means of
their realization in Mathematica which are presented in the above package
can be rather useful at deeper mastering of system and in a number of cases
will allow to simplify rather significantly programming of appendices in it,
first of all, the system problems. At that, the methodological considerations
represented in our previous books [29-33] fully remain in force and relative
to the present book.
Means of AVZ_Package package have different complexity of organization
and used algorithms; in certain cases, they use effective and nonstandard
receptions of programming in Mathematica. The given means can be used
as individually (for the decision of various problems or for creation on their basis
of new means), and in structure of AVZ_Package package extending standard
tools of the Mathematica, eliminating a number of its defects and mistakes,
raising its compatibility relatively to its releases and raising effectiveness of
programming of problems in Mathematica. A tool represented in the book
is supplied with description and explanations, contains the source code and
the more typical examples of its application. As required, a description has
supplied by necessary considerations, concerning peculiarities of program
execution in the Mathematica environment.
The given book considers certain principal questions of procedure–functional
programming in Mathematica, not only for the decision of various applied
problems, but, first of all, for creation of the software expanding frequently
used facilities of the system and/or eliminating their defects or expanding
the system with new facilities. The software presented in this book contains
9
V.Z. Aladjev, V.A. Vaganov
a series of useful and effective receptions of programming in Mathematica
system, and extends its software which enables more simply and effectively
to programme in the system Mathematica the problems of various purpose.
The represented monograph, is mostly for people who want the more deep
understanding in the Mathematica programming, and particularly those
Mathematica users who would like to make a transition from the user to a
programmer, or perhaps those who already have certain limited experience
in Mathematica programming but want to improve their possibilities in the
system. Whereas the expert Mathematica programmers will also probably
find an useful enough information for yourself.
At that, it should be noted that the source codes of means given in this book
contain calls of non–standard tools that didn't find reflection in the present
book in a number of cases, but are presented in our package[48]. Therefore,
their detailed analysis requires acquaintance with these tools, at least, at the
level of usages on them. Meanwhile, the main algorithm of many means of
the presented book is rather well looked through and without acquaintance
with similar means while real use of these means perhaps only after loading
of this package into the current session. Along with the illustrative purposes
the means represented in this monograph quite can be used and as enough
useful means extending the program Mathematica environment that rather
significantly facilitate programming of a wide range of the problems first of
all having the system character. Our experience of conducting of the master
classes of various level in systems and Mathematica, and Maple confirms
expediency of application in common with standard means of both systems
and some user tools created in the course of programming of appendices.
Tools represented in the book increase the range and efficiency of usage of
Mathematica on Windows platform owing to the innovations in three basic
directions, namely: (1) elimination of a series of basic defects and shortcomings,
(2) extending of capabilities of a series of standard tools, and (3) replenishment of
the system by new means which increase capabilities of its program environment,
including the means which improve the level of compatibility of releases 7 – 10. At
last, with organization of the user software and programming of large-scale
systems in Mathematica software along with our standpoint on a question:
Mathematica or Maple? the interested reader can familiarize in [29–33].
At last, a number of means represented in the above books is intended for a
10
Extension of Mathematica system functionality
extension of standard means of the systems Mathematica and Maple along
with elimination of their shortcomings and mistakes. These means not only
more accurately accent distinctions of both systems, but also their problems
of common character. And in this relation they allow to look from different
points of view on these or other both advantages, and shortcomings of both
systems. In the present book we present a number of means of similar type
concerning the Mathematica system. At that, it should be noted that a mass
optimization of procedures have not been performed, procedures in many
cases have been written, as they say on 'sheet'; on the other hand, numerous
procedures have been optimized using both the standard means and newly
created tools of system character. In this context here there is a magnificent
experimental field for increasing of professionalism of the user at operating
with the Mathematica software.
Inclusion of source codes of the procedures and functions presented in this
book with their short characteristic directly in the book text allows to work
with them without computer, considering a habit of considerable number
of the users of the senior generation to operate with program listings before
exit to the computer what in a series of cases promoted better programming
in due time at programming in batch mode. In our opinion, skill to operate
with program listings is a rather important component of the programmer
culture, allowing better to feel the used program environment. In a certain
measure it is similar to possession of the musician by the sheet music.
Moreover, many listings of the represented means have a rather small size,
allowing to analyze them outside of the Mathematica environment in the
assumption that the reader is sufficiently familiar with its software. Now, at
mass existence of personal computers of various type the mentioned visual
analysis of the program listings was replaced with the mode of interactive
programming, however it's not the same, and in the first case the process of
programming seems to us more better and efficient. Meanwhile, even tools
with small source code often are useful enough at programming of various
applications, in particular, of system character. Whereas others demand for
the understanding of serious enough elaboration, including acquaintance
with our package AVZ_Package [48].
As shows our experience, the programming in the above mode slightly more
slowly, than directly on the computer, however it allows to concentrate our
11
V.Z. Aladjev, V.A. Vaganov
better on an object of programming and it is better to think over a problem
and a way of its decision, rather, than method of its decision in the so-called
interactive mode. Even in the presence of the personal computer (PC) we got
used the basic skeleton of a program to write on paper and only then to pass
to debugging onto the personal computer in the interactive mode. So, in our
opinion, such approach allows to write programs more thoughtfully; at that,
following the old habit to write optimal enough codes for their subsequent
performance on quite limited computing resources of the computers 20–30
years ago. However, in many respects this is matter of habit, however you
shouldn't forget that the old isn't always worse than new one and, getting
new opportunities, we, often, lose the old skills important for work. Here
and in this case, having received very convenient means of communication,
we, sometimes, lose sight of efficiency of a program code, creating it without
especial difficulties in the interactive mode with the only purpose to receive
the demanded result, often, ignoring quality.
Of course, there is no only best way of creation of еру programs. Different
technologies and paradigms are required for the programming of different
problems and their levels of complexity. So, in the elementary cases is quite
enough of the knowing of elements of structural writing of programs. While
for creation of complex program projects is required not only to be fluent in
a programming language in rather full volume, but also to have notion of the
principles of elaboration and debugging of programs, opportunities of both
standard and other libraries of one or the other software, etc.
As a rule, than the problem is more complex, the more time is required for
mastering of the tools necessary for its decision. In this context the software
(procedures/functions/global variables) which is presented in the present book
contain a number of rather useful and effective methods of programming in
the Mathematica environment and extends its program environment, they
give opportunity more simply and effective to program different problems.
These means in the process of application of the AVZ_Package package are
updated, taking into account both the new means, and the optimization of
already existing means. In many problems of different purpose the package
AVZ_Package showed itself as a rather effective toolkit. The package on the
freeware conditions is attached to the present book [48].

12
Extension of Mathematica system functionality
Chapter 1. Additional means in interactive mode of the
Mathematica system
Further we will distinguish two main operating modes with Mathematica –
interactive and program. Under the first mode step-by-step performance with
a Mathematica document, i.e. from an input In[n] up to output Out[n] will
be understood while under the program mode the operating within a block or
a module is understood. In the present chapter some additional means rather
useful at work with Mathematica in interactive mode are considered.
In the course of operating in interactive mode in many cases there is a need of
use of earlier calculated expressions in the previous In-paragraphs. For this
purpose the %k-operator {%, %%, %% ... %% (k times)} serves which defines
return of the last, penultimate and k-th previous result of calculations in the
current session. In addition, it should be noted that %–operators in systems
Mathematica and Maple are conceptually various. Though, having various
real areas of applicability in Mathematica and Maple, at the same time %–
operators possess both the shortcomings, and essential advantages [28-33].
The Mathematica supports 2 rather useful predetermined global variables:
$Line – defines number of the last In-paragraph of the current session;
$HistoryLength – defines number of the previous paragraphs In and Out kept in
the current session.
Moreover, these variables allow redefinitions by simple assignment of new
values. For $HistoryLength variable value by default is the infinity (∞); but
using smaller installations for the variable, it is possible significantly to save
the size of RAM required for Mathematica system. In turn, global variable
$Line1 unlike the standard global variable $Line determines total number
of Out-paragraphs of the current session, including results of calculation of
the user packages loaded into the session from files of formats {"cdf", "nb"}.
In[500]:= $Line1 := Block[{a = "", c = "Out[", k = 1}, For[k, k < Infinity, k++,
a = ToString[Out[k]]; If[a == c <> ToString[k] <> "]", Return[k]]]; k]
In[501]:= $Line1
Out[501]= 2014
In[502]:= $Line
Out[502]= 502
13
V.Z. Aladjev, V.A. Vaganov
The above fragment represents source code and examples of application. So,
after loading of the user package the values of variables $Line1 and $Line
can differ rather significantly: the first defines total number of the kept Out–
paragraphs, while the second – number of really received Out–paragraphs in
the current session of the Mathematica.
In a whole series of cases of work with large documents there is expediency
of deleting from the current session of earlier used Out-paragraphs with the
results unnecessary in the future. This operation is provided by the simple
ClearOut procedure, whose call ClearOut[x] returns nothing and at the same
time deletes Out-paragraphs with numbers determined by a whole positive
number or their list x. The following fragment represents source code of the
procedure with a typical example of its application. This procedure in some
cases also provides allocation of additional memory in work area of system
which in case of large documents is quite significant.
In[2520]:= ClearOut[x_ /; PosIntQ[x] || PosIntListQ[x]] :=
Module[{a = Flatten[{x}], k = 1}, Unprotect[Out];
For[k, k <= Length[a], k++, Out[a[[k]]] =. ]; Protect[Out]; ]
In[2521]:= {Out[1508], Out[1510], Out[1511], Out[1515]}
Out[2521]= {42, 78, 2014, 480}
In[2522]:= ClearOut[{1508, 1510, 1511, 1515}]
In[2523]:= {Out[1508], Out[1510], Out[1511], Out[1515]}
Out[2523]= {%1508, %1510, %1511, %1515}
At that, call of used function PosIntQ[x] or PosIntListQ[x] returns True if x –
a positive number or a list positive numbers accordingly; otherwise, False is
returned. These functions are located in our package AVZ_Package [48]; at
that, many means represented below also use means of this package.
On the other hand, in certain cases of work in the interactive mode a need of
replacement of Out-paragraphs onto other contents arises that rather simple
ReplaceOut procedure implements, whose successful call ReplaceOut[x, y]
returns nothing, at the same time carrying out replacement of contents of the
existing Out–paragraphs which are determined by a whole positive or their
list x, by new expressions defined by a y–argument. The call assumes parity
of factual arguments of x and y; otherwise, call ReplaceOut[x, y] is returned
unevaluated. The following fragment represents source code of ReplaceOut
14
Extension of Mathematica system functionality
procedure with typical examples of its usage.
In[2025]:= AgnAvzVsv = 80
Out[2025]= 80
In[2026]:= ReplaceOut[x_ /; PosIntQ[x] || PosIntListQ[x], y___] :=
Module[{a = Flatten[{x}], b = Flatten[{y}], k = 1}, If[b != {},
If[Length[a] != Length[b], Defer[ReplaceOut[x, y]], Unprotect[Out];
For[k, k <= Length[a], k++, Out[a[[k]]] = b[[k]]]; Protect[Out]]; ,
ClearOut[x]]]
In[2027]:= ReplaceOut[2025, 480]
In[2028]:= Out[2025]
Out[2028]= 480
In[2029]:= ReplaceOut[2025]
In[2030]:= Out[2025]
Out[2030]= %2025
Moreover, the call ReplaceOut[x] deletes contents of Out–paragraphs that
are defined by argument x, generalizing the previous ClearOut procedure.
Definition of variables in Mathematica. Like the majority of programming
languages in Mathematica system for expressions the names (identifiers) are
used, giving possibility in the future to address to such named expressions
on their names. So, on the operator "=" the immediate assignment to one or
several names of the demanded expression is made whereas on the operator
"x:=" – the postponed assignment. Distinction of both types of assignment is
supposed well known to the reader. For definition of assignment type that
has been applied to a name a simple enough procedure DefOp can be used
whose call DefOp[x] returns the type in string format of assignment applied
to the name x coded also in string format, namely: (1) "Undefined" – a name
x isn't defined, (2) "=" – the immediate assignment has been applied to a name
x, (3) ":=" – the postponed assignment has been applied to a name x.
In[2040]:= DefOp[x_ /; StringQ[x] && SymbolQ[x] ||
SymbolQ[ToExpression[x]], y___] :=
Module[{a = ToString[Definition[x]], b = {y}, c, d}, If[a == "Null",
Return["Undefined"],
c[h_] := StringTake[a, {Flatten[StringPosition[a, h]][[2]] + 1, –1}]];
If[SuffPref[a, x <> " = ", 1], d = "=", d = ":="];
15
V.Z. Aladjev, V.A. Vaganov
If[b != {} && ! HowAct[y], y = c[d]]; d]
In[2041]:= v = 78; g = 66; s := 46; Kr = 18; Art := 25; Res := a + b + c;
In[2042]:= Map[DefOp, {"v", "g", "s", "Kr", "Art", "Res", "Avz"}]
Out[2042]= {"=", "=", ":=", "=", ":=", ":=", "Undefined"}
In[2043]:= Clear[y]; {DefOp["Art", y], y}
Out[2043]= {":=", "25"}
In[2044]:= Clear[y]; {DefOp["Res", y], y}
Out[2044]= {":=", "a + b + c"}
In[2945]:= Map[DefOpt, {"Kr", "Res"}]
Out[2045]= {"Kr = 18", "Res := a + b + c"}
While call DefOp[x, y] through optional second argument y – an undefined
variable – returns an expression appropriated to a name x. The value which
has been assigned to a variable x remains associated with it until its removal
on "x = . ", or on the functions Clear, ClearAll, Remove, or its redefinition.
The fragment above represents source code of the procedure with examples.
For evaluation of assignments the Math–language has Definition function
whose call Definition[x] returns all definitions ascribed to a name x along
with our DefOpt procedure (see fragment above) which is considered in the
present book below. Along with this procedure also other means of return
of definitions are considered.
In a number of cases arises a necessity of cleaning of variables of the current
session from the values received as a result of dynamic generation. For this
purpose it is possible to use the mechanism consisting in accumulation in a
list of values of variables which should be removed from the current session
subsequently, or be cleared from the values and attributes. For this purpose
can be used a function whose call ClearValues[w] returns the empty list, at
the same time deleting all variables having values from the list w from the
current session; whereas the call ClearValues[w, y] with the second optional
argument y – any expression – returns the empty list, however such variables
are only cleared of values and attributes without removal from the current
session. The following fragment represents source code of the ClearValues
function along with typical examples of its usage.
In[2070]:= ClearValues[x_ /; ListQ[x], y___] := Select[Map[If[{y} == {},
Remove, ClearAll], Select[Names["`*"],
16
Extension of Mathematica system functionality
MemberQ[x, ToExpression[#]] &]], # != "Null" &]
In[2071]:= {a = 42, b = 80, c := 75, d = 480, h5 := 67, Kr = 18, Art = x + Sin[y]}
Out[2071]= {42, 78, Null, 460, Null, 17, 78 + Sin[2013]}
In[2072]:= ClearValues[{42, 78, 75, 480, 67, 18, x + Sin[y]}]
Out[2072]= {}
In[2073]:= Names["`*"]
Out[2073]= {"ClearValues", "Avz", "g", "Res", "s"}
In[2075]:= {a = 42, b = 78, c := 75, d = 460, h5 := 66, Kr = 17, Art = x + Sin[y]}
Out[2075]= {42, 75, Null, 450, Null, 16, x + Sin[y]}
In[2076]:= ClearValues[{42, 78, 75, 460, 66, 17, x + Sin[y]}, 78]
Out[2076]= {}
In[2077]:= Names["`*"]
Out[2077]= {"a", "Art", "b", "c", "ClearValues", "d", "h5", "Kr"}
In[2210]:= VarsValues[x_ /; ListQ[x]] := Select[Names["`*"],
MemberQ[x, ToExpression[#]] &]
In[2211]:= {a = 42, b = 78, c := 75, d = 480, h5 := 67, Kr = 18, Art = x + Sin[y]}:
In[2212]:= VarsValues[{42, 78, 75, 480, 67, 18, x + Sin[y]}]
Out[2212]= {"a", "Art", "b", "c", "d", "h5", "Kr"}
In the second part of the fragment the VarsValues function is represented,
whose call VarsValues[x] returns the list of variables in string format which
have values from a list x. Both functions represent a certain interest during
the work in interactive mode of the current session. The recommendations
about use of these functions can be found in our book [33].
In some cases on the basis of a certain value is required to determine names
to which in the current session this value was ascribed. The given problem
is solved by the procedure whose call Nvalue[x] returns the list of names in
string format with a preset value x. At that, the procedure gives only those
global variables whose values have been received in the current session in
In-paragraphs. In the absence of such names the procedure call returns the
empty list, i.e. {}. The following fragment presents source code and example
of usage of the Nvalue procedure.
In[2725]:= Nvalue[x_] := Module[{a = {}, b = Names["`*"], k = 1},
For[k, k <= Length[b], k++, If[ToExpression[b[[k]]] == x,
AppendTo[a, b[[k]]], Next[]]]; Select[a, ! SuffPref[#, "Global`", 1] &]
17
V.Z. Aladjev, V.A. Vaganov
In[2726]:= {Ag, Av, Art, Kr, V, $Ar, Vs, $Kr, G} = {72, 67, 18, 25, 78, 480, Null,
2014, a*b}; Map[Nvalue, {72, 67, 18, 25, 78, 480, Null, 2014, a*b}]
Out[2726]= {{"Ag"}, {"Av"}, {"Art"}, {"Kr"}, {"V"}, {"$Ar"}, {"Vs"}, {"$Kr"}, {"G"}}
The Nvalue1 procedure is an extension of functionality of the above Nvalue
procedure. The call Nvalue1[x] returns the list of names of variables in the
string format to which in the current session a value x has been ascribed. In
the next fragment the source code of Nvalue1 with examples are presented.
In[4334]:= Nvalue1[x_] := Module[{a = {}, b = Select[Names["*"],
StringFreeQ[#, "$"] &], c, k = 1}, While[k <= Length[b],
c = ToExpression["Attributes[" <> ToString1[b[[k]]] <> "]"];
If[! MemberQ[c, Protected], AppendTo[a, b[[k]]], Null]; k++];
Select[a, ToExpression[#] === x &]]
In[4335]:= {x, y, z, t, h, g, w, s} = {45, 78, 25, 18, 18, 18, 18, 18}; Nvalue1[18]
Out[4335]= {"Art", "g", "h", "s", "t", "u", "w"}
Meanwhile, the Nvalue1 has not quite satisfactory time characteristics as its
algorithm is based on the analysis of all active objects of both the user ones,
and the system ones.
For definition of the values ascribed to variables, the procedure WhatValue
is quite useful whose call WhatValue[x] returns value ascribed to a variable
x; on an undefined variable x the list of format {"Undefined", x} is returned
while on a system variable x the list of format {"System", x}, and on a local
variable x the list of format {"Local", x}, is returned. The following fragment
represents source code of the WhatValue along with examples of its usage.
In[2844]:= WhatValue[x_] := If[SystemQ[x], {"System", x},
If[! SameQ[Definition2[ToString[x]][[1]], ToString[x]],
{"Local", x}, {"Undefined", x}]]
In[2845]:= Ag[x_]:= Module[{}, x^2]; Sv[x_]:= Block[{a}, a+x]; F[x_, y_]:= x*y
In[2846]:= Map[WhatValue, {480 + 78*# &, hg, Sin, Ag, Sv, 78, a*b, F, Gs}]
Out[2846]= {{"Undefined", 480 + 78 #1 &}, {"Undefined", hg}, {"System", Sin},
{"Local", Ag}, {"Local", Sv}, {"Undefined", 78}, {"Undefined", a*b},
{"Local", F}, {"Undefined", Gs}}
In[2847]:= M = Module[{avz}, avz]; WhatValue[M]
Out[2847]= {"Local", avz$50551}
18
Extension of Mathematica system functionality
The call Clear[x1, …, xn] of the standard function clears symbols {x1, …, xn},
excepting symbols with Protected-attribute. As a useful generalization of the
functions Clear and ClearAll the procedure Clear1 can be considered whose
call Clear1[h, "x1", …, "xn"] returns Null, i.e. nothing, clearing at condition
h=1 the symbols {x1, x2, …, xn} with saving of all their attributes and options
while at h = 2, clearing symbols {x1, x2, …, xn} as from expressions ascribed
to them, and from all attributes and options. The fragment below represents
source code of Clear1 along with examples of its usage.
In[2958]:= Clear1[x_ /; MemberQ[{1, 2}, x], y___] := Module[{a = {y}, b, c, d,
k = 1}, If[y === {}, Null, For[k, k <= Length[a], k++, b = a[[k]];
d = Quiet[ToExpression["Attributes[" <> ToString1[b] <> "]"]];
ToExpression["Quiet[ClearAttributes[" <> ToString1[b] <> ", " <>
ToString[d] <> "]" <> "; Clear" <> If[x == 1, "", "All"] <> "[" <>
ToString1[b] <> "]]"]]; If[x == 2, Null, Quiet[Check[ToExpression[
"SetAttributes[" <> ToString1[b] <> ", " <> ToString[d] <> "]"],
$Failed]]]]]
In[2959]:= S[x_] := x^2; SetAttributes[S, {Listable, Protected}]; Clear["S"];
Clear::wrsym: Symbol S is Protected. >>
In[2960]:= Clear1[1, S]
In[2961]:= Definition[S]
Out[2961]= Attributes[S] = {Listable, Protected}
In[2962]:= Clear1[2, S]
In[2963]:= Definition[S]
Out[2963]= Null
As a rather simple and useful tool the UnDef procedure serves, whose call
UnDef[x] returns True if a symbol x isn't defined, and False otherwise. While
call UnDef[x, y] with the second optional argument – an undefined variable –
returns Head1[x] value through y, where Head1 is an useful generalization
of standard function Head considered below. At that, in a number of cases
of procedural programming the UnDef appears as a quite useful tool also.
The fragment represents source code of UnDef with examples of its usage.
In[2490]:= UnDef[x_, y___] := Module[{a = {y}, b = Quiet[Check[Head1[x],
True]]}, If[a != {} && ! HowAct[y], y = b];
If[b === "SetDelayed || TagSetDelayed", True, False]]
19
V.Z. Aladjev, V.A. Vaganov
In[2491]:= x = 78; y = {a, b}; z = a + b; Map[UnDef, {t, h, x, y, z, 760}]
Out[2491]= {True, True, False, False, False, False}
In[2492]:= A[x_ /; UnDef[x]] := Block[{a}, a = 480; a]; y := 2014; {A[y], A[78]}
Out[2492]= {A[2014], A[78]}
In[2493]:= L = {a, b, c, d, h, g, p, v, w}; Select[L, UnDef[#] &]
Out[2493]= {a, b, c, d, p, v, w}
In[2494]:= M[x_] := x; {UnDef[M, t], t}
Out[2494]= {False, "Function"}
Right there it is appropriate to note that on examples of UnDef1, UnDef2,
UnDef3 – the UnDef procedure modifications – basic distinction between
procedures of the types "Module" and "Block" is illustrated [28-33]. Therefore
the type of procedure should be chosen rather circumspectly, giving a certain
priority to procedures of Module-type. In addition, as the enclosed procedures
the procedures of Module–type are used, as a rule.
In a number of cases exists a need of definition of a context of an arbitrary
symbol. This problem is solved by a simple enough procedure, whose call
Affiliate[x] returns the context for an arbitrary symbol x given in the string
format whereas "Undefined" is returned on a symbol, completely undefinite
for the current session. At that, under "completely undefinite" is understood
as a concrete expression, and a symbol for the first time used in the current
session. The fragment below represents source code of the given procedure
and examples of its usage, including examples explaining the essence of the
concept "completely undefinite".
In[80]:= Affiliate[x_ /; StringQ[x]] := Module[{a = Quiet[Context[x]]},
If[ToString[a] === "Context[" <> x <> "]", "Undefined",
If[MemberQ[Contexts[], a] && ToString[Quiet[DefFunc[x]]]] ==
"Null" || Attributes[x] === {Temporary}, "Undefined", a]]]
In[81]:= G = 67; Map[Affiliate, {"ProcQ1", "Sin", "G", "Z", "Affiliate"}]
Out[81]= {"AladjevProcedures`", "System`", "Global`", "Undefined",
"AladjevProcedures`"}
In[82]:= {V, G = 72, 67}; Map[Affiliate, {"V", "G", "80", "Sin[18]", "Q", "Map"}]
Out[82]= {"Undefined", "Global`", "Undefined", "Undefined", "Undefined",
"System`"}
The call WhatObj[x] of a quite simple procedure returns value depending
20
Extension of Mathematica system functionality
on location of a x-symbol activated in the current session, namely: "System" -
a system function; "CS" – a symbol whose definition has been defined in the
current session; "Undefined" – an undefinite symbol; "Context'" – a context
defining a package loaded into the current session and containing definition
of x-symbol; if x has a type other than Symbol, the procedure call is returned
as unevaluated. The following fragment represents source code of WhatObj
procedure along with examples of its usage.
In[2139]:= WhatObj[x_ /; SymbolQ[x]] := Module[{a = Quiet[Context[x]], t},
If[a === "System`", "System", If[a === "Global`",
If[MemberQ[{$Failed, "Undefined"},
PureDefinition[x]], "Undefined", "CS"], a]]]
In[2140]:= w[x_] := Block[{}, x]; Map[WhatObj, {Sin, a/b, ProcQ, t78, h6, w}]
Out[2140]= {"System", WhatObj[a/b], "AladjevProcedures`", "Undefined",
"Undefined", "CS"}
For testing of symbols to which expressions are ascribed, 2 simple functions
HowAct and SymbolQ are defined. The first of them correctly tests the fact
of definiteness of a variable in the current session, however on local variables
of procedures the call of HowAct returns True irrespective of existence for
them of values. On the other hand, on undefinite local variables of blocks the
HowAct returns False. The call SymbolQ[x] of simple though rather useful
function returns True if x is a symbol, and False otherwise. Function is used
in a number of tools presented in the present book. The following fragment
represents source codes of both functions with examples of their usage.
In[2020]:= HowAct[x_] := If[Quiet[Check[ToString[Definition[x]], True]]
=== "Null", False, If[Quiet[ToString[Definition[x]]] ===
"Attributes[" <> ToString[x] <> "] = {Temporary}", False, True]]
In[2021]:= SymbolQ[x_] := ! SameQ[Quiet[Check[ToExpression[
"Attributes[" <> ToString[x] <> "]"], $Failed]], $Failed]
In[2022]:= Map[HowAct, {80, IAN, "RANS", Cos, Args, TestArgsTypes,
Label, HowAct, a + b, Agn}]
Out[2022]= {True, False, True, True, True, True, True, True, True, False}
In[2023]:= Map[SymbolQ, {80, IAN, "RANS", Cos, Args, Label, HowAct}]
Out[2023]= {False, True, True, True, True, True, True, True}
21
V.Z. Aladjev, V.A. Vaganov
In certain cases the SymbolQ1 function, being of a modification of function
SymbolQ can be useful, whose call SymbolQ1[x] returns True if x is a single
symbol, and False otherwise [33]. In [33] certain features of usage of HowAct
for testing of definiteness of local variables of procedures can be found.
In a number of cases exists a need of removal from the current session of a
certain active object having the appropriated value with possibility of its
subsequent restoration in the current or other session. The given problem is
solved by the function whose call ActRemObj[x, y] depending on a value
{"Act", "Rem"} of the second actual argument deletes an object given by his
name in string format from the current session or activates it in the current
or other session respectively. The fragment below represents source code of
the ActRemObj procedure along with examples of its usage.
In[647]:= ActRemObj[x_ /; StringQ[x], y_ /; MemberQ[{"Act", "Rem"}, y]] :=
Module[{a = $HomeDirectory <> "\\" <> x <> ".$ArtKr$", b,
c = ToString[Definition4[x]]}, If[c === "$Failed", $Failed,
If[HowAct[x] && y == "Rem", b = OpenWrite[a]; WriteString[b, c];
Close[b]; ClearAllAttributes[x]; Remove[x]; "Remove",
If[! HowAct[x] && y == "Act", If[FileExistsQ[a],
b = OpenRead[a]; Read[b]; Close[b]; DeleteFile[a]; "Activate",
Return[Defer[ActRemObj[x, y]]]]]]]]
In[648]:= F := {72, 67, 47, 18, 25}; SetAttributes[F, Protected]; Definition[F]
Out[648]= Attributes[F] = {Protected}
F := {72, 67, 47, 18, 25}
In[649]:= ActRemObj["F", "Rem"];
Out[649]= "Remove"
In[650]= Definition[F]
Out[650]= Null
In[651]:= ActRemObj["F", "Act"];
Out[651]= "Activate"
In[652]= Definition[F]
Out[652]= Attributes[F] = {Protected}
F := {72, 67, 47, 18, 25}
In[653]:= A[x_] := Module[{a=480}, x+a]; A[x_, y_] := Module[{a=80}, x+y+a]
In[654]:= {A[100], A[100, 200]}
22
Extension of Mathematica system functionality
Out[654]= {580, 380}
In[655]:= ActRemObj["A", "Rem"]; Definition[A]
Out[655]= Null
In[656]:= ActRemObj["A", "Act"]; {A[100], A[100, 200]}
Out[656]= {590, 380}
Successful removal of an object from the current session returns "Remove"
whereas its restoration in the current session returns "Activate". If a datafile
containing definition of a removed object x, wasn't found in system catalog
$HomeDirectory, the call of ActRemObj procedure is returned unevaluated;
on an inadmissible argument x the call ActRemObj[x, y] returns $Failed.
System Maple has a rather useful restart command which causes the Maple
kernel to clear its internal memory so that system Maple acts almost as if just
started. While the Mathematica system has no similar means in interactive
mode. The next procedure to a certain extent compensates for this deficiency.
The call Restart[] returns nothing, deleting from the current session all objects
defined in it. Moreover, from the given list are excluded the objects whose
definitions are in the downloaded packages. While the call Restart[x] with
optional argument x – a context or their list defining the user packages that
have been loaded in the current session – also returns nothing, additionally
deleting from the current session all objects whose definitions are contained
in the mentioned user packages. The following fragment represents source
code of the Restart procedure along with examples of its application.
In[2450]:= Restart[x___] := Module[{}, Map[{Quiet[ClearAttributes[#,
Protected]], Quiet[Remove[#]]} &, Names["`*"]];
If[{x} != {}, Quiet[Map[Remove[# <> "*"] &, Flatten[{x}]]]]]
In[2451]:= F := {72, 67, 47, 18, 25}; SetAttributes[F, Protected]; Sv = 47; a := 6;
A[x_] := Module[{a = 480}, x+a]; A[x_, y_] := Module[{a = 80}, x*y*a];
In[2452]:= Restart["AladjevProcedures`"]
In[2453]:= Map[Definition, {F, A, Map13, HowAct, Sv, a, ActUcontexts}]
Out[2453]= {Null, Null, Null, Null, Null, Null, Null]}
Moreover, the system objects are not affected by the Restart. In a number of
cases the function seems a rather useful, allowing to substantially restore an
initial state of the current session and to save internal memory of system too.
23
V.Z. Aladjev, V.A. Vaganov
Means of work with sequential structures. Sequences of expressions (simply
sequences) in the environment of many languages are formed on the basis of
the comma operator "," and form a certain base for definition of many types
of data (inquiries of procedures, lists, sets, indexes, etc.). At that, in Mathematica
system the given structure as an independent one is absent, and instead of
it the list structure protrudes; some programming languages adhere to the
same concept. In this context a number of simple enough means has been
created that ensure operating with the object Seq[x] defining a sequence of
elements x. So, the procedure call SeqToList[x] provides converting of Seq–
object x into the list, the procedure call ListToSeq[x] provides converting of
a list x into Seq–object, the procedure call SeqIns[x, y, z] returns the result of
inserting in Seq–object x of an arbitrary element y (list, Seq–object, expression,
etc.) according to the given position z (z <= 0 – before x, z >= Length[x] – after
x, differently – after a z–position in x), the procedure call SeqToString[a, b, …]
returns the list of arguments in string format, whereas the call SeqUnion[x,
y,…] returns result of merge of an arbitrary number of sequences. Means for
manipulating with Seq-objects can be rather widely expanded, providing the
user with rather useful program tools. In a certain relation these tools allow
to solve the problem of compatibility with other tools, for example, with the
Maple system [28-33].
Meanwhile, the Mathematica system provides the function Sequence[a, …]
that defines a sequence of arguments which are automatically transferred to
a block, function or module. In this context the call SequenceQ[s] provides
testing of the objects that are created on the basis of the Sequence function
returning True if a s–object is defined by this function, and False otherwise;
moreover, the name of s–object is coded in string format [33]. On the basis
of the standard Sequence function it is possible to create quite simple tools
ensuring working with sequential structures similarly to the Maple system;
these functions along with the considered ones in [28-33] are rather useful
in work with objects of type "sequence", whose structure isn't supported by
the Mathematica and for work with which system has no standard means.
The call Sequence[x1, x2, …, xn] of the standard function defines a sequence
of actual arguments xj (j=1..n), transferred to a function. Meanwhile, with
objects of type "sequence" the Mathematica system can work mediately, in
particular, on the basis of the list structures. In this regard for expansion of
24
Extension of Mathematica system functionality
standard Sequence function onto list structures the Sequences procedure is
defined, whose call Sequences[x] provides insert in a function of arguments
x given by a sequence or a list; as a simplified variant of Sequences the Sq
function serves. The following fragment represents source codes of function
Sq along with the Sequences procedure, including their applications.
In[3495]:= Sequences[x__] := Module[{a = Flatten[{x}], b, c},
b = "Sequence[" <> ToString[a] <> "]";
a = Flatten[StringPosition[b, {"{", "}"}]];
ToExpression[StringReplace[b, {StringTake[b, {a[[1]], a[[1]]}] –> "",
StringTake[b, {a[[–1]], a[[–1]]}] –> ""}]]]
In[3496]:= {F[Sequence[{x,y,z}]], F[Sequences[{x,y,z}]], F[Sequences[x,y,z]]}
Out[3496]= {F[{x, y, z}], F[x, y, z], F[x, y, z]}
In[3497]:= Sq[x_List] := ToExpression["Sequence[" <>
StringTake[ToString1[x], {2, –2}] <> "]"]
In[3498]:= Plus[Sq[{72, 66, 56, 47, 25, 18}]]
Out[3498]= 284
In[3499]:= G[a, b, c, Sequences[x, y, z]]
Out[3499]= G[a, b, c, x, y, z]
At work with sequential structures a rather useful is a procedure, providing
converting of strings of a special format into lists, and vice versa. The call
ListStrList[x] on a list x = {a, b, …} returns a string s of the format "ahbh …",
while x = ListStrList[s] where h = FromCharacterCode[2]. In case of absence
in a s-string of h-symbol the call ListStrList[s] returns the string s. Fragment
represents source code of the procedure along with examples its usage.
In[2604]:= ListStrList[x_ /; StringQ[x] || ListQ[x]] :=
Module[{a = FromCharacterCode[2]},
If[StringQ[x] && ! StringFreeQ[x, a], Map[ToExpression,
StringSplit[x, a]], If[ListQ[x], StringTake[StringJoin[
Mapp[StringJoin, Map[ToString1, x], a]], {1, –2}], x]]]
In[2605]:= L = ListStrList[{Avz, 72, Agn, 67, Art, 25, Kr, 18, Vsv, 47}]
Out[2605]= "Avz 72 Agn 67 Art 25 Kr 18 Vsv 47"
In[2606]:= ListStrList[ListStrList[{Avz, 72, Agn, 67, Art, 25, Kr, 18, Vsv, 47}]]
Out[2606]= {Avz, 72, Agn, 67, Art, 25, Kr, 18, Vsv, 47}
25
Another Random Document on
Scribd Without Any Related Topics
Insolence of Portugueses, p. 18

Island of Devils, p. 168

Islands in the Streights of Magellan, p. 18

Itos subdu’d, p. 187

K.

King of Borneo’s Brother at Manila for Succours, p. 68


Of Borneo overthrown, and restor’d, p. 68
Of Bachian kill’d, p. 92
Of Achem agrees to infest the Portugueses, p. 94
Of Ceylon expell’d, p. 123

Kings of the Moluccos, p. 2

L.

Lambuco Island, p. 7

Language of Ternate, p. 8

Land at the Mouth of the Streights of Magellan, p. 74, & 75

Laws of Ternate, p. 8

League of Mahometans, p. 126

Leagues against Portugueses, p. 35

Legaspe (Michael de) first Conqueror of Philippines, p. 109


Length of Siege sustain’d by Portugueses at Ternate, p. 60

Lerma Prime Minister, p. 151

Letter of F. Marta concerning the Moluccos, p. 126


Of the King of Tydore, p. 175
Of the King of Spain, p. 209
Of the Emperor of Japan, p. 230

Lewdness of the King of Ternate, p. 206

Life long in Banda, p. 163

Light Vessels of Good Use, p. 135

Lignum Aloes, p. 143

Lima (Paul de) rich in Moluccos, p. 112

Loaysa (Don F. Garcia de) the second that passes the Streight of Magellan, p. 16

Lopez de Sousa (Peter) sent to the Moluccos, p. 65

Love Story, p. 61

Lucopine Islan’s, p. 5

Luitisio, General in China, p. 106

Luzon Island describ’d, p. 110

Luzones Islands, p. 109

Luzaf King of Gilolo, submits to Spain, p. 14

M.

Madagascar Island, p. 157


Madura Island describ’d, p. 164 & 165

Magellan, who he was, p. 4


Goes over to Spain, p. 11
Discovers the Streight of his Name, p. 12
Is murder’d by the Indians, p. 13

Mahometan preachers at Ternate, p. 103

Mamala City, &c. submit to Spain, p. 191

Mandarines visit the Governour of the Philippines, p. 142


Their Message, p. 211
Their 2d Visit, p. 212

Manila City, p. 110

Mandraxa (Cachil) steals the Princess Filola, p. 118

Manners of Ternate, p. 8
Of China, p. 106

Manufactures of Camboxa, p. 143

Marinhas (Don Lewis de las) Governour of the Philippines, p. 142

Marry’d Men consulted in the Moluccos, p. 24

Marta (F. Antony) his Letter, p. 126

Mecon River, p. 143

Melancholly Tree describ’d, p. 28


The Cut of it, p. 8

Meneses (Don George de) His Barbarity, p. 20

Merchants at Banda, their Way of Living, p. 161


Mezquita (James Lopes de) Governour of Ternate, his Baseness to King Aerio, p. 50
Kill’d at Java, ibid.

Mindanao Island, p. 49

Miranda (Captain) sent to Mindanao, p. 148

Mole (Cachil) King of Tydore, p. 103


His Falshood, p. 203

Molucco Islands, why so call’d, p. 6


Their Product, p. 7
Description of them, p. 38
Way of fighting, p. 92

Momoya, its Sangiack converted, p. 26


Amazing Action of his, p. 43

Monson, what it is, p. 15

Morones (John) besieges Ternate in vain, p. 116

Monstrous Piece of Cannon, p. 96

Musick at Amboyna, p. 167

Mutiny of Portugueses, p. 22

N.

Nait Dina Baraca Xa, Sultan, or King of Ternate, p. 97


Murders the King of Tydore, p. 98
His Subtilty, p. 118
Murders Mandraxa, p. 119

Nao, strong Place, p. 188


Natives of Ternate streighten the Portugueses, p. 21

Nayque, a Molucco Embassador in Spain, p. 93


Stirs up Indian Princes to revolt, p. 94
Returns to Ternate, p. 102

Notable Practices, p. 117

Nunez (Augustin) commands at Amboyna, p. 66

O.

Oars like Shovels, p. 162

Observations for Sailers, p. 85

Opinion that Paradise is in Ceylon, p. 123

Opinions of People at Camboxa, p. 142

Opium gives a brutal Courage, p. 222

Outrages committed by Portugueses, p. 15

Oyl of Nutmeg, p. 160

P.

Painted Indians, p. 77

Pampangua describ’d, p. 224

Papuas, or Papous Islands, p. 45, & 49


Parian, Chinese Quarter at Manila, p. 216

Park, English Admiral, p. 178

Parots of the Moluccos, p. 39

Pearls despis’d for Hunger, p. 77


A monstrous Quantity of them, p. 214

Penguins, Birds, p. 158

People of Ternate, p. 8

Pereyra (Gonzalo) Governour at Ternate, p. 21


Kill’d by those People, p. 24

Pereyra (Nunho) Governour at Ternate, p. 53

Perfidiousness, p. 172

Persecution, p. 65

Philip the 2d, King of Spain, p. 91


His answer to the Molucco Embassador, p. 97
His Death, p. 150

Philip the 3d King of Spain, p. 150

Philippine Islands, vid Luzones.

Pigeons green, p. 169

Pinheyro undertakes to murder Cachil Salama and his Unkle, p. 101

Pinto sent to Mindanao, p. 34


His Villany, p. 35

Piragua, a Sort of Float, p. 78

Players in India, p. 123


Plenty at Amboyna, p. 167

Policy of the King of Tydore, p. 60

Poncasio, Treasure in China, p. 106

Populousness, Product, &c. of China, p. 105

Portuguese Pretensions to the Moluccos, p. 4

Portugueses, why hated in the Moluccos, p. 15


Insult those People, p. 18
Become odious for Rapine, &c., p. 19
Settle at Tydore, p. 64
Bafled through Pride, p. 193

Possession taken by Sarmiento, p. 82


Taken of Forts, p. 240

President of the Council in China, p. 107

Pretences to justify a Murder, p. 58

Prisoners Ransom’d, p. 166


Sacrifiz’d, p. 173

Product of the Philippines, p. 112


Of Camboxa, p. 140
Of Asia, p. 58
Of Ceylon, p. 122

Provinces of the King of Ternate, p. 56

Punishment of petty Larceny in Ternate, p. 171

Q.
Queen of Ternate incenses the People against the Portugueses, p. 23
Recovers the King her Son, p. 152

Quisayra Princess of Tydore, her Contrivance, p. 99


In Love with the Kings Son, p. 152
In Love with the Portuguese Commander, p. 100
Contrives to murder Cachil Salama, p. 101

R.

Ransome of a King, p. 159

Ravenous Birds, p. 86

Raxamira (Cachil) King of Tydore, p. 16


Makes Peace with Portugueses, p. 18

Reception of Portugueses at Ternate, p. 6

Relief from Philippines to Moluccos, p. 104

Religion of Ternate, p. 8
Of China, p. 107
Of Banda, p. 161

Remarkable Story, p. 99

Resolution of the People at Ternate, p. 42

Revenge vow’d by the Moluccos, p. 54

Ring Doves eat Cloves, p. 37

Rivers in China, p. 105

Rodriguez (Stephen) was at Mindanao, p. 147


Rojas Governour of Philippines, p. 141

Ronquillo Governour of Philippines, p. 112

Rosatelo, People burn their Town, p. 188

S.

Sacrafize of the Moluccos, p. 49

Sagu, p. 7

Sagus, what they are, p. 17

Saint Helena Island, p. 169

Saint Mary Island, p. 159

Salama (Cachil) his Bravery, p. 100


Marries Princess Quisayra, p. 102

Sangiack, what it signifies, p. 15

Sangiack of Sabubu Poisons the Queen his Daughter, p. 152

Sarmiento pursues Drake, p. 73


His Strength, Capacity, &c., p. 74
Comes into the North Sea, p. 55
Arrives in Spain, p. 90
Comes to Ternate, p. 113

Sea seeming to Boil, p. 157

Seasons in the Moluccos, p. 39

Sebastian King of Portugal, p. 69


Serrano cast on the Lucopine Isles, p. 5
Settles at Amboyna, p. 6

Slaughter of Ternates, p. 149


Of Portugueses, p. 42

Snakes in the Moluccos, p. 39

Snow of several Colours, p. 78

Soldiers of Borneo, p. 13

South Coast of Magellan Streights, p. 85

Spaniards kill the Usurper of Camboxa, p. 145


Retire before 14000 Indians, ibid.
First at Borneo, p. 13
First at Tydore, p. 14
Take the Island Moutil, p. 112

Speech of the King of Tydore, p. 41

State of Affairs in Europe, p. 113

Stews of Sodomites, p. 49

Sticks of a strange Nature, p. 40

Strange Tree in Ceylon, p. 123

Streights of Sincapura and Sabao, p. 93

Sumatra Island describ’d, ibid.

Superstition of Moluccos, p. 240

T.
Tabarija (Sultan) King of Ternate, p. 25
Hated by the People, p. 27
Sent Prisoner to India, p. 28

Tabona Town plunder’d, kills many Portugueses, p. 20

Taes of Gold, their Value, p. 132

Tar of Banda, p. 162

Tea, p. 5

Tellez Viceroy of India, p. 91

Tello (Don Francis) Governour of the Philippines, p. 147

Ternate, its People, Religion, Manners, &c., p. 8


Its Strength, and how to be attack’d, p. 134

Taken by the Spaniards, p. 243

Thornback monstrous, p. 158

Tortoises, p. 158

Tractable Indians, p. 81

Trade at Tuban, p. 164


Of the Philippines, p. 110

Treaty with the King of Ternate, p. 249

Tree of Butterflies, p. 40

Triumph of Ternates, p. 172

Tuac Liquor, p. 7

Tuban Capital of Java, p. 164

Tulo (Cachil) his Letter, p. 119


Tutan, a Viceroy in China, p. 106

Tydore City Burnt, p. 48

Tydore Island Describ’d, p. 64

V.

Vanity of the King of Ternate, p. 174

Vasco de Gama discovers India, p. 4

Venetian Ships at the Philippines, p. 60

Veranula City describ’d, p. 190


Plunder’d and burnt, p. 191

Victory Ship, the first that sail’d round the World, p. 16

Villany of the King of Ternate, p. 178

Virtues of Nutmeg, p. 160

Visit of the Kings of Ternate and Tydore, p. 247

Uproars in Ternate, p. 22

W.

Want in Tydore Fort, p. 34

War between Spaniards and Portugueses in the Moluccos, p. 17

Water clear in the Sea, p. 158


Wax found with Greek Characters, p. 158

Weapons of Banda, p. 162


Of Madura, p. 167

Will of the King of Ternate, pretended by the Portugueses, p. 28

Women Till the Land at Banda, p. 163

Y.

Yloilo Port, p. 238

Z.

Zebu Island, p. 12

Zacatal, What it is, p. 196

Zamori signifies Cæsar, p. 231

Zumbaya Ceremony, p. 247


Directions for placing of the CUTS.

Place the Map before Page 1. The Cut of the Champan and Junk before
Page 5. The Melancholly Tree, and Molucca Habit, before Page 8. The
Carcoa and Almadia before Page 61.
ERRATA

Page 4, Line 7, for 1404, read 1494. p. 4, l. penult, for Nagalhaens, r.


Magalhaens. p. 8, l. 28, for deserves r. deserve. p. 10, l. 13, for roving r.
rowing, p. 11, l. 4, for Caeiz, r. Caciz. p. 17, l. 8, for Inlguez, r. Iniguez. p.
26, l. 3, in the Marginal Note, for mad r. made. p. 33, in the first Marginal
Note, for Portuguese Possession r. Portugueses take Possession. p. 42, in
the third Marginal Note, for King of Tydore, r. King of Gilolo. p. 49, and
elsewhere, for Mindanos r. Mindanae. p. 54 l. 30, for Cachilas r. Cachiles.
ibid. l. 44, for Babre r. Babu. p. 49, l. 35, for Falcage r. Foliage. p. 60, l. 16,
for Reparations r. Preparations. p. 62, l. 37, for did they not look, r. had they
not look’d. p. 63, l. 4, for Advantages, r. Advantageous. p. 77, l. 33, for
caivl r. cavil. p. 97, in the second Marginal Note, for Duenas from, r.
Duenas sent from. p. 118, in the third Marginal Note, for Cachil Mandrata,
r. Cachil Mandraxa. p. 120, in Marginal Note, for Nuno r. Duarte. p. 140, in
the third Marginal Note, for 820, r. and 20.
Colophon
Availability

This eBook is for the use of anyone anywhere at no cost and with
almost no restrictions whatsoever. You may copy it, give it away or
re-use it under the terms of the Project Gutenberg License included
with this eBook or online at www.gutenberg.org .

This eBook is produced by the Online Distributed Proofreading Team


at www.pgdp.net .

Scans for this book can be found on-line in the Internet Archive (copy
1 , 2 ). The same scans are also available from the University of
Michigan Library (copy 1 ).

A different scan set is available from the Bodleian Library (copy 1 ).


These scans include a dedication not present in the University of
Michigan copy, but lack most of the plates.

The Spanish original, Conquista de las Islas Malucas al rey Felipe III,
was published in 1609, and is also available on-line as scans (copy
1 , 2 , 3 ; in an 1891 reprint: 1 , 2, 3).

The illustrations in this edition are of low quality and damaged, but
the best available. If you have access to better quality scans of the
illustrations, please provide these to Project Gutenberg for inclusion
in this edition.

Related Library of Congress catalog page: 05008532 .

Related Open Library catalog page (for source): OL6953147M .

Related Open Library catalog page (for work): OL7848468W .


Related WorldCat catalog page: 1648085 .

Encoding

Obvious typographic mistakes have been corrected with a note;


turned letters have been silently corrected; no attempt has been
made to regularize the spelling.

Revision History

2012-01-21 Started.

External References

This Project Gutenberg eBook contains external references. These


links may not work for you.

Corrections

The following corrections have been applied to the text:

Page Source Correction


4 Nagalhaens Magalhaens
5, 47, 57, [Not in source] .
58, 74,
86, 105,
109, 111,
115, 117,
130, 132,
158, 175,
175, 190,
203, 204,
232, 254,
255, 256,
256, 260,
264, 264,
264, 264,
264, 264,
265, 265,
265, 266,
266, 266,
266, 267,
267, 267,
267, 267
14, 83,
99, 150,
150, 265 , .
14 afterwads afterwards
17, 256,
261, 264,
264, 264,
265, 265,
265, 266,
267, 267,
267, 267 [Not in source] ,
19 sattsfy’d satisfy’d
19 Proviosins Provisions
21 Doroes Daroes
21 sent went
26 mad made
28 Fragancy Fragrancy
30 thier their
30, 74,
75, 261,
261, 264,
265 . ,
31 Argments Arguments
35 Molluccos Moluccos
37 yeild yield
37 plentfully plentifully
39 Brids Birds
40 no not
41 themseives themselves
48 Batachina Batochina
49 Issands Islands
51 Partuguese Portuguese
53 ’ ,
53 wth with
53 satisfie satisfied
55 li tle little
56 end and
58 Phsiyck Physick
67 saild sail’d
69 the the the
72 Preparati-tions Preparations
74 Srength Strength
74 Word World
76 [Not in source] ’
77 caivl cavil
77 Sea Wolves Sea-Wolves
77 Sea-and Sea and
80 Sormiento Sarmiento
83 scare scarce
89 of os
89 Portuguse Portuguese
89 belongging belonging
98 immdeiatly immediately
102 Pinheyra Pinheyro
102 thar that
104 dehind behind
114 this This
115 Eact East
121 anto and to
123 Pennnance Pennance
128 Sanhco Sancho
129 ar far
137 their there
139 apprenhensive apprehensive
141 Spaniads Spaniards
142 brining bringing
149 Affais Affairs
150 Kingoms Kingdoms
151 obe ’d obey’d
152 Nams Name
156 to to to
160 arrriv’d arriv’d
161 great-ter greater
162 For-reigners Foreigners
168 the he
168 Mouth Month
177 Gontalez Gonzalez
178 aftewards afterwards
185 Lordships Lordship’s
189 at-atack attack
191 theit their
192 extradiordinary extraordinary
193 baflled baffled
203 Neice Niece
204 Bed-Camber Bed-Chamber
211 [Not in source] ”
Welcome to our website – the ideal destination for book lovers and
knowledge seekers. With a mission to inspire endlessly, we offer a
vast collection of books, ranging from classic literary works to
specialized publications, self-development books, and children's
literature. Each book is a new journey of discovery, expanding
knowledge and enriching the soul of the reade

Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.

Let us accompany you on the journey of exploring knowledge and


personal growth!

ebookname.com

You might also like