Thema Datum  Von Nutzer Rating
Antwort
Rot Gauß Algorhytmus
27.11.2013 11:35:36 Matthias
NotSolved
27.11.2013 11:37:39 Gast12951
NotSolved

Ansicht des Beitrags:
Von:
Matthias
Datum:
27.11.2013 11:35:36
Views:
1928
Rating: Antwort:
  Ja
Thema:
Gauß Algorhytmus

Hey leute, mein erster Beitrag hier und bräuchte glaub ich ein wenig Nachhilfe in VBA :)
Bin Bauing Student und soll zur Zeit um für die Mathe/Info Prüfung zugelassen zu werden einen Gauß-Algorhytmus Programmieren.
Mein Problem ist das ich sehr sinnlose Ergebnisse bekomme wie "48ta2229art"
(Bin noch neu in dem Thema, also falls ich hier gerade irgendwas falsches geschrieben hab, habt nachsicht ;-) )
Mein script:

Option Explicit

Sub Gleichung()

Dim zeile As Integer, spalte As Integer, grad As Integer, A(15, 16) As Double, x(15) As Double, i As Integer, j As Integer, b As Double

zeile = 2

spalte = 2

While Cells(zeile, spalte).Text <> Empty

    spalte = spalte + 1

Wend

spalte = spalte - 1

While Cells(zeile, spalte).Text <> Empty

    zeile = zeile + 1

Wend

zeile = zeile - 1

If zeile <> spalte - 1 Then

    MsgBox "FALSCHE VARIABLE"

    Exit Sub

End If

grad = zeile - 1

For i = 1 To grad

    For j = 1 To grad + 1

    A(i, j) = Cells(1 + i, 1 + j)

    Next

Next

gauss grad, A, x

For i = 1 To grad

    Cells(1 + grad + 1, 1 + i) = Format(x(i), "Standart")

Next

For i = 1 To grad

    b = 0

    For j = 1 To grad

        b = b + Cells(1 + i, 1 + j).Value * x(j)

    Next

    Cells(1 + i, 1 + grad + 2) = Format(b, "Standart")

Next

End Sub


Sub gauss(n%, A() As Double, x() As Double)

Dim i%, j%, k%, jmax%, kmax%, imax, merk() As Integer

Dim s As Double, max As Double, skal() As Double

ReDim merk(n), skal(n)

    For i = 1 To n

    merk(i) = 1

    Next

    For i = 1 To n

    s = 0

    For j = 1 To n

        s = s + Abs(A(i, j))

    Next

    skal(i) = 1 / s

Next

For k = 1 To n - 1

max = skal(k) * Abs(A(k, k))

kmax = k

jmax = k

For j = k To n

    For i = k To n

    If skal(j) * Abs(A(j, i)) > max Then

    jmax = j

    kmax = i

    max = skal(j) * Abs(A(j, i))

End If

Next

Next

    If jmax <> k Then

        For j = k To n + 1

        s = A(k, j)

        A(k, j) = A(jmax, j)

        A(jmax, j) = s

    Next

    s = skal(k)

    skal(k) = skal(jmax)

    skal(jmax) = s

    End If

If kmax <> k Then

    For i = 1 To n

    s = A(i, k)

    A(i, k) = A(i, kmax)

    A(i, kmax) = s

    Next

    j = merk(k)

    merk(k) = merk(kmax)

    merk(kmax) = j

    End If

For i = k + 1 To n

    s = A(i, k) / A(k, k)

    A(i, k) = 0#

    For j = k + 1 To n + 1

        A(i, j) = A(i, j) - s * A(k, j)

        Next

    Next

Next

x(merk(n)) = A(n, n + 1) / A(n, n)

    For i = n - 1 To 1 Step -1

        s = A(i, n + 1)

        For j = i + 1 To n

            s = s - A(i, j) * x(merk(j))

        Next

        x(merk(i)) = s / A(i, i)

    Next

End Sub

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Gauß Algorhytmus
27.11.2013 11:35:36 Matthias
NotSolved
27.11.2013 11:37:39 Gast12951
NotSolved