
Диплом / Приложение4
.docПриложение №4
Листинг программы «Метод наименьших квадратов»
CLS
OPEN "D:\printin\Диплом\Расчеты\Перехо~1\regress.tmp" FOR INPUT AS #1
OPEN "D:\printin\Диплом\Расчеты\Перехо~1\Pregress.tmp" FOR OUTPUT AS #2
DIM A(10, 10), B(10), C(2 * 10), X(10)
H1 = 84
DIM X1(H1), Y1(H1)
FOR I = 0 TO H1: X1(I) = I: INPUT #1, Y1(I): NEXT I
CLOSE #1
3 FOR I = 1 TO 10: FOR j = 1 TO 10: A(I, j) = 0: NEXT j: NEXT I
FOR I = 1 TO 10: B(I) = 0: NEXT I
FOR I = 1 TO 20: C(I) = 0: NEXT I
PRINT "Введите степень полинома М="; : INPUT "", n
n = n + 1
h = H1
FOR I = 1 TO h
X = X1(I): y = Y1(I)
f = 1
FOR j = 1 TO 2 * n - 1'
IF j > n THEN 1
B(j) = B(j) + y
y = y * X
1 C(j) = C(j) + f
f = f * X
NEXT j
NEXT I
FOR I = 1 TO n
k = I
FOR j = 1 TO n
A(I, j) = C(k)
k = k + 1
NEXT j
NEXT I
FOR I = 1 TO n - 1
FOR j = I + 1 TO n
A(j, I) = -A(j, I) / A(I, I)
FOR k = I + 1 TO n
A(j, k) = A(j, k) + A(j, I) * A(I, k)
NEXT k
B(j) = B(j) + A(j, I) * B(I)
NEXT j
NEXT I
X(n) = B(n) / A(n, n)
FOR I = n - 1 TO 1 STEP -1
h = B(I)
FOR j = I + 1 TO n
h = h - X(j) * A(I, j)
NEXT j
X(I) = h / A(I, I)
NEXT I
PRINT "Коэффициент полинома "
FOR I = 0 TO n - 1: PRINT "A("; I; ")="; X(I + 1): PRINT #2, X(I + 1): NEXT I: CLOSE #2
2 LOCATE 21, 15: PRINT "Будете пpодолжать pасчет в точках X(I)? D/N"
4 z$ = INKEY$
IF z$ = "" THEN 4
IF z$ = "d" OR z$ = "D" THEN 5
IF z$ = "n" OR z$ = "N" THEN CLS : GOTO 3
GOTO 4
5 LOCATE 21, 15: PRINT STRING$(60, " ")
LOCATE 16, 25: PRINT STRING$(50, " ")
LOCATE 16, 25: PRINT "Введите значение X= "; : INPUT "", z
S = 0
FOR I = n TO 2 STEP -1: S = (S + X(I)) * z: NEXT I
LOCATE 17, 25: PRINT STRING$(50, " ")
LOCATE 17, 25: PRINT "Значение Y(x)="; S + X(I)
GOTO 2
END