Entwickler-Ecke

Sonstiges (Delphi) - Zeichnen einer Funktion


Dmo - Do 04.10.07 12:03
Titel: Zeichnen einer Funktion
Hallo leute...

ich möchte mir eine funktion veranschaulichen.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
procedure TForm1.FMClick(Sender: TObject);

var u_n, f_n, u_t, f_t, M:integer;
    t:extended;
    u_fm:extended;
begin
  u_n:=3;
  f_n:=1;
  u_t:=3;
  f_t:=10;
  M:=65;
  t:=0;
  repeat
    u_fm:=u_t*cos(2*pi*f_t*t+M*sin(2*pi*f_n*t));
    series2.AddXY(t,u_fm);
    t:=t+1;
  until
    t=200;
end;


Wo muss ich das DegToRad einfügen?
Nach dem Cosinus und nach dem Sinus?

Desweiteren bin ich mir bei der Variablendeklaration nicht sicher.

Ich hoffe es kann mir jemand behilflich sein...


Gruß Dmo


Andreas Pfau - Sa 20.10.07 12:08

Hallo,

also, DegToRad() brauchst du nur, wenn du Grad-Angaben hast, und sie als Rad benötigst. Grundsätzlich arbeiten alle trogonometrischen Funktionen in Delphi ausnahmslos mit Rad (okay, außer du fängst mit OpenGL an...). Willst du z.B. den Sinus von 90° berechnen, brauchst du:

Delphi-Quelltext
1:
Sin(DegToRad(90))                    


In deiner Funktion sehe ich keine Probleme diesbezüglich. Allerdings könntest du die repeat-Schleife einfacher implementieren:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure TForm1.FMClick(Sender: TObject);
var
  u_n, f_n, u_t, f_t, M: integer;
  t: extended;
  u_fm: extended;
begin
  u_n := 3;
  f_n := 1;
  u_t := 3;
  f_t := 10;
  M := 65;
  for t := 0 to 200 do
  begin
    u_fm := u_t * cos(2 * pi * f_t * t + M * sin(2 * pi * f_n * t));
    series2.AddXY(t, u_fm);
  end;
end;


Natürlich könntest du die Argumente auch im Gradmaß angeben, und dann dein DegToRad() anwenden:

Delphi-Quelltext
1:
u_fm := u_t * cos(DegToRad(360 * f_t * t + M * sin(DegToRad(360 * f_n * t))));                    


Wäre aber recht unsinnig...

Mit den Variablen sehe ich kein Problem. Außer dass für solch einfache Funktionen eigentlich Simple statt Extended angebracht wäre - spart Zeit (so ein paar Mikrosekunden halt).