Tuesday, September 22, 2009

My library

Over the years I made a little online collection of math and other books. In order to organize and manage this collection better, as well as to share it with other people, I decided to post links to all these books here, on my blog. I hope that you will find this collection of links useful. As of now it is rather small, but I plan to add more books. There is a surprising number of such books available online for free - but it takes time to find them. Some If you have a problem with your book linked from here, please let me know and I will remove the link immediately.
Since most of these books are available for free on the author page, I just linked those pages. In some case, the book is on a site that has no connection with the author. In such a case it is possible that it is an illegal copy - use it on your own risk. I provide the links for educational use only.

If you want to recommend a link for addition, you can leave a comment. In order to keep this post as tidy as possible I will not publish the comment, but I will consider adding the book(s). In order for a book to "qualify" it must be about math, physics or programing and it must be large enough (that is, not an article but an actual book). If a link a broken please leave a comment about it, I will try to fix it if possible.

1. Elements of Abstract and Linear Algebra - E. H.Connell (author page)
2. Foundations of Combinatorics with Applications - Edward A. Bender, S. Gill Williamson (author page)
3. Graph Theory 3rd Edition - Springer-Verlag Heilderberg (order / author page)
4. Algebraic Topology - Allen Hatcher (author page)
5. A Problem Course in Mathematical Logic - Stefan Balaniuk (author page)
6. Multivariable Calculus - George Cain and James Herod (author page)
7. Calculus - Gilbert Strang (author page )
8. Linear Methods of Applied Mathematics - Evans M. Harrell II and James V. Herod (author page - this book has a rather nasty license)
9. Complex Analysis - George Cain (author page)
10. Linear Algebra, Infinite Dimensional Spaces, and MAPLE - James Herod (author page)
11. Linear Algebra - Jim Hefferon (author page ) This book has complete solutions of exercises.
12. The Geometry and Topology of Three-Manifolds - William P. Thurston (author page)
13. Introduction to Probability - Charles M.Grinstead (author page)
14. Elementary Linear Algebra - Keith Matthews (author page) This book has complete solutions of exercises.
15. Understanding Calculus (author page - this is an online book, you can download it for 5$)
16. Elementary Calculus: An Infinitesimal Approach - H. Jerome Keisler (author page)
17. Combinatorics - Russell Merris (link)
18. Real Analysis - Royden (link)

1. Dive into Greasemonkey (author page)
2. SQL server 2008 (link)

1. Flatland: A Romance of Many Dimensions - Edwin A. Abbott (link - there are lots of other books on this site)

Bittorent links:
1. Mathematics - a collection of over 600 math books on different subjects.
2. Calculus Book Folder - a small collection of calculus books. Alternative link.
3. 100 Great Problems of Elementary Mathematics - link.
4. Mathematics As a Science of Patterns - link.

Sunday, September 20, 2009

Storing files on the Internet

This post is a response to a comment that was left on my post Google OS is already here. I don't usually post responses to comments in such a way, but the answer to this comment ended up being rather long (I though initially that I can split it into two comments, but in the end it is almost as large as two regular posts) . Also, while the initial comment was about Glide, in order to properly answer the points raises I needed to give a little summary of the ways I use to share and store files on the web. This post can be thought of as a list of services that provide the functionality that is provided by Glide, but are not "packed" in an online OS. (This obviously brings us to the following question - Why use many services if there is one that provides all that functionality? The answer to this will be given in the end of the post).

Firstly, concerning the main point of the comment, I agree that Glide has features that a remote desktop doesn't have. I didn't say it clear enough in the previous post so I will say it in this one - the part that Glide cloned from Windows is the visual aspect. The functionality that it has is close to what one would expect from an online OS, but the problem is the "frame". As I see it, Glide attempts to easy the transition from other operating system to itself, but by doing so it is bound to compromise on the visual aspect and thus on the user experience. With this in mind lets look on the features Glide provides that were mentioned in the comment and what alternatives to them are available (if any).

The first point to consider is compatibility. I must say that I have been using Linux for about 3 years and I never had a problem opening any file I got my hands on. I did have some problem with a .gbi file a few weeks ago, but in the end I found a way to open it is well. In the latest Linux distributions there is more then enough support for main file formats, and unless you happen to live in a country with draconian copyright laws, there is no problem to install support for many other file types. In Ubuntu, there is an official package that installs all the needed programs. Besides, there are sites (like Google Docs and DivShare) that automatically convert files to a format that most devices don't have a problem with. If your files are on the web anyway, it doesn't mater what site they are on exactly. All you need to do is to send a link.

The second point is synchronization. I never had real need for synchronizing files between many computers. However, I am aware of some programs that allow easy synchronization as long as the operating system is the same. For Ubuntu you have a nice program called Ubuntu One. It offers a free 2GB online storage that is automatically synchronized across all of your computers (right now it is in beta, but I doubt it will stay like this for a long time). I don't think that it is a good idea to use it for large files, but as long as the files are small enough (lets say under 5mb) it is a perfect solution. For Windows, Diino offers similar functionality. They provide much more space (100GB and more), but it is a paid service.
It is also worth mentioning that Picasa allows to sync albums. The free account is rather small, only 1GB, but as you are probably aware it is possible to buy more storage space. I personally prefer not to sync files across computers, but to store them on the web and if I need them to access them on the web. In this way, my files are scattered around my computers, but they are all available on the web. Although, even there they may be on different sites. For example right now my files are distributed in the following way:
1. Google Docs - for small documents. Most of my documents are well within the size limit.
2. DivShare - for large Documents and Video/Audio. This site provides 5GB of free storage (you can buy more). It works well for storing large (but not huge) files.
3. Picasa and flickr- for photos. They both don't reduce the photo quality and allow an easy enough privacy management.
4. Photobucket - for photos that I use on my SU blog. Photobucket is excellent for monitoring bandwidth use, so since the photos I post on SU are usually small, it is a perfect solution for me.

The third point is accessibility. As you all know it is possible to use Glide from any device that has an Internet connection and a browser. Thus, all your files are always accessible from any computer with an Internet connection. But using an online OS is not the only way to get this. This is another thing that I apparently didn't say clearly enough in my previous post - my example with a phone. It is well known that it is possible to store files on a mobile phone. But you can do more than this. It is possible to install an operating system on it. A modern mobile phone can act as an USB drive. And it is possible to boot a computer from such a disc and thus it is possible to install a full operating system on the phone. Then, for example, if you installed Ubuntu like this, you can add it to your Ubuntu one account and all your files will be synchronized. In addition to this, you don't need an Internet connection to use the OS. This means that all the programs you have on your computer are always with you. The only downside to this is that you need to connect the phone to another computer to use the OS, while Glide is possible to use from the phone itself.

I was asked in the comment: "How would you share a 1GB video with someone in a distant location when you were traveling with your mobile phone away from all of your computers?" - The answer to this depends on the location of the file. If it is on my phone, I would probably use Filemail. It allows sending files up to 2GB for free. If I have the file somewhere on the net, I would just send a download link. Obviously, if the file is only on my computer I would have no way of sending it, but I try to have an online copy of all the important files I have on my computer. The fact that my files a scattered around the web makes it a little disorganized, but I don't think that this is a bad thing. Moreover, did you hear about a site named eggdisk? They offered a really nice online storage service and delivered it for sometime. But then one day (without any warning), they stop providing the service, turned the site into ads and didn't even allowed the people to get their files. Because of this case I prefer to keep my files scattered like this around the web.

The forth and last point is integration of services. About this I agree completely. Right now the level of integration between Google services is rather lacking. However, it is probably worth mentioning that too much of integration will effectively force the user to use only the services provided by Google. But this is just a remark, I most certainly hope that the level of integration will increase. This point is, I think, an important one for those who want a system "that just works". Because of this, Glide is better for those who need to use an online OS for work.

To wrap it up, for different people and situations different solutions are needed. For me Glide fails to be anything else but a remote desktop. Since I don't want my staff to be in only one location on the net, I cannot use Glide in a way other people do effectively. Also, because of this I prefer to use all the services I mentioned in this post, and I am always looking for new sites that provide functionality useful to me. However, since this leads to a loss of time, there are people who prefer their files to be centralized and they want to have one simple way to access them all. For such people an online OS like Glide is clearly the perfect solution. Even the fact that it clones Windows appearance is only a bonus to them.

Friday, September 18, 2009

Indescribable numbers

This post is an attempt to explain what the term indescribable number means. Unfortunately, while this is a relatively well know term I frequently see it being misused. To understand it, we must firstly look on the proof that such numbers exist. It is a rather basic proof from set theory. What we need to do is to define two sets:

A={all the mathematical symbols and all the letters}
B={finite words in A}

Now, it is obvious that A is finite. B is not finite but it is only countably infinite (this is the smallest infinity). Therefore, B is smaller than the set of all numbers - R. Since all the possible descriptions are in B we conclude that there are numbers in R that cannot be described at all. Moreover, if you take away all the numbers that can be described the size of R will not change (this is a basic theorem in set theory). From this we can conclude that in fact most numbers are indescribable. This is a perfectly valid example of nonconstructive proof.

Unfortunately, this simple and short proof (I didn't proof all I said, but it is all just basic theorems of set theory) does little to explain what an indescribable number is. Lets consider some examples. For the first example, look on the following set:

C={words in A shorter than one hundred letters}

It is obvious that C is finite. Therefore there is a maximum number described by C. The next integer number (lets call it Y) is thus "the first integer number that cannot be described in 100 letters". But this description is less then 70 letters long. And this means that this number should be in C. Obviously this is a paradox. We got a number that is both in C and not in C.

Here is another example of a similar problem. It is possible to proof that if you randomly choose a real number the probability of it being an indescribable number is 1. So lets randomly choose a number (since we are choosing only one number we don't need the choice axiom). Naturally we get an indescribable number. Well, lets call this number "indescribable number 1". In the case you didn't notice I just gave a description to an indescribable number.

What really is going on is just an indexing problem. It is important to understand that both B and C are just sets of index numbers. If we have such a set we can use it to index another (in our case the set R). Mathematically, description as it was used in those examples is just a function from B to R (or from C to R). But the way we apply the indexing is arbitrary - we can choose any function we want. Lets first look on the 100 letters case. When we defined the set C what we really defined is the pair (C, f). In this pair f is a description function that for any x in C returns a specific number in R (I suppose that all the words in C describe some number, but you can do without it). Since we cannot define Y without firstly defining (C,f) the word ""the first integer number that cannot be described in 100 letters" is assigned by f to some random number. Then when we got a description for Y, we basically created a new pair (C, g). In this pair g is a new function that agrees with f on all C except for one word - ""the first integer number that cannot be described in 100 letters". To this word it assigns Y. For us this may seem illogical, because we think about meaning of words. But in this proof meaning is not important - the words are just a way to index.

With this in mind, lets consider the second example. In this case the number we choose belongs to a set R\f(B). When we gave it a description all we did was to change f in such a way that now this number belongs to f(B). It is obviously not a problem to do such a change (if we wanted to change the function for an infinite amount of values it might have been a problem, but for one index it is always easy to do).

So, what is an indescribable number? After all, we just saw that it is possible to describe any random number. The answer to this is actually simple. Mathematically it is a number that was not indexed by the function f. In normal language it means that it is a number that wasn't described. Form a normal person point of view this is a weird definition, but mathematically it actually makes a lot of sense. The basic idea is that while we have the option to choose any function f, we can only choose one and we cannot change our choice to another function latter on (this is because we need our language to be consistent). Under this conditions it becomes obvious that both examples are just a misunderstanding of what an indescribable number is. You cannot take a number that is not described and give it a description, because the description is already in use and you can have only one number for one description .
But then, what is the point in saying that such numbers exit? It is after all obvious that there are numbers that are not described as of now. Unfortunately this is not what the theorem is about. The point of this theorem is not to say that there are numbers that we didn't describe. This theorem says that no matter what function f we use there are always numbers that are not in f(B). In other words, there are always will be numbers that we didn't describe even if we used all of B for the purpose of such description.

Wednesday, September 16, 2009

Google OS is already here

As you all probably know Google recently announced that they are going to build a natural extension to Chrome. Obviously, a natural extension to a web browser is an OS (and no this is not a joke). Well, I wonder when I will get to use this.... I just hope I will manage to restrain myself from installing the first beta version available to the public.... Sometimes I feel that I love installing software a bit too much. But anyway, lately I feel that the final release of Google OS will be more of a formal step than anything else. The reason for this is that the services provided be Google are already close to being a real on-line OS. Before explaining what that means, lets look on a typical online OS. For example, Glide. If you look on it (here is a little video), you will see that it is basically an attempt to clone a regular OS on the web. The reason I am saying this is simple - just look on the way it looks. It is just like Windows. Obviously some details are different, but the overall idea didn't change. And this is a problem. There is no reason for an online OS to look like a regular OS - the whole point in the transition to online OS is to find a new concept, a new look for the OS. Moreover, the system offered by Glide is nothing more than an remote desktop. The only advantage it has over a normal system is the fact that it is available from any computer with Internet. But this is not enough for a system to be an online OS. Actually, if you want you files to always be available, you can install an operating system on you mobile phone, and then you will be able to use it on any computer with an USB port- even an Internet connection is not needed. Obviously this is better than what such an "online" OS offers.

Google on the other hand is close to making a real online OS. Even now their web services cover most of the things we expect from an OS. To better understand this point lets look on what we expect to get with an install of Windows and attempt to find the corresponding functionality in what Google currently offers. Naturally we will be only looking from the end user point of view.

The most obvious thing we get when installing Windows is "My Documents" folder. In the two latests releases there are attempts to further divide this folder into pictures, documents music and videos. Google provides us with Google Docs, YouTube, Google Video and Picasa Web Albums. Each one of them is meant for only one type of content and they are much better for managing your files that what you get with a default installation of Windows. (I don't know any good place to store music online, but I am sure that there are ways to do this as well, although it is not provided be Google). It is important to remember that while right now Google doesn't do mass file storage, there are sites on the Internet that do just that, and there are rumors flying around the Internet for years about Google storing 100% of our files. Besides, any really large files (like video longer that what you can put on YouTube) you probably don't want to store on the net because getting it from there takes a bit too much time with current Internet connection speeds.

The second thing we get is Office (and notepad, for those who use it). It is not provided be default but it is a basic enough product. Google gives us Google Docs which are for most users a good enough replacement for Microsoft office. Also if you don't like Google Docs you can use other products like Zoho for example. On this note, it is also possible to do light photo editing on the web. While I don't know about sites good enough for professional graphic design, I do know about a nice site for simple graphic editing - FotoFlexer.

The third and final step is communication. This is not something provided be Windows, but the reason we buy computers is to be able to communicate with other people. Since we are talking about an online OS, things like communication become something that is only natural for an OS to provide. And Google does just that. We get Gmail, Blogger, YouTube, Google Video, Google Docs and etc.. All of these products are either build for communication or have the option for collaboration like Google Docs. Right now we view them as services but for an online OS, those are major components.

The only thing Google is missing right now is a "frame". In order for all those services to become an OS we need something that will put them together and offer them to the public as an OS. The building of this frame is being done in three stages. The first stage is the links to other Google products that appear on the Google main page. Those links make all those services connected and easy to reach from each other. The second stage is the browser. The browser has a lot of importance. The way it works and looks is extremely important for an online OS (the reasons should be obvious). For this we now have Google Chrome. Did you notice that by default it has only two lines of menus compared to Firefox five lines? It is obvious that the developers attempt to make it even look like a frame, like the status bar in Windows.
The third and final stage is the Kernel. It is rather pointless to have two OS on one computer in the same time. If we are too use Google OS from Windows (or a Linux distro) we are basically using one OS to connect to another. This is something that needs fixing and Google is now doing just that - they are making a desktop component for the online OS, a component that will remove the need to use two OS in the same time. The only thing that this component needs to do is to boot up, start Google chrome and connect to the Internet. This simplicity is also the reason why they say that the OS is a natural extension of the browser. All it has to do is to make the browser start without anything else on the computer. Obviously, this also means that all the configurations that are needed to be done for the computer to work will be done from inside the browser (at least I think so). Doing this will require a lot of work on Google Chrome, but with Google resources and the help from the Linux community this project will almost surely receive, doing this all in a reasonable time is perfectly possible.

There was an interesting comment on this post that caused me to write another post about Glide and the functions it provides. The post is titled Storing files on the Internet.

Monday, September 14, 2009

New software wave

This post is basically a collection of reviews of different programs (not related to math) and my opinion about their uses. It also includes my opinion (and hopes) for some upcoming products.

Windows 7
Yesterday I finally got my hands on Windows 7. Since I am using Linux I obviously tend to think that Windows is inferior to Linux, but I believe that it is important to at least keep an eye on other operating systems. Also, from what I found about it on the net this particular release of Windows is worth looking into. In this short review I am going to only talk about installation and the overall feel of the system. The rest I'd rather leave to more competent people.
I used qemu to install it on a virtual machine, so I didn't test all the features (especially not all the graphic features) but I did get a general feel of the system. Somewhat surprisingly I will that I neither like nor dislike it - in another words it failed to make any impression. The install process went without any trouble and I think that it was faster than that of Win Xp (it is hard to tell when using qemu). It also looked much better in terms of graphic (although compared to linux it is ages behind, live CD is much better for installing an OS).
The desktop itself looks rather impressive. It is also good that you have a sticky note program as part of the OS already installed. I personally prefer to use a Google to-do list gadget, but for others notes might work better. The start menu is also rather nice, although I think I would like it to consist only of its left side - there is no need for the right side of the start menu to appear all the time, most users don't even use the options you have there (except for the shut down button). I also think that the way it slides instead of opening new menus is definitely an improvement. A similar menu is available for Ubuntu, you can get the deb file here.
Virtual folders are another wonderful idea. I would really like to test them using a few thousands photos. Hope they will appear in linux soon enough.
If you want a more in-depth review of Windows 7, I suggest these two posts: Windows 7 End user experience and Windows 7 Performance.

However, despite all those improvements Windows 7 is still well behind Linux. It requires a lot of space to install, it is less safe and it is still behind in usability. The graphics is clearly improving but there are less useful effects than I have in Linux (frankly there is no way that I will use an OS that doesn't support multiply desktops). I hope that in the future Microsoft will adapt more fearutres from linux, especially the desktop cube. There are other areas in which it is lacking but they didn't changed from XP so I m not going to repeat them here.

Overall, this is a very nice version of Windows. I am definitely going to recommend it to those who still insist on using Windows. The only thing to be careful about is RAM. You need at least 2GB of it so if you are upgrading from XP you must make sure that you have enough RAM. In my simulation I was running it on a 3GH single core virtual processor, so you don't need to think much about processors. Any computer bought in the last 3-4 years should be capable to run it just fine.

Google Chrome
Since I don't like downloading software that is not available for Ubuntu from a repository, I installed Chrome only recently. I was quite impressed with it. It is a very well build browser. It is fast and has a nice collection of features. Its main shortcoming is the lack of extensions. While some extensions are available, they are just too few. Actually I considered switching to it from Firefox, but decided not to. If there were more extensions I would switch in a second.
Since it is going to be an important part of the future Google OS it is quite encouraging to see it doing so well even now. It is also interesting to note that it looks like a frame. The developers clearly put a lot of effort in thinking ways to maximize the part of the browser that actually displays the web page. Frankly it looks like they are already thinking about how Chrome will be part of their OS.

Google Wave
I obviously didn't try this one myself - it will be available to the public only at the end of the month. But there is already enough information about it to make an opinion. Overall it looks like a very nice example of software evolution. It is definitely a great concept, especially for those who communicate with lots of friends using the Internet. Since I don't communicate with many people, I don't know how much I will be effected by this product but some of the ways it can be used are clearly interesting to me as well. For example there is an idea to use it for managing comments on blogs. In this way commenting will be done in real time. Also, it will probably be possible to comment on a blog post "inline". Such an option would allow one to talk with the author about the post in a wave. A typical case can be asking for futher information or explanation from the author or other readers (a bit like Wikipedia edit page) and then the author will be able to automatically update the actual post with the explanation. Obviously a feature like this is rather interesting for those who have blogs.
The only thing that seems to be missing (for now) is the ability to make a video call from inside a wave. However, this is a simple enough matter of integrating Google talk into it, so it will be probably done soon enough (if not by Google than by someone else). Despite the fact that all the information I have about it comes from a few videos, it appears that Google wave is a perfect candidate for a communication center of the upcoming Google OS.

In the next post I plan to write a bit about Google Chrome OS and what is an online OS.

Saturday, September 12, 2009

Math Pages is two years old today

I wonder if I should write that time went by slowly or should I instead say that it went by without me noticing? I suppose both will be correct. Anyway, I am rather happy to celebrate the second anniversary of Math Pages blog. I once read that most blogs only survive for about 6 month, after this period the person who made the blog leaves it for one reason or another. On the other hand, the blogs that manage to survive after six month usually stay around for a long time. Well, I certainly intend to continue posting, at least untill I am no longer a student.
Unfortunately, I must admit that my posting is really irregular. Originally I was aiming for one post per two days, but it didn't work out on the long term. Occasionally I do manage to post this many posts (and even more on some weeks) but there are periods when I don't post anything for more than a week. Right now the ratio of posts to days is one post per 4 days. As you can see that is far from what I want it to be... Well, since this is an anniversary post I suppose it would be logical to resolve to be more committed to posting, but I seriously doubt that that will really help.

It also worth to mention that while originally I intended for this blog to be about math with mentions of physics, that didn't work out. Instead I found out that I don't like to be restricted or even directed in my writing. I prefer to simply wright about what seems to be interesting to me at this particular moment. This is probably one of the main reasons why I couldn't put to use the skribit suggestion widget... But anyway, this blog ended up being mainly about math but I also occasionally write about computers (most linux). In the beginning I wrote a bit about physics, but with time it seems that my interests shifted away from it.

This post is probably a good opportunity to announce a little project that I am trying to start. Over the years I managed to collect a small library of math books in pdf format. Right now it is rather small, but it is easy enough to expand. There are after all lots of free math books available (legally) on the net. What I want to do is to create a post with links to all these books I collected and plan to collect (currently stored on my Google docs account). Having such an index will clearly make it easier for me to use my library, and will also make it easier for you to find those books if you need them. I already started to work on this idea, it will probably appear here in about two days (maybe more if I run in some kind of problem). Meanwhile if you have math (programing and physics will do as well) books in pdf format that you don't mind sharing with others, or you know about a site where such books can be found please contact me. While I am not going to promise to use what you sent, I will definitely consider it.

Wednesday, September 9, 2009


A few days ago I stumbled on an excellent collection of fractals. According to the site the collection is no longer updated, but nevertheless the images there are among the best fractal images I ever saw. There is also more fractals by the same author available here. I am somewhat worried about the site disappearing so I am going to download all the images on it to my computer and then upload them to a private Picasa album. This way I am not breaching the copyright on the images and if the page indeed closed down, please leave a comment on this post and I will link my Picasa album to this post.

In the case that you want even more fractal images, here is another site with hundreds of excellent fractals - Fractal world gallery.

Also, I noticed that a lot of visitors to my blog are actually after mathematical wallpapers. Form my own attempts to find such wallpapers I know that they are somewhat of a rarity (at least good ones). I currently have 14 math wallpapers in my Picasa albums, but this is obviously too little (and unfortunately not all of them are good enough to put on a screen). Since there seems to be a demand for such wallpapers I am going to try and get more maybe I will even attempt to draw some myself.

Monday, September 7, 2009

Correct math wrong results

In the previous post I mentioned that in some situations even the math we used is correct, the result we arrive at might not be correct or it might not apply in the real world. In this post I intend to discuss three such examples.

The first example is known as the Tompson lamp problem. Imagine the following situation: You switch a lamp on, than after one minute you switch it off. After 30 seconds you switch it on again, and then after 15 seconds you turn it off. We continue like this for two minutes. Now, is the lamp on or off? There is no real mathematical solution to this problem. One proposed solution is to say that the state of the lamp after two minutes is independent of its state before. So for all we know, after two minutes the lamp could have mutated into a pumpkin. Seriously.
Another solution originates from noticing that the behavior of the lamp can be though of as the infinite sum: 1-1+1-1+1-1+.... So if we find the sum we will get the solution. Consider the following:


And thus we found the sum. The result is usually interrupted as the lamp being half on. I don't know about you but I never saw a lamp being in that state.
What would happen if we are to do this switching in reality? Thats simple - the switch will break.
As you can see in this case modeling the situation mathematically fails completely.

The second example is an implementation of a theorem to a situation it cannot be applied in. The theorem I am talking about is the Brouwer's fixed point theorem. It is one of many fixed point theorems, which state that for any continuous function f with certain properties there is a point x0 such that f(x0) = x0. Sometime ago I read a statement that according to this theorem, if you take a glass of water and then mix it in anyway, there always will be a small part of the water that didn't change its position. If you are not careful this may seem reasonable. After all, mixing the water is a continues process. Unfortunately, this is simply wrong. The theorem itself is of course correct, but it cannot be used to discribe water in a glass. For this theorem to be used the body it is used on must be continues, but the water is discrete - it is composed from atoms. Because of this the theorem cannot be applied to such a situation, and the result we get by applying it forcefully is wrong.

The third example is known as the Banach–Tarski paradox. It is a theorem in set theoretic geometry which states that a solid ball in 3-dimensional space can be split into a finite number of non-overlapping pieces, which can then be put back together in a different way to yield two identical copies of the original ball. The reassembly process involves only moving the pieces around and rotating them, without changing their shape. Obviously this is not something that is possible to do in reality.
Again, the theorem is perfectly fine. The problem is that it cannot be applied to actual balls. During the proof of the theorem (at least the proof I am familiar with) we get a countable infinity of finite degree polynomials of the form p(sinx)=q. We need to choose x in such a way that for all the polynomials q is not 0. Since any polynomial have a finite number of roots, there is at most a countable infinity of values for x that doesn't give us what we want. Therefore we can always choose a value that will work.
Unfortunately x is the angel of rotation of the ball. If we want to choose a specific x we need firstly to make sure that we can rotate the ball by such an angel. Surprisingly this is not always possible. The reason for this is physical and not mathematical, so I am not going to explain it in detail, but the main idea is that we cannot make "moves too small" in the real world.

Mathematics is often said to be describing the real world. Personally I don't think so. Those and other similar examples have one common trait - correct math that cannot be applied in our world (at least not the way we want it to). But it can be used to describe a world of math.

Saturday, September 5, 2009

Painting the roads

Consider the following problem - given a road system is it possible to have a set of instruction which if followed will cause you to end in one specific point regardless of were you started? Obviously this depends on the road system. It is very easy to give examples of road systems for both cases. It turns out however that there are really simple conditions that guarantee the existence of such an instruction set.
In order to discuss this mathematically we will need to define a few things. Firstly we are not going to talk about roads but about finite directional graphs. Secondly for every vortex on the graph we will allow exactly d (d is the same for all vortexes) edges to come out from it and an unspecified number of edges to go to it. In such situation talking about "turning right" is meaningless so we will instead use colors. Thus every "color" is a function that for a given vortex tells us were to go. Naturally there is d colors. In this blog post I will denote colors with letters - for example (a), (b). Only one color means doing only one "step", so for longer steps we need "words" instead of letters. For example (abdc) means to execute (c) then (d) then (b) and finally (a). In this notation we are looking for a word that when executed will result in us landing on a vortex V regardless of our starting point. We will call such a word a sync word.

Required conditions
Firstly, lets see what obvious conditions are required. Basically we want a graph that is possible to color in such a way that there will be a sync word. So lets demand the following conditions:
1. The graph is strongly connected - there is a path between any two different vortexes.
2. The graph is not cyclic. To be more precise what we want is:
a. The greatest common divisor of the lengths of all the closed paths in the graph is 1.
b. It is not possible to divide the graph to a finite number of sets S1,....Sk such that for all i the edges go from Si to Si+1.

The conditions listed above are enough.

Prove history
I am not going to prove this theorem here. It is possible, but it requires a bit too much explanations and the explanations are hard to understand without drawings. Because of this I am not going to prove the theorem, but I will shortly discuss the history behind the prove and some important points behind the proof. If you want to read the actual prove it should be available online (somewhere).

There were three main stages in the attempt to prove the theorem. The first stage was done by Friedman. He defined a weight function of the graph, and showed that if the weigh of the graph is a prime number than there is a way to get a sync word unless the maximum weight (the maximum weight is the weight of the largest (by weight) subset of the graph that can be synced) is 1. As you can see this result is very far from proving the theorem, but it turned out to be an important step - the weight function he defined turned out to be useful in future attempts to prove the theorem.
The second stage was done by Kari. He proved that if the graph also has a fixed number of edges entering each vortex and this number is also d, then there is a way to get the sync word. While this is not what is needed this is a much better result than the previous one. It is also interesting to note that he managed to use induction in his prove, by finding a way to reduce the problem of finding a sync word for a large graph to finding such a word in a smaller graph.
The third and last stage was done by Abraham Tracman. This was done only in 2007. As I already said his prove requires complex explanations so I am not going to say much about it. The only thing that is important to say is that in the prove we look closely on the results of continuously using the same function on the graph. By analyzing the result we find out that in all the cases we can get two vortexes that satisfy a condition needed for Kari proof to work. Basically he showed that it is not needed to ask for a fixed number of edges entering the vortex, and by this completed the proof. In a way this is an interesting example of how people build on other people work.

I hope that by now it is clear that the problem has absolutely nothing to do with roads. Well, except for the name. Originally this problem originated from symbolic dynamics. However the name road coloring sound much better and it is possible to use the result in road building, although it is rather pointless to do so. All we managed to do is to show that there is a way to color the graph, so if we color the roads in the appropriate way we will be able to get the needed instruction set but it will require a more complex road system that what we have now.

In this particular case mathematical analysis of a problem gave a solution that is accurate and possible to use in the real world - but is this always correct? In the next post I will discuss some rather famous cases where correct math leads to solutions that are impossible in the real world.

Thursday, September 3, 2009

Windows XP on Ubuntu with qemu

If you were reading this blog for a long time you already know that I ditched Windows and moved to linux years ago. I have been using Linux for about 3 years now and I never regretted moving to it. However, annoyingly enough, there is one tiny thing that I cannot do on linux but I can do on Windows. In the Hebrew University, in order to get the exercises you need to download them from the university site. Most of the site works just fine in Firefox, but for some reason it is impossible to download the exercise with it. It is only possible to do so in IE.

The students have been asking the university to fix the site for the last two years, but without much success. It is of course possible to go to an university computer and to download everything there, but it is inconvenient. I tried installing IE using wine, but it didn't work. So in the end the only option I could think about was to install Windows using qemu. This post is a short how-to that shows how to install and then configure windows under qemu for it to work without doing problems.

The first step is obviously to obtain a windows cd or an iso file. The next is to install all the required packages:

sudo aptitude install qemu kqemu-common kqemu-source samba smbfs

This will install qemu and also samba for sharing files between Windows and Ubuntu. Next is to configure kqemu - it is an accelerator used by qemu:

sudo module-assistant prepare
sudo module-assistant auto-install kqemu
sudo addgroup --system kqemu
sudo adduser $USER kqemu
sudo modprobe kqemu

Now you need to log out for the changes to take effect. After logging in, the next step is to create a disk image. The minimum size is 4GB (because of the SP3 and other updates), but I used 10GB because I want to be able to install programs latter on without worrying about free space. The image will change it size dynamically, so don't worry about throwing away too much space. To create the image type:

qemu-img create -f qcow windows.img 10G

Now we can start the install process. If you have a CD insert it and type:

qemu -localtime -cdrom /dev/cdrom -m 512 -boot d windows.img

I set memory to 512MB but you can enter something else, preferably at least 384. If you want to install from an iso, put the iso in your home directory and type:

qemu -localtime -cdrom cdimagefile.iso -m 512 -boot d windows.img

After doing this, the install process will start. It worth to note that it will go on for longer than a regular install, so you will have to be patient. Once the install is done, you can start using Windows. To run windows you type:

qemu windows.img -localtime -m 512

Optionally you can create a launcher on the panel or the desktop. For this you will need an appropriate icon. I used this one:

As we all know, windows is much less safe than Linux. Luckily qemu has some options that allow us to protect the installation. The first such option is to create an overlay. This will allow you to use windows while saving all the changes in the overlay file and not in the original img file. If you do this and at some point at time Windows becomes corrupt you can just delete the overlay and create a new one without installing Windows from the beginning. To create an overlay type:

qemu-img create -b windows.img -f qcow windows.ovl

To use the overlay you will need to type:

qemu windows.ovl -localtime -m 512

For increased safety you can also use the snapshot mode. In this mode all the changes you make are written to a temporally file which is removed when you close qemu. To use this just add "-snapshot" to the end of the command.
The final step is to make it possible to share files between Windows and Ubuntu. To do this we can use samba. The first step is to create a shared folder. In my case I created a folder named AnatolySharedFiles in my home directory. Now we can setup samba to share this folder:

sudo addgroup samba
sudo adduser $USER samba
sudo aptitude install system-config-samba

Now you can go to System->Administration->Samba, and use it to add the folder you want to share and to add a user password for yourself. Now all that remains is to configure Windows. The first step is to go to My Computer->Properties->Computer name and enter the correct data. Then go to Network places to create the network. The next step is to mount the shared folder as a network drive (this seems to be the best option to me,buy you can access it from network places as well), this is done by clicking on My Computer->Map network drive.

After doing all this you hopefully have a working Windows and I have an easy way to get my math homework...