Section B2: Methods of Solving for Equilibrium

There are many methods of projecting a time series based on finding a relationship with another 

time series. These methods, such as linear regression, require that the related series already be 

projected into the future. Economic theory suggests that energy prices are based primarily on 

long-term energy demand and production costs, while energy demand depends on energy prices, 

economic activity, technology efficiency, and other factors. One can therefore build a simple 

model of energy prices and consumption by developing a series of equations relating energy 

demand to prices and energy prices to demand, including other factors in the equations as 

needed. Methods based on such a model include Jacobi optimization, Gauss-Seidel optimization, 

and the Adaptive Expectation method. The National Energy Modeling System (NEMS) uses 

these methods as well as the method of Regula Falsi, described below.

B2.1. Jacobi Optimization

Jacobi Optimization is an iterative method of solving a set of linear equations by replacing the 

independent variables with previous solved-for values. The method begins with a set of educated

guesses of the unknown values. We use these initial values to solve all of the equations in the set, 

and then we use the results to solve the equations a second time. We continue until the 

differences between the results of the successive iterations are small enough to fall within a 

predetermined tolerance or until a maximum number of iterations is completed.

As an example, consider the following equations, constructed as simple price and demand 

(linear) curves, with the quantity demanded declining as the price pp increases and the price of the 

product supplied increasing as the quantity demanded qq increases:

qq = 5.6 − (0.3 × pp), (B2.1.1)

and

pp = 0.7 + (2.3 × qq). (B2.1.2)

We start with an initial guess of pp = 0 and qq = 0, and solve both equations:

qq = 5.6 − (0.3 × 0) = 5.6, (B2.1.3)

and

pp = 0.7 + (2.3 × 0) = 0.7. (B2.1.4)

Next, we substitute pp = 0.7 into the equation for qq and qq = 5.6 into the equation for pp:

qq = 5.6 − (0.3 × 0.7) = 5.39, (B2.1.5)

and

pp = 0.7 + (2.3 × 5.6) = 13.58. (B2.1.6)

We continue substituting the resulting (pp, qq) pairs into the equations until we arrive in the 

neighborhood of the solution (pp = 8.0, qq = 3.2).
B2.2. Gauss-Seidel Optimization 

Much like Jacobi method, the Gauss-Seidel Optimization method is an iterative method of 

solving a set of linear equations by replacing the unknown variables with previously solved-for 

values and is initialized with educated guesses. The equations are arranged in a specified order, 

and each equation is solved in turn using the most recently available values. Since the equations 

are solved in sequence, the solution is at least partially dependent on the order in which the 

equations are solved. The accuracy of the initial guesses affects the speed of convergence.

The difference between the Gauss-Seidel method and the Jacobi method is that, in the Jacobi 

method, all equations are solved using the same set of data input, whereas, in the Gauss-Seidel 

method, each equation is solved using all data available at the time of its solution. The GaussSeidel method is most successful on a set of equations whose matrix representation is a strictly or 

irreducibly diagonally dominant or symmetric positive-definite matrix. If the matrix is not 

diagonally dominant, the method could result in a sequence of results that diverge rather than 

converge.

Using as an example the equations illustrating the Jacobi method, we have

qq = 5.6 − (0.3 × pp), (B2.2.1)

and

pp = 0.7 + (2.3 × qq). (B2.2.2)

We can start with an initial guess of pp = 0 and qq = 0. This time, we solve each equation in turn,

using the latest available pp and qq values. We first set pp = 0 and solve for qq:

qq = 5.6 − (0.3 × 0) = 5.6 (B2.2.3)

Next we set qq = 5.6 and solve for pp:

pp = 0.7 + (2.3 × 5.6) = 13.58 (B2.2.4)

Then we set pp = 13.58 and solve for qq:

qq = 5.6 − (0.3 × 13.58) = 1.526 (B2.2.5)

Similarly, we set qq = 1.526 and solve for pp:

pp = 0.7 + (2.3 × 1.526) = 4.2098 (B2.2.6)

We continue substituting the resulting pp and qq values into the equations until we arrive in the 

neighborhood of the solution (pp = 8.0, qq = 3.2). Note that the Gauss-Seidel method converges 

more quickly than does the Jacobi method.

Convergence can be tested for each variable each time it is re-estimated. After each pass through 

the entire set of equations, overall convergence can be tested, and the process is stopped once all
changes between iterations are within a set tolerance. We may also terminate the process after a 

fixed maximum number of iterations.

B2.3. Regula Falsi

Regula falsi, the method of false position, is a form of linear interpolation that can be used to 

iteratively solve a one-variable equation. Simple regula falsi may use direct proportion. If the 

equation be, for example,

182 = 4xx + xx⁄3, (B2.3.1)

we may initially set xx = 6 to obtain

4 × 6 + 6⁄3 = 26. (B2.3.2)

Because 26 is 7 times smaller than 182, we scale the initial guess (xx = 6) up by a factor of 7 to 

arrive at the answer, xx = 42. Clearly, equation B11.3.1 is also solvable by simple algebra.

Double false position can be used when the problem is more difficult and/or the equation is nonlinear. Just as before, we guess a solution and calculate the result. We then revise the guess 

enough so that we are fairly confident that the second guess will err in the opposite direction 

from the first one, e.g., if the first guess, gg1 gave a solution aa1 that was too high, we try a second 

guess gg2 that gives a low solution, aa2. Once the problem has been bracketed between gg1 and gg2, 

our next guess could be of the form

gg3 = (aa1 × gg2) − (aa2 × gg1)

(aa1 − aa2) . (B2.3.3)

The third trial should result in a point to one side of the answer, but closer. We then replace the 

old bracket point on that side with the newer point. If, continuing the example, the third guess gg3

be too low (like gg2), we would replace aa2 with aa3 in the equation above, and we would replace 

gg2 with gg3. If, however, gg2 be too high, we would replace aa1 with aa3 and gg1 with gg3. With 

enough iterations, we should converge on a solution, as long as the shape of the curve is either 

monotonically increasing or decreasing.

The key for solving problems using this method is to successfully bracket the answer quickly, 

i.e., have one guess that provides a too-high answer and a second guess that provides a too-low 

answer. Regula falsi works less well, or not at all, if the equations change across iterations.

B2.4. Adaptive Expectation Method

The basis for the adaptive expectation approach is the notion that increases in cumulative energy 

production would deplete domestic resources and thus place upward pressure on long-term 

energy prices. The following equation captures this general idea:

PPyy = �AAyy × QQyy

ee� + BByy
where PPyy is the Henry Hub natural gas spot price for a future year, yy, QQyy is the cumulative 

production from a specified starting year to year yy, e is a judgment-specified parameter, and AAyy

and BByy are computed as explained below.

The approach was developed to represent the following assumptions:

• Prices should be upward sloping as a function of cumulative natural gas production, as 

prices could be expected to rise as existing resources are depleted.

• The rate of change in the natural gas spot price is a function of the economical reserves 

that remain to be discovered and produced. The value of the parameter e determines the 

shape of the function.

The approach assumes that, when cumulative natural gas production reaches a certain level QQQQ, a 

target price PP results. In practice, the target production value PP is assumed, while QQQQ and the 

annual production growth rates are model-based estimates. The parameters AAyy and BByy are 

computed as follows:

AAyy = PP − PPPPyy−1

QQQQee − QQ yy−1 ee ,

and 

BByy = PP − AAyy × QQQQee,

where

DDyy−1= natural gas production in year yy − 1;

PP yy−1= Henry Hub natural gas spot price in year yy − 1; and

QQ yy−1= cumulative natural gas production from the starting year to year yy − 1.

The following equation extrapolates cumulative production for a future year yy:

QQyy = QQyy−1 + DDyy−1

This generates the expected Henry Hub spot prices:

PPyy = AAyy × QQyy

ee + BByy

= PP + (QQyy

ee − QQQQee) × (

PP − PPPPyy−1

QQQQee − QQ yy−1 ee )

The value for e is assumed to be .70 until the price reaches a point at which the unconventional 

recovery of natural gas becomes economic ($3.50 in real 1998 dollars), and 1.3 afterward, 

creating an inflection point in the curve.