tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
451
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    teser teser ist offline Grünschnabel
    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
     

  2. #2
    Avatar von mage
    mage mage ist offline Mitglied Platin
    Registriert seit
    May 2002
    Ort
    Berliner Speckgürtel
    Beiträge
    707
    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)

  3. #3
    teser teser ist offline Grünschnabel
    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
     

  4. #4
    Avatar von mage
    mage mage ist offline Mitglied Platin
    Registriert seit
    May 2002
    Ort
    Berliner Speckgürtel
    Beiträge
    707
    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

  1. Batch: Laufvariable aus For-Schleife kürzen
    Von dor_neue im Forum Sonstige Sprachen
    Antworten: 0
    Letzter Beitrag: 20.04.10, 11:57
  2. Laufvariable definieren
    Von matze1983 im Forum PHP
    Antworten: 7
    Letzter Beitrag: 21.04.09, 16:03
  3. Sinusfunktion die sich durchs Bild schlängelt
    Von Padrenuestro im Forum Flash Plattform
    Antworten: 0
    Letzter Beitrag: 16.03.08, 18:28
  4. feste Buchstabenfolge + Laufvariable ausgeben
    Von maybebaby im Forum Visual Basic 6.0
    Antworten: 3
    Letzter Beitrag: 29.06.07, 08:18
  5. Laufvariable in XSL:FOR-EACH
    Von alex80 im Forum XML Technologien
    Antworten: 0
    Letzter Beitrag: 16.03.05, 10:30