Rem  n--- 方程的总项数(包括常数项)   m---拟和的点数
Rem b1--- 自变量数      t2---最高次方数
INPUT "n,m,b1,t2="; N, M, b1, t2
T1 = N - t2 * b1 - 1
If T1 = 0 Then T1 = 1
Dim A(N, N), X(N, M), y(M), A0(N), B0(N), X0(N), S0(N)
Dim X1(T1), X2(T1), B(N), F(N), G(N), ZA(M), ZC(M)
If t2 * b1 = N - 1 Then GoTo 70For I = 1 To T1
INPUT "X1,X2="; X1(I), X2(I)
Next I70  For K = 1 To b1 'M
     For J = 1 To M 'B1
      READ X(K, J)
      If t2 = 1 Then GoTo 100
       For T = 2 To t2
        X(K + (T - 1) * b1, J) = X(K, J) ^ T
       Next T
100  Next J
    Next KIf N - 1 = t2 * b1 Then GoTo 140
For I = 1 To N - 1 - t2 * b1
 For J = 1 To M
  X(t2 * b1 + I, J) = X(X1(I), J) * X(X2(I), J)
 Next J
Next I140 For J = 1 To M
     READ X(N, J)
    Next J150 INPUT "F0="; F0For I = 1 To N
 C = 0
 For T = 1 To M
  C = C + X(I, T)
 Next T
 X0(I) = C / M: C = 0
 For T = 1 To M
  C = C + (X(I, T) - X0(I)) ^ 2
 Next T
 S0(I) = Sqr(C)
Next IH = S0(N)
INPUT "G2=1 PRINT MIDDLE RESULT---G2="; G2
If G2 <> 1 Then GoTo 240
Print Tab(1); "I:"; Tab(10); "XBA:"; Tab(25); "SGM:"
For I = 1 To N
 Print Tab(1); I; Tab(10); X0(I); Tab(25); S0(I)
Next I240 For I = 1 To N - 1
     For J = I + 1 To N
      C = 0
       For T = 1 To M
        C = C + (X(I, T) - X0(I)) * (X(J, T) - X0(J))
       Next T
      A(I, J) = C / (S0(I) * S0(J))
      A(J, I) = A(I, J)
     Next J
    Next IFor I = 1 To N
 A0(I) = I: B0(I) = 0: A(I, I) = 1
Next IIf G2 <> 1 Then GoTo 320
Print "RELATION MATRIX"
For I = 1 To N
 For J = 1 To N
  Print A(I, J),
 Next J
 Print
Next I320 L = 0: S = 0
330 If L = N - 1 Then GoTo 600
340 M0 = 0For I = 1 To N - 1
 G(I) = A0(I)
Next I
GoSub 800F1 = M0 * (M - L - 2) / (A(N, N) - M0)
If G2 <> 1 Then GoTo 400
Print "F1="; F1
400 If F1 <= F0 Then GoTo 600
    A0(K) = 0: B0(K) = K: L = L + 1
    GoSub 900If S <> 0 Then GoTo 450
S = 1
GoTo 330
450 M0 = -1E+18For I = 1 To N - 1
 G(I) = B0(I)
Next I
GoSub 800F1 = -M0 * (M - L - 1) / A(N, N)
If G2 <> 1 Then GoTo 510
Print "F2="; F1
510 If F1 > F0 Then GoTo 340B0(K) = 0: A0(K) = K: L = L - 1
GoSub 900
GoTo 450600 C = 0
    For I = 1 To N - 1
     If B0(I) = 0 Then GoTo 660
     B(I) = A(I, N) * S0(N) / S0(I)
     F(I) = (M - L - 1) * A(I, N) * A(I, N) / A(I, I) / A(N, N)
     Print "I="; I, "B="; B(I), "F="; F(I)
     C = B(I) * X0(I) + C
660 Next IB(0) = X0(N) - C
FF = (M - L - 1) * (1 / A(N, N) - 1) / L
Print "B0="; B(0)
Print "F="; FF, "R="; R, "YN="; Y0, "F0="; F0
INPUT "STOP"; SSS
Z = 0
    For J = 1 To M
     L = B(0)
     For I = 1 To N - 1
      If B0(I) = 0 Then GoTo 720
      L = B(I) * X(I, J) + L
720  Next I
     C = X(N, J): M0 = (C - L): M01 = M0 / C
     If Abs(M0) > Abs(Z) Then Z = M0: ZI = J
     If Abs(M01) > Abs(ZC) Then: ZC = M01: ZA = J
     Print J, C, L, M0, M01
    Next JPrint "Z="; Z, "ZI="; ZI, "ZC="; ZC, ZA INPUT "G3=1 CHANGE F0 --- G3="; G3
If G3 = 1 Then GoTo 150
INPUT "G4=1 CHANGE Y ---G4="; G4
If G4 = 1 Then GoTo 140Open "d:\300mw\nhsj1.DAT" For Append As #5
Print #5, "----------------------------------------------------------"
Print #5,
Print #5, "sl9 = F(D6,D10)"; ""
Print #5,
Print #5,
Print #5, " 1   2    3     4    5    6    7    8     9"
Print #5, " X  X^2  X^3   X^4  X^5  X^6  X^7  X^8   X^9"
Print #5,
Print #5,
Print #5,
For K = 0 To N - 1
Print #5, "I="; K; "    B="; B(K), "F="; F(K)
Next K
Print #5,
Print #5, "FF="; FF; "   R="; R; "   YN="; Y0; "   F0="; F0
Print #5,
Print #5, "MAXAER="; Z, "MAXIER="; ZC
Close #5
EndData 706.68, 768.4, 641.91, 576.7, 442.21, 303.45
Data 604.91, 655.48, 551.62, 497.43, 385.71, 268.57
Data 0.8675, 0.8649, 0.8638, 0.8685, 0.8688, 0.8961
'p7
'DATA 164.17,139.01,125,90
'DATA 0.9147168,0.8917071,0.891622,0.8725243'DATA 935,1025,748,561,374
'DATA 218,227.3,201.4,188.6,179.4
''d0
'DATA 935,1025,841.5,748,561,374
''p2
''DATA 55.83,61.12,50.37,44.88,33.92,22.79
'DATA 36.46,39.39,32.77,29.35,22.25,14.97
''ez1
''DATA 0.794,0.8045,0.7692,0.7464,0.6429,.4937
'DATA 0.828,0.8361,0.8088,0.7904,0.7076,.5812
'dt
'DATA 517.92,523.48,612.32,626.38
'hts
'DATA 163.1,125.16,163.1,125.16
'DATA 26.59,26.25,25.89,25.43
'DATA 753.76,709.17,816.15,767.69
'DATA 106.79,87.44,106.01,86.9
'd0
'DATA 935,1025,748,467.5,935,1025,935,935,1025,1025
'DATA 806.64,805.91,808.04,800.8,806.37,805.59,805.59,804.62,806.8,803.79
'DATA 717.98,719.63,712.25,704.35,718.08,719.73,717.44,718.7,719.26,720.42
'DG
'DATA 935,1025,748,467.5,935,1025,935,935,1025,1025
''DP
'DATA 9.064,9.852,7.392,4.724,8.849,9.636,10.22,7.455,10.65,8.036
'DATA 906.4,985.2,739.2,472.4,884.9,963.6,1022.,745.5,1065.,803.6
''DH
'DATA 180.94,184.83,171.28,152.09,179.89,183.84,186.25,172.59,188.34,175.96
800 For I = 1 To N - 1
     If G(I) = 0 Then GoTo 870
     If A(I, I) >= 0.000001 Then GoTo 840
     Print "K="; I
     GoTo 870
840  V1 = A(I, N) * A(N, I) / A(I, I)
     If V1 <= M0 Then GoTo 870
     M0 = V1: K = I
870 Next IIf G2 = 1 Then Print "MAX="; M0, "K="; K
Return900 For I = 1 To N
     For J = 1 To N
      If I <> K And J <> K Then A(I, J) = A(I, J) - A(I, K) * A(K, J) / A(K, K)
     Next J
    Next IFor J = 1 To N
     If J = K Then GoTo 950
     A(K, J) = A(K, J) / A(K, K)
     A(J, K) = -A(J, K) / A(K, K)
950 Next JA(K, K) = 1 / A(K, K)
R = Sqr(1 - A(N, N))
Y0 = H * Sqr(A(N, N) / (M - L - 1))If G2 <> 1 Then GoTo 1000
Print "R1:";
For I = 1 To N
 For J = 1 To N
  Print A(I, J),
 Next J
 Print
Next I
Print "R="; R, "YN="; Y0
1000 Return'LZXL
'DATA 0.728,0.799,0.787,0.762,0.735,0.707,0.679,0.652,0.624,0.596
'OMG
'DATA 0.256,0.214,0.166,0.123,0.088,0.059
'DATA 0.059,0.038,0.021,0.0085,0.0046
'N(KW)
'DATA 0,10.0000,14.0000,19.0000,23.0000,30.0000,34.0000
'DATA .2312,.2750,.3000,.3500,.4000,.5050,.5750'MU
'DATA 0.489,0.717,0.903,1.07,1.22,1.37,1.52,1.67,1.83,2.01
'P2/P0
'DATA 0.933,0.874,0.822,0.775,0.729,0.684,0.638,0.593,0.547,0.498