home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1989 / 06 / grafdemo.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1988-10-03  |  7.6 KB  |  220 lines

  1. program GRAFDEMO;
  2.  
  3. uses
  4.   GRAPH,PGRAPH;
  5. var
  6.   f,x,y,x1,y1:Vektor;
  7.   xmin,xmax,ymin,ymax:real;
  8.   n:word;
  9.  
  10.  
  11. function f1(x:real):real;                    { zu Beispiel 1 }
  12. begin
  13.   f1:=sin(2*x)+2*cos(x);
  14. end;
  15.  
  16. function f2(x:real):real;                    { zu Beispiel 1 }
  17. begin
  18.   f2:=2*cos(2*x)-2*sin(x);
  19. end;
  20.  
  21. procedure Frequenzgang;                        { zu Beispiel 2/3 }
  22. const C=10E-6; R1=1; R2=1.0; f1=100; f2=1E6;
  23. var i:word; w,Freq,dLogf,z:real;
  24. begin
  25.   n:=100; dLogf:=(LOG10(f2)-LOG10(f1))/(n-1);
  26.   for i:=1 to n do begin
  27.     Freq:=f1*EXP10((n-i)*dLogf); w:=2*Pi*Freq;
  28.     z:=1+w*R2*C*w*R2*C;
  29.     x[i]:=R1+R2/z;
  30.     y[i]:=-w*R2*R2*C/z;
  31.     f[i]:=Freq;
  32.   end;
  33. end;
  34.  
  35. procedure Spirale;                            { zu Beispiel 5 }
  36. const a=300; k=0.19;
  37. var r,phi,dphi:real; i,m:word;
  38. begin
  39.   i:=0; phi:=0; dphi:=pi/20;
  40.   for m:=1 to 3 do begin                        { 3 Umdrehungen }
  41.     repeat
  42.       i:=i+1;
  43.      r:=a*EXP(k*phi); x[i]:=r*cos(phi); y[i]:=r*sin(phi);
  44.       phi:=phi+dphi;
  45.     until phi>=2*m*pi;
  46.   end;
  47.   n:=i;
  48. end;
  49.  
  50. procedure Beispiel1;
  51. var i:byte; a,b,dx:real;
  52. begin
  53.   n:=50; a:=-2*PI; b:=2*PI; dx:=(b-a)/(n-1);        { Werte berechnen }
  54.   for i:=1 to n do begin
  55.     x[i]:=a+(i-1)*dx;                             { Funktion f1(x) }
  56.     y[i]:=f1(x[i]);
  57.     x1[i]:=x[i];                                  { Ableitung f2(x) }
  58.     y1[i]:=f2(x[i]);
  59.   end;
  60.   OpenGraphik;                                { Initialisieren }
  61.   SetTextStyle(SmallFont,HorizDir,5);            { Ueberschrift }
  62.   SetTextJustify(RightText,RightText);
  63.   OutTextXY(GetMaxX,0,'Beispiel 1       ');
  64.   GraphikWindow(70,GetMaxX-20,45,GetMaxY-20);       { Graphikfenster }
  65.   Extrema(x,n,xmin,xmax);                         { Ausdehnung }
  66.   Extrema(y,n,ymin,ymax);
  67.   Uscale(xmin,xmax,ymin,ymax,true,true,5);        { Benutzersystem }
  68.   XAxis(xmin,xmax,'x',SmallFont,5);            { x-Achse }
  69.   YAxis(ymin,ymax,'f(x)',SmallFont,5);            { y-Achse }
  70.   XGrid(0);                                        { x-Nullinie }
  71.   Ygrid(0);                                         { y-Nullinie }
  72.   Curve(x,y,n,SolidLn,ThickWidth,Yellow);         { Graph zeichnen }
  73.   Curvex(x,y,n,black);                        { Stuetzpunkte }
  74.   Curve(x1,y1,n,DashedLn,NormWidth,LightRed);    { Ableitung zeichnen }
  75.   Curvex(x1,y1,n,white);
  76.   readln;                                    { Warten }
  77.   CloseGraphik;                            { Beenden }
  78. end;
  79.  
  80. procedure Beispiel2;
  81. begin
  82.   Frequenzgang;                              { Werte berechnen }
  83.   OpenGraphik;                                { Initialisieren }
  84.   SetTextStyle(SmallFont,HorizDir,5);            { Ueberschrift }
  85.   SetTextJustify(RightText,RightText);
  86.   OutTextXY(GetMaxX,0,'Beispiel 2       ');
  87.   GraphikWindow(70,GetMaxX-20,45,GetMaxY-20);       { Graphikfenster }
  88.   Extrema(x,n,xmin,xmax);
  89.   Extrema(y,n,ymin,ymax);                         { Benutzer- }
  90.   Uscale(xmin,xmax,ymin,ymax,false,true,50);      { koordinatensystem }
  91.   XAxis(xmin,xmax,'Re Z',SmallFont,5);            { x-Achse }
  92.   YAxis(ymin,ymax,'Im Z',SmallFont,5);            { y-Achse }
  93.   XGrid(0);                                        { x-Nullinie }
  94.   Ygrid(0);                                         { y-Nullinie }
  95.   Curve(x,y,n,SolidLn,ThickWidth,Yellow);         { Graph zeichnen }
  96.   Curvex(x,y,n,black);                            { Punkte eintragen }
  97.   readln;                                    { Warten }
  98.   CloseGraphik;                            { Beenden }
  99. end;
  100.  
  101. procedure Beispiel3;
  102. var i:word;
  103. begin
  104.   Frequenzgang;                              { Werte berechnen }
  105.   for i:=1 to n do begin
  106.     f[i]:=LOG10(f[i]);
  107.     y[i]:=-y[i];
  108.     x[i]:= x[i]-1;
  109.   end;
  110.   OpenGraphik;                                { Initialisieren }
  111.   SetTextStyle(SmallFont,HorizDir,5);            { Ueberschrift }
  112.   SetTextJustify(RightText,RightText);
  113.   OutTextXY(GetMaxX,0,'Beispiel 3       ');
  114.   GraphikWindow(70,GetMaxX-20,45,GetMaxY-20);       { Graphikfenster }
  115.   Extrema(f,n,xmin,xmax);
  116.   Extrema(y,n,ymin,ymax);                         { Benutzer- }
  117.   Extrema(x,n,ymin,ymax);                         { koordinatensystem }
  118.   Uscale(xmin,xmax,ymin,ymax,false,false,5);
  119.   LogXAxis(xmin,xmax,'f [Hz]',SmallFont,5);        { x-Achse }
  120.   YAxis(ymin,ymax,'Re Z und -Im Z',SmallFont,5);    { y-Achse }
  121.   XGrid(0);                                        { x-Nullinie }
  122.   Ygrid(0);                                         { y-Nullinie }
  123.   Curve(f,x,n,SolidLn,ThickWidth,LightRed);         { Kurve 1 zeichnen }
  124.   Curvex(f,x,n,White);
  125.   Curve(f,y,n,SolidLn,ThickWidth,LightBlue);         { Kurve 2 zeichnen }
  126.   Curvex(f,y,n,White);
  127.   readln;                                    { Warten }
  128.   CloseGraphik;                            { Beenden }
  129. end;
  130.  
  131. procedure Beispiel4;
  132. var i:word; a,b,dx:real;
  133. begin
  134.   n:=100; a:=-50; b:=200; dx:=(b-a)/(n-1);         { Werte berechnen }
  135.   for i:=1 to n do begin
  136.     x[i]:=a+(i-1)*dx;
  137.     y[i]:=EXP10(f1(x[i]));
  138.   end;
  139.   OpenGraphik;                                { Initialisieren }
  140.   SetTextStyle(SmallFont,HorizDir,5);            { Ueberschrift }
  141.   SetTextJustify(RightText,RightText);
  142.   OutTextXY(GetMaxX,0,'Beispiel 4       ');
  143.   GraphikWindow(70,GetMaxX-20,45,GetMaxY-30);       { Graphikfenster }
  144.   Extrema(x,n,xmin,xmax);
  145.   Extrema(y,n,ymin,ymax);                         { Benutzer- }
  146.   Uscale(xmin,xmax,ymin,ymax,false,false,5);      { koordinatensystem }
  147.   LogXAxis(xmin,xmax,'x',SmallFont,5);            { x-Achse }
  148.   LogYAxis(ymin,ymax,'y',SmallFont,5);            { y-Achse }
  149.   XGrid(0);                                        { x-Nullinie }
  150.   Ygrid(0);                                         { y-Nullinie }
  151.   Curve(x,y,n,SolidLn,NormWidth,Yellow);         { Graph zeichnen }
  152.   Curvex(x,y,n,black);                        { Stuetzpunkte }
  153.   readln;                                    { Warten }
  154.   CloseGraphik;                            { Beenden }
  155. end;
  156.  
  157. procedure Beispiel5;
  158. var i:word; a,b,dx:real;
  159. begin
  160.   Spirale;                                { Werte berechnen }
  161.   OpenGraphik;                                { Initialisieren }
  162.   SetTextStyle(SmallFont,HorizDir,5);            { Ueberschrift }
  163.   SetTextJustify(RightText,RightText);
  164.   OutTextXY(GetMaxX,0,'Beispiel 5       ');
  165.   GraphikWindow(70,GetMaxX-20,45,GetMaxY-20);       { Graphikfenster }
  166.   Extrema(x,n,xmin,xmax);
  167.   Extrema(y,n,ymin,ymax);                         { Benutzer- }
  168.   Uscale(xmin,xmax,ymin,ymax,true,true,25);       { koordinatensystem }
  169.   XAxis(xmin,xmax,'x',SmallFont,5);            { x-Achse }
  170.   YAxis(ymin,ymax,'y',SmallFont,5);            { y-Achse }
  171.   XGrid(0);                                        { x-Nullinie }
  172.   Ygrid(0);                                         { y-Nullinie }
  173.   Curve(x,y,n,SolidLn,NormWidth,Yellow);         { Graph zeichnen }
  174.   readln;                                    { Warten }
  175.   CloseGraphik;                            { Beenden }
  176. end;
  177.  
  178. procedure Beispiel6;
  179. var i:word; a,b,dx:real;
  180. begin
  181.   Frequenzgang;                            { Teilbild 1 }
  182.   OpenGraphik;                                { Initialisieren }
  183.   SetTextStyle(SmallFont,HorizDir,5);            { Ueberschrift }
  184.   SetTextJustify(RightText,RightText);
  185.   OutTextXY(GetMaxX,0,'Beispiel 6       ');
  186.   GraphikWindow(70,GetMaxX-340,90,GetMaxY-20);      { Graphikfenster }
  187.   Extrema(x,n,xmin,xmax);
  188.   Extrema(y,n,ymin,ymax);                         { Benutzer- }
  189.   Uscale(xmin,xmax,ymin,ymax,false,true,5);       { koordinatensystem }
  190.   XAxis(xmin,xmax,'Re Z',SmallFont,5);            { x-Achse }
  191.   YAxis(ymin,ymax,'Im Z',SmallFont,5);            { y-Achse }
  192.   XGrid(0);                                        { x-Nullinie }
  193.   Ygrid(0);                                         { y-Nullinie }
  194.   Curve(x,y,n,SolidLn,ThickWidth,Yellow);         { Graph zeichnen }
  195.  
  196.   for i:=1 to n do x[i]:=LOG10(f[i]);             { Teilbild 2 }
  197.   GraphikWindow
  198.   (GetMaxX-280,GetMaxX-10,90,GetMaxY-20);        { Graphikfenster }
  199.   Extrema(x,n,xmin,xmax);
  200.   Extrema(y,n,ymin,ymax);                    { Benutzer- }
  201.   Uscale(xmax,xmin,ymin,ymax,false,false,25);     { koordinatensystem }
  202.   LogXAxis(xmax,xmin,'f',SmallFont,5);            { x-Achse }
  203.   YAxis(ymin,ymax,'Im Z',SmallFont,5);            { y-Achse }
  204.   Ygrid(0);                                { y-Nullinie }
  205.   Curve(x,y,n,SolidLn,ThickWidth,LightRed);         { Graph zeichnen }
  206.   readln;                                    { Warten }
  207.   CloseGraphik;                            { Beenden }
  208. end;
  209.  
  210.  
  211. begin
  212.   Geraet:=Bildschirm;                { Bildschirm, Drucker, Plotter }
  213.   Beispiel1;
  214.   Beispiel2;
  215.   Beispiel3;
  216.   Beispiel4;
  217.   Beispiel5;
  218.   Beispiel6;
  219. end.
  220.