One of the most appealing attributes of cities, is that many things that you might want are close by, unlike in rural areas. But if a city is built as a long very stretched out rectangle that resembles a line, then conveniences, that might have been expected to be close, turn out to be far away. In fact in a 170 km x 0.2 km city everything is just over 18 times further way than would be the case in a city of the same area that was contined in a square measuring 5.8 km by 5.8 km.
In this blog post we'll explain why things are 18 times further away and delve into the transport options.
Let's start by asking the question: in a rectangular city, what's the average distance between points?
When we have a rectrangular city, of dimensions A x B, we can evaluate the average distance between points in the city by calculating the following quardruple integral: \[D(A,B) = \frac{1}{A^2 B^2}\int_{0}^{A} \int_{0}^{A} \int_{0}^{B} \int_{0}^{B} \sqrt{(x_2 - x_1)^2 + (y_2 - y_1)^2} \hspace{3mm} dy_1 \hspace{1mm} dy_2 \hspace{1mm}dx_1 \hspace{1mm}dx_2\] A pure mathematician looking at that integral might think that it would be easier to deal with the average squared distance between points rather than the average distance because when were calculating the average distance we have a square-root that we need to deal with.
An applied mathematician might reply that we can work out the quadruple integral numerically and so the square-root won't cause us any serious problems. If fact the code to work out that quadruple integral is written out below and indeed has been embedded into this page, so if you'd like to try it here please do:
Inputs | ||
Width | km | |
Breadth | km | |
Steps in Calc | ||
| ||
Result | ||
Average Distance | km |
If you change one of the inputs above and hit enter, then the result will be updated.
The "Steps in Calc" above is the number of steps that the numerical integral is divided into. A higher number of steps should give a more accurate answer, but doubling the number of steps will cause a slow down of a factor of \(2^4=16\) in the quadruple integral.
Using that calculator we find that in a square city of dimension 5.8km x 5.8km, the average distance between points is 3.02km.
But in a streatched out city with dimensions 170km by 0.2km, the average distance between points is 56.63km, in other words 18.75 times further apart, so instead of travelling 1km to go to a convenience store, you'll need to travel over 18km.
That average distance of 56.63km that we got for the line city is a little less than one third of the line's length (170km). In fact on a line segment of lenght L, the average distance between points is L/3.
That statement can be justified by evaluating the following integral formula for the average distance between points on a line segment: \[ H = \frac{1}{L^2} \left( \int_{0}^{L} \int_{0}^{L} | x_1 - x_2 | dx_1 dx_2 \right) = \frac{L}{3} \]
Now if the city is set up with one main transport artery in each direction for people, then what kind of flow of people might be expected?
Let's start with a slightly unrealistic assumption: when travelling between points, people in the city choose destinations that are far away just as likely as close destinations. That could be the case when transport is cheap, fast and comfortable.
Suppose, for every two people in the city, there is one journey during the rush-hour commute. In the real world some people will make more than one journey at rush hour, for example parents making two journeys, one accompanying their child to school and another go on to their final destination.
If people didn't have a perference for near-by locations, then half of the destinations chosen by people who live in the east of the city will be in the western side of the city.
With a proposed population of 9 million, half of them (4.5m) are participating in the morning communte, half of those (2.25m) live in the eastern size of the city and half of them (1.125m) will cross the mid point of the city. In other words over one million people will be travelling on the main artery heading west during one hour of rush hour. I do indeed accept that not all the assumptions leading to that conclusion are absolutely realistic. But it does give an indication of the sort of flow of people that might be expected.
1.125 million people in an hour is about 312 people per second.
On a regular road with cars, suppose they are keeping a safe distance apart, with a 2 second gap between cars and an average of two people per car, then with 1 lane we can achieve a flow of 1,800 cars per hour which are carrying 3,600 people. But we seek 1.125 million people per hour and so we would need about 313 lanes of road in each direction. That would not be possible in a city whose total width is 200 meters.
An alternative approach would be to use a commuter train, with say 10 cariages each containing 300 people squashed in. They arrive at the stations at 2 minute intervals. So we would have 3,000 passing every 120 seconds. In other words 90,000 per hour. That's pretty good, but not nearly good enough. We're targeting over one million per hour.
So what's required is a very different approach.
Something quite different to cars or commuter trains.
Supoose people were arranged in double decker pods of 10, with 5 people at each level. The large 10 person pod could be made up of mini pods that would give solo passenger privacy as they travel.
If the pods travelled at 340km/hr. Then the journey time from one end of the 170km city to the other would be just 30 minutes. If we want to enable a flow of 1.125 million people per hour then we'll need 112,500 pods per hour and at a speed of 340 km / hour,
that will enable 340 x 1000 / 112,500 = 3.02 meters per pod, so we could have pods say 2 meters long with a 1 meter gap between pods.
When on the main artery, all commuters will travel at 340 km / hr. When approaching their destination they'll take an off-ramp and then decelerate. Conversely, those who wish to join the artery, will first accelerate along an on-ramp and then join after they have reached 340 km /hr. On the main artery, since all will be travelling at the same speed, there will be no accelerating, decelerating or over-taking.
If we now stick with our previous assumptions that people don't have a preference for local destinations. Then the number of people who will want to pass a point at say x on the main artery travelling east will be some constant times the proportion of people who are starting at points west of x multipled by the proportion of destinations that are to the east of x.
So the flow of people in an easterly direction past point x during rush hour will be: \[ F(x) = \alpha \left( \frac{x}{L} \right) \frac{L - x }{L} = \frac{\alpha}{L^2} (L x - x^2)\]
That will be at a maximum when the derivative with respect to x is zero.
So we have maximum flow at:
\[ 0 = L - 2x \] \[ \implies x = L / 2 \]
So we see the maximum flow will be at the mid-point of the line, with zero flow at the two end points \(x = 0\) and \(x = L\) .
One way to reduce the flow of people would be replace the line with a ring. The flow would then be much more even along the arteries. Also if the artery in one direction was blocked, people would still be able to get to their destination by going in the other direction, going the long-way round.
Another advantage of a ring over a line would be that the average distance between points (travelling along the artery and not cutting across the ring) would be L/4, where L is the cicumfirance of the ring. For the line, we had an average distance of L/3. So the ring would indeed make an improvement. However it would be very difficult to extend the ring-city, unlike a line-city which could grow at both end-points.
Below is a javascript function that can be used to calculate the quadruple integral above, evaluating the average distance between points in a rectrangle.
//////////////////////////////////////////////////////////
// A function written in Javascript to work out the average disance
// between points inside a rectrangular city.
function calcAvgDist(cityWidth, cityBreadth, steps){
      const xStep = cityWidth   / steps;
      const yStep = cityBreadth / steps;
      const epsilon = 1e-8;
      const xLimit = cityWidth   - epsilon;
      const yLimit = cityBreadth - epsilon;
      let runningSum = 0;
      for(             let x1 = 0; x1 < xLimit; x1 += xStep){
          for(         let x2 = 0; x2 < xLimit; x2 += xStep){
              for(     let y1 = 0; y1 < yLimit; y1 += yStep){
                  for( let y2 = 0; y2 < yLimit; y2 += yStep){
                  let xDiff = x2 - x1;
                  let yDiff = y2 - y1;
                  runningSum += Math.sqrt((xDiff * xDiff) + (yDiff * yDiff) );
                  }
              }
          }
      }
      return (runningSum * Math.pow(steps, -4));
}