Программа


'Эйлер
'Вывести функцию на интервале 
'с заданным шагом, заданную 
'производной 
DEF FNDerivative!(X!,Y!)=X!+sin(Y!/Sqr(10))  'Производная
DEF FNDifAyl!(X!,Y!,S,Xresult!)   'Вычисление значения исходной функции
    IF S<>0 THEN
       Break%=(Xresult!-X!)/S      'Определение шага разбиения
       for Meter%=0 to Break%-1
         Y!=Y!+S*(FNDerivative!(X!+Meter%*S,Y!))
                                      'Вычисление первообразной в точке Xresul
        NEXT Meter%
    END IF
    FNDifAyl!=Y!                          'Определение значения функции
END DEF

DEF FNF!(X!,Stp)=FNDifAyl!(X0!,Y0!,Stp,X!)   'Отображаемая функция

SUB OutGraph(Left!,Right!,Stp)  ' Процедура вывода графика
  MaxX%=127   'Максимальная координата X
  MaxY%=127   'Максимальная координата 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!,Stp) 'Начальное определение максимума
  LoY!=HiY!        'Начальное определение минимума
  FOR i%=1 TO CINT(MaxX%*8/10) STEP CINT(MaxX%*8/10/(Right!-Left!)*Stp)
                       'Цикл просмотра значений функции на выводимом промежутке
    BufY!=FNF!(Left!+i%*ScaleX!,Stp)'Вычисление функции в текущей точке
    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!,Stp)-LoY!)/ScaleY!)),15
                                               'Прорисовка первой точки графика
  FOR i%=1 TO CINT(MaxX%*8/10) STEP CINT(MaxX%*8/10/(Right!-Left!)*Stp)
                                                       'Цикл прорисовки графика
    LINE -(CINT(i%+MaxX%/10),CINT(MaxY%*9/10-(FNF(Left!+i%*ScaleX!,Stp)-LoY!)/ScaleY!)),15
                                'Прорисовка линии от предыдущей точки к текущей
  NEXT i%
  OXy!=MaxY%*9/10+LoY!/ScaleY!  'Вычисление Y-координаты оси OX
  'Определение масок типа линий:
  HiColor%=&HFFFF
  LoColor%=&HF0F0
  'Если Y-координата оси OX выходит за границу вывода, то переопределение
  'Y-координаты и определение типа линии:
  IF OXy!>MaxY%*19/20 THEN
                        OXy!=MaxY%*19/20
                        Style%=LoColor%
                      ELSEIF OXy!<MaxY%/20 THEN
                                             OXy!=MaxY%/20
                                             Style%=LoColor%
                                           ELSE
                                             Style%=HiColor%

  END IF
  LINE (CINT(MaxX%/20),CINT(OXy!))-(CINT(MaxX%*19/20),CINT(OXy!)),15,,Style%
                                                             'Прорисовка оси 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 выходит за границу вывода, то переопределение
  'X-координаты и определение типа линии:
  IF OYx!>MaxX%*19/20 THEN
                        OYx!=MaxX%*19/20
                        Style%=LoColor%
                      ELSEIF OYx!<MaxX%/20 THEN
                                             OYx!=MaxX%/20
                                             Style%=LoColor%
                                           ELSE
                                             Style%=HiColor%

  END IF
  LINE (CINT(OYx!),CINT(MaxY%/20))-(CINT(OYx!),CINT(MaxY%*19/20)),15,,Style%
                                                             'Прорисовка оси 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

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

X0!=1.6
Y0!=2.9
SCREEN 2                         'Переключение видеосистемы в графический режим
CALL OutGraph(1.6,4,0.05)        'Вывод графика

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