Sitzung: Jeden Freitag in der Vorlesungszeit ab 16 Uhr c. t. im MAR 0.005. In der vorlesungsfreien Zeit unregelmäßig (Jemensch da?). Macht mit!

Javakurs/Übungsaufgaben/Gauß-Algorithmus: Unterschied zwischen den Versionen

(Kommentarbereich)
 
(8 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 
=== Aufgabenstellung ===
 
=== Aufgabenstellung ===
  
Ziel der Aufgabe ist es, eine (oder mehrere) Methoden zu schreiben, welche am Ende ein lineares Gleichungssystem nach Gauß lösen. Informationen zu dem Gauß-Algorithmus findet ihr hier [http://de.wikipedia.org/wiki/Gau%C3%9Fsches_Eliminationsverfahren http://de.wikipedia.org/wiki/Gau%C3%9Fsches_Eliminationsverfahren].
+
Ziel der Aufgabe ist es, eine (oder mehrere) Methoden zu schreiben, welche am Ende ein lineares Gleichungssystem nach Gauß lösen. Der Gauß-Algorithmus wird auch als [[wikipedia:Gaußsches Eliminationsverfahren|Gaußsches Eliminationsverfahren]] bezeichnet.
  
Zunächst allerindings einige kleinere Aufgaben, die das ganze etwas Vorbereiten.
+
Zunächst allerdings einige kleinere Aufgaben, die das Ganze etwas vorbereiten.
  
'''1.)'''  Schreibt eine Methode printVektor(), die ein übergebenes, 1-dimensionales Array vom Typ double zeilenweise auf der Konsole ausgibt.  
+
'''1.)'''  Schreibt eine Methode printVector(), die ein übergebenes, 1-dimensionales Array vom Typ double zeilenweise auf der Konsole ausgibt.  
  
 
Mit welchen der während des Vortrages kennengelernten Schleifentypen lässt sich diese Methode realisieren?  
 
Mit welchen der während des Vortrages kennengelernten Schleifentypen lässt sich diese Methode realisieren?  
Zeile 15: Zeile 15:
 
   
 
   
  
'''3.)''' In dieser Aufgabe wollen wir eine Methode entwickeln, das mit Hilfe des gaußschen Eliminationsverfahrens ("Gauß-Algorithmus") ein lineares Gleichungssystem löst.
+
'''3.)''' In dieser Aufgabe wollen wir eine Methode entwickeln, das mit Hilfe des Gaußschen Eliminationsverfahrens ("Gauß-Algorithmus") ein lineares Gleichungssystem löst.
  
 
=== Gauß Algorithmus ===
 
 
Ein lineares Gleichungssystem lässt sich in der Form  Ax=b darstellen, wobei A die Koeffizientenmatrix, b der Zielvektor und x der gesuchte Lösungsvektor ist. Koeffizientenmatrix und Zielvektor lassen durch ein 2-dimensionales, bzw. durch ein 1-dimensionales Array darstellen. Eure Methode soll Koeffizientenmatrix und Zielvektor als Parameter übergeben bekommen, und den gesuchten Lösungsvektor als Rückgabewert haben. Bei eurer Implementierung braucht ihr die Pivotisierung vorerst nicht zu beachten.
 
Ein lineares Gleichungssystem lässt sich in der Form  Ax=b darstellen, wobei A die Koeffizientenmatrix, b der Zielvektor und x der gesuchte Lösungsvektor ist. Koeffizientenmatrix und Zielvektor lassen durch ein 2-dimensionales, bzw. durch ein 1-dimensionales Array darstellen. Eure Methode soll Koeffizientenmatrix und Zielvektor als Parameter übergeben bekommen, und den gesuchten Lösungsvektor als Rückgabewert haben. Bei eurer Implementierung braucht ihr die Pivotisierung vorerst nicht zu beachten.
  
  
Hinweise:
+
'''Hinweise:'''
  
 
Der Algorithmus arbeitet in 2 Etappen:
 
Der Algorithmus arbeitet in 2 Etappen:
Zeile 30: Zeile 28:
 
b) Bestimmen des Lösungsvektors durch rückwärtseinsetzen   
 
b) Bestimmen des Lösungsvektors durch rückwärtseinsetzen   
  
Nutzt das bei Wikipedia angegebene Bespiel, um die korrekte Funktionsweise eures Programms zu überprüfen und eure in 1.) und 2.) entwickelten Methoden, um Matrix und Vektoren an bestimmten Stellen des Algorithmus zu debug-Zwecken auszugeben.
+
Nutzt das bei Wikipedia angegebene Beispiel, um die korrekte Funktionsweise eures Programms zu testen und eure in 1.) und 2.) entwickelten Methoden, um Matrix und Vektoren an bestimmten Stellen des Algorithmus zu Debugging-Zwecken auszugeben.
  
  
'''4.)''' Bis jetzt kann euer Algorithmus nur eindeutig lösbare Gleichungssysteme lösen. Erweitert euren Algorithmus um einige Fallunterscheidungen, so dass dieser bei Gleichungssystemen mit keiner bzw. undendlich vielen Lösungen jeweils den Rückgabewert "null" hat.
+
'''4.)''' Bis jetzt kann euer Algorithmus nur eindeutig lösbare Gleichungssysteme lösen. Erweitert euren Algorithmus um einige Fallunterscheidungen, so dass dieser bei Gleichungssystemen mit keiner bzw. unendlich vielen Lösungen jeweils den Rückgabewert "null" hat.
  
Hinweise:
+
'''Hinweise:'''
  
Aussagen über die Lösbarkeit eines linearen Gleichungssystems kann man nach erzeugen der Zeilen-Stufen-Form treffen.
+
Aussagen über die Lösbarkeit eines linearen Gleichungssystems kann man nach Erzeugen der Zeilen-Stufen-Form treffen.
  
 
1.) Gibt es sogenannte Nullzeilen (alle Elemente einer Zeile der Koeffizientenmatrix und das Element der entsprechenden Zeile des Zielvektors sind 0), so existieren unendlich viele Lösungen.
 
1.) Gibt es sogenannte Nullzeilen (alle Elemente einer Zeile der Koeffizientenmatrix und das Element der entsprechenden Zeile des Zielvektors sind 0), so existieren unendlich viele Lösungen.
  
 
2.) Sind alle Elemente einer Zeile der Koeffizientenmatrix gleich 0, das Element der entsprechenden Zeile des Zielvektors jedoch nicht, so hat das Gleichungssystem keine Lösung.
 
2.) Sind alle Elemente einer Zeile der Koeffizientenmatrix gleich 0, das Element der entsprechenden Zeile des Zielvektors jedoch nicht, so hat das Gleichungssystem keine Lösung.
 +
== Zurück zu den Aufgaben ==
  
  
 
+
[[Javakurs/Übungsaufgaben|hier geht es weiter]]
 
 
 
 
  
 
== Kommentare ==
 
== Kommentare ==
Wenn du Anmerkungen zur Aufgabe hast oder Lob und Kritik loswerden möchtest ist hier die richtige Stelle dafür. Klicke einfach ganz rechts auf "bearbeiten" und schreibe deinen Kommentar direkt ins Wiki. Keine Scheu, es geht nichts kaputt ;)
+
Wenn du Anmerkungen zur Aufgabe hast oder Lob und Kritik loswerden möchtest, ist hier die richtige Stelle dafür. Klicke einfach ganz rechts auf "bearbeiten" und schreibe deinen Kommentar direkt ins Wiki. Keine Scheu, es geht nichts kaputt ;)
  
 
<!--
 
<!--
Als kleine Starthilfe folgt ein Beispiel wie so ein Kommentar formatiert sein könnte. Mit "Vorschau zeigen" kannst du dir ansehen was deine Änderung bewirken würde, ohne wirklich etwas zu ändern.
+
Als kleine Starthilfe folgt ein Beispiel, wie so ein Kommentar formatiert sein könnte. Mit "Vorschau zeigen" kannst du dir ansehen, was deine Änderung bewirken würde, ohne wirklich etwas zu ändern.
 
Du musst übrigens außerhalb dieses auskommentieren Bereichs schreiben ;)
 
Du musst übrigens außerhalb dieses auskommentieren Bereichs schreiben ;)
  
 
==== Robert ====
 
==== Robert ====
Na mal schaun ob irgend jemand diese Funktion wirklich benutzt. Ich fände es jedenfalls toll.
+
Na mal schauen, ob irgendjemand diese Funktion wirklich benutzt. Ich fände es jedenfalls toll.
 
-->
 
-->
 +
 +
[[Kategorie:Java]]
 +
[[Kategorie:Java_Aufgaben]]

Aktuelle Version vom 1. August 2010, 11:59 Uhr

Aufgabenstellung

Ziel der Aufgabe ist es, eine (oder mehrere) Methoden zu schreiben, welche am Ende ein lineares Gleichungssystem nach Gauß lösen. Der Gauß-Algorithmus wird auch als Gaußsches Eliminationsverfahren bezeichnet.

Zunächst allerdings einige kleinere Aufgaben, die das Ganze etwas vorbereiten.

1.) Schreibt eine Methode printVector(), die ein übergebenes, 1-dimensionales Array vom Typ double zeilenweise auf der Konsole ausgibt.

Mit welchen der während des Vortrages kennengelernten Schleifentypen lässt sich diese Methode realisieren?


2.) Schreibt nun eine Methode printMatrix(), die eine übergebenes, 2-dimensionales Array vom Typ double auf der Konsole ausgibt.

Testet eure beiden Methoden, indem ihr verschiedene Array deklariert und initialisiert, und anschließend den Methoden printVector() bzw. printMatrix() als Parameter übergebt.


3.) In dieser Aufgabe wollen wir eine Methode entwickeln, das mit Hilfe des Gaußschen Eliminationsverfahrens ("Gauß-Algorithmus") ein lineares Gleichungssystem löst.

Ein lineares Gleichungssystem lässt sich in der Form Ax=b darstellen, wobei A die Koeffizientenmatrix, b der Zielvektor und x der gesuchte Lösungsvektor ist. Koeffizientenmatrix und Zielvektor lassen durch ein 2-dimensionales, bzw. durch ein 1-dimensionales Array darstellen. Eure Methode soll Koeffizientenmatrix und Zielvektor als Parameter übergeben bekommen, und den gesuchten Lösungsvektor als Rückgabewert haben. Bei eurer Implementierung braucht ihr die Pivotisierung vorerst nicht zu beachten.


Hinweise:

Der Algorithmus arbeitet in 2 Etappen:

a) Erzeugen der Zeilen-Stufen-Form

b) Bestimmen des Lösungsvektors durch rückwärtseinsetzen

Nutzt das bei Wikipedia angegebene Beispiel, um die korrekte Funktionsweise eures Programms zu testen und eure in 1.) und 2.) entwickelten Methoden, um Matrix und Vektoren an bestimmten Stellen des Algorithmus zu Debugging-Zwecken auszugeben.


4.) Bis jetzt kann euer Algorithmus nur eindeutig lösbare Gleichungssysteme lösen. Erweitert euren Algorithmus um einige Fallunterscheidungen, so dass dieser bei Gleichungssystemen mit keiner bzw. unendlich vielen Lösungen jeweils den Rückgabewert "null" hat.

Hinweise:

Aussagen über die Lösbarkeit eines linearen Gleichungssystems kann man nach Erzeugen der Zeilen-Stufen-Form treffen.

1.) Gibt es sogenannte Nullzeilen (alle Elemente einer Zeile der Koeffizientenmatrix und das Element der entsprechenden Zeile des Zielvektors sind 0), so existieren unendlich viele Lösungen.

2.) Sind alle Elemente einer Zeile der Koeffizientenmatrix gleich 0, das Element der entsprechenden Zeile des Zielvektors jedoch nicht, so hat das Gleichungssystem keine Lösung.

Zurück zu den Aufgaben

hier geht es weiter

Kommentare

Wenn du Anmerkungen zur Aufgabe hast oder Lob und Kritik loswerden möchtest, ist hier die richtige Stelle dafür. Klicke einfach ganz rechts auf "bearbeiten" und schreibe deinen Kommentar direkt ins Wiki. Keine Scheu, es geht nichts kaputt ;)