Программа
'Технологический
k% = 20 'Количество экспериментов
DIM A!(k%, 10) 'Описание массива результатов эксперимента
DEF FNYtilda (X) = 143.98 + .436 * X'Функция вычисления Ytilda
GOSUB InputArray:
GOSUB GetN:
GOSUB GetSumDifMed:
GOSUB GetSumGrDifY:
FTilda = (n% - k%) * SumDifMed / ((k% - 2) * SumGrDifY)
FTabl = 18 * SumDifMed / (1.76 * SumGrDifY)
GOSUB GetMedXAndMedY:
GOSUB GetSumDifXY:
rTilda = SumDifXY / SQR(SumDifX2 * SumDifY2)
GOSUB GetQxy:
MedSxy = Qxy / (n% - 1)
MedSx = SQR(Qx / (n% - 1))
MedSy = SQR(Qy / (n% - 1))
rTilda2 = MedSxy / (MedSx * MedSy)
PRINT "n="; n%; " k="; k%
PRINT "SumDifMed="; SumDifMed; " SumGrDifY="; SumGrDifY
PRINT "FTilda="; FTilda
PRINT "SumDifXY="; SumDifXY
PRINT "SumDifX2="; SumDifX2; " SumDifY2="; SumDifY2
PRINT "rTilda="; rTilda
PRINT "MedX="; MedX; "MedY="; MedY
PRINT "SumXY="; SumXY
PRINT "SumX="; SumX; " SumY="; SumY
PRINT "SumX2="; SumX2; " SumY2="; SumY2
PRINT "Qxy="; Qxy; " Qx="; Qx; " Qy="; Qy
PRINT "MedSxy="; MedSxy
PRINT "MedSx="; MedSx; " MedSy="; MedSy
PRINT "rTilda2="; rTilda2
IF FTilda >= FTabl THEN
PRINT "Гипотеза о линейной зависимости НЕверна"
ELSE
PRINT "Гипотеза о линейной зависимости подтверждена"
END IF
END
GetQxy:
SumX = 0
SumY = 0
SumX2 = 0
SumY2 = 0
SumXY = 0
FOR i% = 1 TO k%
FOR j% = 1 TO 9
IF A!(i%, j% + 1) > 0 THEN
SumX = SumX + A!(i%, 1)
SumY = SumY + A!(i%, j% + 1)
SumX2 = SumX2 + A!(i%, 1) ^ 2
SumY2 = SumY2 + A!(i%, j% + 1) ^ 2
SumXY = SumXY + A!(i%, 1) * A!(i%, j% + 1)
END IF
NEXT j%
NEXT i%
Qxy = SumXY - SumX * SumY / n%
Qx = SumX2 - SumX ^ 2 / n%
Qy = SumY2 - SumY ^ 2 / n%
RETURN
GetSumDifXY:
SumDifXY = 0
SumDifX2 = 0
SumDifY2 = 0
FOR i% = 1 TO k%
FOR j% = 1 TO 9
IF A!(i%, j% + 1) > 0 THEN
DifX = A!(i%, 1) - MedX
DifY = A!(i%, j% + 1) - MedY
SumDifXY = SumDifXY + DifX * DifY
SumDifX2 = SumDifX2 + DifX ^ 2
SumDifY2 = SumDifY2 + DifY ^ 2
END IF
NEXT j%
NEXT i%
RETURN
GetMedXAndMedY:
MedX = 0
MedY = 0
Meter% = 0
FOR i% = 1 TO k%
FOR j% = 1 TO 9
IF A!(i%, j% + 1) > 0 THEN
MedX = MedX + A!(i%, 1)
MedY = MedY + A!(i%, j% + 1)
Meter% = Meter% + 1
END IF
NEXT j%
NEXT i%
MedX = MedX / Meter%
MedY = MedY / Meter%
RETURN
GetN:
n% = 0
FOR i% = 1 TO k%
FOR j% = 1 TO 9
IF A!(i%, j% + 1) > 0 THEN n% = n% + 1
NEXT j%
NEXT i%
RETURN
GetSumGrDifY:
SumGrDifY = 0
FOR i% = 1 TO k%
GOSUB GetSumDifMedY:
SumGrDifY = SumGrDifY + SumDifMedY
NEXT i%
RETURN
GetSumDifMedY:
GOSUB GetNiAndYMed:
SumDifMedY = 0
FOR j% = 2 TO Ni% + 1
SumDifMedY = SumDifMedY + (A!(i%, j%) - yMed) ^ 2
NEXT j%
RETURN
GetSumDifMed:
SumDifMed = 0
FOR i% = 1 TO k%
GOSUB GetNiAndYMed:
SumDifMed = SumDifMed + Ni% * (yMed - FNYtilda(A!(i%, 1))) ^ 2
NEXT i%
RETURN
GetNiAndYMed:
Ni% = 0
FOR j% = 2 TO 10
IF A!(i%, j%) > 0 THEN Ni% = Ni% + 1
NEXT j%
yMed = 0
FOR j% = 1 TO Ni%
yMed = yMed + A!(i%, j% + 1)
NEXT j%
IF yMed > 0 THEN
yMed = yMed / Ni%
ELSE
yMed = 0
END IF
RETURN
InputArray: 'Ввод масива экспериментов
PRINT
FOR i% = 1 TO k% 'Цикл обнуления массива
FOR j% = 1 TO 10
A!(i%, j%) = 0
NEXT j%
NEXT i%
FOR i% = 1 TO k% 'Цикл ввода элементов массива
PRINT "Введите результаты "; i%; "-го эксперимента "
INPUT "Вес "; A!(i%, 1)
INPUT "Количество ростов в данном эксперименте"; StatureQuantity%
IF StatureQuantity% > 9 THEN StatureQuantity% = 9
FOR j% = 1 TO StatureQuantity%
PRINT "Рост"; j%;
INPUT A!(i%, j% + 1)
NEXT j%
NEXT i%
RETURN
Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию