Программа


'Технологический
'Дебай
R=8.31

DEF FNFun!(X!)=X!^4*EXP(X!)/(EXP(X!)-1)^2     'Вычисление интегрируемой функции

DEF FNIntegral!(Left!, Right!, Break%)    'Вычисление интеграла
  LengthStep!=(Right!-Left!)/Break%/2     'Вычисление длины шага интегрирования
  X!=Left!+LengthStep!            'Начальное определение промежуточной абсциссы
  Sum1!=0                         'Обнуление промежуточной суммы 1
  Sum2!=FNFun!(X!)                'Начальное определение промежуточной суммы 2
  FOR i%=2 TO Break%              'Цикл набора промежуточных сумм
    X!=X!+LengthStep!             'Переопределение абсциссы
    Sum1!=Sum1!+FNFun!(X!)        'Набор промежуточной суммы 1
    X!=X!+LengthStep!             'Переопределение абсциссы
    Sum2!=Sum2!+FNFun!(X!)        'Набор промежуточной суммы 2
  NEXT i%
  FNIntegral!=LengthStep!/3*(FNFun!(Left!)+FNFun!(Right!)+2*Sum1!+4*Sum2!)
                                               'Определение значения интеграла
END DEF

DEF FNCv!(X!)=9*R/(X!)^3*FNIntegral!(.00001,X!,4)
'Вычисление исследуемой функции

DEF FNF!(X!)=FNCv!(X!)
'Связывание выводимой функции с вызовом из процедуры OutGraph


SUB OutGraph(Left!,Right!)                     'Процедура вывода графика
  MaxX%=319                                    'Максимальная координата X
  MaxY%=199                                    'Максимальная координата Y
  LINE (0,0)-(MaxX%,MaxY%),15,B                'Прорисовка рамки
  ScaleX!=(Right!-Left!)/(MaxX%*8)*10          'Вычисление масштаба по  оси X
  IF ScaleX!=0 THEN ScaleX!=1
                    'Если масштаб по оси X равен 0, то переопределение масштаба
  'Поиск максимального и минимального значений функции на выводимом промежутке:
  HiY!=FNF!(Left!)                             'Начальное определение максимума
  LoY!=HiY!                                    'Начальное определение минимума
  FOR i%=1 TO CINT(MaxX%*8/10)
                       'Цикл просмотра значений функции на выводимом промежутке
    BufY!=FNF!(Left!+i%*ScaleX!)            'Вычисление функции в текущей точке
    IF BufY!>HiY! THEN        'Если значение функции перевосходит максимальное
                   HiY!=BufY! 'то переопределение максимального значения функции
                  ELSEIF BufY!<LoY! THEN
                             'Иначе, если значение функции меньше минимального
                             'то переопределение максимального значения функции
                                      LoY!=BufY!
    END IF
  NEXT i%
  ScaleY!=(HiY!-LoY!)/(MaxY%*8)*10               'Вычисление масштаба по  оси Y
  IF ScaleY!=0 THEN ScaleY!=1
                    'Если масштаб по оси Y равен 0, то переопределение масштаба
  PSET (CINT(MaxX%/10),CINT(MaxY%*9/10-(FNF(Left!)-LoY!)/ScaleY!)),15
                                               'Прорисовка первой точки графика
  FOR i%=1 TO CINT(MaxX%*8/10)                 'Цикл прорисовки графика
    LINE -(CINT(i%+MaxX%/10),CINT(MaxY%*9/10-(FNF(Left!+i%*ScaleX!)-LoY!)/ScaleY!)),15
                                'Прорисовка линии от предыдущей точки к текущей
  NEXT i%
  OXy!=MaxY%*9/10+LoY!/ScaleY!                  'Вычисление Y-координаты оси OX
  'Если Y-координата оси OX выходит за границу вывода, то переопределение ее:
  IF OXy!>MaxY%*19/20 THEN OXy!=MaxY%*19/20
  IF OXy!<MaxY%/20 THEN OXy!=MaxY%/20
  LINE (CINT(MaxX%/20),CINT(OXy!))-(CINT(MaxX%*19/20),CINT(OXy!)),15
                                                             'Прорисовка оси OX
  'Прорисовка стрелки на оси OX:
  LINE (CINT(MaxX%*19/20),CINT(OXy!))-(CINT(MaxX%*18.5/20),CINT(OXy!+MaxY%/90)),15
  LINE (CINT(MaxX%*19/20),CINT(OXy!))-(CINT(MaxX%*18.5/20),CINT(OXy!-MaxY%/90)),15
  OYx!=MaxX%/10-Left!/ScaleX!                   'Вычисление X-координаты оси OY
  'Если X-координата оси OY выходит за границу вывода, то переопределение ее:
  IF OYx!>MaxX%*19/20 THEN OYx!=MaxX%*19/20
  IF OYx!<MaxX%/20 THEN OYx!=MaxX%/20
  LINE (CINT(OYx!),CINT(MaxY%/20))-(CINT(OYx!),CINT(MaxY%*19/20)),15
                                                             'Прорисовка оси OY
  'Прорисовка стрелки на оси OY:
  LINE (CINT(OYx!),CINT(MaxY%/20))-(CINT(OYx!+MaxX%/120),CINT(MaxY%/20)+MaxY%*9/160),15
  LINE (CINT(OYx!),CINT(MaxY%/20))-(CINT(OYx!-MaxX%/120),CINT(MaxY%/20)+MaxY%*9/160),15
END SUB

'----------------------------------------------------------------------------

'Ввод данных
INPUT "Введите температуру ", T!
INPUT "Введите темпертуру Дебая ", Teta!

SCREEN 2                         'Переключение видеосистемы в графический режим
CALL OutGraph(.01,3.5)           'Вывод графика
LOCATE 25,3                      'Установка курсора
PRINT "Cv=";FNCv!(Teta!/T!);     'Вычисление и вывод результата
END

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