Программа


'Технологический
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


Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию