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:
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).