Программа
'Технологический
'Дебай
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
Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию