Laden...

Sinus bzw. Kosinus Kurve wird nicht angezeigt wie es soll!

Erstellt von raxxix vor 9 Jahren Letzter Beitrag vor 9 Jahren 2.426 Views
R
raxxix Themenstarter:in
3 Beiträge seit 2014
vor 9 Jahren
Sinus bzw. Kosinus Kurve wird nicht angezeigt wie es soll!

Hi Leute,

ich habe ein Schulprojekt in dem ich eine Sinus bzw. Kosinus Kurve ausgeben möchte.

Den normalen Sinus bzw. Kosinus bekomme ich hin aber wenn ich z.B. 2 + 3 * SIN (3x + PI / 3) ausgeben möchte zeigt der mir was total wirres an (siehe Grafik)!

Ich arbeite mit einer Chart und übergeben tue ich folgendermaßen:

this.chart1.Series["kurve"].Points.AddY(2 + 3 * Math.Cos(3 * i + test));

test ist PI / 3 umgewandelt in grad ich habe es auch schon versucht in rad anzugeben aber selbes blödes Ergebnis X(

Meine Vermutung ist ja, dass ich die Funktion umstellen bzw. anders übergeben muss aber wie ist mir derzeit unklar.

Ich bedanke mich schon mal und wünsche allen einen schönen Abend

P
1.090 Beiträge seit 2011
vor 9 Jahren

Auf den ersten Blick scheinen Verschiebung (+2) und Amplitude (3) zu stimmen. Ob die Phasenverschiebung (Pi/3) und die Frequenz (3i) Passt, kann ich aus dem Stegreif nicht sagen.

Es wirkt für mich so als ob (3*i + test) immer das Vorzeichen wechselt. Zb. alle graden i Positiv sind und alle ungraden Negativ. Schau dir das mal mit dem Debugger an.

Sollte man mal gelesen haben:

Clean Code Developer
Entwurfsmuster
Anti-Pattern

C
2.121 Beiträge seit 2010
vor 9 Jahren

Überlegung: ein Sinus beschreibt für 2*Pi = etwa 6 eine Schwingung. Im Bereich 0 bis 60 wären das 10 Schwingungen. Durch die 3 sinds 30, deswegen wechselt das so oft. Stimmt also mit deinem Ergebnis schon überein.

Wolltest du vielleicht x/3 statt x*3 verwenden?

189 Beiträge seit 2014
vor 9 Jahren

Hallo raxxix,

dein Problem liegt mit hoher Wahrscheinlichkeit in der "fehlerhaften" Bedienung des Charts, nicht an der Formel.
Ich kann das Verhalten nachstellen, wenn ich "i" als Integer von 0 bis 100 iteriere.
Damit erzeugst du eine Kurve vom Cosinus über ein vielfaches von 3, verschoben um Pi/3.
Wenn man so will, ist das ein Alias-Effekt bezogen auf das gewünschte Ergebnis.
Du arbeitest schlichtweg mit zu groben x-Werten. Eine Möglichkeit wäre "3*i/10" oder so etwas.
Der Logik wegen solltest du eher die Schleife über "double i=0 ... 2 PI" (oder was du für ein Intervall betrachten möchtest) iteriert lassen.


for (double i = 0; i < 2*Math.PI; i+=0.1)
{
    this.chart1.Series["Kurve"].Points.AddXY(i, 2.0 + 3.0*Math.Cos(3*i + Math.PI/3));
}

-> dahin willst du doch, oder?

Ezio

Tante Edit hat ein Bild angehängt.

M
368 Beiträge seit 2006
vor 9 Jahren

Zum Vergleich der Output mit Mathematica Online: Wolfram Alpha: 2 + 3 * SIN (3x + PI / 3)

Goalkicker.com // DNC Magazine for .NET Developers // .NET Blogs zum Folgen
Software is like cathedrals: first we build them, then we pray 😉

R
raxxix Themenstarter:in
3 Beiträge seit 2014
vor 9 Jahren

TOP!!
Hat super geklappt danke dir Ezio mein Fehler lag in der for Schleife Danke euch allen für eure Antworten. 👍