Wednesday, May 25

Klausur Lineare Algebra 1 Aufgaben & Lösungen

Hier ist die komplette Lösung der Lineare Algebra I-Prüfung bei Prof. Dr. Fritzsche von 2011. Genauer handelt es sich um die Lösungen einer Nachklausur. Ich denke, dass sich manche über den Up freuen.

Die Aufgaben dazu sind urheberrechtsgeschützt. Daher hier eine kurze Zusammenfassung der Aufgaben:

1. X, Y, Z nichtleer, Phi: X nach Y, Psi: Y nach Z.
       a) Falls Phi, Psi surjektiv, so auch (Psi o Phi)
       b) Ohne Begründung, gebe ein Beispiel dafür, dass Umkehrung von a) nicht gilt.

2. Zeige D bzgl. Matritzenmultiplikation bildet kommutative (abelsche) Gruppe

3. Sei V K-Vektorraum.
       a) Definiere Unterraum von V
       b) Notwendige & Hinreichende Bedingung für U C V ist Unterraum von V.

4. Vektorsysteme sind Erzeugendensystem, Basis, ...?

5. V K-Vektorraum mit dim(V) = m, m natürliche Zahl. Gebe Menge M aller positiven ganzen Zahlen an, für die existiert linear unabhängiges System v1, ... , vn von n Vektoren aus V gibt.

6. Vektorraum R3 mit U := span{(1 2 1)^T,  (1 1 1)^T, (5 7 5)^T}.
       a) Bestimme dim(U)
       b) Zeige v := (3 5 3)^T gehört zu U
       c) Gebe Basis von U, welche v enthält an.
       d) Gebe Unterraum U1 von V mit V = U + U1.
           Gebe von U1 verschiedenen Unterraum U2 von V an, mit V = U + U2.

7. Berechne ABB* sowie (CC)^T - 2A mit gegebenen Matrizen: 
    A= ((1 0)^T (1 1)^T), B = (1 i)^T, C = ((1 2)^T (1 1)^T (1 3)^T)

8. A e C^(pxq), b e C^(p). Siehe auch Lösungen.
       a) Gebe Notwendige & Hinreichende Bedingung für LGS lösbar.
       b) Begründe LGS eindeutig lösbar.
       c) Begründe, dass im Fall I - AA* invertierbar, das angegebene LGS eindeutig lösbar ist. Hinweis berechne Produkt BCB*.

Hier die Lösungen handschriftlich:




Ich hoffe das hilft bei der Vorbereitung zur Klausur. Mathe ist eine Trainingssportart! Viel Spaß.

Sunday, May 1

Rekursive Bestimmung des Binomialkoeffizienten in C


Aufgabe: Schreiben Sie ein C-Programm binom.c, welches den Binomialkoeffizienten "a über b" zweier natürlicher Zahlen a und b rekursiv bestimmt. Eingabe: a, b. Ausgabe: der Wert bzw. Fehlermeldungen.

Quellcode:

/* Programm zur Berechnung des Binomialkoeffizienten zweier natürlicher Zahlen        CA 2011 */


/* Bibliothek-Einbindung für Ein- und Ausgaben (scanf, printf) */
#include


int a; int b;


/* Unterprogramm binom */
int binom (int a, int b)

    int tempA, tempB; 
    if (( b == 0 ) || (a == b)){ 
        return 1; 
    } 
    /* rekursion */
    else
    { 
        tempA = binom (a - 1, b);
        tempB = binom (a - 1, b - 1);
        return tempA + tempB; 
    } 
}


/* Hauptprogramm main */
int main (void)
   {
   printf("\nBerechnung des Binomialkoeffizienten a über b");
   do
   {
   printf("\nBitte Wert für a eingeben (a ≥ 0) ");   
   scanf("%d",&a);
   } while (a < 0);
   
   do
   {
   printf("\nBitte Wert für b eingeben (b ≥ 0 und b ≤ a) ");   
   scanf("%d",&b);
   } while (b < 0 || a < b);


   printf("\nDer Binomialkoeffizient a über b ist >> %d << !\n", binom (a, b));
   return 0;
   }

Matrizenmultiplikation in C

Aufgabe: Schreiben Sie in einem C-Programm matrix.c eine Funktion die zwei 4x4 Matritzen multipliziert, und testen Sie sie mit den folgenden zwei Matritzen, deren Speicherplatz Sie statisch alloziieren.
Natürlich kann dieser Code auch mit Eingaben leicht realisiert werden, ersetzt dazu die Initialisierung mit den expliziten Werten durch die Eingabeschleifen imKommentar /* Optional: Eingabe */.

Quellcode:

/* Programm zur Matrizenmultiplikation        CA 2011 */


/* Bibliothek-Einbindung für Ein- und Ausgaben (scanf, printf) */
#include


/* Hauptprogramm main */
int main(void)
{
/* Statische Alloziierung zweier gegebener 4x4-Matrizen mit expliziten Werten und einer mit Nullen initalisierten Loesungs-Matrix */
int a[4][4]={{0,2,1,0},{2,0,0,-1},{4,1,2,0},{1,1,-3,4}},
    b[4][4]={{-2,1,4,0},{1,1,-1,0},{1,2,0,0},{1,-3,3,2}},
    c[4][4]={{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}};


/* for-Schleifen-Zähler */    
int i,j,k;

                                /* Optional: Eingabe int input; printf("\n Geben Sie Werte der Matrix A ein:"); for(i=1;i<=3;i++) { for(j=1;j<=3;j++) { printf("\n%d.te Zeile und %d.te Spalte: ", i,j); scanf("%d",&input); a[i][j]=input; } } printf("\n Geben Sie Werte der Matrix B ein:"); for(i=1;i<=3;i++) { for(j=1;j<=3;j++) { printf("\n %d.te Zeile und %d.te Spalte : ", i,j); scanf("%d",&input); b[i][j]=input; } } */
/* for-Schleifen, Komponenten werden nach Matrizen-Multiplikationsregel berechnet*/
for(i=0;i<=3;i++)
{
    for(j=0;j<=3;j++)
    {
      for(k=0;k<=3;k++)
      {
      c[i][j]+=a[i][k]*b[k][j];
      }
      /* Zeilenkomponenten der j-ten Zeile ausgeben/drucken */
      printf("%d   ", c[i][j]);
    }
    /* Zeilenvorschub */
    printf("\n\n");
}
/* Rücksprung / Ende */
return 0;
}