Liebe Leser,
Wenn dies Ihr erster Besuch hier ist, lesen Sie bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Sie müssen sich vermutlich registrieren, bevor Sie Beiträge verfassen können. Klicken Sie rechts auf 'Jetzt registrieren.', um den Registrierungsprozess zu starten.
Seite 1 von 2 1 2 LetzteLetzte
Ergebnis 1 bis 9 von 17
  1. #1
    Registriert seit
    06.2012
    Beiträge
    7

    Unglücklich VBA - Hilfe zu Aufgabenstellung

    Hallo,

    ich habe in der FH eine Aufgabenstellung bekommen, die ich gerade verzweifelt zu lösen versuche (habe normalerweise weder mit numerischer Mathematik noch mit Algorithmen viel zu tun und bin daher eher ahnungslos).

    Es geht um die Modifizierung des Newtonverfahrens in VBA. Das Verfahren selbst haben wir schon programmiert, jetzt sollen folgende Änderungen vorgenommen werden:


    1. die Eingabe von zwei Startnäherungen x-1=a und x0=b ermöglichen (wenn │f(x-1)│ < │f(x0)│ dann tauschen Sie x-1 und x0).

    2. die Ableitung durch den Differenzenquotienten f(xn)- f(xn-1)/ xn - xn-1 ersetzen (Regula falsi).
    Test am Bsp.: x7 – 4x3 + cos(x) + 2

    Dokumentieren Sie Ihre Modifikation durch ein Flussdiagramm und den VBA-Code.





    Hier unser VBA-Code zum Newtonverfahren:

    Sub newton()
    Dim x As Double
    Dim eps As Double
    Dim s As Double

    Dim n As Integer
    Dim i As Integer

    With Tabelle1
    x = .Cells(1, 1)
    eps = .Cells(1, 2)
    n = .Cells(1, 3)

    For i = 0 To n
    .Cells(3 + i, 1) = i
    .Cells(3 + i, 2) = x
    .Cells(3 + i, 3) = f(x)

    If Abs(f(x)) < eps Then
    MsgBox ("Nullstelle erreicht mit dem " & i & ".ten Iterationsschritt")
    Exit Sub
    End If

    If Abs(df(x)) < eps Then
    MsgBox ("Ableitung = 0 beim " & i & ".ten Iterationsschritt")
    Exit Sub
    End If

    s = f(x) / df(x)

    If Abs(s) < eps Then
    MsgBox ("Genauigkeit erreicht mit dem " & i & ".ten Iterationsschritt")
    .Cells(4 + i, 1) = i + 1
    .Cells(4 + i, 2) = x - s
    .Cells(4 + i, 3) = f(x - s)
    Exit Sub
    End If

    x = x - s

    Next

    .Cells(3 + n, 1) = n
    .Cells(3 + n, 2) = x
    .Cells(3 + n, 3) = f(x)

    End With
    End Sub

    Function f(x As Double) As Double
    f = x ^ 7 - 4 * x ^ 3 + Cos(x) + 2
    End Function

    Function df(x As Double) As Double
    df = 7 * x ^ 6 - 12 * x ^ 2 - Sin(x)
    End Function



    ------------------
    So. Mein Problem fängt schon bei den zwei Startnäherungen an, denn ich kann ja keine 2 Schleifen gleichzeitig laufen lassen, sondern nur hintereinander. Dass man ne neue Variable (zB xx) definiert und einlesen muss ist klar.
    Wie das mit dem Vertauschen geht weiß ich auch und ein Flussdiagramm bekomm ich notfalls auch noch hin.
    Aber: wie gebe ich den Differenzenquotienten ein? was muss ich dafür definieren?
    Und dann brauche ich die Funktion und den Diff.quot. ja jeweils einmal für x und einmal für xx, richtig?
    Und wie läuft das dann mit den Schleifen? Muss ich erst die eine Näherung laufen lassen und dann die andere, oder erste Schleife von Näherung 1, erste Schleife von Näherung 2, zweite Schleife von Näherung 1, etc (also immer hin und her)?

    wäre über jeden Tipp dankbar.
    LG


  2. #2
    Registriert seit
    07.2003
    Ort
    Beim Rathaus schräg hoch
    Beiträge
    8.139
    Zitat Zitat von Simone1987 Beitrag anzeigen
    ...
    Ein halb ausgebilderter Ingenieur ist eine tickende Zeitbombe, sagte unser Automatisierungsguru.
    Und auf Plagiatismus steht der Entzug des akademischen Grades ... .

    Ein Kommilitone kann da sicher besser helfen, ansonsten mal in ein gutes Buch sehen:
    http://www.amazon.de/Microsoft-Excel...0466980&sr=8-1 .

  3. #3
    Registriert seit
    07.2007
    Beiträge
    7.152
    @chipchap, erschrecke doch unseren neuen Forenteilnehmer nicht..

    @Simone1987, ein Thread reicht zu deinem Thema!

    Gruß
    X
    Sei ein Teil der Lösung, nicht Teil des Problems.
    Die Regeln<>Für Neueinsteiger
    Wer nicht mit der Zeit geht, der geht mit der Zeit.

  4. #4
    Registriert seit
    06.2012
    Beiträge
    7
    @x.man: sorry, wusste nicht wo es am besten hinpasst.

    @chipchap: für die schlechte qualität meiner ausbildung im bezug aufs programmieren kann ich nichts. und bücher zum thema habe ich, es hapert aber an der Umsetzung.

  5. #5
    Registriert seit
    07.2007
    Beiträge
    7.152
    Hinweis: Hausaufgaben werden hier von den Helfern zu 98% nicht übernommen...kann mich aber auch irren...
    Sei ein Teil der Lösung, nicht Teil des Problems.
    Die Regeln<>Für Neueinsteiger
    Wer nicht mit der Zeit geht, der geht mit der Zeit.

  6. #6
    Registriert seit
    06.2012
    Beiträge
    7
    Ich erwarte ja nicht, dass jemand mir die Aufgabe löst.
    Die Antwort auf eine meiner Fragen unten wäre u.U. schon hilfreich.

  7. #7
    Avatar von P.A.C.O.
    P.A.C.O. ist offline Ganzes Gigabyte
    Mein System
    MainboardASUS M5A88-M
    ProzessorAMD FX 6100 (Blue Orb gekühlt)
    GrafikkarteSapphire Radeon 6850 (1024MB)
    RAM16 GB DDR3 G-Skill
    Festplatte(n)1x 120 GB SSD 1x 500 GB 2,5 Zoll
    Andere LaufwerkeASUS BC-12B1ST
    Netzteil (inkl. Spannungswerte)Enermax Modu 82+ 425W
    SoundkarteOnboard
    BetriebssystemWindows 7 Home Premium (64Bit)
    AV-SoftwareAvira AntiVir
    FirewallRouter / Windows
    Art des InternetzugangsDSL-16000
    Router/ModemEasyBox 803
    MonitorHP 2710m - 27" TFT und HP w1907v
    SonstigesMaus und Tastatur habe ich auch Lautsprecher auch.
    Registriert seit
    07.2002
    Ort
    Fast da, wo die Bude von den 3 Damen vom Grill stand
    Beiträge
    19.079
    Zitat Zitat von X.MAN Beitrag anzeigen
    Hinweis: Hausaufgaben werden hier von den Helfern zu 98% nicht übernommen...kann mich aber auch irren...
    Hab neulich von einer Kollegin gehört, dass es in der Klasse ihres (15 J.) Sohnes Usus ist, dass immer einer die Hausaufgaben macht und die dann abfotografiert per Samrtphone verschickt. Abwechselnd natürlich...


    So what

  8. #8
    Registriert seit
    07.2003
    Ort
    Beim Rathaus schräg hoch
    Beiträge
    8.139
    Zitat Zitat von P.A.C.O. Beitrag anzeigen
    ... dass immer einer die Hausaufgaben ...
    So ungefähr war mein Gedankengang ...

  9. #9
    Avatar von Eric March
    Eric March ist offline Halbes Gigabyte
    Mein System
    MainboardMSI MS-7094 = K8T Neo2-F V20
    ProzessorAthlon 64 4000+
    GrafikkarteNVIDIA GeForce FX7600
    RAM2 x 1024MB DDR1
    Festplatte(n)1 x 120GB Maxtor PATA 1 x 160GB WD PATA 1 x 500GB Samsung SATA 1 x 250GB WD SATA
    Andere Laufwerke1 x Floppy 1 x NEC 3540 DVD Brenner 1 x Toshiba 1912 DVD RAM
    Netzteil (inkl. Spannungswerte)400W NoName
    SoundkarteSoundBlaster (+ AC97 OnBoard)
    BetriebssystemXpPro SP3 (IE7; DE-Sprachpack)
    AV-SoftwareAvast
    FirewallWIN (Kasperky aus, kein Router)
    System-/OptimierungstoolsRegedit & Brain 1.0 :-)
    Art des InternetzugangsDSL-6000
    Router/ModemACER 56 / WRT160N / Huawei
    MonitorFlatscrren hp, 17"
    SonstigesCardReader HBCI an USB. 4-Slot Speicherkaretenleser. 'n paar Bildaufnahmegeräte. Zusäzlicher I'net-Zugang per Mobilfunk
    Registriert seit
    09.2003
    Ort
    Im Herzen Deutschlands
    Beiträge
    5.512
    Newton… Regula falsi… Da hab ich plötzlich eine akute Form von Unlust

    Quälen wir das Gehirn was damals im LK über mich hereinkam (auf Ethan-1-ol werde ich aber besser mal verzichten):

    1. die Eingabe von zwei Startnäherungen x-1=a und x0=b ermöglichen (wenn │f(x-1)│ < │f(x0)│ dann tauschen Sie x-1 und x0).
    Was sollen denn a, b, x, und x0 vorstellen? Und wieso speziell x-1?

    Weiterhin: die Tauschanweisung ist mir auch nicht schlüssig. wenn ich das einmal mit a durchlaufen lasse bekomme ich einige f(a). Mache ich das auch mit b kriege ich einen Schwung f(b). Und ich kann mir lebhaft vorstellen, dass mal der Betrag von a kleiner als der von b ist - und umgekehrt. Für welches a bzw. b ist denn die Bedingung zu erfüllen um als Schalter zu fungieren?

    Code:
    Sub newton()
    Rem Serie 1 (x-1) in Salten A,B,C; Serie 2 (x0) in E,F,G
    
    Dim x As Double
    Dim eps As Double
    Dim s As Double
    
    Dim n As Integer
    Dim i As Integer
    
    Dim ab As Byte
    
     ab = 0
     Do
    
      x = Cells(1, ab * 5 + 1)
      eps = Cells(1, ab * 5 + 2)
      n = Cells(1, ab * 5 + 3)
     
      For i = 0 To n
       Cells(3 + i, ab * 5 + 1) = i
       Cells(3 + i, ab * 5 + 2) = x
       Cells(3 + i, ab * 5 + 3) = f(x)
       
       If Abs(f(x)) < eps Then
        MsgBox ("Durchlauf " & ab + 1 & vbCr & vbCr & "Nullstelle erreicht mit dem " & i & ".ten Iterationsschritt")
        Exit For
       End If
       
       If Abs(df(x)) < eps Then
        MsgBox ("Durchlauf " & ab + 1 & vbCr & vbCr & "Ableitung = 0 beim " & i & ".ten Iterationsschritt")
        Exit For
       End If
       
       s = f(x) / df(x)
       
       If Abs(s) < eps Then
        MsgBox ("Durchlauf " & ab + 1 & vbCr & vbCr & "Genauigkeit erreicht mit dem " & i & ".ten Iterationsschritt")
        Cells(4 + i, ab * 5 + 1) = i + 1
        Cells(4 + i, ab * 5 + 2) = x - s
        Cells(4 + i, ab * 5 + 3) = f(x - s)
        Exit For
       End If
       
       x = x - s
      
      Next
      
      Cells(3 + n, ab * 5 + 1) = n
      Cells(3 + n, ab * 5 + 2) = x
      Cells(3 + n, ab * 5 + 3) = f(x)
      
      ab = ab + 1
     Loop Until ab = 2
    
    End Sub
    
    Function f(x As Double) As Double
     f = x ^ 7 - 4 * x ^ 3 + Cos(x) + 2
    End Function
    
    Function df(x As Double) As Double
     df = 7 * x ^ 6 - 12 * x ^ 2 - Sin(x)
    End Function
    Dies durchläuft den Code 2x und nutzt jeweils die Spalten A,B,C sowie D,E,F die mit den Vorgaben gefüttert werden müssen.
    Was fehlt wäre ein Umschalten, aber die Bedingungen sind für mich undurchsichtig.
    »Nebel, Nebel gehe weg - verzieh dich an ’nen andren Fleck!« (nach Hägar , dem Schrecklichen)

    Eric March
    Eric March • »Wenn du eine Frage stellst musst du auch akzeptieren eine Antwort zu bekommen.« (Weisheit aus dem Kongo)

Seite 1 von 2 1 2 LetzteLetzte

Ähnliche Themen

  1. Antworten: 4
    Letzter Beitrag: 14.06.2011, 20:05
  2. !!!Hilfe!!!! brauche schnelle Hilfe Computer Stürzt immer ab
    Von brunobanani im Forum CPU, BIOS & Motherboards, RAM
    Antworten: 14
    Letzter Beitrag: 21.12.2008, 14:07
  3. Antworten: 1
    Letzter Beitrag: 24.04.2007, 19:33
  4. HILFE!!Kann Festplatte nicht öffnen!!Brauche Hilfe
    Von niked12 im Forum Festplatten, SSD, USB-Sticks, CD/DVD/Blu-ray
    Antworten: 17
    Letzter Beitrag: 19.04.2007, 14:01
  5. Hilfe!!! 250gb Platte Funktioniert Nich Richtig! Hilfe!!!
    Von MaddinZ im Forum Festplatten, SSD, USB-Sticks, CD/DVD/Blu-ray
    Antworten: 12
    Letzter Beitrag: 25.07.2006, 16:51

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  
12
Content Management by InterRed