Построить графики функции, заданной в параметрически, при разных значениях параметра "а" (должна быть реализована возможность вывода нескольких графиков при разных значениях "а") x=a(sh(t) -t), y=a(ch(t)-1) (a>0).
Решение:
Program Ugraph; Uses Graph; Type Fun = Function(X:Real):Real; Procedure Graphic(F:Fun; XBeg,XEnd:Real); Var Max, Min, {Экстремальные точки функции в пределах диапазона} I, {Переменная цикла} Step, {Расчитываемый шаг} GradX, {Приращение функции на один шаг по X} GradY: Real; {Приращение функции на один шаг по Y} GraphicX, {Координата по X} GraphicY: Integer; {Координата по Y} Flag: Boolean; {Флаг - перемещена первая точка} Procedure Coord (CoordYBeg, CoordYEnd, CoordHMin, CoordHMax: Real); Var GradX, GradYX: Real; X, Y: Integer; Color: Word; BEGIN Color:=GetColor; SetColor (7); GradX :=GetMaxX/(CoordYEnd-CoordYBeg); GradYX:=GetMaxY/(CoordHMax-CoordHMin); If (CoordYEnd>0) And (CoordYBeg<0) Then Y:=Round(GradX*(0-CoordYBeg)); If CoordYEnd<0 Then Y:=GetMaxY; If CoordYBeg>0 Then Y:=1; If (CoordHMin<0) And (CoordHMax>0) Then X:=Round(GradYX*(CoordHMax)); If CoordHMin>0 Then X:=GetMaxY; If CoordHMax<0 Then X:=1 ; Line (1,X,GetMaxX,X); {Горизонтальная линия} Line (GetMaxX-4,X+5,GetMaxX,X); {Стрелочка} Line (GetMaxX-4,X-5,GetMaxX,X); {Стрелочка} Line (Y,1,Y,GetMaxY); {Вертикальная линия } Line (Y-5,5,Y,1); {Стрелочка} Line (Y+5,5,Y,1); {Стрелочка} SetColor (Color); End; Begin Step:=(XEnd-XBeg)/(GetMaxY-40); I:=XBeg; Max:=F(XBeg); Min:=F(XBeg); While I<=(XEnd+Step) Do Begin If Max<F(I) Then Max:=F(I); If Min>F(I) Then Min:=F(I); I:=I+Step; End; GradX:=GetMaxX/(XEnd-XBeg); GradY:=GetMaxY/(Max-Min); Coord (XBeg, XEnd, Min, Max); Flag:=True; I:=XBeg; While I<=(XEnd+Step) Do Begin GraphicX:=Round(GradX*(I-XBeg)); GraphicY:=Round(GradY*(Max-F(I))); If Flag Then MoveTo (GraphicX,GraphicY); { PutPixel(GraphicX,GraphicY,15);} LineTo(GraphicX,GraphicY); I:=I+Step; Flag:=False; End; End; Function F1(X:Real):Real; Begin F1:=Sin(x)+COS(x/2); End; Procedure GraphicIni; Var Mode, DriverDet: Integer; Begin Mode:=0; DriverDet:=Detect; InitGraph(Mode,DriverDet,'c:\BP\BGI'); SetColor(15); End; Begin GraphicIni; Graphic(F1,-10,10); ReadLn; CloseGraph; END.
|