Need a new search?

If you didn't find what you were looking for, try a new search!

Sticky Post – Read this first. Categories and Links in Mathemafrica

The navigability of Mathemafrica isn’t ideal, so I have created this post which might guide you to what you are looking for. Here are a number of different categories of post which you might like to take a look at:

Always write in a comment if there is anything you would like to see us write about, or you would like to write about.

How clear is this post?
By | January 17th, 2018|Uncategorized|0 Comments

Computational Complexity; A Soft Approach

Motivation: Mathematics for the Masses

It is my firm conviction, and I preach it when ever I can, that one day in
the near future, mathematics shall save us all. A ”grand claim,” I hear you
say; but not at all, mathematics is believed by many to be the language of
Mother Universe, and indeed, those who have adopted it as a native tongue
have been granted glimpses into her secrets. Intuitively, my claim is not hard
to defend, given the pervasive influence that technology has over our lives; from
health to communication, entertainment, art and culture; science has become an
indispensable companion. Amongst the sciences, mathematics is the common
denominator that binds them all. It is the life blood of all other scientific inquiry.
As the world faces seemingly intractable challenges, be it global health, world
peace or universal prosperity, it has become imperative that more of us engage
in scientific exploration and innovation, for, if history is anything to go by, this
is where we shall find the answers we seek.…

By | March 3rd, 2016|Uncategorized|0 Comments

Computational Complexity; Article 2

Beauty is in the Mind of the Beholder
Often mathematicians speak of finding beauty in their subject, it is reasonable to ask what they mean. Of course, one will get as many answers as there are maths practitioners, but I shall hazard a generalized answer here. Mathematicians deal with abstract objects that exist in the mind, and share a suspicion that these abstractions are in fact real. So like real things they have properties, and enter into relationships. The feeling is that if abstractions behave as real things, then they must themselves, at some level, be real. If they are real, then they must also have relations with other concrete things, and indeed, the ultimate aspiration is to develop an abstraction that describes the world. This is the fundamental quality that separates the practice of maths from, say, intellectual games. Our minds evolved to find order in the universe and mathematics gives us as systematic and dependable (to some extent) way of doing so.…

By | March 24th, 2016|Uncategorized|0 Comments

What can be computed? A practical guide to the theory of computation – by John MacCormick, a review

NB. I was sent this book as a review copy.

It’s not often that a textbook comes along that is compelling enough that you want to read it from cover to cover. It’s also not often that the seed of inspiration of a textbook is quoted as being Douglas Hofstadter’s Pulitzer prize-winning book Godel, Escher Bach. However, in the case of “What can be computed”, both of these things are true.

I am not a computer scientist, but I have spent some time thinking about computability, Turing machines, automata, regular expressions and the like, but to read this book you don’t even need to have dipped your toes into such waters. This is a textbook of truly outstanding clarity, which feels much more like a popular science book in terms of the journey that it takes you on. If it weren’t for the fact that it is a rigorous guide to the theory of computability and computational complexity, complete with a lot of well thought through exercises, formal definitions and huge numbers of examples, you might be fooled by the easy-reading nature of it into thinking that this book couldn’t take you that far.…

By | May 27th, 2018|Book reviews, Reviews|1 Comment

Quantum Computing (Part 0): A Brief Introduction

These days, the vogue in science and technology is all things quantum, especially in the continuously-advancing frontiers of computation and data analysis. Applications such as AI and crunching through Big Data require ever-faster processing of ever-larger datasets. The amount of data generated by companies such as Google and Facebook is already mind-boggling and is only set to increase at an exponential rate. However, it is clear that in many contexts, simply adding datacenters and processors is not going to be enough: a complete paradigm shift is required if these kinds of technologies are to become effective in the lives of billions of people around the world.
This is where the quantum realm comes in. At the smallest scales of our universe, the behaviours of the “classical” mechanics governing our everyday lives is replaced by something entirely different; the laws of quantum mechanics are unintuitive and confusing, hiding layers of complexity in ways that simply cannot exist at our macroscopic scales.

By | July 10th, 2017|Level: Simple|0 Comments

Computational Complexity: Article 4

Equations Speak Louder Than Words

We have thus far created a strong link between familiar intuition and formal mathematics, with the intent of constructing a framework with which to better analyse and understand the complexity of computations. We continue on this trajectory by classifying decision problems according to the resources they consume on deterministic (for the same input, will always produce the same output on different runs) and non-deterministic (for the same input, can produce different outputs on different runs) Turing machines. Our resource of consideration will be time, T(n), called time complexity, where n is input length. A similar analysis can be done for space or memory.

Definition 4.1 Let T(n): N → N (T(n)‘s domain and codomain is the set of Naturals) be a proper time function. Then DTIME(T(n)) is the time complexity class containing languages that can be recognized by deterministic Turing machines (DTM’s) that halt on all inputs in time T(n), where n is the length of an input.…

By | April 16th, 2016|Uncategorized|0 Comments

Computational Complexity: Article 3

Rise of the Machines II

In my last entry, we introduced a formal definition of a Turing machine (TM). In this article we will look closer at this mental device and see how it works. To begin with, we can examine what a physical TM might look like. I have included a picture from Wikipedia.

turing
Turing Machine Illustration, Wikipedia, (Drawing after Minsky, 1967, p.121)

A TM is made of tape of infinite length, consisting of chain of cells. In each cell there is a symbol which the machine can read or write over, one cell at a time, using the machine’s head. At any given time, the machine is in one of a finite number of states stored on it. It can do basic operations; move right one cell, move left one cell, read, print, erase and change states. By changing from one state to another, the machine can remember previously attained states.

By | April 6th, 2016|Uncategorized|0 Comments

Automatic Differentiation

Much of this content is based on lecture slides from slides from Professor David Barber at University College London: resources relating to this can be found at: www.cs.ucl.ac.uk/staff/D.Barber/brml

What is Autodiff?

Autodiff, or Automatic Differentiation, is a method of determining the exact derivative of a function with respect to its inputs. It is widely used in machine learning- in this post I will give an overview of what autodiff is and why it is a useful tool.

The above is not a very helpful definition, so we can compare autodiff first to symbolic differentiation and numerical approximations before going into how it works.

Symbolic differentiation is what we do when we calculate derivatives when we do it by hand, i.e. given a function f, we find a new function f'. This is really good when we want to know how functions behave across all inputs. For example if we had f(x) = x^2 + 3x + 1 we can find the derivative as f'(x) = 2x + 3 and then we can find the derivative of the function for all values of x.…

By | October 23rd, 2019|English, Uncategorized|0 Comments

Datascience for Neuroimaging: An Introduction, by Ariel Rokem and Tal Yarkoni – A review

NB. I was sent this book as a review copy.

From Princeton University Press

I initially presumed that this book would begin with a relatively advanced level of coding knowledge before delving into neuroimaging. However, its broader scope makes it a far better and more thorough resource. In fact, coding discussions start only after the first 50 pages. The initial 50 pages provide a superb introduction to the prerequisites for Python coding. Two particularly notable areas, unusual for books of this type, are the in-depth introductions to version control (Git) and computational environments and containers (Conda and Docker). Such topics are often omitted from introductory coding books, leading to significant challenges for students with some coding experience. For example, many students end up reinstalling Linux due to not setting up a virtual environment, indicative of the widespread lack of awareness among those with intermediate coding knowledge. Moreover, in-depth discussion of version control is rare in books focusing on specific applied data science topics.…

By | March 3rd, 2024|Book reviews, Reviews|0 Comments

Complexity from complex numbers – The beauty of the Mandelbrot set

We are about to show that you can get incredible structure from the simplest of algorithms when we use complex numbers.

The equation we are going to look at is an iterative equation:

 

z_{i+1}=z_i^2+C

 

with z_0=0. You simply get the next z_i from plugging in the previous one, squaring it and adding a number C. I’m going to give you a value for C, then you’re going to iterate this equation and see what happens. For instance, if I give you the number C=3:

 

\left(  \begin{array}{ccc}  i & z_i^2+C & \left| z_{i+1}\right| \\  1 & 0^2+3 & 3 \\  2 & 3^2+3 & 12 \\  3 & 12^2+3 & 147 \\  4 & 147^2+3 & 21612 \\  \end{array}  \right)

 

You can see that this number is just going to keep on increasing without end if we keep applying the algorithm. How about a smaller number, let’s say C=0.1:

 

\left(  \begin{array}{ccc}  i & z_i^2+C & \left| z_{i+1}\right| \\  1 & 0^2+0.1 & 0.1 \\  2 & 0.1^2+0.1 & 0.1121 \\  3 & 0.1121^2+0.1 & 0.112566 \\  4 & 0.112566^2+0.1 & 0.112671 \\  \end{array}  \right)

 

It looks like this is tending to some value. In fact it has come to a fixed point where z=z^2+0.1. There are actually two solutions to this equation but one of them is 0.112702 which is where we are tending towards.…

By | August 29th, 2015|English, Level: intermediate, Uncategorized|0 Comments