ERLEDIGT
NEIN
NEIN
ANTWORTEN
3
3
ZUGRIFFE
451
451
EMPFEHLEN
-
04.01.06 20:27 #1
- Registriert seit
- Jan 2006
- Ort
- Frankfurt am Main (Hessen)
- Beiträge
- 2
Hallo,
ich habe ein Problem mit einer Sinusfunktion: f(x)=a1*sin(b1*x) + a2*sin(b2*x)
a1, b1, a2 und b2 sind variabel vom benutzer einzugeben. jetzt kann der benutzer noch die laufvariable x eingeben. z.b. Xmin (txtXmin.Text) = -5 ; Xmax (txtXmax.Text) = 5, als auch die schrittweite (txtSchrittweite.Text) z.b. 0,5; 1; 2; 2,2, ...
das ganze soll in ein array geschrieben werden.
folgendes habe ich mal probiert, aber es will einfach nicht wirklich funktionieren:
Dim f() As Double
Dim x As Double
m = (txtXmax.Text - txtXmin.Text) / txtSchrittweite.Text
ReDim f(m)
For n = txtXmin.Text To txtXmax.Text Step txtSchrittweite.Text
f(n) = txtA1.Text * Sin(txtB1.Text * x) + txtA0.Text * Sin(txtB0.Text * x)
x = x + txtSchrittweite.Text
Next
lstWertetabelle.Clear
For n = 0 To m
lstWertetabelle.AddItem f(n)
Next
Wäre echt toll wenn mir jemand helfen könnte.
Vielen Dank
Teser
-
05.01.06 12:36 #2
Was funktioniert denn genau nicht ?
Ich würd nicht direkt die Texte aus den Eingabefelder verwenden, dabei wird dann jedesmal implizit ein Konvertierung vorgenommen.
Code :1 2 3 4 5 6 7 8 9 10 11
Dim Min As Double Dim Max As Double Dim Schritt As Double Min = CDbl( txtXmin.Text) Max = CDbl(txtXmax.Text) Schritt = CDbl(txtSchrittweite.Text) For n=Min To Max Step Schritt ... next n
Möglicherweise kann die For Schleife auch nur ganzzahlig zählen lassen.
Also solltest du die Schleife in eine While oder Do While umbauen und dort selbst hochzählen.Allen ist das Denken erlaubt, vielen bleibt es erspart. (Kurt Goetz)
-
05.01.06 15:59 #3
- Registriert seit
- Jan 2006
- Ort
- Frankfurt am Main (Hessen)
- Beiträge
- 2
leider hat es so auch nicht funktioniert. habe auch die schleife umgebaut, jetzt dimensioniert er das array auch entsprechend bei schrittweite < 1. jedoch zeigt er mir jetzt leider nur entsprechend oft die "0" als ergebnis an.
also scheint er das X nicht von Min nach Max laufen zu lassen.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Dim f() As Double Dim n As Double Dim x As Double Dim m As Double Dim min As Double Dim max As Double Dim schritt As Double min = CDbl(txtXmin.Text) max = CDbl(txtXmax.Text) schritt = CDbl(txtSchrittweite.Text) m = (txtXmax.Text - txtXmin.Text) / txtSchrittweite.Text x = txtXmin.Text ReDim f(m) Do While min >= max f(n) = txtA1.Text * Sin(txtB1.Text * x) + txtA0.Text * Sin(txtB0.Text * x) x = x + schritt min = min + schritt Loop lstWertetabelle.Clear For n = 0 To m lstWertetabelle.AddItem f(n) Next
-
05.01.06 18:00 #4
Also es reicht wenn du das x hochzählst.
Deine anderen Eingabefelder solltest du auch nach Double konvertieren und damit rechnen.
Grundsätzlich würde ich dir aber raten den Debugger zu benutzen, dann weisst du bei jeder Iteration, was dort rauskommt und wann nicht das erwartete Ergebnis rauskommt.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Dim A0 As Double Dim A1 As Double Dim B0 As Double Dim B1 As Double .. A0 =CDbl(txtA0.Text) .. B1 = cDbl(txtB1.Text) x = CDbl(txtXmin.Text) ReDim f( m-1) ' Array geht von 0 bis m-1 , damit der Count = m Do While x >= max f(n) = A1 * Sin(B1 * x) + A0 * Sin(B0 * x) x = x + schritt Loop
Geändert von mage (05.01.06 um 18:05 Uhr)
Allen ist das Denken erlaubt, vielen bleibt es erspart. (Kurt Goetz)
Ähnliche Themen
-
Batch: Laufvariable aus For-Schleife kürzen
Von dor_neue im Forum Sonstige SprachenAntworten: 0Letzter Beitrag: 20.04.10, 11:57 -
Laufvariable definieren
Von matze1983 im Forum PHPAntworten: 7Letzter Beitrag: 21.04.09, 16:03 -
Sinusfunktion die sich durchs Bild schlängelt
Von Padrenuestro im Forum Flash PlattformAntworten: 0Letzter Beitrag: 16.03.08, 18:28 -
feste Buchstabenfolge + Laufvariable ausgeben
Von maybebaby im Forum Visual Basic 6.0Antworten: 3Letzter Beitrag: 29.06.07, 08:18 -
Laufvariable in XSL:FOR-EACH
Von alex80 im Forum XML TechnologienAntworten: 0Letzter Beitrag: 16.03.05, 10:30





Zitieren
Login





