📜 âŹ†ïž âŹ‡ïž

Breaking into the year 2018 with another big release: release of version 11.3 of the Wolfram Language and Mathematica


Translation of Stephen Wolfram's blog post (Stephen Wolfram) " Roaring into 2018 Version 11.3 of the Wolfram Language & Mathematica ".



Content


- Stream release versions
- What's new?
- Blockchain
- System modeling
- New in laptops
- Workflow documentation
- Presentation tools
- Wolfram Chat
- Language Amenities
- Visualization updates
- Reading text
- Person calculations
- Neural networks
- Asymptotic analysis
- “Elementary” algebra
- Evidence
- Growing knowledge base
- Messages and mail
- System level operations
- What was not mentioned


Version Release Stream


Last September, we released version 11.2 of the Wolfram Language and Mathematica - with various new features, including more than 100 completely new features. Version 11.2 was a great version. But today we have an even bigger release: version 11.3 , which, among other things, includes almost 120 completely new features .

June 23 will be 30 years since the release of version 1.0 , and I am very proud that we were able to maintain the accelerating pace of innovation and development for at least three decades now. The key point is that we use the Wolfram Language to develop the Wolfram Language — indeed, most of the things that we can now add to version 11.3 are possible only because we use a huge stack of technologies that we systematically build. more than 30 years.
')
We are constantly working on a large flow of R & D projects, and our strategy for versions .1 is to use them to release everything that is ready at a certain point in time. Sometimes what is in version .1 may not completely fill a new area, and some of the functions may be labeled as “experimental.” But our goal with release versions .1 is to provide the latest results of our research and development as quickly as possible. Integer versions (.0) are more systematic and provide full coverage of new areas, completing what was added gradually in versions .1.

In addition to all the new features in 11.3, a new element has entered our process. Starting a couple of months ago, we began to conduct a live broadcast of our design review meetings , which I began to conduct when we were working on version 11.3. Therefore, for those interested in “how sausage is made”, almost 122 hours of recorded meetings have now been gathered, from which you can see exactly how some of the things you now see in version 11.3 were invented. And in this blog post, I’m going to link to specific recorded live broadcasts related to the features I’m discussing.

What's new?


OK, so what's new in version 11.3? Well, a lot of things. And, by the way, version 11.3 is available today both on the desktop (Mac, Windows, Linux), and on the Wolfram Cloud . (And yes, to achieve simultaneous releases of this kind, extremely nontrivial software development, management and quality assurance is required.)

In general, version 11.3 not only adds some completely new directions, but also expands and strengthens what already exists. The main functionality is enhanced : even more automated machine learning , more reliable data import, preliminary selection of the knowledge base, additional visualization capabilities, etc. There are all sorts of new conveniences: easier access to external languages, direct input, direct currying, and so on. e. And we also continue to aggressively expand the horizons in all areas where we have been particularly active in recent years: machine learning, neural networks, audio, asymptotic calculus, external language computation, etc.

Here is a tag cloud of new features added in version 11.3:



Blockchain


There are so many things to say about 11.3 that it’s hard to know where to start. But let's start with something relevant: blockchain. As I will explain in future blog posts, the Wolfram Language, with its built-in ability to talk about the real world, is unique to defining and executing computational smart contracts. The actual calculation of the Wolfram Language for these contracts will (at the moment) occur without a blockchain, but it is important that the language be able to connect to the blockchain , and this is what is added in version 11.3. [ Live broadcast discussion design ]

The first thing we can do is just ask about the blockchains in the world. For example, the last block added to the main Ethereum chain is shown here:



Now we can take one of the transactions in this block and study it:



And then we can start working with data or carry out any analysis about the structure and content of the blockchain. For the initial release of version 11.3, we support Bitcoin and Ethereum, although other open blockchains will be added soon.

But already in version 11.3 we support private (Bitcoin-based) Wolfram Blockchain, which is hosted on our Wolfram Cloud . We will periodically publish hashes from this blockchain to the world (perhaps in such things as physical newspapers). And also it will be possible to launch its versions in private clouds Wolfram Cloud .

It's very easy to write something in Wolfram Blockchain (and, yes, it charges a small amount of Cloud Credits):



The result is a transaction hash, which can then be found in the blockchain:



Here is a circle back from the blockchain:



By the way, the Hash function in the Wolfram Language language was expanded in 11.3 to immediately support the types of hashes (for example, “RIPEMD160SHA256”), which are used in blockchain cryptocurrencies. And using Encrypt and related functions, you can start creating some complex things in the blockchain - and soon there will be even more.

System modeling


Ok, now let's talk about something really big and new - at least in an experimental form in version 11.3. One of our long-term goals in the Wolfram Language is the ability to calculate anything in the world. And in version 11.3 we add a new class of things that we can calculate: complex engineering (and other) systems. [ Live webcast of our design review meetings 1 and 2 ]

Back in 2012, we released Wolfram SystemModeler : an industrial application simulation environment that was used to simulate things like jet engines with tens of thousands of components. SystemModeler allows you to run simulations of models and develop models using an integrated graphical interface.

What we add (experimentally) in version 11.3 is a built-in feature for the Wolfram Language to run models from SystemModeler - or virtually any model described in Modelica .

Let's start with a simple example. This retrieves a specific model from our built-in model repository:



If you press [+], you will see more details:



But the place where it gets really interesting is that you can really run this model. SystemModelPlot creates a graph of the “standard simulation” model:



What is the actual model inside? This is a set of equations describing the dynamics of the behavior of system components. And for such a simple system, these equations are already quite complex:



Part of the work of modeling real systems consists, as a rule, of working with many components and complex interactions. The SystemModeler is configured so that people design arbitrarily complex systems graphically, hierarchically connecting together components representing physical or other objects. But the big news is that once you have a model, then in version 11.3 you can immediately work with it in the Wolfram Language.

Each model has many properties:



One of these properties gives variables that characterize the system. And yes, even in a very simple system like this, there are already a lot of them:



Here is an example of how one of these variables behaves in a simulation:



A typical thing to do is to investigate how the system behaves when parameters change . This simulates a system with a modified parameter, then creates a graph:





We could go from here to sampling a variety of different possible inputs or parameter values ​​and do such things as studying system resilience to change. Version 11.3 provides a very rich environment for performing all these tasks as an integrated part of the Wolfram Language.

11.3 has already included more than 1000 ready-made models - electrical, mechanical, thermal, hydraulic, biological and other systems. Here is a more complex example - the main part of the car :



If you expand the icon, you can hover the mouse over the pieces to see what they are:



This gives a brief overview of the model, showing that it includes 1110 variables:



In addition to the ready-to-work models, there are also more than 6,000 components included in 11.3 from which models can be built. SystemModeler provides a complete graphical environment for building these components. But this can also be done exclusively using the Wolfram Language code, using functions such as ConnectSystemModelComponents (which basically define the connection schedule for connectors of different components):





You can also create models directly from your basic equations, as well as make “black box models” solely from data or empirical functions (say, from machine learning ).

It took a long time to build all the modeling capabilities of the systems that we present in 11.3. And they are based on many complex features of the Wolfram Language, including large-scale symbolic manipulations, the ability to effectively solve systems of differential algebraic equations , processing of quantities and units, and much more. But now that system modeling has been integrated into the Wolfram Language, it opens up all sorts of important new opportunities — not only in development, but in all areas that can be easily modeled by multi-component real-world systems.


New in laptops


We first introduced laptops in version 1.0 back in 1988 , so by now we have been debugging their work for at least 30 years. Version 11.3 introduces a number of new features. A simple example is the closed group of cells , which now have a “ open button ” by default, and they can also be opened with the help of the brackets of their cells:



I find this useful, because otherwise I sometimes do not notice closed groups with additional cells inside. (And yes, if you do not like it, you can always turn it off in the style design.)

Another small but rewarding change is the introduction of “In / Out Undefined Tags”. In a laptop connected to a working kernel, consecutive cells are labeled In [1], Out [1], etc. But if you are no longer connected to the same kernel (say, because you saved and reopened the laptop) , In / Out numbering no longer makes sense. Thus, in the past, no In, Out. But from version 11.3 there are still tags, but they are inactive, and there are no explicit numbers in them:



Another new feature in version 11.3 is Iconize . Here is the main problem that it solves. Suppose you have a large amount of data or other input that you want to keep in a laptop, but you do not want it to visually fill the laptop. One thing you can do is put it in closed cells. But then to use the data you need to do something like create a variable, and so on. Iconize provides a simple built-in way to save data to a laptop.

Here is how you make a minimized version of the expression:



Now you can use this minimized form instead of the whole expression; it immediately returns the result of the full expression:



Another convenient use of Iconize is to make the code more readable, but still executable. For example, consider something like this:



You can choose options here, then go to the context menu and minimize them:



The result is a simpler to read snippet of code that is still executed in the same way as before:



In version 11.2, we introduced ExternalEvaluate to execute code in external languages ​​(originally Python and JavaScript) directly from the Wolfram Language. (This is supported on the desktop and in private clouds, for reasons of security and resource allocation, the open Wolfram Cloud only works with the pure Wolfram Language code.)

In version 11.3, it is now even easier to enter external code into laptops. Just start the input cell with>, and you will get the external code cell (you can easily select the desired language):



And yes, what comes back is an expression of the Wolfram Language that you can calculate:



Workflow documentation


We pay great attention to documenting the Wolfram Language - and traditionally we had three types of components in our documentation: “reference pages” that cover one function, “manual pages” that contain a summary of links to many functions, and “educational manuals, which provide narrative introductions in the field of functionality. From version 11.3 there is a fourth type of component: (workflow) workflows - this is where new options take you on a gray background at the bottom of the “root reference page”.



When everything you do is represented by the explicit Wolfram Language code, the In / Out laptop paradigm is a great way to show what is happening. But if you click the mouse or, even worse, use external programs, this is not enough. And that's where workflows come up, because they use all sorts of graphic devices to represent a sequence of actions that are not just introduced into the Wolfram Language.



Therefore, if you get the coordinates of the schedule or deploy a complex form on the Internet or add a banner to a laptop , then you are expected to follow our new workflow documentation. And by the way, you will find links to relevant workflows from the manual pages for the functions.

Presentation tools


Another important thing related to the interface in version 11.3 is Presenter Tools - a complete environment for creating and running presentations that include interactive interactivity. What makes Presenter Tools possible is the rich laptop system we have created over the last 30 years. But what they help to do is to add all the functions that are needed for conveniently creating and running presentations.

People use our previous format SlideShow , for presentations with Wolfram laptops for 20 years. But this was never a complete decision. Yes, it gave us convenient laptop functions, such as live computing in a slide show environment, but didn’t use things like “PowerPoint”, such as automatically scaling content to screen resolution. In fairness, we note that we expected operating systems to simply solve problems, such as scaling content. But 20 years have passed, and this is still not there. So, now we have created new Presenter Tools that solve such problems, and add a number of possibilities to create great presentations with laptops as easy as possible.

To get started, simply select File> New> Presenter Notebook. Then select your template and theme, and get started:



This is what it looks like when you edit a presentation (and you can change topics whenever you want):



When you're ready, just click “Start Presentation.” Everything goes in full screen mode and is automatically scaled to the resolution of the screen you are using. But here is a big difference from PowerPoint-like systems: everything is alive, interactive, editable and scrollable. For example, you can have Manipulate right inside a slide, and you can immediately interact with it. (Oh, and everything can be dynamic, say, recreate graphics based on data that is imported in real time.) You can also use things like cell groups to organize content into slides. And you can edit what is on the slide, and, for example, do livecoding, running your code on the go.

When you are ready to switch to a new slide, just press the key (or your remote will do it for you). By default, this Page Down key (so you can use the arrow keys when editing), but you can set a different key if you want. You can force Presenter Tools to show slides on one display, and then display notes and controls on another display. When you make slides, you can enable SideNotes and SideCode. SideNotes - text notes similar to PowerPoint. But SideCode is something else. In fact, this is based on what I have been doing on my own presentations over the years. This is the code that you prepared in advance, and you can “magic” insert it into the slide in real time during the presentation, and if you wish, with an instant output of the result.



Over the years, I gave a huge amount of presentations using Wolfram laptops . Several times I used the SlideShow format, but basically I did everything in a regular laptop, often writing notes on a separate device. But now I am very pleased that in version 11.3 I have exactly the tools I need to prepare and conduct presentations. I can pre-define some of the content and structure, but a live presentation can be very dynamic and spontaneous - with live editing, live coding and all kinds of interactivity.

Wolfram Chat


While we are discussing the possibilities of the interface, here is another: Wolfram Chat. When people are working interactively on something, it’s usually heard that someone says “let me just send you some code” or “let me send you Manipulate ”. Now, in version 11.3, there is now a very convenient way to do this, and this is built directly into the Wolfram laptop system, which is called Wolfram Chat . [ Live webcast meeting ]

Simply select File> New> Chat ; You will be asked who you want to “talk with”, and this could be anyone and anywhere with a Wolfram ID (although, of course, they must accept your invitation):



Then you can start a chat session and, for example, put it next to a regular laptop:



It's great that you can send everything that may appear in a laptop, including images, code, dynamic objects, etc. (Although this is a sandbox, so people cannot send code bombs to each other).

There are many obvious Wolfram Chat applications not only in collaboration, but also in such things as classrooms and technical support. And there are other applications. For example, for livecoding competitions. And in fact, one of the ways we conducted the Wolfram Chat load tests during its development is using it to participate in the livecoding competition at the Wolfram Technologies conference last fall.

You might think that chat is something simple and clear. But in reality it is surprisingly difficult, with an amazing amount of different situations and cases to consider. Under the hood, Wolfram Chat uses both the Wolfram Cloud and the new pub-sub channel structure, which we introduced in version 11.0. In version 11.3, Wolfram Chat is supported only for Wolfram desktop laptops, but they will soon appear on laptops on the Internet and on mobile devices.

Language Amenities


We always improve the Wolfram Language language to make it more convenient and productive to use. And one way to do this is to add new “handy features” in each version of the language. Often these functions do simple things; the task (which often takes many years) is to come up with a beautiful and simple design for them. (You can see quite a few discussions about new convenient features in version 11.3 in recent live broadcasts .)

Here is a function (surprisingly, we have not done it before), which simply builds the expression from its head and arguments:



How is this useful? Well, it can save an explicit construction of pure functions with Function or & , for example, in this case:



Another function that is very simple at some level (but the choice of the name of this function was painful) is Curry . Curry ( « currying », , , ́ ́ ) , Curry [f, n] «currying in» n :



Curry :



Why is this useful? , (, Select ) « », , «curry in» :



, ? , Function & . Curry . , D , x :



x :



, Curry - . , , — Wolfram Language.

, , NearestTo Nearest ( Nearest NearestFunction ):



, . 5 , 10 / 3:



10.1 2015 , . 11.3 . — SequenceSplit . StringSplit : :



«Sequence family» SequenceReplace :




, Wolfram Language , , .

11.0 GeoHistogram , « » :



11.3 GeoSmoothHistogram :



11.3 ( callouts ) 3D-, ( ):



3D, FeatureSpacePlot3D ( , , «vocalizing» «crooking» ( — ) ):




, 11.3 , , , .

FindTextualAnswer , . «», , :



. , , , , . , , Wolfram|Alpha . , , , 5:



Hmmm , ? , :



:



FindTextualAnswer . , . , , , , Jeopardy!


, , , 11.3 . FindFaces ( ) :



FacialFeatures ( , ):



, , FindFaces , , 40 :




Wolfram Language , (, FacialFeatures ). Wolfram Language, . ( , MXNet , ), . — , . [ 1 , 2 3 ]

. Wolfram Language , , . . , , . , .

- : , ( ) , , . Neural Net Repository :



, . . , . . , — NetModel :



, FindTextualAnswer :



11.3 — , . , , . , — NetTrainResultsObject .

11.3 , CTCLossLayer ( ), (10- LSTM , , - . .). 11.3 . , , NetStateObject , , , .

. -, , . - — . 11.3 « », NetTake , NetJoin NetFlatten , , , . , , , — . . — .


For more than 30 years, our mission is to do as much more math as computational. And in version 11.3 we finally saw through an important, long-awaited area: asymptotic analysis.

Here is a simple example: find an approximate solution of a differential equation near x = 0:



At first it may look like a solution in the form of a power series . But be careful: there is an e (1 / x) factor that simply gives infinity in each order as a power series in x. But with version 11.3, we now have the functions of asymptotic analysis, which handle all possible scales of growth and oscillations, and not just order.

In the past, when I earned my living as a physicist , it always seemed that all the darkest forces were focusing on methods of outrage. There were regular perturbations and singular perturbations. There were such things as the WKB method , and the boundary layer method . The bottom line was always to calculate the expansion for some small parameter, but to achieve this goal in various cases, various tricks were always required. But now, after several decades of work, finally in version 11.3 we have a systematic way of solving these problems. Here is the differential equation, where we are looking for a solution for small Δ:



Back in version 11.2, we added many options to solve more complex constraints . But with the help of our methods of asymptotic analysis, we can also do other things important for various problems in areas such as number theory and the theory of computational complexity, which consists in comparing asymptotic growth rates.

This task: 2 ^ n ^ k is asymptotically less (n ^ m)! with n-> ∞? Result: yes, under certain conditions:



"Elementary" algebra


One of the features of Wolfram | Alpha that is popular among students is its Show Steps functionality, in which it synthesizes on-the-fly explanations showing how to get the answers it gives. But what are the actual steps, say, as a result of the Show Steps action for algebra? They are “elementary operations”, such as “add the corresponding sides of two equations”. And in version 11.3 we include functions to just do things like:





And, OK, it looks like these are really trivial functions that basically just work on the structure of the equations. And this is actually what I thought when I said that we should implement them. But, as the R & D team quickly specified in algebra, there are all sorts of traps (“what if b is negative?”, Etc.). That is where students are often mistaken, but that with all the algorithmic infrastructure in the Wolfram Language we can easily get it right:



Proof of


The Wolfram Language is mainly related to the results of calculations. But, getting a result, you can also ask why this is correct: you can ask for some kind of evidence showing that the answer is correct. And now, for more than 20 years, I have been thinking about how to find and present general evidence in a useful and computable way in the Wolfram Language. And I am very pleased that, finally, in version 11.3, the FindEquationalProof function provides an example, which we will generalize and base on in future versions. [ Live webcast meeting ]

My favorite success story in the automatic proof of theorems is the tiny (and actually the simplest) system of axioms for Boolean algebra, which I found in 2000 . This is just one axiom with one operator, which can be represented as a corresponding Nand operation. For 11 years , FullSimplify was actually able to use the automatic methods of checking theorems inside to be able to calculate things. So, here it starts with my axiom for Boolean algebra, and then calculates that Nand is commutative:



But it just tells us the result; he gives no evidence. Well, in version 11.3 we can now get proof:



What is the object of proof? From brief information it is clear that the proof has 102 steps. Then we can ask for the “proof graph”. The green arrow above represents the initial axiom; The red square at the bottom represents a proven thing. All nodes in the middle are intermediate lemmas, proved by each other in accordance with the compounds shown.



What is really in evidence? Well, it is difficult. But here is a data set that gives all the details:



You can get a somewhat more narrative form in the form of a laptop:



And then you can also get the "proof function", which is part of the code and can be performed to verify the result:



Unsurprisingly and uninteresting, this gives True after launch:



Now that we can create structures of symbolic evidence in the Wolfram Language, we have a lot of empirical metamathematics to continue the work, which I will discuss in the future a blog post. But, given that FindEquationalProof works with arbitrary “equalizing” symbolic relationships, it can be applied to many things — for example, checking protocols and strategies, for example, in such popular areas as the blockchain.

Growing knowledge base


The Wolfram Knowledge Base ( Wolfram Knowledgebase ) is growing every day — partly through systematic data transfer channels, and partly through new, curated data and clearly added domains. If someone asks, was added between versions 11.2 and 11.3, this is a slightly weird collection of things. There are more than 150 parameters about open companies . Also now there are more than 900 new features for Pluto and Mercury . There are 16,000 new anatomical structures , such as the neural pathways. There are about 500 new “ significant graphs ”. There are thousands of new mountains , islands , notable buildings and other geographical features. There are many new product features and new links to diseases . And much more.

But from the point of view of the usual everyday use of the Wolfram knowledge base, the most important new feature in version 11.3 is the system of prefetching objects. The knowledge base is naturally large, and it is stored in the cloud. But if you use the desktop system, it “magically” loads to you.

Well, in version 11.3, the magic became much stronger. Because now, when you request one particular element, the system will try to figure out what you might ask the next time and it will automatically start asynchronously to pre-load it, and therefore, when you really ask for it, it will already be on your computer - and you do not have to wait for it to download from the cloud. (If you want to prefetch "manually", you need to use the EntityPrefetch function. Please note: if you use the Wolfram Language in the cloud, the knowledge base is already "right there", so there is no need to download or prefetch.)

The whole mechanism of preliminary sampling is applied quite generally. For example, if you use Interpreter to interpret some input (for example, abbreviations of the US state), information on how to make interpretations will also receive a prefetch, so if you use a desktop, interpretations can be performed locally without communicating with the cloud.

Messages and mail


You can send emails with the Wolfram Language (using SendMail ) for decades. But since version 11.3, it can use full HTML formatting, and you can embed a lot of things into it — not just graphics and images, but also cloud objects, datasets, audio, etc. [ Live Meeting Broadcast ]

Version 11.3 also provides the ability to send text messages (SMS and MMS) using SendMessage . However, for security reasons, you can only send to your mobile phone number specified by $ MobilePhone (and, yes, of course, the number is confirmed).

The Wolfram Language has long allowed for importing email and mailboxes, and with the MailReceiverFunction function can also reply to incoming mail. But in version 11.3 something new has been added, this is the ability to deal with live mailboxes.

First connect to the mail server (IMAP, at the moment) (I do not show the authentication dialog):



Then you can basically use the Wolfram Language as a programmable email client. This gives you a set of current unread messages in your inbox:



Now we can select one of these messages, and we get a symbolic MailItem object, which, for example, we can delete:





System Level Operations


Version 11.3 supports many new operations at the system level. Let's start with a simple, but useful: remote program execution. The RemoteRun function is basically similar to Unix rsh: you give it a hostname (or IP address), and the command is executed there. The Authentication parameter allows you to specify a username and password. If you want to remotely run a permanent program, you can do this with RemoteRunProcess , which is a remote counterpart of the local RunProcess .

When working with remote computer systems, authentication is always a problem, and over the course of several years we are gradually building an improved symbolic authentication system in the Wolfram Language. In version 11.3, there is a new feature AuthenticationDialog , in which a number of correctly configured authentication dialog boxes appear. Then there is the GenerateSecuredAuthenticationKey , which generates SecuredAuthenticationKey OAuth objects that users can use to authenticate calls to the Wolfram Cloud from outside.

There are also several new import / export formats at the system level, such as BSON format (JSON-binary serialization format) and WARC (web archive format). There are also HTTPResponse and HTTPRequest formats , which (among many others) can be used to write the Wolfram Language web server with a few lines of code.

It has been several years since we introduced ByteArray objects to the Wolfram Language, and we constantly support their development. In version 11.3, BaseEncode and BaseDecode exist to convert between byte arrays and Base64 strings. Version 11.3 also expands Hash (which, among other things, works on byte arrays ) by adding various types of hashing (for example, double-SHA-256 and RIPEMD), which are used for modern needs like blockchain and cryptocurrency.

We always add more types of data that we can make computable in the Wolfram Language, and in version 11.3 one system data is one addition, such as you can get from the Unix ps command:



Needless to say, you can do a fairly detailed search for processes with certain properties. You can also use SystemProcesses to get an explicit list of ProcessObject symbolic objects that you can query and process (for example, using KillProcess ).



Of course, because everything is computable, it is easy to do things like graphing the beginning of processes running on your computer (and, yes, I last rebooted a few days ago):



If you want to understand what is happening around your computer, version 11.3 provides another powerful tool: NetworkPacketRecording . You may need to make some permissions settings, but then this function can record network packets passing through any network interface on your computer.

Here are just 0.1 seconds of the packets that go in and out of my computer when I sit here quietly and write this blog post:



You can view each package; here is the first one that was recorded:



Why is this interesting? Well, I expect that you will use it to debug quite regularly - and this is also useful for studying computer security, and not least because you can immediately translate everything into the standard Wolfram Language visualization, machine learning, and other functions. .

What was not mentioned


This is already a long blog post, but at 11.3 there are a lot of other things that I didn’t even mention. For example, there were all sorts of updates for import and export. As a much more efficient and reliable import of XLS , CSV and TSV . Or export animated png . Or support for metadata in audio formats such as MP3 and WAV . Or more complex color quantization in GIF , TIFF , etc. [ Live webcast of meetings 1 and 2 . ]

We introduced symbolic Audio objects in 11.0, and since then we have been developing audio functionality at a fast pace. Version 11.3 made digital audio more reliable (and supported for the first time in Linux). We also introduced the AudioPlay , AudioPause, and AudioStop functions that control the open AudioStream objects.

Also new is AudioDistance , which supports various distance measurements for sound. Meanwhile, AudioIntervals can now automatically split audio into segments separated by silence. And in a slightly different area, $ VoiceStyles gives a list of possible voices available for SpeechSynthesize .

Here is a small new mathematical function , which in this case gives a sequence of 0 and 1, in which each block of length-4 appears exactly once:



The Wolfram Language now has complex support for quantities and units — both explicit values ​​(for example, 2.5 kg) and symbolic “ quantitative variables ” (“ p , which have pressure units”). But as soon as you are inside, doing something like solving an equation, you usually want to "exclude units of measure." And in 11.3 there is now a function that systematically does this: NondimensionalizationTransform . There is also a new mechanism in 11.3 for the introduction of new types of quantities, using the IndependentPhysicalQuantity .

Most of Wolfram Knowledgebase’s built-in knowledge base is ultimately represented in terms of object storage, and in version 11 we introduced the explicit EntityStore to define new entity stores. Version 11.3 introduces the EntityRegister function, which allows you to register an entity store so that you can refer to the types of entities it contains, just as you would refer to built-in object types (for example, cities or chemicals).

Another thing that was introduced as an experimental feature in version 11.3 is the MongoLink package , which supports connecting to external MongoDB databases. We ourselves use MongoLink to manage data sets in terabytes and more for things like machine learning. In fact, the fact that MongoLink is part of our full-scale development effort, the results of which will be visible in future versions, contributes to the unimpeded support of extremely large amounts of data stored in appearance.

In version 11.2, we introduced ExternalEvaluate to run code in external languages, such as Python. In version 11.3, we experiment with the generalization of ExternalEvaluate to manage web browsers, creating a WebDriver structure. You can give all sorts of commands that have the same effect as clicking on a web browser page, or those that extract everything you can see on the page.

Here's how you can use Chrome (we support it and Firefox) to open a web page and then grab it:



Well, this blog post is getting long, but, of course, I can say more. Below is a more complete list of features that are new or updated in version 11.3:



But for me it is amazing how much there is in the Wolfram Language .1 release, and it has appeared in just a few months since the last version .1. This is a good indication of the amount of research and development that we manage to complete by building on the stack of technologies Wolfram Language that we have created. And yes, even at 11.3 there are many new places to explore. And I hope that many people will do this, and will use the newest tools that we have created for discovering and inventing all sorts of new and important things to the world.

For questions please contact info-russia@wolfram.com

Free trial version of Mathematica
Free trial Wolfram | One

Source: https://habr.com/ru/post/353972/


All Articles