Terence
unread,Oct 4, 2011, 5:23:55 PM10/4/11You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to
ok. Here are the two routines for solving the equations. k is 40-100
I added some explanations as comments
SUBROUTINE NORMEQ(XN,A,B,C,D,E,F,W)
DIMENSION Q(6,7)
COMMON Q
C SOLVING [A] * |X| =|N|
C W IS WEIGHT; XN IS THE =N PART.
C A,B,C,D,E,F ARE THE SOUGHT PARAMETERS
C Q IS ZEROED, THEN THIS ROUTINE IS CALLED k TIMES TO PASS THE kth VALUES
C (XN IS THE INPUT VARIABLE AVERAGE; ITS WEIGHT IS W)
Q(1,1) = Q(1,1) + A*A*W
Q(1,2) = Q(1,2) + A*B*W
Q(1,3) = Q(1,3) + A*C*W
Q(1,4) = Q(1,4) + A*D*W
Q(1,5) = Q(1,5) + A*E*W
Q(1,6) = Q(1,6) + A*F*W
Q(1,7) = Q(1,7) + A*XN*W
Q(2,2) = Q(2,2) + B*B*W
Q(2,3) = Q(2,3) + B*C*W
Q(2,4) = Q(2,4) + B*D*W
Q(2,5) = Q(2,5) + B*E*W
Q(2,6) = Q(2,6) + B*F*W
Q(2,7) = Q(2,7) + B*XN*W
Q(3,3) = Q(3,3) + C*C*W
Q(3,4) = Q(3,4) + C*D*W
Q(3,5) = Q(3,5) + C*E*W
Q(3,6) = Q(3,6) + C*F*W
Q(3,7) = Q(3,7) + C*XN*W
Q(4,4) = Q(4,4) + D*D*W
Q(4,5) = Q(4,5) + D*E*W
Q(4,6) = Q(4,6) + D*F*W
Q(4,7) = Q(4,7) + D*XN*W
Q(5,5) = Q(5,5) + E*E*W
Q(5,6) = Q(5,6) + E*F*W
Q(5,7) = Q(5,7) + E*XN*W
Q(6,6) = Q(6,6) + F*F*W
Q(6,7) = Q(6,7) + F*XN*W
RETURN
END
SUBROUTINE LSQSLN(X1,X2,X3,X4,X5,X6)
DIMENSION Q(6,7)
COMMON Q
C THIS ROUTINE IS CALLED TO SOLVE THE EQUATION
C REDEFINE SYMBOLS
AA = Q(1,1)
AB = Q(1,2)
AC = Q(1,3)
AD = Q(1,4)
AE = Q(1,5)
AF = Q(1,6)
AN = Q(1,7)
BB = Q(2,2)
BC = Q(2,3)
BD = Q(2,4)
BE = Q(2,5)
BF = Q(2,6)
BN = Q(2,7)
CC = Q(3,3)
CD = Q(3,4)
CE = Q(3,5)
CF = Q(3,6)
CN = Q(3,7)
DD = Q(4,4)
DE = Q(4,5)
DF = Q(4,6)
DN = Q(4,7)
EE = Q(5,5)
EF = Q(5,6)
EN = Q(5,7)
FF = Q(6,6)
FN = Q(6,7)
C FORWARD SOLUTION
A1 = AB/AA
B1 = AC/AA
C1 = AD/AA
D1 = AE/AA
E1 = AF/AA
BB1 = BB-A1*AB
C PAGE 177
BC1 = BC-A1*AC
BD1 = BD-A1*AD
BE1 = BE-A1*AE
BF1 = BF-A1*AF
BN1 = BN-A1*AN
B2 = BC1/BB1
C2 = BD1/BB1
D2 = BE1/BB1
E2 = BF1/BB1
CC2 = CC-B1*AC-B2*BC1
CD2 = CD-B1*AD-B2*BD1
CE2 = CE-B1*AE-B2*BE1
CF2 = CF-B1*AF-B2*BF1
CN2 = CN-B1*AN-B2*BN1
C3 = CD2/CC2
D3 = CE2/CC2
E3 = CF2/CC2
DD3 = DD-C1*AD-C2*BD1-C3*CD2
DE3 = DE-C1*AE-C2*BE1-C3*CE2
DF3 = DF-C1*AF-C2*BF1-C3*CF2
DN3 = DN-C1*AN-C2*BN1-C3*CN2
D4 = DE3/DD3
E4 = DF3/DD3
EE4 = EE-D1*AE-D2*BE1-D3*CE2-D4*DE3
EF4 = EF-D1*AF-D2*BF1-D3*CF2-D4*DF3
EN4 = EN-D1*AN-D2*BN1-D3*CN2-D4*DN3
E5 = EF4/EE4
FF5 = FF-E1*AF-E2*BF1-E3*CF2-E4*DF3-E5*EF4
FN5 = FN-E1*AN-E2*BN1-E3*CN2-E4*DN3-E5*EN4
C BACK SOLUTION
X6 = FN5/FF5
X5 = (EN4-X6*EF4)/EE4
X4 = (DN3-X6*DF3-X5*DE3)/DD3
X3 = (CN2-X6*CF2-X5*CE2-X4*CD2)/CC2
X2 = (BN1-X6*BF1-X5*BE1-X4*BD1-X3*BC1)/BB1
X1 = (AN -X6*AF -X5*AE -X4*AD -X3*AC -X2*AB)/AA
RETURN
END