Lineares Gleichungssystem
-
Hallo, ich bin noch blutiger Anfänger im Programmieren und würde gerne wissen ob es in C (also in irgendeiner Bibliothek) eine Funktion gibt, die ein lineares Gleichungssystem löst. Oder vielleicht hat sonst jemand einen Vorschlag, wie ich das am besten mache könnte. Es geht um ein lineares Gleichungssystem mit n-1 Zeilen. In jeder Zeile treten die Variabel yi-1, yi und yi+1 auf. i läuft von 1 bis n-1. die Variabeln y0 und yn sind gegeben. Bin für jeden Tipp dankbar ;).
-
Aminine schrieb:
Hallo, ich bin noch blutiger Anfänger im Programmieren und würde gerne wissen ob es in C (also in irgendeiner Bibliothek) eine Funktion gibt, die ein lineares Gleichungssystem löst. Oder vielleicht hat sonst jemand einen Vorschlag, wie ich das am besten mache könnte. Es geht um ein lineares Gleichungssystem mit n-1 Zeilen. In jeder Zeile treten die Variabel yi-1, yi und yi+1 auf. i läuft von 1 bis n-1. die Variabeln y0 und yn sind gegeben. Bin für jeden Tipp dankbar ;).
Die gibt es: http://www.scimath.com/
-
Pack die Koeffizienten in ein "2-dimensionales" Array und lass einen geeigneten Löser drüberlaufen. Über google finden sich die unterschiedlichsten Implementierungen. Wenn du was selber machen willst wird wohl der Gauß am einfachsten zu implementieren sein.
einfacher Pseudocode (ungetestet):
for(unsigned j = 0; j != N - 1 && a[j][j] != 0; ++j) { for(unsigned i = j + 1; i != N; ++i) { a[i][j] /= a[j][j]; for(unsigned k = j + 1; k != N; ++k) a[i][k] -= a[i][j] * a[j][k]; } }
Hier lohnt sich evtl. auch mal ein Blick: http://www.oonumerics.org/oon/. Ist aber hauptsächlich C++, aber vielleicht kann man sich ja ein wenig Inspiration holen.
-
Danke für die schnellen Antworten. Ich denke, dann werd ich es wohl mit Gauß machen.